Index: openacs-4/packages/acs-authentication/www/doc/acs-authentication.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-authentication/www/doc/acs-authentication.adp,v diff -u -r1.1.2.3 -r1.1.2.4 --- openacs-4/packages/acs-authentication/www/doc/acs-authentication.adp 30 Jul 2024 18:05:34 -0000 1.1.2.3 +++ openacs-4/packages/acs-authentication/www/doc/acs-authentication.adp 2 Sep 2024 09:40:19 -0000 1.1.2.4 @@ -2,6 +2,10 @@ {/doc/acs-authentication/ {ACS Authentication}} {OpenACS Authentication} OpenACS Authentication +

  1. auth_authentication "Authenticate users and retrieve their -account status.", with the operations:
    • +account status.", with the operations: +
      • Authenticate
      • GetParameters
      • -
    • auth_password "Update, reset, and retrieve passwords for +
    +
  2. auth_password "Update, reset, and retrieve passwords for authentication.", with the operations:
    • CanChangePassword
    • ChangePassword
    • CanRetrievePassword
    • RetrievePassword
    • CanResetPassword
    • ResetPassword
    • GetParameters
  3. auth_registration "Registering accounts for -authentication", with the operations:
    • +authentication", with the operations: +
      • GetElements
      • Register
      • GetParameters
      • -
    • auth_sync_retrieve
    • auth_sync_process
    • auth_user_info +
    +
  4. auth_sync_retrieve
  5. auth_sync_process
  6. auth_user_info
    • GetUserInfo
    • GetParameters
    Index: openacs-4/packages/acs-authentication/www/doc/configure-batch-sync.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-authentication/www/doc/configure-batch-sync.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-authentication/www/doc/configure-batch-sync.adp 13 Jul 2023 12:44:56 -0000 1.4.2.2 +++ openacs-4/packages/acs-authentication/www/doc/configure-batch-sync.adp 2 Sep 2024 09:40:20 -0000 1.4.2.3 @@ -2,6 +2,10 @@ {/doc/acs-authentication/ {ACS Authentication}} {Configure Batch Synchronization} Configure Batch Synchronization +
  7. Configure your Authority (RADIUS server, etc) to supply XML files to the URLs IncrementalURL and SnapshotURL. A typical set of -incremental file record looks like:

    -<?xml version="1.0" encoding="ISO-8859-1"?>
    +incremental file record looks like:

    <?xml version="1.0" encoding="ISO-8859-1"?>
     <enterprise>
       <properties>
         <datasource>FOO</datasource>
    Index: openacs-4/packages/acs-authentication/www/doc/ext-auth-design.adp
    ===================================================================
    RCS file: /usr/local/cvsroot/openacs-4/packages/acs-authentication/www/doc/ext-auth-design.adp,v
    diff -u -r1.4 -r1.4.2.1
    --- openacs-4/packages/acs-authentication/www/doc/ext-auth-design.adp	8 Feb 2019 13:00:50 -0000	1.4
    +++ openacs-4/packages/acs-authentication/www/doc/ext-auth-design.adp	2 Sep 2024 09:40:20 -0000	1.4.2.1
    @@ -2,6 +2,10 @@
     {/doc/acs-authentication/ {ACS Authentication}} {Design}
     Design
     
    +              
     {/doc/acs-authentication/ {ACS Authentication}} {Installation}
     Installation
     
    +              
     {/doc/acs-authentication/ {ACS Authentication}} {Using LDAP/Active Directory with OpenACS}
     Using LDAP/Active Directory with OpenACS
     
    +              
     Using
     LDAP/Active Directory with OpenACS
    by John Sequeira, Michael Steigman, and Carl Blesius. OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

    -ToDo: Add/verify information on -on-demand sync, account registration, and batch synchronization. -Add section on ldapsearch.

    -Overview. You do not want to make -users remember yet another password and username. If you can avoid -it you do not want to store their passwords either. This document -should help you set your system up so your users can seamlessly log -in to your OpenACS instance using the password they are accustomed -to using for other things at your institution.

    -Background. The original OpenACS -LDAP implementation (which has been deprecated by this package) -treated the LDAP server as another data store similar to Oracle or +ToDo: Add/verify information on on-demand +sync, account registration, and batch synchronization. Add section +on ldapsearch.

    +Overview. You do not want to make users +remember yet another password and username. If you can avoid it you +do not want to store their passwords either. This document should +help you set your system up so your users can seamlessly log in to +your OpenACS instance using the password they are accustomed to +using for other things at your institution.

    +Background. The original OpenACS LDAP +implementation (which has been deprecated by this package) treated +the LDAP server as another data store similar to Oracle or Postgresql. It opened a connection using a privileged account and read or stored an encrypted password for the user in question. This password was independent of the user's operating system or @@ -46,8 +50,8 @@

  8. Installing AOLserver LDAP support -(openldap and nsldap). Install openldap and -nsldap using the document Malte created Next, modify your config.tcl +(openldap and nsldap). Install openldap and nsldap +using the document Malte created Next, modify your config.tcl file as directed in the nsldap README. Here's what the relevant additions should look like:

    
     # LDAP authentication
    @@ -76,12 +80,11 @@
     [10/Jan/2006:11:11:08][22553.3076437088][-main-] Debug: nsldap: Registering LDAPCheckPools (600)
         
  9. -auth-ldap + driver -installation. Next, visit the software -installation page in acs-admin and install the auth-ldap package. -Your OpenACS installation now has all the code required to -authenticate using nsldap, so now you need to configure your -site's authentication to take advantage of it. To add the +auth-ldap + driver installation. Next, +visit the software installation page in acs-admin and install the +auth-ldap package. Your OpenACS installation now has all the code +required to authenticate using nsldap, so now you need to configure +your site's authentication to take advantage of it. To add the authentication driver to your OpenACS instance, go to: Main Site, Site-Wide Administration, and then AuthenticationHere's some sample Authentication Driver values:Name=Active Directory, Short @@ -131,19 +134,19 @@

-Troubleshooting. If you're -having trouble figuring out some the values for the ldapm, see this -useful page on setting up Active Directory integration with +Troubleshooting. If you're having +trouble figuring out some the values for the ldapm, see this useful +page on setting up Active Directory integration with Bugzilla. It explains how distinguished names are defined in Active Directory, and how to test that you have the correct values for connectivity and base DN using the OpenLDAP command-line utility ldapsearch.John had an issue where nsldap was not loading because AOLServer couldn't find the openldap client libraries, but he was able to fix it by adding the openldap libraries to his LD_LIBRARY_PATH (e.g. /usr/local/openldap/lib)

-Credits. Thanks to Malte Sussdorf -for his help and the Laboratory of Computer Science at Massachusetts -General Hospital for underwriting this work.

+Credits. Thanks to Malte Sussdorf for his +help and the Laboratory of Computer Science at Massachusetts General +Hospital for underwriting this work.

Using Pluggable Authentication Modules (PAM) with OpenACS +
  1. -Add PAM support to -AOLserver. OpenACS supports PAM support via -the PAM AOLserver module. PAM is system of modular support, and can -provide local (unix password), RADIUS, LDAP (more information), and other forms of +Add PAM support to AOLserver. OpenACS +supports PAM support via the PAM AOLserver module. PAM is system of +modular support, and can provide local (unix password), RADIUS, +LDAP (more information), and other forms of authentication. Note that due to security issues, the AOLserver PAM module cannot be used for local password authentication.

    1. Compile and install ns_pam. Download the tarball to /tmp.

      Debian users: first do apt-get install libpam-dev -

      -[root\@yourserver root]# cd /usr/local/src/aolserver
      +

      [root\@yourserver root]# cd /usr/local/src/aolserver
       [root\@yourserver aolserver]# tar xzf /tmp/ns_pam-0.1.tar.gz
       [root\@yourserver aolserver]# cd nspam
       [root\@yourserver nspam]# make
      @@ -52,19 +55,18 @@
       
    2. -Set up a PAM domain. A PAM domain -is a set of rules for granting privileges based on other programs. -Each instance of AOLserver uses a domain; different aolserver -instances can use the same domain but one AOLserver instance cannot -use two domains. The domain describes which intermediate programs -will be used to check permissions. You may need to install software -to perform new types of authentication.

        +Set up a PAM domain. A PAM domain is a set +of rules for granting privileges based on other programs. Each +instance of AOLserver uses a domain; different aolserver instances +can use the same domain but one AOLserver instance cannot use two +domains. The domain describes which intermediate programs will be +used to check permissions. You may need to install software to +perform new types of authentication.

        • RADIUS in PAM. 

          1. Untar the pam_radius tarball and compile and install. (more -information)

            -[root\@yourserver root]# cd /usr/local/src/
            +information)

            [root\@yourserver root]# cd /usr/local/src/
             [root\@yourserver src]# tar xf /tmp/pam_radius-1.3.16.tar
             [root\@yourserver src]# cd pam_radius-1.3.16
             [root\@yourserver pam_radius-1.3.16]# make
            @@ -87,17 +89,12 @@
             domain configuration lines into a single file, /etc/pam.conf. On Red Hat, create the file
             /etc/pam.d/service0
              with these
            -contents:

            -auth       sufficient   /lib/security/pam_radius_auth.so
            +contents:

            auth       sufficient   /lib/security/pam_radius_auth.so
             
          2. Modify the AOLserver configuration file to use this PAM domain. -Edit the line

            -ns_param   PamDomain             "service0"
            -

            So that the value of the parameter matches the name (just the -filename, not the fully pathed name) of the domain file in

            -/etc/pam.d/
            -
            +Edit the line

            ns_param   PamDomain             "service0"

            So that the value of the parameter matches the name (just the +filename, not the fully pathed name) of the domain file in

            /etc/pam.d/
        • @@ -107,9 +104,7 @@

        • Modify the AOLserver configuration file to support ns_pam. 

          In /var/lib/aolserver/service0/etc/config.tcl, enable -the nspam module by uncommenting this line:

          -ns_param   nspam           ${bindir}/nspam.so
          -
          +the nspam module by uncommenting this line:

          ns_param   nspam           ${bindir}/nspam.so
  2. @@ -118,9 +113,9 @@ restart the server.

  3. Create an OpenACS -authority. OpenACS supports multiple -authentication authorities. The OpenACS server itself is the -"Local Authority," used by default.

      +authority. OpenACS supports multiple authentication +authorities. The OpenACS server itself is the "Local +Authority," used by default.

      1. Browse to the authentication administration page, http://yourserver/acs-admin/auth/ . Create and name an authority (in the sitewide admin UI)

      2. Set Authentication to PAM.

      3. If the PAM domain defines a password command, you can set Password Index: openacs-4/packages/acs-authentication/www/doc/ims-sync-driver-design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-authentication/www/doc/ims-sync-driver-design.adp,v diff -u -r1.4 -r1.4.2.1 --- openacs-4/packages/acs-authentication/www/doc/ims-sync-driver-design.adp 8 Feb 2019 13:00:50 -0000 1.4 +++ openacs-4/packages/acs-authentication/www/doc/ims-sync-driver-design.adp 2 Sep 2024 09:40:20 -0000 1.4.2.1 @@ -2,6 +2,10 @@ {/doc/acs-authentication/ {ACS Authentication}} {IMS Sync driver design} IMS Sync driver design + {/doc/acs-authentication/ {ACS Authentication}} {External Authentication} External Authentication +

        External Index: openacs-4/packages/acs-automated-testing/www/doc/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-automated-testing/www/doc/index.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-automated-testing/www/doc/index.adp 3 Sep 2021 09:14:38 -0000 1.3.2.1 +++ openacs-4/packages/acs-automated-testing/www/doc/index.adp 2 Sep 2024 09:40:20 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-automated-testing/ {ACS Automated Testing}} {Automated Testing} Automated Testing +

        Automated Testing

        Installation
        Usage
        Requirements
        Index: openacs-4/packages/acs-automated-testing/www/doc/install.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-automated-testing/www/doc/install.adp,v diff -u -r1.4.2.1 -r1.4.2.2 --- openacs-4/packages/acs-automated-testing/www/doc/install.adp 3 Sep 2021 09:14:39 -0000 1.4.2.1 +++ openacs-4/packages/acs-automated-testing/www/doc/install.adp 2 Sep 2024 09:40:20 -0000 1.4.2.2 @@ -2,6 +2,10 @@ {/doc/acs-automated-testing/ {ACS Automated Testing}} {Installation} Installation + {/doc/acs-automated-testing/ {ACS Automated Testing}} {Requirements} Requirements +
        -Testing Mode
        +be:

        Testing Mode
           Regression
           Smoke
           Stress
        Index: openacs-4/packages/acs-automated-testing/www/doc/usage.adp
        ===================================================================
        RCS file: /usr/local/cvsroot/openacs-4/packages/acs-automated-testing/www/doc/usage.adp,v
        diff -u -r1.4.2.3 -r1.4.2.4
        --- openacs-4/packages/acs-automated-testing/www/doc/usage.adp	13 Jul 2023 12:49:25 -0000	1.4.2.3
        +++ openacs-4/packages/acs-automated-testing/www/doc/usage.adp	2 Sep 2024 09:40:20 -0000	1.4.2.4
        @@ -2,6 +2,10 @@
         {/doc/acs-automated-testing/ {ACS Automated Testing}} {Usage}
         Usage
         
        +              
         

        Suppose the first test server is service1. Set up a dedicated user and automated install script.

      4. To run automated testing automatically each time the server is -rebuilt, add this to /home/service1/install/install.tcl:

        -       set do_tclapi_testing "yes"
        -
        +rebuilt, add this to /home/service1/install/install.tcl:

               set do_tclapi_testing "yes"
      5. Get the results of the automated tests dumped where the master server can see them - in this example, the same directory as above, /var/log/openacs-install, by adding -this to install.tcl (requires 5.1):

        -          set install_xml_file          "/var/lib/aolserver/service0/packages/acs-core-docs/www/files/install-autotest.xml"
        -

        This will copy in the file install-autotest.xml:

        -<?xml version="1.0"?>
        +this to install.tcl (requires 5.1):

                  set install_xml_file          "/var/lib/aolserver/service0/packages/acs-core-docs/www/files/install-autotest.xml"

        This will copy in the file install-autotest.xml:

        <?xml version="1.0"?>
         
         <!-- This is an install.xml which can be used to configure servers for reporting their automated test results.  Requires acs-automated-testing 5.1.0b2 or better -->
         
        @@ -58,8 +57,7 @@
         
    1. To enable the 'rebuild server' link, edit the file -/usr/local/bin/rebuild-server.sh:

      -#!/bin/sh
      +/usr/local/bin/rebuild-server.sh:

      #!/bin/sh
       # script to trigger a server rebuild
       
       # hard-coding the valid server names here for some minimal security
      @@ -71,12 +69,9 @@
               exit;;
       esac
       
      -sudo /home/$1/install/install.sh 2>&1
      -

      and allow the master user to +sudo /home/$1/install/install.sh 2>&1

      and allow the master user to execute this file as root (this is a limitation of the automatic -install script, which must be root). In /etc/sudoers, include a line:

      -master ALL = NOPASSWD: /usr/local/bin/rebuild-server.sh
      -
      +install script, which must be root). In /etc/sudoers, include a line:

      master ALL = NOPASSWD: /usr/local/bin/rebuild-server.sh
Index: openacs-4/packages/acs-content-repository/www/doc/design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/design.adp,v diff -u -r1.5.2.1 -r1.5.2.2 --- openacs-4/packages/acs-content-repository/www/doc/design.adp 3 Sep 2021 09:14:39 -0000 1.5.2.1 +++ openacs-4/packages/acs-content-repository/www/doc/design.adp 2 Sep 2024 09:40:20 -0000 1.5.2.2 @@ -2,6 +2,10 @@ {/doc/acs-content-repository/ {ACS Content Repository}} {Content Repository Design} Content Repository Design +

Content Repository Design

ACS Documentation : Content Repository Index: openacs-4/packages/acs-content-repository/www/doc/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/index.adp,v diff -u -r1.4.2.1 -r1.4.2.2 --- openacs-4/packages/acs-content-repository/www/doc/index.adp 3 Sep 2021 09:14:39 -0000 1.4.2.1 +++ openacs-4/packages/acs-content-repository/www/doc/index.adp 2 Sep 2024 09:40:20 -0000 1.4.2.2 @@ -2,6 +2,10 @@ {/doc/acs-content-repository/ {ACS Content Repository}} {ACS Content Repository} ACS Content Repository +

ACS Content Repository

ACS Documentation
    Index: openacs-4/packages/acs-content-repository/www/doc/install.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/install.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-content-repository/www/doc/install.adp 13 Jul 2023 12:47:28 -0000 1.4.2.2 +++ openacs-4/packages/acs-content-repository/www/doc/install.adp 2 Sep 2024 09:40:20 -0000 1.4.2.3 @@ -2,6 +2,10 @@ {/doc/acs-content-repository/ {ACS Content Repository}} {Content Repository: Installation} Content Repository: Installation +

    Installing the Content Repository

    Content Repository

    The content repository is a part of the core data model of ACS @@ -29,14 +33,10 @@

    To load the XML parser, download and untar the distribution. Load the class package lib/xmlparserv2.jar into Oracle from a shell prompt:

    -
    -$ loadjava -user user/password xmlparserv2.jar
    -
    +
    $ loadjava -user user/password xmlparserv2.jar

    Finally, load the SQLJ files in packages/acs-content-repository/java:

    -
    -$ loadjava -user user/password -resolve *.sqlj
    -
    +
    $ loadjava -user user/password -resolve *.sqlj

    Installation of the data model and API should now be complete.

    Intermedia

    @@ -53,33 +53,29 @@ index statement.

    If you experience errors on a UNIX system, check the following:

    -
    • The operating system user running the Oracle database must have execute permission on the files -$ORACLE_HOME/ctx/lib/*.flt.
    • The directory $ORACLE_HOME/ctx/lib must be in the +$ORACLE_HOME/ctx/lib/*.flt. +
        +
      • The directory $ORACLE_HOME/ctx/lib must be in the $PATH environment variable of the operating system user running the Oracle database.
      • The directory $ORACLE_HOME/ctx/lib must be in the $LD_LIBRARY_PATH of the operating system user running the Oracle database.
      • The LD_LIBRARY_PATH environment variable must be specified in the entry for PLSExtProc in the -$ORACLE_HOME/network/admin/listener.ora. For -example:
      • -
      +$ORACLE_HOME/network/admin/listener.ora. For example:
           (SID_DESC =
             (SID_NAME = PLSExtProc)
             (ORACLE_HOME = /ora8/m01/app/oracle/product/8.1.6)
             (ENVS = LD_LIBRARY_PATH=/ora8/m01/app/oracle/product/8.1.6/lib:/usr/lib:/lib:/usr/openwin/lib:/ora8/m01/app/oracle/product/8.1.6/ctx/lib)
             (PROGRAM = extproc)
           )
      -
      -

      If your searches are still failing even after following these +

      If your searches are still failing even after following these instructions, try a simple test case to determine whether the problem has something to do with the -content repository data model itself.

      -
      -karlg\@arsdigita.com -
      - +content repository data model itself.


      karlg\@arsdigita.com
      Last revised: $‌Id: install.html,v 1.2 2017/08/07 23:47:47 gustafn -Exp $ +Exp $
    • +
    + Index: openacs-4/packages/acs-content-repository/www/doc/intermedia.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/intermedia.adp,v diff -u -r1.4.2.3 -r1.4.2.4 --- openacs-4/packages/acs-content-repository/www/doc/intermedia.adp 13 Jul 2023 12:47:28 -0000 1.4.2.3 +++ openacs-4/packages/acs-content-repository/www/doc/intermedia.adp 2 Sep 2024 09:40:20 -0000 1.4.2.4 @@ -2,6 +2,10 @@ {/doc/acs-content-repository/ {ACS Content Repository}} {Content Repository: Testing Intermedia} Content Repository: Testing Intermedia +

    Testing Intermedia

    Content Repository

    Even if you follow the instructions in the installation notes, content searches may @@ -10,39 +14,32 @@ that Intermedia is indeed functioning properly.

    Create a document table

    Create a simple table to hold some test documents:

    -
    -create table cr_test_documents ( 
    +
    create table cr_test_documents ( 
       doc_id    integer primary key, 
       author    varchar2(30), 
       format    varchar2(30), 
       title     varchar2(256), 
       doc       blob 
    -);
    -
    +);

    Create an Intermedia preference to specify INSO filtering:

    -
    -begin
    +
    begin
       ctx_ddl.create_preference
       (
         preference_name => 'CONTENT_FILTER_PREF',
         object_name     => 'INSO_FILTER'
    -  );
    -
    + );

    If this preference has already been created, this step will cause an error that you can ignore.

    Create an Intermedia index on the test table with INSO filtering:

    -
    -create index cr_test_documents_idx on cr_test_documents ( doc )
    +
    create index cr_test_documents_idx on cr_test_documents ( doc )
       indextype is ctxsys.context
    -  parameters ('FILTER content_filter_pref' );
    -
    + parameters ('FILTER content_filter_pref' );

    Load test documents

    You can use SQL*Loader to load some documents into the test table. First create a control file named cr-test-docs.ctl:

    -
    -load data
    +
    load data
     INFILE 'cr-test-docs.data'
     INTO TABLE cr_test_documents
     APPEND
    @@ -51,26 +48,21 @@
      format,
      title,
      ext_fname FILLER CHAR(80),
    - doc LOBFILE(ext_fname) TERMINATED BY EOF)
    -
    + doc LOBFILE(ext_fname) TERMINATED BY EOF)

    Copy any number of documents (Microsoft Word, PDF, text, HTML, etc.) to the filesystem of your database server. Create a data file with an entry for each document you would like to load. This is simply a comma-separated text file:

    -
    -word, Simple Story,sample-docs/simple.doc,
    -excel, Simple Spreadsheet,sample-docs/simple.xls
    -
    +
    word, Simple Story,sample-docs/simple.doc,
    +excel, Simple Spreadsheet,sample-docs/simple.xls

    Load the documents from the command line:

    -
    -$ sqlldr userid=cms/cms control=cr-test-docs.ctl log=cr-test-docs.log
    +
    $ sqlldr userid=cms/cms control=cr-test-docs.ctl log=cr-test-docs.log
     
     SQL*Loader: Release 8.1.6.2.0 - Production on Thu Nov 9 13:36:56 2000
     
     (c) Copyright 1999 Oracle Corporation.  All rights reserved.
     
    -Commit point reached - logical record count 2
    -
    +Commit point reached - logical record count 2

    Test search

    Once the documents have been loaded, rebuild the index and run some test queries:

    Index: openacs-4/packages/acs-content-repository/www/doc/object-model.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/object-model.adp,v diff -u -r1.5.2.1 -r1.5.2.2 --- openacs-4/packages/acs-content-repository/www/doc/object-model.adp 3 Sep 2021 09:14:39 -0000 1.5.2.1 +++ openacs-4/packages/acs-content-repository/www/doc/object-model.adp 2 Sep 2024 09:40:20 -0000 1.5.2.2 @@ -2,6 +2,10 @@ {/doc/acs-content-repository/ {ACS Content Repository}} {Content Repository: Object Model} Content Repository: Object Model +

    Object Model

    Content Repository

    The content repository is an extension of the ACS Object Model. Index: openacs-4/packages/acs-content-repository/www/doc/requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/requirements.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-content-repository/www/doc/requirements.adp 3 Sep 2021 09:14:39 -0000 1.4.2.2 +++ openacs-4/packages/acs-content-repository/www/doc/requirements.adp 2 Sep 2024 09:40:20 -0000 1.4.2.3 @@ -2,6 +2,10 @@ {/doc/acs-content-repository/ {ACS Content Repository}} {Content Repository Requirements} Content Repository Requirements +

    Content Repository Requirements

    Karl Goldstein (karlg\@arsdigita.com Index: openacs-4/packages/acs-content-repository/www/doc/todo.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/todo.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-content-repository/www/doc/todo.adp 3 Sep 2021 09:14:40 -0000 1.3.2.1 +++ openacs-4/packages/acs-content-repository/www/doc/todo.adp 2 Sep 2024 09:40:20 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-content-repository/ {ACS Content Repository}} {} +

    To Do List for Content Management System

     
    Index: openacs-4/packages/acs-content-repository/www/doc/tutorial.adp
    ===================================================================
    RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/tutorial.adp,v
    diff -u -r1.6.2.4 -r1.6.2.5
    --- openacs-4/packages/acs-content-repository/www/doc/tutorial.adp	13 Jul 2023 12:47:28 -0000	1.6.2.4
    +++ openacs-4/packages/acs-content-repository/www/doc/tutorial.adp	2 Sep 2024 09:40:20 -0000	1.6.2.5
    @@ -2,6 +2,10 @@
     {/doc/acs-content-repository/ {ACS Content Repository}} {ACS Content Repository Tutorial}
     ACS Content Repository Tutorial
     
    +              
     

    How to use the content repository

    by Jade @@ -49,8 +53,7 @@ Title Description Task Number - -
    +

    Overview

    First of all, let's get some terminology out of the way. Columns of a table are referred to as attributes in @@ -72,8 +75,7 @@ Title - want versions Description - want versions Task Number - do NOT want versions - - +

    Define tables

    You will have two tables: one with versioned attributes, and one without versioned attributes.

    @@ -100,8 +102,7 @@ description varchar(4000) ); - - +

    Unversioned portion:

                 create table pm_tasks (
    @@ -115,8 +116,7 @@
                 task_number
                 integer
                 )
    -          
    -
    +

    One thing you have to be careful of when creating these tables is that there are no columns that have the same names as any of the columns in the cr_items and cr_revisions @@ -154,8 +154,7 @@ 'task_id', -- id_column 'content_revision.revision_name' ); - - +

    You then need to add in all the attributes, so that the content repository can do some magic things behind the scenes. The content repository doesn't know about what's inside of the @@ -196,8 +195,7 @@ null, -- default value 'numeric' -- column_spec ); - - +

    Side effect: once you've created the content type, the content repository creates a view for you called @@ -292,8 +290,7 @@ null, null, 'integer constraint pm_project_comp_fk references organizations' -); - +); I have no idea of whether or not that is supposed to be legal, but I believe it works. Jun was the one who originally talked about Index: openacs-4/packages/acs-content-repository/www/doc/uninstall.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/uninstall.adp,v diff -u -r1.4.2.1 -r1.4.2.2 --- openacs-4/packages/acs-content-repository/www/doc/uninstall.adp 3 Sep 2021 09:14:40 -0000 1.4.2.1 +++ openacs-4/packages/acs-content-repository/www/doc/uninstall.adp 2 Sep 2024 09:40:20 -0000 1.4.2.2 @@ -2,6 +2,10 @@ {/doc/acs-content-repository/ {ACS Content Repository}} {Content Repository: Uninstalling} Content Repository: Uninstalling +

    Uninstalling the Content Repository

    Content Repository

    The content repository includes an uninstall script, Index: openacs-4/packages/acs-content-repository/www/doc/api/content.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/api/content.adp,v diff -u -r1.4.2.1 -r1.4.2.2 --- openacs-4/packages/acs-content-repository/www/doc/api/content.adp 3 Sep 2021 09:14:40 -0000 1.4.2.1 +++ openacs-4/packages/acs-content-repository/www/doc/api/content.adp 2 Sep 2024 09:40:20 -0000 1.4.2.2 @@ -2,6 +2,10 @@ {/doc/acs-content-repository/ {ACS Content Repository}} {Package: content} Package: content +

    content

    Content Repository : content

    Index: openacs-4/packages/acs-content-repository/www/doc/api/extlink.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/api/extlink.adp,v diff -u -r1.4.2.3 -r1.4.2.4 --- openacs-4/packages/acs-content-repository/www/doc/api/extlink.adp 13 Jul 2023 12:47:28 -0000 1.4.2.3 +++ openacs-4/packages/acs-content-repository/www/doc/api/extlink.adp 2 Sep 2024 09:40:20 -0000 1.4.2.4 @@ -2,6 +2,10 @@ {/doc/acs-content-repository/ {ACS Content Repository}} {Package: content_extlink} Package: content_extlink +

    content_extlink

    Content Repository : @@ -11,18 +15,17 @@

  • Overview
  • Related Objects
  • API

 

-

Overview

+

Overview

External links are references to content pages on other web sites. They provide the basis for maintaining a hierarchy of "bookmarks" that may be managed in a manner analogous to other content items. In particular, external links may be tagged with keywords and related to the site's own content items.

 

-

Related Objects

- -See also: {content_item} +

Related Objects

+ See also: {content_item}

 

-

API

+

API

  • Function: content_extlink.is_extlink Index: openacs-4/packages/acs-content-repository/www/doc/api/folder.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/api/folder.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-content-repository/www/doc/api/folder.adp 13 Jul 2023 12:47:28 -0000 1.4.2.2 +++ openacs-4/packages/acs-content-repository/www/doc/api/folder.adp 2 Sep 2024 09:40:20 -0000 1.4.2.3 @@ -2,6 +2,10 @@ {/doc/acs-content-repository/ {ACS Content Repository}} {Package: content_folder} Package: content_folder +

    content_folder

    Content Repository : @@ -11,7 +15,7 @@

  • Overview
  • Related Objects
  • API

 

-

Overview

+

Overview

Content folders contain related content items and allow content managers to group content as they see fit. Within a content folder, content items must have unique names since this is where they will @@ -21,11 +25,10 @@ from "/movies/terminator, "/movies/terminator2" respectively).

 

-

Related Objects

- -See also: Content Item +

Related Objects

+ See also: Content Item

 

-

API

+

API

  • Function: content_folder.get_index_page Index: openacs-4/packages/acs-content-repository/www/doc/api/item.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/api/item.adp,v diff -u -r1.6.2.3 -r1.6.2.4 --- openacs-4/packages/acs-content-repository/www/doc/api/item.adp 13 Jul 2023 12:47:28 -0000 1.6.2.3 +++ openacs-4/packages/acs-content-repository/www/doc/api/item.adp 2 Sep 2024 09:40:20 -0000 1.6.2.4 @@ -2,6 +2,10 @@ {/doc/acs-content-repository/ {ACS Content Repository}} {Package: content_item} Package: content_item +

    content_item

    Content Repository : @@ -11,7 +15,7 @@

  • Overview
  • Related Objects
  • API

 

-

Overview

+

Overview

Content items store the overview of the content published on a website. The actual content is stored in content revisions. It is implemented this way so that there can be multiple versions of the @@ -22,11 +26,10 @@ exist at least one content revision pointing to this item with the actual review content.

 

-

Related Objects

- -See also: content_revision, content_folder +

Related Objects

+ See also: content_revision, content_folder

 

-

API

+

API

  • Function: content_item.get_content_type Index: openacs-4/packages/acs-content-repository/www/doc/api/keyword.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/api/keyword.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-content-repository/www/doc/api/keyword.adp 13 Jul 2023 12:47:28 -0000 1.4.2.2 +++ openacs-4/packages/acs-content-repository/www/doc/api/keyword.adp 2 Sep 2024 09:40:20 -0000 1.4.2.3 @@ -2,6 +2,10 @@ {/doc/acs-content-repository/ {ACS Content Repository}} {Package: content_keyword} Package: content_keyword +

    content_keyword

    Content Repository : @@ -11,16 +15,15 @@

  • Overview
  • Related Objects
  • API

 

-

Overview

+

Overview

Keyword cassify a content_item. For example: If you have some press releases about dogs. You might want assigning the Keyword dog to every single content_item.

 

-

Related Objects

- -See also: content_item +

Related Objects

+ See also: content_item

 

-

API

+

API

  • Function: Index: openacs-4/packages/acs-content-repository/www/doc/api/permission.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/api/permission.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-content-repository/www/doc/api/permission.adp 13 Jul 2023 12:47:28 -0000 1.4.2.2 +++ openacs-4/packages/acs-content-repository/www/doc/api/permission.adp 2 Sep 2024 09:40:20 -0000 1.4.2.3 @@ -2,6 +2,10 @@ {/doc/acs-content-repository/ {ACS Content Repository}} {Package: content_permission} Package: content_permission +

    content_permission

    Content Repository : @@ -11,16 +15,15 @@

  • Overview
  • Related Objects
  • API

 

-

Overview

+

Overview

Permissions can be set to allow certain users certain things. - They can be compared with the Unix filesystem permission: read, write ...

 

-

Related Objects

- -See also: {content_item } +

Related Objects

+ See also: {content_item }

 

-

API

+

API

  • Function: Index: openacs-4/packages/acs-content-repository/www/doc/api/revision.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/api/revision.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-content-repository/www/doc/api/revision.adp 13 Jul 2023 12:47:28 -0000 1.4.2.2 +++ openacs-4/packages/acs-content-repository/www/doc/api/revision.adp 2 Sep 2024 09:40:20 -0000 1.4.2.3 @@ -2,6 +2,10 @@ {/doc/acs-content-repository/ {ACS Content Repository}} {Package: content_revision} Package: content_revision +

    content_revision

    Content Repository : @@ -11,19 +15,18 @@

  • Overview
  • Related Objects
  • API

 

-

Overview

+

Overview

Content revisions contain the data for content items. There is a many to one relationship between content revisions and content items. There is at most one "live" revision for every content item though. For example, there may be 5 revisions of the review for the movie "Terminator," yet only one of these may be live on the website at a given time.

 

-

Related Objects

- -See also: {content_item } +

Related Objects

+ See also: {content_item }

 

-

API

+

API

  • Function: content_revision.copy Index: openacs-4/packages/acs-content-repository/www/doc/api/symlink.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/api/symlink.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-content-repository/www/doc/api/symlink.adp 13 Jul 2023 12:47:28 -0000 1.4.2.2 +++ openacs-4/packages/acs-content-repository/www/doc/api/symlink.adp 2 Sep 2024 09:40:20 -0000 1.4.2.3 @@ -2,6 +2,10 @@ {/doc/acs-content-repository/ {ACS Content Repository}} {Package: content_symlink} Package: content_symlink +

    content_symlink

    Content Repository : @@ -11,15 +15,14 @@

  • Overview
  • Related Objects
  • API

 

-

Overview

+

Overview

Symlinks are pointers to items within the content repository. They are simply used to create links between content items.

 

-

Related Objects

- -See also: content_item, content_folder +

Related Objects

+ See also: content_item, content_folder

 

-

API

+

API

  • Function: content_symlink.is_symlink Index: openacs-4/packages/acs-content-repository/www/doc/api/template.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/api/template.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-content-repository/www/doc/api/template.adp 13 Jul 2023 12:47:28 -0000 1.4.2.2 +++ openacs-4/packages/acs-content-repository/www/doc/api/template.adp 2 Sep 2024 09:40:20 -0000 1.4.2.3 @@ -2,6 +2,10 @@ {/doc/acs-content-repository/ {ACS Content Repository}} {Package: content_template} Package: content_template +

    content_template

    Content Repository : @@ -11,18 +15,17 @@

  • Overview
  • Related Objects
  • API

 

-

Overview

+

Overview

Templates are a special class of text objects that are used for specifying the layout of a content item. They may be mapped to content types, meaning that every item of that type will display using that template unless a specific item overrides the default by mapping to a template itself.

 

-

Related Objects

- -See also: content_item, content_folder +

Related Objects

+ See also: content_item, content_folder

 

-

API

+

API

  • Function: content_template.get_path Index: openacs-4/packages/acs-content-repository/www/doc/api/type.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/api/type.adp,v diff -u -r1.5.2.2 -r1.5.2.3 --- openacs-4/packages/acs-content-repository/www/doc/api/type.adp 13 Jul 2023 12:47:28 -0000 1.5.2.2 +++ openacs-4/packages/acs-content-repository/www/doc/api/type.adp 2 Sep 2024 09:40:20 -0000 1.5.2.3 @@ -2,6 +2,10 @@ {/doc/acs-content-repository/ {ACS Content Repository}} {Package: content_type} Package: content_type +

    content_type

    Content Repository : @@ -11,16 +15,15 @@

  • Overview
  • Related Objects
  • API

 

-

Overview

+

Overview

This package is used to manipulate content types and attributes Content types represent the different kind of content displayed on a website. All content items should subclass a content type.

 

-

Related Objects

- -See also: {Content Item } +

Related Objects

+ See also: {Content Item }

 

-

API

+

API

  • Function: content_type.create_attribute @@ -171,8 +174,8 @@ type, including the inherited attributes. The view is named "

    X" Called by create_attribute and create_type. - - +
    + +
    Author:Karl Goldstein
    Parameters:
    Index: openacs-4/packages/acs-content-repository/www/doc/guide/access-control.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/guide/access-control.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-content-repository/www/doc/guide/access-control.adp 3 Sep 2021 09:14:41 -0000 1.3.2.1 +++ openacs-4/packages/acs-content-repository/www/doc/guide/access-control.adp 2 Sep 2024 09:40:20 -0000 1.3.2.2 @@ -2,5 +2,9 @@ {/doc/acs-content-repository/ {ACS Content Repository}} {} +

    Last Modified: $‌Id: access-control.html,v 1.1.1.1 2001/03/13 22:59:26 ben Exp $

    Index: openacs-4/packages/acs-content-repository/www/doc/guide/convert.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/guide/convert.adp,v diff -u -r1.4.2.1 -r1.4.2.2 --- openacs-4/packages/acs-content-repository/www/doc/guide/convert.adp 3 Sep 2021 09:14:41 -0000 1.4.2.1 +++ openacs-4/packages/acs-content-repository/www/doc/guide/convert.adp 2 Sep 2024 09:40:20 -0000 1.4.2.2 @@ -2,6 +2,10 @@ {/doc/acs-content-repository/ {ACS Content Repository}} {Content Repository Developer Guide: HTML Conversion} Content Repository Developer Guide: HTML Conversion +

    Converting Binary Documents to HTML

    Content Repository : Developer Index: openacs-4/packages/acs-content-repository/www/doc/guide/file-system.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/guide/file-system.adp,v diff -u -r1.5.2.3 -r1.5.2.4 --- openacs-4/packages/acs-content-repository/www/doc/guide/file-system.adp 13 Jul 2023 12:47:28 -0000 1.5.2.3 +++ openacs-4/packages/acs-content-repository/www/doc/guide/file-system.adp 2 Sep 2024 09:40:20 -0000 1.5.2.4 @@ -4,6 +4,10 @@ Content Repository Developer Guide: Organizing Content Items +

    Organizing Content Items

    ACS Documentation : Content Repository : Developer Guide @@ -94,8 +98,7 @@ ); -- Store v_my_content_root in a safe place end; -/ - +/

    The important point is that you have to pass in 0 for the parent_id. This parent_id is special in that it indicates folders with no parent.

    Index: openacs-4/packages/acs-content-repository/www/doc/guide/items.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/guide/items.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-content-repository/www/doc/guide/items.adp 13 Jul 2023 12:47:28 -0000 1.4.2.2 +++ openacs-4/packages/acs-content-repository/www/doc/guide/items.adp 2 Sep 2024 09:40:20 -0000 1.4.2.3 @@ -4,6 +4,10 @@ Content Repository Developer Guide: Creating Content Items +

    Creating Content Items

    Content Repository : Developer @@ -12,35 +16,29 @@

    Content items are initialized using the content_item.new function. A name is the only parameter required to create an item:

    -
    -item_id := content_item.new( name => 'my_item' );
    -
    +
    item_id := content_item.new( name => 'my_item' );

    The name represents the tail of the URL for that content item. In most cases you will want to create items in a particular context with the repository hierarchy:

    -
    -item_id := content_item.new(
    +
    item_id := content_item.new(
        name      => 'my_item', 
        parent_id => :parent_id
    -);
    -
    +);

    The parent ID must be another content item, or a subclass of content item such as a folder.

    The content_item.new function accepts a number of other optional parameters. The standard creation_date, creation_user and creation_ip should be specified for auditing purposes. You can also create the initial revision and publish text items in a single step:

    -
    -item_id := content_item.new(
    +
    item_id := content_item.new(
        name      => 'my_item', 
        parent_id => :parent_id,
        title     => 'My Item',
        text      => 'Once upon a time Goldilocks crossed the street.  
                      Here comes a car...uh oh!  The End',
        is_live   => 't'
    -);
    -
    +);

    If either the title or text are not null, the function will create the first revision of the item. It will also mark the item as live if the is_live parameter is true. The @@ -50,9 +48,7 @@

    If a content item has at least one revision, then it can be published by calling the content_item.set_live_revision procedure, which takes as input a revision_id:

    -
    -content_item.set_live_revision( revision_id => :revision_id );
    -
    +
    content_item.set_live_revision( revision_id => :revision_id );

    karlg\@arsdigita.com

    Last Modified: $‌Id: items.html,v 1.2 2017/08/07 23:47:47 gustafn Index: openacs-4/packages/acs-content-repository/www/doc/guide/keywords.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/guide/keywords.adp,v diff -u -r1.4.2.3 -r1.4.2.4 --- openacs-4/packages/acs-content-repository/www/doc/guide/keywords.adp 13 Jul 2023 12:47:28 -0000 1.4.2.3 +++ openacs-4/packages/acs-content-repository/www/doc/guide/keywords.adp 2 Sep 2024 09:40:20 -0000 1.4.2.4 @@ -4,6 +4,10 @@ Content Repository Developer Guide: Subject Keywords (Categories) +

    Subject Keywords (Categories)

    Content Repository : Developer @@ -37,8 +41,7 @@ => 'content_keyword', pretty_name => 'Content Keyword', pretty_plural => 'Content Keywords', table_name => 'cr_keywords', id_column => 'keyword_id', name_method => 'acs_object.default_name' - ); - + ); In addition, the cr_keywords table (see Index: openacs-4/packages/acs-content-repository/www/doc/guide/object-relationships.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/guide/object-relationships.adp,v diff -u -r1.4.2.1 -r1.4.2.2 --- openacs-4/packages/acs-content-repository/www/doc/guide/object-relationships.adp 3 Sep 2021 09:14:42 -0000 1.4.2.1 +++ openacs-4/packages/acs-content-repository/www/doc/guide/object-relationships.adp 2 Sep 2024 09:40:20 -0000 1.4.2.2 @@ -4,6 +4,10 @@ Content Repository Developer Guide: Object Relationships +

    Object Relationships

    Content Repository : Developer Index: openacs-4/packages/acs-content-repository/www/doc/guide/publish.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/guide/publish.adp,v diff -u -r1.4.2.6 -r1.4.2.7 --- openacs-4/packages/acs-content-repository/www/doc/guide/publish.adp 1 Sep 2024 12:39:59 -0000 1.4.2.6 +++ openacs-4/packages/acs-content-repository/www/doc/guide/publish.adp 2 Sep 2024 09:40:20 -0000 1.4.2.7 @@ -4,6 +4,10 @@ Content Repository Developer Guide: Publishing Content +

    Publishing Content

    Content Repository : Developer @@ -122,5 +126,5 @@ karlg\@arsdigita.com
    -Last Modified: $‌Id: publish.html,v 1.5.2.2 2022/08/29 11:00:26 -antoniop Exp $ +Last Modified: $‌Id: publish.html,v 1.5.2.3 2024/09/01 12:39:59 +gustafn Exp $ Index: openacs-4/packages/acs-content-repository/www/doc/guide/revisions.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/guide/revisions.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-content-repository/www/doc/guide/revisions.adp 13 Jul 2023 12:47:28 -0000 1.4.2.2 +++ openacs-4/packages/acs-content-repository/www/doc/guide/revisions.adp 2 Sep 2024 09:40:20 -0000 1.4.2.3 @@ -4,6 +4,10 @@ Content Repository Developer Guide: Creating Content Revisions +

    Creating Content Revisions

    ACS Documentation : Content Repository : Developer Guide @@ -25,14 +29,12 @@ content_revision.new function. The only parameters required to create the revision are a title, a content item ID, and some text:

    -
    -revision_id := content_revision.new( 
    +
    revision_id := content_revision.new( 
         title   => 'A Revision',
         item_id => :item_id,
         text    => 'Once upon a time Goldilocks crossed the street.
                     Here comes a car...uh oh!  The End'
    -);
    -
    +);

    The item_id parameter is ID of the content item with which the revision is associated.

    The content_item.new function accepts a number of @@ -43,8 +45,7 @@ Instead of the text parameter, this function can be called with a data parameter, in which data is a blob:

    -
    -revision_id := content_revision.new(
    +
    revision_id := content_revision.new(
         title         => 'A Revision',
         description   => 'A Description of a revision',
         mime_type     => 'text/html',
    @@ -54,8 +55,7 @@
         creation_date => sysdate,
         creation_user => :user_id,
         creation_ip   => :ip_address
    -);
    -
    +);

    Insert additional attributes

    Given that there is no way (AFAIK) to pass variable parameters to a PL/SQL function, there is no way to make @@ -82,42 +82,34 @@ content_type.create_attribute. The trigger makes it possible to create complete revisions with a single insert statement:

    -
    -insert into cr_revisionsx (
    +
    insert into cr_revisionsx (
       item_id, revision_id, title
     ) values (
       18, 19, 'All About Revisions'
    -);
    -
    +);

    Because a special trigger is generated for each content type that includes insert statements for all inherited tables, revisions with extended attributes may be created in the same fashion:

    -
    -insert into cr_imagesx (
    +
    insert into cr_imagesx (
       item_id, revision_id, title, height, width
     ) values (
       18, 19, 'A Nice Drawing', 300, 400
    -);
    -
    +);

    Inserting content via file or text upload

    Selecting a live revision

    The live revision of a content item can be obtained with the content_item.get_live_revision function:

    -
    -live_revision_id := content_item.get_live_revision(
    +
    live_revision_id := content_item.get_live_revision(
         item_id => :item_id
    -);
    -
    +);

    The item_id identifies the content item with which the revision is associated.

    Likewise, the most recent revision of a content item can be obtained with the content_item.get_latest_revision function:

    -
    -latest_revision_id := content_item.get_latest_revision(
    +
    latest_revision_id := content_item.get_latest_revision(
         item_id => :item_id
    -);
    -
    +);

    karlg\@arsdigita.com

    Last Modified: $‌Id: revisions.html,v 1.2 2017/08/07 23:47:47 Index: openacs-4/packages/acs-content-repository/www/doc/guide/search.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/guide/search.adp,v diff -u -r1.5.2.1 -r1.5.2.2 --- openacs-4/packages/acs-content-repository/www/doc/guide/search.adp 3 Sep 2021 09:14:42 -0000 1.5.2.1 +++ openacs-4/packages/acs-content-repository/www/doc/guide/search.adp 2 Sep 2024 09:40:20 -0000 1.5.2.2 @@ -2,6 +2,10 @@ {/doc/acs-content-repository/ {ACS Content Repository}} {Content Repository Developer Guide: Search} Content Repository Developer Guide: Search +

    Search

    Content Repository : Developer Index: openacs-4/packages/acs-content-repository/www/doc/guide/storage.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/guide/storage.adp,v diff -u -r1.4.2.3 -r1.4.2.4 --- openacs-4/packages/acs-content-repository/www/doc/guide/storage.adp 13 Jul 2023 12:47:28 -0000 1.4.2.3 +++ openacs-4/packages/acs-content-repository/www/doc/guide/storage.adp 2 Sep 2024 09:40:20 -0000 1.4.2.4 @@ -2,6 +2,10 @@ {/doc/acs-content-repository/ {ACS Content Repository}} {} +

    Storing Data in the Content Repository

    This document provides an introduction to using the content repository for storing data (binary or text files) and associated @@ -18,21 +22,18 @@

    Most types of content require additional attributes. For a photo, we probably also want to store the pixel width and height at the very least:

    -
    -  create table images (
    +
      create table images (
         image_id       integer
                        constraint images_image_id_fk
                        references cr_revisions
                        constraint images_pk
                        primary key,
         width          integer,
         height         integer
    -  );
    -
    + );

    Content types are nothing more than standard ACS Objects that inherit from content_revision:

    -
    -begin
    +
    begin
     
      acs_object_type.create_type (
        supertype => 'content_revision',
    @@ -62,8 +63,7 @@
     
     end;
     /
    -show errors
    -
    +show errors

    Note that content types always extend content_revision, rather than content_item. This is because we want to store multiple revisions of both the @@ -79,8 +79,7 @@

    In the simple case where each user is allowed a single portrait, we can simply define a relationship between user and image as ACS Objects:

    -
    -  acs_rel_type.create_role('user');
    +
      acs_rel_type.create_role('user');
       acs_rel_type.create_role('portrait');
     
       acs_rel_type.create_type( rel_type => 'user_portrait_rel',
    @@ -93,8 +92,7 @@
          object_type_two => 'content_item',
          min_n_rels_two => 0,
          max_n_rels_two => 1
    -  );
    -
    + );

    Note that the user object is related to a content_item object rather than an image object directly. Each image object represents only a @@ -104,20 +102,16 @@

    Now we have defined both a content type and relationship type, we can start storing portraits. The DML for processing a new portrait upload form would look like this:

    -
    -  begin transaction
    +
      begin transaction
         :item_id := content_item.new(:name, :item_id, sysdate, NULL,                           '[ns_conn peeraddr]'); 
         # maybe have content_revision return the LOB locator so that it can
         # be used directly with blob_dml_file
         :revision_id := content_revision.new(:title, :description, $publish_date,                               :mime_type, NULL, :text, 'content_revision', 
                                    :item_id, :revision_id);
         blob_dml_file update cr_revisions set content = empty_blob() ...
    -    :rel_id := acs_rel.new(...)
    -
    + :rel_id := acs_rel.new(...)

    Retrieve Objects

    -
    -  ns_ora write_blob ...
    -
    +
      ns_ora write_blob ...

    karlg\@arsdigita.com

    Last Modified: $‌Id: storage.html,v 1.2.2.1 2021/04/05 19:49:49 Index: openacs-4/packages/acs-content-repository/www/doc/guide/template.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/guide/template.adp,v diff -u -r1.4.2.3 -r1.4.2.4 --- openacs-4/packages/acs-content-repository/www/doc/guide/template.adp 13 Jul 2023 12:47:28 -0000 1.4.2.3 +++ openacs-4/packages/acs-content-repository/www/doc/guide/template.adp 2 Sep 2024 09:40:20 -0000 1.4.2.4 @@ -4,6 +4,10 @@ Content Repository Developer Guide: Applying Templates +

    Applying Templates

    Content Repository : Developer @@ -21,12 +25,10 @@

    The content repository handle templates as a special class of text object. The interface for handling templates builds on that of simple content items:

    -
    -template_id := content_template.new(
    +
    template_id := content_template.new(
         name          => 'image_template',
         parent_id     => :parent_id
    -);
    -
    +);

    The name represents the tail of the location for that content template. The parent ID must be another content item, or a subclass of content item such as a folder.

    @@ -52,14 +54,12 @@

    Associating templates with content types

    You use the content_type.register_template procedure to associate a template with a particular content type:

    -
    -content_type.register_template(
    +
    content_type.register_template(
       content_type => 'content_revision',
       template_id  => :template_id,
       use_context  => 'public',
       is_default   => 't'
    -);
    -
    +);

    The use_context is a simple keyword that specifies the situation in which the template is appropriate. One general context, public, is loaded when the content repository @@ -75,23 +75,19 @@ template per pair.

    To make a template the default template for a content type/context pair:

    -
    -content_type.set_default_template(
    +
    content_type.set_default_template(
         content_type => 'content_revision',
         template_id  => :template_id,
         use_context  => 'public'
    -);
    -
    +);

    Associating templates with content items

    Individual items may also be associated with templates using the content_item.register_template procedure:

    -
    -content_item.register_template(
    +
    content_item.register_template(
       item_id     => :item_id,
       template_id => :template_id,
       use_context => 'intranet'
    -);
    -
    +);

    Unlike the case with content types, only one template may be registered with a content item for a particular context.

    The content management system uses this functionality to allow @@ -105,39 +101,33 @@ the content_item.get_template function to determine the proper template to use for rendering a page in any particular context:

    -
    -template_id := content_item.get_template(
    +
    template_id := content_item.get_template(
         item_id     => :item_id, 
         use_context => 'public'
     );
     
     template_path := content_template.get_path(
         template_id => :template_id
    -);
    -
    +);

    In the case that no template is registered to given item/context pair, content_item.get_template will return the default template (if it exists) for the related content type/context pair.

    Unregistering templates

    The procedure for disassociating templates with content types is as follows:

    -
    -content_type.unregister_template(
    +
    content_type.unregister_template(
         content_type => 'content_revision',
         template_id  => :template_id,
         use_context  => 'intranet'
    -);
    -
    +);

    The corresponding procedure to disassociate templates with content items is:

    -
    -content_item.unregister_template(
    +
    content_item.unregister_template(
         item_id     => :item_id,
         template_id => :template_id,
         use_context => 'admin'
    -);
    -
    +);

    karlg\@arsdigita.com

    Last Modified: $‌Id: template.html,v 1.2.2.1 2021/04/05 19:49:49 Index: openacs-4/packages/acs-content-repository/www/doc/guide/types.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/guide/types.adp,v diff -u -r1.4.2.3 -r1.4.2.4 --- openacs-4/packages/acs-content-repository/www/doc/guide/types.adp 13 Jul 2023 12:47:28 -0000 1.4.2.3 +++ openacs-4/packages/acs-content-repository/www/doc/guide/types.adp 2 Sep 2024 09:40:20 -0000 1.4.2.4 @@ -4,6 +4,10 @@ Content Repository Developer Guide: Defining Content Types +

    Defining Content Types

    Content Repository : Developer @@ -43,16 +47,14 @@ object ID (specific storage). To ensure efficient access to attributes, the content repository API requires you to use specific storage. Your table should have the form:

    -
    -create table cr_content_type (
    +
    create table cr_content_type (
         content_type_id       integer
                               constraint cr_content_type_id_fk
                               references cr_revisions
                               constraint cr_content_type_pk
                               primary key,
         attributes...
    -);
    -
    +);

    Note that your extended attribute table must reference the cr_revisions table, notcr_items. As mentioned above, this allows you to maintain multiple revisions of @@ -61,8 +63,7 @@

    Use the Content Type API to create the content type

    To define a content type, you should write an SQL script to create the content type and then add attributes to it:

    -
    -declare
    +
    declare
      attr_id        acs_attributes.attribute_id%TYPE;
     begin
     
    Index: openacs-4/packages/acs-content-repository/www/doc/guide/workflow.adp
    ===================================================================
    RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/guide/workflow.adp,v
    diff -u -r1.5.2.1 -r1.5.2.2
    --- openacs-4/packages/acs-content-repository/www/doc/guide/workflow.adp	3 Sep 2021 09:14:43 -0000	1.5.2.1
    +++ openacs-4/packages/acs-content-repository/www/doc/guide/workflow.adp	2 Sep 2024 09:40:20 -0000	1.5.2.2
    @@ -2,6 +2,10 @@
     {/doc/acs-content-repository/ {ACS Content Repository}} {Content Repository Developer Guide: Workflow}
     Content Repository Developer Guide: Workflow
     
    +              
     

    Applying Workflow to Content Items

    Content Repository : Developer Index: openacs-4/packages/acs-core-docs/www/acs-admin.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/acs-admin.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/acs-admin.adp 13 Jul 2023 12:43:17 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/acs-admin.adp 2 Sep 2024 09:40:20 -0000 1.4.2.6 @@ -1,17 +1,18 @@ -{/doc/acs-core-docs/ {ACS Core Documentation}} {Part II. Administrator's -Guide} -Part II. Administrator's -Guide +{/doc/acs-core-docs/ {ACS Core Documentation}} {Part II. Administrator's Guide} +Part II. Administrator's Guide +

    -Part II. Administrator's -Guide

    +Part II. Administrator's Guide

    Table of Contents

    2. Installation Overview
    @@ -100,8 +101,8 @@
    \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/acs-package-dev.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/acs-package-dev.adp,v diff -u -r1.3.2.5 -r1.3.2.6 --- openacs-4/packages/acs-core-docs/www/acs-package-dev.adp 13 Jul 2023 12:43:18 -0000 1.3.2.5 +++ openacs-4/packages/acs-core-docs/www/acs-package-dev.adp 2 Sep 2024 09:40:20 -0000 1.3.2.6 @@ -1,17 +1,19 @@ -{/doc/acs-core-docs/ {ACS Core Documentation}} {Part III. For OpenACS Package -Developers} -Part III. For OpenACS Package -Developers +{/doc/acs-core-docs/ {ACS Core Documentation}} {Part III. For OpenACS Package Developers} +Part III. For OpenACS Package Developers +

    -Part III. For OpenACS -Package Developers

    +Part III. For OpenACS Package +Developers

    Tutorials and reference material for creating new OpenACS packages.

    Table of Contents

    @@ -88,8 +90,8 @@
    \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/acs-plat-dev.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/acs-plat-dev.adp,v diff -u -r1.3.2.5 -r1.3.2.6 --- openacs-4/packages/acs-core-docs/www/acs-plat-dev.adp 13 Jul 2023 12:43:18 -0000 1.3.2.5 +++ openacs-4/packages/acs-core-docs/www/acs-plat-dev.adp 2 Sep 2024 09:40:20 -0000 1.3.2.6 @@ -1,17 +1,19 @@ -{/doc/acs-core-docs/ {ACS Core Documentation}} {Part IV. For OpenACS Platform -Developers} -Part IV. For OpenACS Platform -Developers +{/doc/acs-core-docs/ {ACS Core Documentation}} {Part IV. For OpenACS Platform Developers} +Part IV. For OpenACS Platform Developers +

    -Part IV. For OpenACS -Platform Developers

    +Part IV. For OpenACS Platform +Developers

    Table of Contents

    15. Kernel Documentation
    @@ -44,11 +46,10 @@
    \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/analog-install.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/analog-install.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/analog-install.adp 13 Jul 2023 12:43:18 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/analog-install.adp 2 Sep 2024 09:40:20 -0000 1.4.2.6 @@ -2,17 +2,19 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Install Analog web file analyzer} Install Analog web file analyzer +

    Install Analog web file analyzer

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

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

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

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

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

    {/doc/acs-core-docs/ {ACS Core Documentation}} {Set up Log Analysis Reports} Set up Log Analysis Reports +

    @@ -14,8 +18,7 @@ already be installed. A modified configuration file is included in the OpenACS tarball.

    1. -
      -[root src]# su - $OPENACS_SERVICE_NAME
      +
      [root src]# su - $OPENACS_SERVICE_NAME
       [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
       [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ mkdir www/log
       [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cp -r /usr/share/analog-5.32/images www/log/
      @@ -34,30 +37,23 @@
       to use a private directory. You'll also need to edit all
       instances of service0 to your $OPENACS_SERVICE_NAME.

    2. -

      Run it.

      -[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ /usr/share/analog-5.32/analog -G -g/var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/analog.cfg
      +

      Run it.

      [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ /usr/share/analog-5.32/analog -G -g/var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/analog.cfg
       /usr/share/analog-5.32/analog: analog version 5.32/Unix
       /usr/share/analog-5.32/analog: Warning F: Failed to open DNS input file
         /home/$OPENACS_SERVICE_NAME/dnscache: ignoring it
         (For help on all errors and warnings, see docs/errors.html)
       /usr/share/analog-5.32/analog: Warning R: Turning off empty Search Word Report
      -[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$
      -

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

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

    3. -

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

      -[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ exit
      +

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

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

      Put this into the file:

      -#!/bin/sh
      +

      Put this into the file:

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

      Test it by running the script.

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

      Test it by running the script.

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

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

    4. Index: openacs-4/packages/acs-core-docs/www/aolserver.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/aolserver.adp,v diff -u -r1.5.2.5 -r1.5.2.6 --- openacs-4/packages/acs-core-docs/www/aolserver.adp 13 Jul 2023 12:43:18 -0000 1.5.2.5 +++ openacs-4/packages/acs-core-docs/www/aolserver.adp 2 Sep 2024 09:40:20 -0000 1.5.2.6 @@ -2,11 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Install AOLserver 3.3oacs1} Install AOLserver 3.3oacs1 +

      @@ -22,10 +25,9 @@ but if not, you should stick to installing from source.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        This takes about 5 minutes. It builds aolserver, several modules, and the database driver. (Upgraders, note that the postgres database driver has changed from postgres.so to nspostgres.so). All of the results are logged to files in @@ -119,8 +114,7 @@ each for Oracle and PostgreSQL. They don't conflict, so if you plan to use both databases, install both.

        • -

          Oracle

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

          Oracle

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

          PostgreSQL

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

          PostgreSQL

          [root aolserver]# cd /usr/local/aolserver/bin
           [root bin]# cp /var/tmp/openacs-5.9.0/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres
           [root bin]# chmod 755 nsd-postgres
           [root bin]#
          @@ -142,11 +135,9 @@
           
      3. -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
        +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
         [root src]# wget --passive http://www.tdom.org/tDOM-0.7.8.tar.gz
         --16:40:58--  http://www.tdom.org/tDOM-0.7.8.tar.gz
                    => `tDOM-0.7.8.tar.gz'
        @@ -166,20 +157,15 @@
         wget --passive http://www.tdom.org/tDOM-0.7.8.tar.gz
         tar xzf tDOM-0.7.8.tar.gz
         cd tDOM-0.7.8/unix
        -

        Edit the file CONFIG and change this section:

        -# ----------------------------------------------------
        +

        Edit the file CONFIG and change this section:

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

        to

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

        to

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

        And configure and compile:

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

        And configure and compile:

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

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

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

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

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

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

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

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

        [root aolserver]# lynx localhost:8000
         

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

        Shutdown the test server:

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

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

        Shutdown the test server:

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

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

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

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

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

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

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

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

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

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

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

  • @@ -309,8 +286,7 @@ \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/aolserver4.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/aolserver4.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/aolserver4.adp 13 Jul 2023 12:43:18 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/aolserver4.adp 2 Sep 2024 09:40:20 -0000 1.4.2.6 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Install AOLserver 4} Install AOLserver 4 +

    @@ -18,8 +22,7 @@

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

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

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

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

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

    Note for Debian users: you can apt-get install tcl8.4-dev if you have the right version (stable users will need to add tcl8.4 to their sources.list file as described on the Install Postgres page). You'll have to use /usr/lib/tcl8.4/ instead of @@ -45,8 +48,7 @@ --with-tcl=/usr/lib/tcl8.4.

    Remember that you have to be root if you want to follow these instructions. On macOS type sudo su - to become root.

    Alternatively use curl -L --O instead of wget (especially on macOS).

    -[root root]# cd /usr/local/src
    +-O instead of wget (especially on macOS).

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

    -[root root]# cd /usr/local/src
    +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
    @@ -92,10 +93,9 @@
     
  • Configure, compile and install -AOLserver. Many people need to run more than -one version of AOLserver in parallel. This section accommodates -future upgrades by installing AOLserver 4 in /usr/local/aolserver40r9.

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

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

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

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

    1. -Install nscache

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

      [root aolserver]# cd /usr/local/src/aolserver40r10/nscache
       [root nscache]# make install AOLSERVER=/usr/local/aolserver
       
    2. Install nsoracle (if you want to -use Oracle)

      -[root nscache]# cd ../nsoracle
      +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 @@ -133,57 +130,43 @@

    3. Install nspostgres (if you want -to use Postgres)

      -[root nscache]# cd ../nspostgres
      +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 +

      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 that all libraries are linked in: ldd /usr/local/src/aolserver40r10/nspostgres/nspostgres.so

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

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

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

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

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

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

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

      Now install nssha1:

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

      [root nspostgres]# cd ../nssha1
      +

      Now install nssha1:

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

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

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

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

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

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

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

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

      Now you can compile and configure tDOM

      -[root unix]# sh CONFIG
      +look like this:

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

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

      Now you can compile and configure tDOM

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

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

      Configure and compile TCLLIB

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

      [root nssha1]# cd ../tcllib
      +

      Configure and compile TCLLIB

      [root unix]# ./configure -prefix=/usr/local/aolserver40r10
       [root unix]# make install
       
    7. @@ -202,8 +185,7 @@ come back. (Note to maintainers: this should be moved to the next page and integrated into the text there)

      • -

        Oracle

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

        Oracle

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

        PostgreSQL

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

        PostgreSQL

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

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

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

    9. Test Index: openacs-4/packages/acs-core-docs/www/apm-design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/apm-design.adp,v diff -u -r1.4.2.6 -r1.4.2.7 --- openacs-4/packages/acs-core-docs/www/apm-design.adp 13 Jul 2023 12:43:18 -0000 1.4.2.6 +++ openacs-4/packages/acs-core-docs/www/apm-design.adp 2 Sep 2024 09:40:20 -0000 1.4.2.7 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Package Manager Design} Package Manager Design +

    10. +and the OpenACS Kernel, +which includes APM.

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

  • -User Interface

    The APM's user interface is part of the OpenACS Administration Service. +User Interface

    The APM's user interface is part of the ACS Site-Wide Administration. The UI is the primary point of contact with APM by developers and administrators. It is part of OpenACS Administration, because only the site-wide administrator should be able to access it. Thus in 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.42.2.2 -r1.42.2.3 --- openacs-4/packages/acs-core-docs/www/apm-design.html 3 Sep 2021 09:14:47 -0000 1.42.2.2 +++ openacs-4/packages/acs-core-docs/www/apm-design.html 2 Sep 2024 09:40:20 -0000 1.42.2.3 @@ -481,7 +481,7 @@

  • apm_enabled_package_versions A view (subset) of the above table with only enabled versions.

  • User Interface

    The APM's user interface is part of the -OpenACS Administration Service. The UI is the primary +ACS Site-Wide Administration. The UI is the primary point of contact with APM by developers and administrators. It is part of OpenACS Administration, because only the site-wide administrator should be able to access it. Thus in order to develop a package, the developer must be granted Index: openacs-4/packages/acs-core-docs/www/apm-requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/apm-requirements.adp,v diff -u -r1.4.2.7 -r1.4.2.8 --- openacs-4/packages/acs-core-docs/www/apm-requirements.adp 1 Aug 2024 08:03:38 -0000 1.4.2.7 +++ openacs-4/packages/acs-core-docs/www/apm-requirements.adp 2 Sep 2024 09:40:20 -0000 1.4.2.8 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Package Manager Requirements} Package Manager Requirements +

    Index: openacs-4/packages/acs-core-docs/www/automated-backup.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/automated-backup.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/automated-backup.adp 13 Jul 2023 12:43:18 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/automated-backup.adp 2 Sep 2024 09:40:20 -0000 1.4.2.6 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Automated Backup} Automated Backup +

    @@ -19,15 +23,11 @@
  • Make sure that the manual backup process described above works.

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

  • -

    Make sure the file is executable:

    -chmod +x backup.sh
    -
    +

    Make sure the file is executable:

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

    -30 1 * * *        sh /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/backup.sh
    -
    +example runs the backup script at 1:30 am every day.

    30 1 * * *        sh /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/backup.sh
  • Index: openacs-4/packages/acs-core-docs/www/automated-testing-best-practices.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/automated-testing-best-practices.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/automated-testing-best-practices.adp 13 Jul 2023 12:43:18 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/automated-testing-best-practices.adp 2 Sep 2024 09:40:20 -0000 1.4.2.6 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Automated Testing} Automated Testing +

    @@ -15,49 +19,46 @@ 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.  Try -strings starting with a -Bad -and strings containing [BAD], +Special characters in Tcl.  Try strings +starting with a -Bad and +strings containing [BAD], {, \077, and $Bad. For user input, [BAD] should never be evaluated, \077 should not be turned into a ? and $Bad should not be interpolated. The string -Bad [BAD] \077 { $Bad should be valid user input, should pass through the system unaltered, and if it isn't that's a bug.

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

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

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

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

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

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

    ($‌Id: auto-testing.xml,v 1.4.2.1 2019/08/09 20:04:23 gustafn Exp $)
    \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/backup-recovery.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/backup-recovery.adp,v diff -u -r1.4.2.10 -r1.4.2.11 --- openacs-4/packages/acs-core-docs/www/backup-recovery.adp 1 Aug 2024 08:03:38 -0000 1.4.2.10 +++ openacs-4/packages/acs-core-docs/www/backup-recovery.adp 2 Sep 2024 09:40:20 -0000 1.4.2.11 @@ -1,18 +1,19 @@ -{/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 8. Backup and -Recovery} -Chapter 8. Backup and -Recovery +{/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 8. Backup and Recovery} +Chapter 8. Backup and Recovery +

    -Chapter 8. Backup and -Recovery

    +Chapter 8. Backup and Recovery

    Table of Contents

    Backup Strategy
    Manual @@ -30,8 +31,8 @@ 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 8.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.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/backups-with-cvs.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/backups-with-cvs.adp 13 Jul 2023 12:43:18 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/backups-with-cvs.adp 2 Sep 2024 09:40:21 -0000 1.4.2.6 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Using CVS for backup-recovery} Using CVS for backup-recovery +

    @@ -17,8 +21,7 @@ down to the minute. For maximum safety, you can apply a tag to your current files. You will still need to back up your database.

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

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

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

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

    -[root root]# su - $OPENACS_SERVICE_NAME
    +

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

    [root root]# su - $OPENACS_SERVICE_NAME
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
     
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cvs up -r current
    @@ -49,8 +51,8 @@
     

    \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/bootstrap-acs.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/bootstrap-acs.adp,v diff -u -r1.4.2.6 -r1.4.2.7 --- openacs-4/packages/acs-core-docs/www/bootstrap-acs.adp 13 Jul 2023 12:43:18 -0000 1.4.2.6 +++ openacs-4/packages/acs-core-docs/www/bootstrap-acs.adp 2 Sep 2024 09:40:21 -0000 1.4.2.7 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Bootstrapping OpenACS} Bootstrapping OpenACS +

    Index: openacs-4/packages/acs-core-docs/www/complete-install.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/complete-install.adp,v diff -u -r1.3.2.5 -r1.3.2.6 --- openacs-4/packages/acs-core-docs/www/complete-install.adp 13 Jul 2023 12:43:18 -0000 1.3.2.5 +++ openacs-4/packages/acs-core-docs/www/complete-install.adp 2 Sep 2024 09:40:21 -0000 1.3.2.6 @@ -1,9 +1,11 @@ -{/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 3. Complete -Installation} -Chapter 3. Complete -Installation +{/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 3. Complete Installation} +Chapter 3. Complete Installation + {/doc/acs-core-docs/ {ACS Core Documentation}} {Configuring an OpenACS package} Configuring an OpenACS package +

    Index: openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.adp,v diff -u -r1.4.2.10 -r1.4.2.11 --- openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.adp 1 Aug 2024 08:03:39 -0000 1.4.2.10 +++ openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.adp 2 Sep 2024 09:40:21 -0000 1.4.2.11 @@ -2,11 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Setting Permissions on an OpenACS package} Setting Permissions on an OpenACS package +

    Index: openacs-4/packages/acs-core-docs/www/configuring-install-packages.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-install-packages.adp,v diff -u -r1.4.2.11 -r1.4.2.12 --- openacs-4/packages/acs-core-docs/www/configuring-install-packages.adp 1 Aug 2024 08:03:39 -0000 1.4.2.11 +++ openacs-4/packages/acs-core-docs/www/configuring-install-packages.adp 2 Sep 2024 09:40:21 -0000 1.4.2.12 @@ -2,11 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Installing OpenACS packages} Installing OpenACS packages +

    @@ -36,19 +39,17 @@ system will check to make sure you have all necessary packages that the package you want depends on. If you're installing from Local Files, and you are missing any packages, you may have to add -the packages your desired package depends on: the section called -“Upgrading the OpenACS -files” +the packages your desired package depends on: the section called “Upgrading the +OpenACS files”

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

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

    Index: openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.adp,v diff -u -r1.4.2.10 -r1.4.2.11 --- openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.adp 1 Aug 2024 08:03:39 -0000 1.4.2.10 +++ openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.adp 2 Sep 2024 09:40:21 -0000 1.4.2.11 @@ -2,11 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Mounting OpenACS packages} Mounting OpenACS packages +

    Index: openacs-4/packages/acs-core-docs/www/configuring-new-site.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-new-site.adp,v diff -u -r1.4.2.6 -r1.4.2.7 --- openacs-4/packages/acs-core-docs/www/configuring-new-site.adp 13 Jul 2023 12:43:18 -0000 1.4.2.6 +++ openacs-4/packages/acs-core-docs/www/configuring-new-site.adp 2 Sep 2024 09:40:21 -0000 1.4.2.7 @@ -1,18 +1,20 @@ -{/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 4. Configuring a new OpenACS -Site} -Chapter 4. Configuring a new OpenACS -Site +{/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 4. Configuring a new OpenACS Site} +Chapter 4. Configuring a new OpenACS Site +

    -Chapter 4. Configuring -a new OpenACS Site

    +Chapter 4. Configuring a new +OpenACS Site

    Table of Contents

    Installing OpenACS packages
    Mounting OpenACS Index: openacs-4/packages/acs-core-docs/www/credits.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/credits.adp,v diff -u -r1.5.2.6 -r1.5.2.7 --- openacs-4/packages/acs-core-docs/www/credits.adp 13 Jul 2023 12:43:18 -0000 1.5.2.6 +++ openacs-4/packages/acs-core-docs/www/credits.adp 2 Sep 2024 09:40:21 -0000 1.5.2.7 @@ -2,6 +2,10 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Appendix C. Credits} Appendix C. Credits + {/doc/acs-core-docs/ {ACS Core Documentation}} {CVS Guidelines} CVS Guidelines +

    @@ -38,8 +42,7 @@ export CVS_RSH=ssh into ~/.bash_profile.). If your local account name does not match your cvs.openacs.org account -name, create a file ~/.ssh/config with an entry like:

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

    Host cvs.openacs.org
         User joel
     

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

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

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

    Add an avail line of the form:

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

    Add an avail line of the form:

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

    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 +OPTIONAL. These steps take an existing OpenACS directory and add it to a CVS repository.

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

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

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

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

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

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

      -export CVSROOT=/cvsroot
      -
      -[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ exit
      +

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

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

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

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

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

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

      [root root]# mv /var/lib/aolserver/$OPENACS_SERVICE_NAME /var/tmp
       [root root]# mkdir /var/lib/aolserver/$OPENACS_SERVICE_NAME
       
       [root root]# chown $OPENACS_SERVICE_NAME.$OPENACS_SERVICE_NAME /var/lib/aolserver/$OPENACS_SERVICE_NAME
      @@ -113,8 +106,8 @@
       
    \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/cvs-tips.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/cvs-tips.html,v diff -u -r1.37.2.8 -r1.37.2.9 --- openacs-4/packages/acs-core-docs/www/cvs-tips.html 1 Aug 2024 08:03:39 -0000 1.37.2.8 +++ openacs-4/packages/acs-core-docs/www/cvs-tips.html 2 Sep 2024 09:40:21 -0000 1.37.2.9 @@ -2,7 +2,7 @@ Appendix D. Using CVS with an OpenACS Site

    content_type:  The type for which the view is to be created.
    Prev Part III. For OpenACS Package Developers Next

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

    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
      Index: openacs-4/packages/acs-core-docs/www/database-management.adp
      ===================================================================
      RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/database-management.adp,v
      diff -u -r1.4.2.5 -r1.4.2.6
      --- openacs-4/packages/acs-core-docs/www/database-management.adp	13 Jul 2023 12:43:19 -0000	1.4.2.5
      +++ openacs-4/packages/acs-core-docs/www/database-management.adp	2 Sep 2024 09:40:21 -0000	1.4.2.6
      @@ -1,9 +1,11 @@
       
      -{/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 7. Database
      -Management}
      -Chapter 7. Database
      -Management
      +{/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 7. Database Management}
      +Chapter 7. Database Management
       
      +              
       {/doc/acs-core-docs/ {ACS Core Documentation}} {Database Access API}
       Database Access API
       
      +              
       
       		    

      @@ -612,8 +616,7 @@ } { set user_url [acs_community_member_url -user_id $user_id] } - -

      +
      db_resultrows
      db_resultrows

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

       db_compatible_rdbms_p db_type
      -                
      -

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

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

      db_package_supports_rdbms_p
       db_package_supports_rdbms_p db_type_list
      -                
      -

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

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

      db_legacy_package_p
       db_legacy_package_p db_type_list
      -                
      -

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

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

      Index: openacs-4/packages/acs-core-docs/www/db-api.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/db-api.adp,v diff -u -r1.5.2.8 -r1.5.2.9 --- openacs-4/packages/acs-core-docs/www/db-api.adp 1 Aug 2024 08:03:39 -0000 1.5.2.8 +++ openacs-4/packages/acs-core-docs/www/db-api.adp 2 Sep 2024 09:40:21 -0000 1.5.2.9 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {The OpenACS Database Access API} The OpenACS Database Access API +

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

      There are several things to note here:

        +}

        There are several things to note here:

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

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

          There are a few problems with this:

            +and some_table.condition_p = '$foo'

            There are a few problems with this:

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

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

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

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

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

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

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

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

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

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

            Nulls and Bind Variables

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

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

          The database library will allocate this number of sequence +

          The database library will allocate this number of sequence values at server startup. It will periodically scan pools and allocate new values for sequences which are less than half-full. (This normally occurs every 60 seconds, and is configurable via the @@ -260,9 +256,7 @@ 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 +

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

          @@ -312,8 +306,7 @@ } { set user_url [acs_community_member_url -user_id $user_id] } - -

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

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

          For example,

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

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

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

          db_foreach
          @@ -347,33 +339,29 @@ doc_body_append "<li>There are no greebles in the database.\n" } - -

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

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

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

          Performs the SQL query sql, setting variables to +

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

          Example:

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

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

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

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

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

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

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

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

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

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

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

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

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

      Performs the DML or DDL statement sql.

      If a length-n list of +

      Performs the DML or DDL statement sql.

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

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

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

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

      Analogous to ns_ora +

      Analogous to ns_ora write_clob/write_blob/blob_get_file.

      db_release_unused_handles
                   db_release_unused_handles
      -          
      -

      Releases any allocated, unused database handles.

      +

      Releases any allocated, unused database handles.

      db_transaction
       db_transaction code_block [ on_error { code_block } ]
      -          
      -

      Executes code_block transactionally. +

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

      db_resultrows
       db_resultrows
      -          
      -

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

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

      db_with_handle
      @@ -548,8 +526,7 @@ } } - - +
    ($‌Id: db-api.xml,v 1.17.2.6 2024/02/08 18:45:01 gustafn Exp $)
    @@ -586,8 +563,7 @@ db_flush_cache -cache_key_pattern page_${page_id}_* - - + {/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 11. Development -Reference} -Chapter 11. Development -Reference +{/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 11. Development Reference} +Chapter 11. Development Reference +

    -Chapter 11. Development -Reference

    +Chapter 11. Development Reference

    Table of Contents

    OpenACS Packages
    OpenACS Data Models Index: openacs-4/packages/acs-core-docs/www/doc-standards.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/doc-standards.adp,v diff -u -r1.3.2.5 -r1.3.2.6 --- openacs-4/packages/acs-core-docs/www/doc-standards.adp 13 Jul 2023 12:43:19 -0000 1.3.2.5 +++ openacs-4/packages/acs-core-docs/www/doc-standards.adp 2 Sep 2024 09:40:21 -0000 1.3.2.6 @@ -1,14 +1,15 @@ -{/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 13. Documentation -Standards} -Chapter 13. Documentation -Standards +{/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 13. Documentation Standards} +Chapter 13. Documentation Standards +

    Index: openacs-4/packages/acs-core-docs/www/docbook-primer.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/docbook-primer.adp,v diff -u -r1.6.2.12 -r1.6.2.13 --- openacs-4/packages/acs-core-docs/www/docbook-primer.adp 1 Aug 2024 08:03:39 -0000 1.6.2.12 +++ openacs-4/packages/acs-core-docs/www/docbook-primer.adp 2 Sep 2024 09:40:21 -0000 1.6.2.13 @@ -2,23 +2,27 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {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 incredible possibilities and applications, -but this power comes with some complexity and a steep learning -curve that is only attenuated by good documentation. Our goal is to -write superb documentation, so that users, developers and -administrators of OpenACS installations can enjoy the system.

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

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

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

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

    OpenACS Documentation Strategy

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

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

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

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

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

      @@ -451,7 +454,7 @@ of elements and use more exotic features in your documents. The list is made up of SGML-elements but basically the same elements are valid in the XML DTD as long as -you remember to: +you remember to:

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

        Document Structure

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

             book                        : Docs for one package - templating
              |
        @@ -517,20 +520,19 @@
         

      Headlines, Sections

      - Given that + 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 + You need to feed every <sect1> two attributes. The first attribute, id, is standard and can be used with all elements. It comes in very handy when interlinking between documents (more about this when talking about links in the -section called “Links”). The -value of id has to be unique -throughout the book you're making since the id's in your sect1's will turn into filenames when +section called “Links”). The value of id has to be unique throughout the book +you're making since the id's in your sect1's will turn into filenames when the book is parsed into HTML.

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

      Right after the opening tag you put the title of the document - @@ -543,7 +545,7 @@ </sect1>

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

      Code

      - For + For displaying a snippet of code, a filename or anything else you just want to appear as a part of a sentence, we use <computeroutput> and <code> tags. These replace the HTML-tag <code> tag, @@ -567,7 +569,7 @@

      Links

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

      1. Inside @@ -576,7 +578,7 @@

      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 +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>.
      @@ -594,18 +596,16 @@
       <xref linkend="packages-looks"></xref>.
       

      And the output is:

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

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

      2. Linking outside the documentation

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

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

      ....will create a hyper-link to Oracle in the HTML-version of +(<ulink>):

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

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

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

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

      Lists

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

      1. How to make @@ -699,7 +699,7 @@

      Tables

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

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

      Emphasis

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

      The <emphasis> tag defaults to italics when parsed. If you're looking for @@ -806,8 +806,8 @@

      Index: openacs-4/packages/acs-core-docs/www/docbook-primer.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/docbook-primer.html,v diff -u -r1.56.2.9 -r1.56.2.10 --- openacs-4/packages/acs-core-docs/www/docbook-primer.html 1 Aug 2024 08:03:39 -0000 1.56.2.9 +++ openacs-4/packages/acs-core-docs/www/docbook-primer.html 2 Sep 2024 09:40:21 -0000 1.56.2.10 @@ -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:

      • @@ -640,7 +640,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 @@ -689,7 +689,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
          @@ -713,20 +713,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 the section called “Links”). The value of id has to be unique throughout the book you're making since the id's in your sect1's will turn into filenames when the book is parsed into HTML.

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

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

        - + Inside this container your document will be split up into <sect2>'s, each with the same requirements - id and xreflabel @@ -750,7 +750,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> @@ -768,12 +768,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:

        @@ -797,7 +797,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 @@ -818,7 +818,7 @@ for you.

        - + To insert a graphic we use the elements <mediaobject>, <imageobject>, @@ -844,7 +844,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 @@ -889,7 +889,7 @@ </variablelist>

        Tables

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

        Emphasis

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

        Index: openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.adp,v diff -u -r1.6.2.6 -r1.6.2.7 --- openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.adp 13 Jul 2023 12:43:19 -0000 1.6.2.6 +++ openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.adp 2 Sep 2024 09:40:21 -0000 1.6.2.7 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Constraint naming standard} Constraint naming standard +

        Index: openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.adp,v diff -u -r1.4.2.6 -r1.4.2.7 --- openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.adp 13 Jul 2023 12:43:19 -0000 1.4.2.6 +++ openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.adp 2 Sep 2024 09:40:21 -0000 1.4.2.7 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {ACS File Naming and Formatting Standards} ACS File Naming and Formatting Standards +

        Index: openacs-4/packages/acs-core-docs/www/eng-standards-plsql.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-plsql.adp,v diff -u -r1.5.2.5 -r1.5.2.6 --- openacs-4/packages/acs-core-docs/www/eng-standards-plsql.adp 13 Jul 2023 12:43:19 -0000 1.5.2.5 +++ openacs-4/packages/acs-core-docs/www/eng-standards-plsql.adp 2 Sep 2024 09:40:21 -0000 1.5.2.6 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {PL/SQL Standards} PL/SQL Standards +

        Index: openacs-4/packages/acs-core-docs/www/eng-standards-versioning.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-versioning.adp,v diff -u -r1.4.2.6 -r1.4.2.7 --- openacs-4/packages/acs-core-docs/www/eng-standards-versioning.adp 13 Jul 2023 12:43:19 -0000 1.4.2.6 +++ openacs-4/packages/acs-core-docs/www/eng-standards-versioning.adp 2 Sep 2024 09:40:22 -0000 1.4.2.7 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Release Version Numbering} Release Version Numbering +

        @@ -45,8 +49,7 @@

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

      -

    A complete sequence of milestones between two releases:

    -5.0.0
    +

    A complete sequence of milestones between two releases:

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

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

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

      +
      • Level -1: Incompatible. This package is not supported for Index: openacs-4/packages/acs-core-docs/www/eng-standards.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards.adp,v diff -u -r1.3.2.5 -r1.3.2.6 --- openacs-4/packages/acs-core-docs/www/eng-standards.adp 13 Jul 2023 12:43:19 -0000 1.3.2.5 +++ openacs-4/packages/acs-core-docs/www/eng-standards.adp 2 Sep 2024 09:40:22 -0000 1.3.2.6 @@ -1,14 +1,15 @@ -{/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 12. Engineering -Standards} -Chapter 12. Engineering -Standards +{/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 12. Engineering Standards} +Chapter 12. Engineering Standards +

        Index: openacs-4/packages/acs-core-docs/www/ext-auth-requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/ext-auth-requirements.adp,v diff -u -r1.6.2.11 -r1.6.2.12 --- openacs-4/packages/acs-core-docs/www/ext-auth-requirements.adp 1 Aug 2024 08:03:39 -0000 1.6.2.11 +++ openacs-4/packages/acs-core-docs/www/ext-auth-requirements.adp 2 Sep 2024 09:40:22 -0000 1.6.2.12 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {External Authentication Requirements} External Authentication Requirements +

        @@ -672,8 +676,8 @@

        \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/filename.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/filename.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/filename.adp 13 Jul 2023 12:43:19 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/filename.adp 2 Sep 2024 09:40:22 -0000 1.4.2.6 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Detailed Design Documentation Template} Detailed Design Documentation Template +

        Index: openacs-4/packages/acs-core-docs/www/for-everyone.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/for-everyone.adp,v diff -u -r1.3.2.5 -r1.3.2.6 --- openacs-4/packages/acs-core-docs/www/for-everyone.adp 13 Jul 2023 12:43:20 -0000 1.3.2.5 +++ openacs-4/packages/acs-core-docs/www/for-everyone.adp 2 Sep 2024 09:40:22 -0000 1.3.2.6 @@ -2,14 +2,17 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Part I. OpenACS For Everyone} Part I. OpenACS For Everyone +

        -Part I. OpenACS For -Everyone

        +Part I. OpenACS For Everyone

        Table of Contents

        1. High level information: What is OpenACS?
        @@ -21,9 +24,8 @@
        \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/form-builder.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/form-builder.adp,v diff -u -r1.4.2.10 -r1.4.2.11 --- openacs-4/packages/acs-core-docs/www/form-builder.adp 1 Aug 2024 08:03:39 -0000 1.4.2.10 +++ openacs-4/packages/acs-core-docs/www/form-builder.adp 2 Sep 2024 09:40:22 -0000 1.4.2.11 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Using Form Builder: building html forms dynamically} Using Form Builder: building html forms dynamically +

        @@ -28,22 +32,19 @@ 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 "
          +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)
          +

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

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

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

          This will result in a single name/value pair coming back in the submitted form. Handle this within the same ad_form structure, in the -new_data and -edit_data. In the example, it is available as $foo @@ -57,30 +58,24 @@ 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
        +form element, include an HTML section

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

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

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

        -    if {[info exists pm_task_id] && $pm_task_id ne ""} {
        +in subcategories:

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

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

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

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

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

        Troubleshooting

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

        Tips @@ -114,8 +108,8 @@

        \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/general-documents.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/general-documents.adp,v diff -u -r1.3.2.5 -r1.3.2.6 --- openacs-4/packages/acs-core-docs/www/general-documents.adp 13 Jul 2023 12:43:20 -0000 1.3.2.5 +++ openacs-4/packages/acs-core-docs/www/general-documents.adp 2 Sep 2024 09:40:22 -0000 1.3.2.6 @@ -1,27 +1,31 @@ -{/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 1. High level information: -What is OpenACS?} -Chapter 1. High level information: -What is OpenACS? +{/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 1. High level information: What is +OpenACS?} +Chapter 1. High level information: What is +OpenACS? +

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

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

    Table of Contents

    Overview
    OpenACS Release Notes
    Index: openacs-4/packages/acs-core-docs/www/groups-design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/groups-design.adp,v diff -u -r1.4.2.6 -r1.4.2.7 --- openacs-4/packages/acs-core-docs/www/groups-design.adp 13 Jul 2023 12:43:20 -0000 1.4.2.6 +++ openacs-4/packages/acs-core-docs/www/groups-design.adp 2 Sep 2024 09:40:22 -0000 1.4.2.7 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Groups Design} Groups Design +

    Index: openacs-4/packages/acs-core-docs/www/groups-requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/groups-requirements.adp,v diff -u -r1.4.2.6 -r1.4.2.7 --- openacs-4/packages/acs-core-docs/www/groups-requirements.adp 13 Jul 2023 12:43:20 -0000 1.4.2.6 +++ openacs-4/packages/acs-core-docs/www/groups-requirements.adp 2 Sep 2024 09:40:22 -0000 1.4.2.7 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Groups Requirements} Groups Requirements +

    Index: openacs-4/packages/acs-core-docs/www/high-avail.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/high-avail.adp,v diff -u -r1.4.2.10 -r1.4.2.11 --- openacs-4/packages/acs-core-docs/www/high-avail.adp 1 Aug 2024 08:03:39 -0000 1.4.2.10 +++ openacs-4/packages/acs-core-docs/www/high-avail.adp 2 Sep 2024 09:40:22 -0000 1.4.2.11 @@ -2,17 +2,20 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {High Availability/High Performance Configurations} High Availability/High Performance Configurations +

    High Availability/High Performance Configurations

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

    +called “Running a PostgreSQL database on another server”.

    Figure 6.1. Multiple-server configuration

    Multiple-server configuration

    Index: openacs-4/packages/acs-core-docs/www/how-do-I.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/how-do-I.adp,v diff -u -r1.5.2.10 -r1.5.2.11 --- openacs-4/packages/acs-core-docs/www/how-do-I.adp 1 Aug 2024 08:03:39 -0000 1.5.2.10 +++ openacs-4/packages/acs-core-docs/www/how-do-I.adp 2 Sep 2024 09:40:22 -0000 1.5.2.11 @@ -2,11 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {How Do I?} How Do I? +

    @@ -57,9 +60,7 @@ examine how this works:

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

      -<master>
      -

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

      <master>

      If it appears exactly like this, without any arguments, the template processor uses default-master for that subsite. For pages in /var/lib/aolserver/$OPENACS_SERVICE_NAME/www, this is /var/lib/aolserver/$OPENACS_SERVICE_NAME/www/default-master.adp @@ -85,43 +86,39 @@ diagnose a permissions problem?

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

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

        1. Go to the http://yourserver.net/events as a visitor (ie, log out and, if necessary, clear cookies). This in on a 4.6.3 site with events version 0.1d3.

        2. Select an available event

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

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

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

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

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

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

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

        We need to know what that procedure does, so go to /api-doc, paste +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 privilege on +body of the proc is simply

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

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

      2. -Setting Permissions. A permission -has three parts: the privilege, the object of the privilege, and -the subject being granted the privilege. In this case the privilege -is "write," the object is the Events package, and the +Setting Permissions. A permission has +three parts: the privilege, the object of the privilege, and the +subject being granted the privilege. In this case the privilege is +"write," the object is the Events package, and the subject is all Registered Users.

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

        2. Click "Grant Permission"

        3. @@ -131,8 +128,8 @@

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

      -

      Figure 4.3. Granting Permissions in -5.0

      Granting Permissions in 5.0
      +

      Figure 4.3. Granting Permissions +in 5.0

      Granting Permissions in 5.0

    @@ -141,8 +138,7 @@ \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/i18n-convert.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-convert.adp,v diff -u -r1.4.2.10 -r1.4.2.11 --- openacs-4/packages/acs-core-docs/www/i18n-convert.adp 1 Aug 2024 08:03:39 -0000 1.4.2.10 +++ openacs-4/packages/acs-core-docs/www/i18n-convert.adp 2 Sep 2024 09:40:22 -0000 1.4.2.11 @@ -2,6 +2,10 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {How to Internationalize a Package} How to Internationalize a Package +

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

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

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

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

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

  • -Internationalize Package -Parameters.  See Multilingual APM Parameters +Internationalize SQL Code. If there is any +user-visible Tcl code in the .sql or .xql files, internationalize +that the same way as for the Tcl files.

  • +Internationalize Package Parameters.  See +Multilingual APM Parameters

  • Internationalize Date and Time queries. 

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

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

      grep -r "to_char.*H" *
       grep -r "to_date.*H" *
       
    2. In SQL statements, replace the format string with the ANSI standard format, YYYY-MM-DD HH24:MI:SS and change the field name to *_ansi so that it cannot be confused with previous, improperly formatting fields. For -example,

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

      becomes

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

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

      becomes

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

      -set foo_date_ansi [lc_time_system_to_conn $foo_date_ansi]
      -

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

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

  • @@ -116,9 +114,7 @@ localization; they are placeholders that format dates with the appropriate codes for the user's locale. These codes are: %x, %X, %q, %Q, and %c. -

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

    Use the _pretty version in +

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

    Use the _pretty version in your ADP page.

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

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

    • %X: Time (12:00 AM)

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

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

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

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

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

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

    where package_key is the key of the package that you want to test. If you don't provide the package_key argument then all @@ -159,40 +153,33 @@

  • 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, +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 +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, 
    +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 + </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
    +example:

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

    ... can be rewritten:

    -<if \@simulation.casting_type\@ eq "open">
    +simulation begins.

    ... can be rewritten:

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

    Another example, where bugs are concatenated with a number:

    -<if \@components.view_bugs_url\@ not nil>
    +</else>

    Another example, where bugs are concatenated with a number:

    <if \@components.view_bugs_url\@ not nil>
       <a href="\@components.view_bugs_url\@" title="View the \@pretty_names.bugs\@ for this component">
       </if>
       \@components.num_bugs\@ 
    @@ -236,15 +221,13 @@
     <if \@components.view_bugs_url\@ not nil>
     </a>
     </if>
    -

    It would probably be better to do this as something like:

    -<if \@components.view_bugs_url\@ not nil>
    +

    It would probably be better to do this as something like:

    <if \@components.view_bugs_url\@ not nil>
       <if \@components.num_bugs\@ eq 1>
         <a href="\@components.view_bugs_url\@" title="#­bug-tracker.View_the_bug_fo_component#">#­bug-tracker.one_bug#</a>
       </if><else>
         <a href="\@components.view_bugs_url\@" title="#­bug-tracker.View_the_bug_fo_component#">#­bug-tracker.N_bugs#</a>
       </else>
    -</if>
    -
    +</if>
  • Don't combine keys in display @@ -254,25 +237,17 @@ resulting word order will not be correct for every language. Different languages may use expressions or idioms that don't match the phrase key-for-key. Create complete, distinct keys -instead of building text from several keys. For example:

    Original code:

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

    Problematic conversion:

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

    Better conversion:

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

    ... and include the variable in the key: "New %bug_label%". This gives +instead of building text from several keys. For example:

    Original code:

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

    Problematic conversion:

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

    Better conversion:

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

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

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

    -<a href="\@past_version.maintainer_url\@" title="#­bug-tracker.Email# \@past_version.maintainer_email\@">
    -\@past_version.maintainer_first_names\@ \@past_version.maintainer_last_name\@</a>
    -
    +the toolkit):

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

    For common words such as Yes and No, you can use a library of +Avoid unnecessary duplicate keys. When +phrases are exactly the same in several places, use a single +key.

    For common words such as Yes and No, you can use a library of keys at acs-kernel. For example, instead of using myfirstpackage.Yes, you can use acs-kernel.Yes. You can also @@ -284,40 +259,30 @@

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

    For example, the original code is

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

    For example, the original code is

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

    This is incorrectly internationalized to

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

    This is incorrectly internationalized to

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

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

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

    -{show_patch_status "open"}
    -

    It is broken if changed to

    -{show_patch_status "[_ bug-tracker.open]"}
    -
    +text that should not have been internationalized:

    {show_patch_status "open"}

    It is broken if changed to

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

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

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

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

    These would be more useful if they were, "you_can_filter", "you_do_not_have_permission_to_map_this_patch", and "you_do_not_have_permission_to_edit_this_patch". @@ -326,53 +291,38 @@ phrase. Ask yourself, if I was a translator and didn't know how this application worked, would this key and text make translation easy for me?

    Sometimes the automatic converter creates keys that don't -semantically match their text. Fix these:

    -<msg key="Fix">for version</msg>
    +semantically match their text. Fix these:

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

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

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

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

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

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

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

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

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

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

    When it becomes a key, it should be:

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

    Also, some keys had %var;noquote%, which is not needed since +tcl. Watch out for quoting and escaping when editing +text that is also code. For example, the original string

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

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

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

    When it becomes a key, it should be:

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

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

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

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

    ... if converted to

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

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

    -array set names [list key [_bug-tracker.Pretty] ...]
    -
    +Be careful with curly brackets. Code +within curly brackets isn't evaluated. Tcl uses curly brackets +as an alternative way to build lists. But Tcl also uses curly +brackets as an alternative to quotation marks for quoting text. So +this original code

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

    ... if converted to

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

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

    array set names [list key [_bug-tracker.Pretty] ...]
  • Index: openacs-4/packages/acs-core-docs/www/i18n-design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-design.adp,v diff -u -r1.3.2.5 -r1.3.2.6 --- openacs-4/packages/acs-core-docs/www/i18n-design.adp 13 Jul 2023 12:43:20 -0000 1.3.2.5 +++ openacs-4/packages/acs-core-docs/www/i18n-design.adp 2 Sep 2024 09:40:22 -0000 1.3.2.6 @@ -2,6 +2,10 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Design Notes} Design Notes + How Internationalization/Localization works in OpenACS + {/doc/acs-core-docs/ {ACS Core Documentation}} {Internationalization and Localization Overview} Internationalization and Localization Overview + {/doc/acs-core-docs/ {ACS Core Documentation}} {OpenACS Internationalization Requirements} OpenACS Internationalization Requirements +

    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.30.2.3 -r1.30.2.4 --- openacs-4/packages/acs-core-docs/www/i18n-requirements.html 3 Sep 2021 09:15:03 -0000 1.30.2.3 +++ openacs-4/packages/acs-core-docs/www/i18n-requirements.html 2 Sep 2024 09:40:22 -0000 1.30.2.4 @@ -128,7 +128,7 @@ 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 of arbitrary content resources together, keyed by a unique Index: openacs-4/packages/acs-core-docs/www/i18n-translators.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-translators.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/i18n-translators.adp 13 Jul 2023 12:43:20 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/i18n-translators.adp 2 Sep 2024 09:40:22 -0000 1.4.2.6 @@ -2,6 +2,10 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Translator's Guide} Translator's Guide + 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 +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 @@ -35,21 +38,19 @@ 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.

    +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 Guatemalan version of Spanish, you can copy the existing locale's catalog files using the script /packages/acs-core-docs/www/files/create-new-catalog.sh.

    \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/i18n.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/i18n.adp 13 Jul 2023 12:43:20 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/i18n.adp 2 Sep 2024 09:40:22 -0000 1.4.2.6 @@ -1,14 +1,15 @@ -{/doc/acs-core-docs/ {ACS Core Documentation}} { -Chapter 14. Internationalization} - -Chapter 14. Internationalization +{/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 14. Internationalization} +Chapter 14. Internationalization +

    Index: openacs-4/packages/acs-core-docs/www/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/index.adp,v diff -u -r1.29.2.10 -r1.29.2.11 --- openacs-4/packages/acs-core-docs/www/index.adp 1 Aug 2024 08:03:39 -0000 1.29.2.10 +++ openacs-4/packages/acs-core-docs/www/index.adp 2 Sep 2024 09:40:22 -0000 1.29.2.11 @@ -2,6 +2,10 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {OpenACS Core Documentation} OpenACS Core Documentation + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/individual-programs.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/individual-programs.adp,v diff -u -r1.5.2.7 -r1.5.2.8 --- openacs-4/packages/acs-core-docs/www/individual-programs.adp 13 Jul 2023 12:43:20 -0000 1.5.2.7 +++ openacs-4/packages/acs-core-docs/www/individual-programs.adp 2 Sep 2024 09:40:22 -0000 1.5.2.8 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Prerequisite Software} Prerequisite Software +

    @@ -17,8 +21,8 @@ and webserver to work. Many additional programs, such as a build environment, Mail Transport Agent, and source control system, are also needed for a fully effective installation.

    -

    Table 2.2. Version -Compatibility Matrix

    +

    Table 2.2. Version Compatibility +Matrix

    @@ -87,81 +91,80 @@ both PostgreSQL and Oracle. Some scripts require bash shell.

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

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

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

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

      • FreeBSD. FreeBSD guide. The OpenACS Reference Platform uses shell scripts written for bash, which is the standard Linux shell. If you are using a different shell, you will need to substitute your shell's conventions for setting environment variables when appropriate, and install bash to work with the scripts. Substitute fetch when the instructions suggest you use wget to download software.

      • -macOS. the section called -“OpenACS Installation Guide for -macOS” +macOS. the section called “OpenACS +Installation Guide for macOS”

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

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

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

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

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

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

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

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

      • Tcl 8.5.x. 

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

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

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

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

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

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

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

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

      • Web Server. The web server handles @@ -172,8 +175,8 @@ mod_nsd.

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

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

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

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

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

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

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

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

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

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

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

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

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

      • Balance 3.11 or newer, -OPTIONAL. "Balance is a simple but -powerful generic tcp proxy with round robin load balancing and -failover mechanisms." You need this or something equivalent if -you are running a high-availability production site and do not have -an external load balancing system.

      • +OPTIONAL. "Balance is a simple but powerful +generic tcp proxy with round robin load balancing and failover +mechanisms." You need this or something equivalent if you are +running a high-availability production site and do not have an +external load balancing system.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          ($‌Id: software.xml,v 1.29.2.1 2020/07/02 08:39:25 gustafn Exp $)
        \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/install-cvs.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-cvs.adp,v diff -u -r1.4.2.10 -r1.4.2.11 --- openacs-4/packages/acs-core-docs/www/install-cvs.adp 1 Aug 2024 08:03:40 -0000 1.4.2.10 +++ openacs-4/packages/acs-core-docs/www/install-cvs.adp 2 Sep 2024 09:40:22 -0000 1.4.2.11 @@ -2,17 +2,19 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Initialize CVS (OPTIONAL)} 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
        +Initialize CVS (OPTIONAL)

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

    [root tmp]# mkdir /cvsroot
     [root tmp]# cvs -d /cvsroot init
     [root tmp]#
     mkdir /cvsroot
    Index: openacs-4/packages/acs-core-docs/www/install-cvs.html
    ===================================================================
    RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-cvs.html,v
    diff -u -r1.43.2.8 -r1.43.2.9
    --- openacs-4/packages/acs-core-docs/www/install-cvs.html	1 Aug 2024 08:03:40 -0000	1.43.2.8
    +++ openacs-4/packages/acs-core-docs/www/install-cvs.html	2 Sep 2024 09:40:22 -0000	1.43.2.9
    @@ -1,5 +1,5 @@
     
    -Initialize CVS (OPTIONAL)
  • Prev Appendix B. Install additional supporting software Next

    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.adp
    ===================================================================
    RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-daemontools.adp,v
    diff -u -r1.4.2.10 -r1.4.2.11
    --- openacs-4/packages/acs-core-docs/www/install-daemontools.adp	1 Aug 2024 08:03:40 -0000	1.4.2.10
    +++ openacs-4/packages/acs-core-docs/www/install-daemontools.adp	2 Sep 2024 09:40:22 -0000	1.4.2.11
    @@ -2,11 +2,14 @@
     {/doc/acs-core-docs/ {ACS Core Documentation}} {Install Daemontools (OPTIONAL)}
     Install Daemontools (OPTIONAL)
     
    +              
     
     		    

    @@ -16,12 +19,11 @@ svgroup. svgroup is a script for granting permissions, to allow users other than root to use daemontools for specific services.

    1. -

      Install Daemontools

      +

      Install Daemontools

      download daemontools and install it.

      • -

        Red Hat 8

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

        Red Hat 8

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

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

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

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

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

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

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

        Debian

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

        Debian

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

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

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

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

      [root root]# cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/svgroup.txt /usr/local/bin/svgroup
       [root root]# chmod 755 /usr/local/bin/svgroupcp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/svgroup.txt /usr/local/bin/svgroup 
       chmod 755 /usr/local/bin/svgroup
       
      Index: openacs-4/packages/acs-core-docs/www/install-daemontools.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-daemontools.html,v diff -u -r1.44.2.8 -r1.44.2.9 --- openacs-4/packages/acs-core-docs/www/install-daemontools.html 1 Aug 2024 08:03:40 -0000 1.44.2.8 +++ openacs-4/packages/acs-core-docs/www/install-daemontools.html 2 Sep 2024 09:40:22 -0000 1.44.2.9 @@ -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
              Index: openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.adp
              ===================================================================
              RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.adp,v
              diff -u -r1.5.2.10 -r1.5.2.11
              --- openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.adp	1 Aug 2024 08:03:40 -0000	1.5.2.10
              +++ openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.adp	2 Sep 2024 09:40:22 -0000	1.5.2.11
              @@ -2,11 +2,14 @@
               {/doc/acs-core-docs/ {ACS Core Documentation}} {Install Full Text Search using Tsearch2}
               Install Full Text Search using Tsearch2
               
              +              
               
               		    

              @@ -18,7 +21,7 @@ OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

              -Install Tsearch2 module

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

    In earlier versions of PostgreSQL (7.4), tsearch2 was a contrib module. With PostgreSQL 9.*, it was included in the standard PostgreSQL package with minor naming changes (e.g. the function "rank" became "ts_rank"). PostgreSQL 9 included Index: openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.html,v diff -u -r1.15.2.8 -r1.15.2.9 --- openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.html 1 Aug 2024 08:03:40 -0000 1.15.2.8 +++ openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.html 2 Sep 2024 09:40:22 -0000 1.15.2.9 @@ -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

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

    Install Tsearch2 module

    In earlier versions of PostgreSQL (7.4), tsearch2 was a contrib module. With PostgreSQL 9.*, it was included in the standard PostgreSQL package with minor naming changes (e.g. the function "rank" became "ts_rank"). PostgreSQL 9 included a backward Index: openacs-4/packages/acs-core-docs/www/install-ldap-radius.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-ldap-radius.adp,v diff -u -r1.5.2.6 -r1.5.2.7 --- openacs-4/packages/acs-core-docs/www/install-ldap-radius.adp 13 Jul 2023 12:43:20 -0000 1.5.2.6 +++ openacs-4/packages/acs-core-docs/www/install-ldap-radius.adp 2 Sep 2024 09:40:22 -0000 1.5.2.7 @@ -2,11 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Install LDAP for use as external authentication} Install LDAP for use as external authentication +

    @@ -21,9 +24,8 @@ these section

    1. -Install openldap. Download and -install ns_ldap

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

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

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

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

      • Change config.tcl. Remove +use. Traditionally OpenACS has supported ns_ldap for +authentication by storing the OpenACS password in an encrypted +field within the LDAP server called "userPassword". +Furthermore, a CN field was used for searching for the username, +usually userID or something similar. This field is identical to the +usernamestored in OpenACS. +Therefore, the login will only work if you change login method to +make use of the username instead.

        • Change config.tcl. Remove the # in front of ns_param nsldap ${bindir}/nsldap.so to enable the loading of the ns_ldap module.

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

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

    Index: openacs-4/packages/acs-core-docs/www/install-more-software.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-more-software.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/install-more-software.adp 13 Jul 2023 12:43:20 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/install-more-software.adp 2 Sep 2024 09:40:22 -0000 1.4.2.6 @@ -1,9 +1,13 @@ -{/doc/acs-core-docs/ {ACS Core Documentation}} {Appendix B. Install additional -supporting software} -Appendix B. Install additional -supporting software +{/doc/acs-core-docs/ {ACS Core Documentation}} {Appendix B. Install additional supporting +software} +Appendix B. Install additional supporting +software + Index: openacs-4/packages/acs-core-docs/www/install-next-add-server.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-next-add-server.adp,v diff -u -r1.4.2.6 -r1.4.2.7 --- openacs-4/packages/acs-core-docs/www/install-next-add-server.adp 13 Jul 2023 12:43:20 -0000 1.4.2.6 +++ openacs-4/packages/acs-core-docs/www/install-next-add-server.adp 2 Sep 2024 09:40:22 -0000 1.4.2.7 @@ -2,33 +2,31 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Running multiple services on one machine} Running multiple services on one machine +

    Running multiple services on one machine

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

    -set httpport              8000
    -set httpsport             8443 
    -

    to different values.

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

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

    If you want to install two services with different hostnames +the

    set httpport              8000
    +set httpsport             8443 

    to different values.

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

    set hostname               [ns_info hostname]
    +set address                127.0.0.1 

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

    Index: openacs-4/packages/acs-core-docs/www/install-next-backups.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-next-backups.adp,v diff -u -r1.4.2.7 -r1.4.2.8 --- openacs-4/packages/acs-core-docs/www/install-next-backups.adp 1 Aug 2024 08:03:40 -0000 1.4.2.7 +++ openacs-4/packages/acs-core-docs/www/install-next-backups.adp 2 Sep 2024 09:40:22 -0000 1.4.2.8 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Backup Strategy} Backup Strategy +

    @@ -31,8 +35,8 @@

    Index: openacs-4/packages/acs-core-docs/www/install-next-nightly-vacuum.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-next-nightly-vacuum.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/install-next-nightly-vacuum.adp 13 Jul 2023 12:43:20 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/install-next-nightly-vacuum.adp 2 Sep 2024 09:40:22 -0000 1.4.2.6 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Vacuum Postgres nightly} Vacuum Postgres nightly +

    @@ -22,8 +26,7 @@ before!) you've made a backup! The "vacuum" command is very reliable, but conservatism is the key to good system management. So, if you're using the export procedure described -above, you don't need to do this extra step.

    Edit your crontab:

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

    Edit your crontab:

    [joeuser ~]$ crontab -e
     

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

     0 1 * * * /usr/local/pgsql/bin/vacuumdb $OPENACS_SERVICE_NAME
    @@ -32,8 +35,8 @@
     

    \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/install-nsopenssl.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-nsopenssl.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/install-nsopenssl.adp 13 Jul 2023 12:43:20 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/install-nsopenssl.adp 2 Sep 2024 09:40:22 -0000 1.4.2.6 @@ -2,11 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Install nsopenssl} Install nsopenssl +

    @@ -24,8 +27,7 @@

    Install on AOLserver3

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

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

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

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

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

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

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

    [root bin]# cd /usr/local/src/aolserver
     [root aolserver]# cvs -d:pserver:anonymous\@cvs.sourceforge.net:/cvsroot/aolserver login
     [root aolserver]# cvs -d:pserver:anonymous\@cvs.sourceforge.net:/cvsroot/aolserver co nsopenssl
     [root aolserver]# cd nsopenssl
    Index: openacs-4/packages/acs-core-docs/www/install-nspam.adp
    ===================================================================
    RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-nspam.adp,v
    diff -u -r1.3.2.5 -r1.3.2.6
    --- openacs-4/packages/acs-core-docs/www/install-nspam.adp	13 Jul 2023 12:43:20 -0000	1.3.2.5
    +++ openacs-4/packages/acs-core-docs/www/install-nspam.adp	2 Sep 2024 09:40:22 -0000	1.3.2.6
    @@ -2,11 +2,14 @@
     {/doc/acs-core-docs/ {ACS Core Documentation}} {Install nspam}
     Install nspam
     
    +              
     
     		    

    Index: openacs-4/packages/acs-core-docs/www/install-openacs-delete-tablespace.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-openacs-delete-tablespace.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/install-openacs-delete-tablespace.adp 13 Jul 2023 12:43:20 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/install-openacs-delete-tablespace.adp 2 Sep 2024 09:40:22 -0000 1.4.2.6 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Deleting a tablespace} Deleting a tablespace +

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

    Should it become necessary to rebuild a tablespace from scratch, you can use the drop user command in SVRMGRL with the cascade option. This command will drop the -user and every database object the user owns.

    -SVRMGR> drop user $OPENACS_SERVICE_NAME cascade;
    +user and every database object the user owns.

    SVRMGR> drop user $OPENACS_SERVICE_NAME cascade;
     

    If this does not work because svrmgrl "cannot drop a user that is currently connected", make sure to kill the AOLserver -using this user. If it still does not work, do:

    -SVRMGR> select username, sid, serial# from v$session where lower(username)='$OPENACS_SERVICE_NAME';
    -

    and then

    -SVRMGR> alter system kill session 'sid, serial#';
    +using this user. If it still does not work, do:

    SVRMGR> select username, sid, serial# from v$session where lower(username)='$OPENACS_SERVICE_NAME';
    +

    and then

    SVRMGR> alter system kill session 'sid, serial#';
     

    where sid and serial# are replaced with the corresponding values for the open session.

    Use with caution!

    If you feel the need to delete everything related to the service, you -can also issue the following:

    -SVRMGR> drop tablespace $OPENACS_SERVICE_NAME including contents cascade constraints;
    +can also issue the following:

    SVRMGR> drop tablespace $OPENACS_SERVICE_NAME including contents cascade constraints;
     

    @@ -44,8 +44,7 @@ .

    Then, to drop the db, just do:

     [$OPENACS_SERVICE_NAME ~]$ dropdb $OPENACS_SERVICE_NAME
     
    -DROP DATABASE
    -
    +DROP DATABASE

    {/doc/acs-core-docs/ {ACS Core Documentation}} {AOLserver keepalive with inittab} AOLserver keepalive with inittab +

    @@ -36,8 +40,7 @@ [root ~]# chown root.web /usr/local/bin/restart-aolserver [root ~]# chmod 4750 /usr/local/bin/restart-aolserver [root ~]# ln -s /usr/bin/perl /usr/local/bin/perl -[root ~]# exit -

    +[root ~]# exit
  • Test the restart-aolserver script. We'll first kill all running servers to clean the @@ -50,8 +53,7 @@ [joeuser ~]$ restart-aolserver birdnotes Killing 23727 [joeuser ~]$ killall nsd -nsd: no process killed -

    The number 23727 indicates the process id(s) (PIDs) of the +nsd: no process killed

    The number 23727 indicates the process id(s) (PIDs) of the processes being killed. It is important that no processes are killed by the second call to killall. If there are processes being killed, it means that the script is not @@ -62,14 +64,12 @@ editing.

     [joeuser ~]$ su -
     Password: ************
    -[root ~]# emacs -nw /etc/inittab
    -
    +[root ~]# emacs -nw /etc/inittab
  • Copy this line into the bottom of the file as a template, making sure that the first field nss1 is unique.

    -nss1:345:respawn:/usr/local/aolserver/bin/nsd-postgres -i -u nobody -g web -t /home/joeuser/var/lib/aolserver/birdnotes/nsd.tcl
    -
    +nss1:345:respawn:/usr/local/aolserver/bin/nsd-postgres -i -u nobody -g web -t /home/joeuser/var/lib/aolserver/birdnotes/nsd.tcl
  • Important: Make sure there is a newline at the end of the file. If there is not a @@ -79,13 +79,11 @@ /etc/inittab.

     [root ~]# killall nsd    
     nsd: no process killed
    -[root ~]# /sbin/init q
    -
    +[root ~]# /sbin/init q
  • See if it worked by running the restart-aolserver script again.

     [root ~]# restart-aolserver birdnotes
    -Killing 23750
    -
    +Killing 23750
  • If processes were killed, congratulations, your server is now automated for startup and shutdown.

    Index: openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.adp,v diff -u -r1.4.2.10 -r1.4.2.11 --- openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.adp 1 Aug 2024 08:03:40 -0000 1.4.2.10 +++ openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.adp 2 Sep 2024 09:40:22 -0000 1.4.2.11 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Starting and Stopping an OpenACS instance.} Starting and Stopping an OpenACS instance. +

    @@ -48,19 +52,16 @@ into the /service directory. Daemontools' svscan process checks this directory every five seconds, and will quickly execute -run.

    -[$OPENACS_SERVICE_NAME etc]$ killall nsd
    +run.

    [$OPENACS_SERVICE_NAME etc]$ killall nsd
     nsd: no process killed
     [$OPENACS_SERVICE_NAME etc]$ emacs /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/daemontools/run
     [$OPENACS_SERVICE_NAME etc]$ exit
     
     [root root]# ln -s /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/daemontools/ /service/$OPENACS_SERVICE_NAME
     
    -

    Verify that AOLserver is running.

    -[root root]# ps -auxw | grep nsd$OPENACS_SERVICE_NAME   5562 14.4  6.2 22436 15952 ?       S    11:55   0:04 /usr/local/aolserver/bin/nsd -it /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/config.tcl -u serve
    +

    Verify that AOLserver is running.

    [root root]# ps -auxw | grep nsd$OPENACS_SERVICE_NAME   5562 14.4  6.2 22436 15952 ?       S    11:55   0:04 /usr/local/aolserver/bin/nsd -it /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/config.tcl -u serve
     root      5582  0.0  0.2  3276  628 pts/0    S    11:55   0:00 grep nsd
    -[root root]#
    -
    +[root root]#
  • The user $OPENACS_SERVICE_NAME can now control the service $OPENACS_SERVICE_NAME with these @@ -90,22 +91,18 @@ AOLserver services via daemontools. You can then restart a service via restart-aolserver $OPENACS_SERVICE_NAME -

    -[root root]# cp /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/restart-aolserver-daemontools.txt /usr/local/bin/restart-aolserver
    +

    [root root]# cp /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/restart-aolserver-daemontools.txt /usr/local/bin/restart-aolserver
     [root root]# chmod 755 /usr/local/bin/restart-aolserver
    -[root root]#
    -
    +[root root]#
  • At this point, these commands will work only for the root user. Grant permission for the web group to use svc commands on the $OPENACS_SERVICE_NAME -server.

    -[root root]# /usr/local/bin/svgroup web /service/$OPENACS_SERVICE_NAME
    +server.

    [root root]# /usr/local/bin/svgroup web /service/$OPENACS_SERVICE_NAME
     
    -[root root]#
    -
    +[root root]#
  • Verify that the controls work. You may want to tail -f /var/lib/aolserver/$OPENACS_SERVICE_NAME/log/$OPENACS_SERVICE_NAME-error.log in another window, so you can see what happens when you type these @@ -133,8 +130,8 @@


  • Index: openacs-4/packages/acs-core-docs/www/install-origins.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-origins.adp,v diff -u -r1.3.2.5 -r1.3.2.6 --- openacs-4/packages/acs-core-docs/www/install-origins.adp 13 Jul 2023 12:43:20 -0000 1.3.2.5 +++ openacs-4/packages/acs-core-docs/www/install-origins.adp 2 Sep 2024 09:40:22 -0000 1.3.2.6 @@ -2,10 +2,13 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Where did this document come from?} Where did this document come from? +

    @@ -16,12 +19,11 @@ away.

    Versions 4.6.2 to present were edited by Joel Aufrecht.

    These are a few of my sources:

    Please also see the Credits section -for more acknowledgements.

    +

    Please also see the Credits section for more +acknowledgements.

    Index: openacs-4/packages/acs-core-docs/www/install-overview.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-overview.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/install-overview.adp 13 Jul 2023 12:43:20 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/install-overview.adp 2 Sep 2024 09:40:22 -0000 1.4.2.6 @@ -1,9 +1,11 @@ -{/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 2. Installation -Overview} -Chapter 2. Installation -Overview +{/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 2. Installation Overview} +Chapter 2. Installation Overview + Index: openacs-4/packages/acs-core-docs/www/install-pam-radius.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-pam-radius.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/install-pam-radius.adp 13 Jul 2023 12:43:20 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/install-pam-radius.adp 2 Sep 2024 09:40:22 -0000 1.4.2.6 @@ -4,11 +4,14 @@ Install PAM Radius for use as external authentication +

    @@ -26,9 +29,8 @@ end of the file.

    1. -Install ns_pam. Download and -install ns_pam

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

      [root aolserver]# cd /usr/local/src/aolserver/
                 [root aolserver]# wget http://braindamage.alal.com/software/ns_pam-0.1.tar.gz
                 [root aolserver]# tar xvfz ns_pam-0.1.tar.gz
                 [root aolserver]# cd ns_pam-0.1
      @@ -43,8 +45,8 @@
       
    2. -Configure ns_pam. Configure -AOLserver for ns_pam

      To enable ns_pam in AOLServer you will first have to edit your +Configure ns_pam. Configure AOLserver for +ns_pam

      To enable ns_pam in AOLServer you will first have to edit your config.tcl file and enable the loading of the ns_pam module and configure the aolservers pam configuration file.

      • Change config.tcl. Remove @@ -65,8 +67,7 @@

        Configure PAM Radius. Configure and install PAM Radius

        You have to make sure that pam_radius v.1.3.16 or higher is -installed, otherwise you will have to install it.

        -[root ns_pam]# cd /usr/local/src/
        +installed, otherwise you will have to install it.

        [root ns_pam]# cd /usr/local/src/
                   [root src]# wget ftp://ftp.freeradius.org/pub/radius/pam_radius-1.3.16.tar
                   [root src]# tar xvf pam_radius-1.3.16
                   [root src]# cd pam_radius
        @@ -83,8 +84,7 @@
         

        Next you have to add the configuration lines to your Radius configuration file (/etc/rddb/server). For AOLserver to be able to access this information you have to change the access rights to -this file as well.

        -[root pam_radius]# echo "radius.yourdomain.com:1645 your_radius_password >>/etc/rddb/server
        +this file as well.

        [root pam_radius]# echo "radius.yourdomain.com:1645 your_radius_password >>/etc/rddb/server
                   [root src]# chown service0:web /etc/rddb/server
         
      • Index: openacs-4/packages/acs-core-docs/www/install-php.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-php.adp,v diff -u -r1.4.2.6 -r1.4.2.7 --- openacs-4/packages/acs-core-docs/www/install-php.adp 13 Jul 2023 12:43:20 -0000 1.4.2.6 +++ openacs-4/packages/acs-core-docs/www/install-php.adp 2 Sep 2024 09:40:22 -0000 1.4.2.7 @@ -2,11 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Install PHP for use in AOLserver} Install PHP for use in AOLserver +

        @@ -17,8 +20,7 @@ OpenACS documentation staff.

        To be able to use PHP software with AOLserver (and OpenACS), you have to install PHP with AOLserver support. Get the latest version from www.php.net. For convenience we get version 4.3.4 from a -mirror

        -[root root]# cd /usr/local/src
        +mirror

        [root root]# cd /usr/local/src
         [root src]# wget http://de3.php.net/distributions/php-4.3.4.tar.gz
         [root src]# tar xfz php-4.3.4.tar.gz
         [root src]# cd php-4.3.4
        Index: openacs-4/packages/acs-core-docs/www/install-qmail.adp
        ===================================================================
        RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-qmail.adp,v
        diff -u -r1.5.2.11 -r1.5.2.12
        --- openacs-4/packages/acs-core-docs/www/install-qmail.adp	1 Aug 2024 08:03:40 -0000	1.5.2.11
        +++ openacs-4/packages/acs-core-docs/www/install-qmail.adp	2 Sep 2024 09:40:22 -0000	1.5.2.12
        @@ -2,11 +2,14 @@
         {/doc/acs-core-docs/ {ACS Core Documentation}} {Install qmail (OPTIONAL)}
         Install qmail (OPTIONAL)
         
        +              
         
         		    

        @@ -15,13 +18,12 @@ want your OpenACS server to send and receive mail, and you don't want to use an alternate MTA.

        1. -Install qmail. QMail is available -as standard Debian/Ubuntu package, rpms for Fedora/Redhat/CenTOS -are available from QMail wiki +Install qmail. QMail is available as +standard Debian/Ubuntu package, rpms for Fedora/Redhat/CenTOS are +available from QMail wiki page

        2. -

          Replace sendmail with qmail's wrapper.

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

          Replace sendmail with qmail's wrapper.

          [root qmail-1.03]# rm -f /usr/bin/sendmail /usr/sbin/sendmail
           [root qmail-1.03]# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
           [root qmail-1.03]#
           rm -f /usr/bin/sendmail /usr/sbin/sendmail
          @@ -32,8 +34,7 @@
           should accept mail for. This command will automatically set up
           qmail correctly if you have correctly set a valid hostname. If not,
           you'll want to read /var/qmail/doc/INSTALL.ctl to find out how
          -to configure qmail.

          -[root qmail-1.03]# ./config-fast yourserver.test
          +to configure qmail.

          [root qmail-1.03]# ./config-fast yourserver.test
           
           Your fully qualified hostname is yourserver.test.
           Putting yourserver.test into control/me...
          @@ -49,8 +50,7 @@
           

          All incoming mail that isn't for a specific user is handled by the alias user. This includes all root mail. These commands prepare the alias user to -receive mail.

          -[root qmail-1.03]# cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
          +receive mail.

          [root qmail-1.03]# cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
           [root alias]# chmod 644 ~alias/.qmail*
           [root alias]# /var/qmail/bin/maildirmake ~alias/Maildir/
           [root alias]# chown -R alias.nofiles /var/qmail/alias/Maildir
          @@ -59,10 +59,9 @@
           chmod 644 ~alias/.qmail* 
           /var/qmail/bin/maildirmake ~alias/Maildir/ 
           chown -R alias.nofiles /var/qmail/alias/Maildir
          -

          Configure qmail to use the Maildir delivery format (instead of +

          Configure qmail to use the Maildir delivery format (instead of mbox), and install a version of the qmail startup script modified -to use Maildir.

          -[root alias]# echo "./Maildir" > /var/qmail/bin/.qmail
          +to use Maildir.

          [root alias]# echo "./Maildir" > /var/qmail/bin/.qmail
           [root alias]# cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/qmail.rc.txt /var/qmail/rc
           [root alias]# chmod 755 /var/qmail/rc
           [root alias]# 
          @@ -71,8 +70,7 @@
           chmod 755 /var/qmail/rc 
           
           

          Set up the skeleton directory so that new users will be -configured for qmail.

          -[root root]# /var/qmail/bin/maildirmake /etc/skel/Maildir
          +configured for qmail.

          [root root]# /var/qmail/bin/maildirmake /etc/skel/Maildir
           [root root]# echo "./Maildir/" > /etc/skel/.qmail
           [root root]# 
           /var/qmail/bin/maildirmake /etc/skel/Maildir
          @@ -82,8 +80,7 @@
           control script, copy the supervise control files, and set
           permissions. The last line links the control directories to
           /service, which will cause supervise to detect them and execute the
          -run files, causing qmail to start.

          -[root root]# mkdir -p /var/qmail/supervise/qmail-send/log
          +run files, causing qmail to start.

          [root root]# mkdir -p /var/qmail/supervise/qmail-send/log
           [root root]# mkdir -p /var/qmail/supervise/qmail-smtpd/log
           [root root]# mkdir /var/log/qmail
           [root root]# chown qmaill /var/log/qmail
          @@ -119,16 +116,14 @@
           

          Wait ten seconds or so, and then verify that the four qmail processes are running. If uptimes don't rise above 1 second, this may indicate broken scripts that are continuously restarting. -In that case, start debugging by checking permissions.

          -[root root]# qmailctl stat
          +In that case, start debugging by checking permissions.

          [root root]# qmailctl stat
           /service/qmail-send: up (pid 32700) 430 seconds
           /service/qmail-send/log: up (pid 32701) 430 seconds
           /service/qmail-smtpd: up (pid 32704) 430 seconds
           /service/qmail-smtpd/log: up (pid 32705) 430 seconds
           messages in queue: 0
           messages in queue but not yet preprocessed: 0
          -[root root]#
          -

          Further verify by sending and receiving email. Incoming mail for +[root root]#

          Further verify by sending and receiving email. Incoming mail for root is stored in /var/qmail/alias/Maildir.

        Index: openacs-4/packages/acs-core-docs/www/install-qmail.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-qmail.html,v diff -u -r1.45.2.8 -r1.45.2.9 --- openacs-4/packages/acs-core-docs/www/install-qmail.html 1 Aug 2024 08:03:40 -0000 1.45.2.8 +++ openacs-4/packages/acs-core-docs/www/install-qmail.html 2 Sep 2024 09:40:22 -0000 1.45.2.9 @@ -4,7 +4,7 @@ send and receive mail, and you don't want to use an alternate MTA.

        1. Install qmail. QMail is available as standard Debian/Ubuntu package, rpms for Fedora/Redhat/CenTOS are available from QMail wiki - page

        2. Replace sendmail with qmail's wrapper.

          [root qmail-1.03]# rm -f /usr/bin/sendmail /usr/sbin/sendmail
          +	     page

        3. 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
          @@ -26,7 +26,7 @@
           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.9.0/packages/acs-core-docs/www/files/qmail.rc.txt /var/qmail/rc
         [root alias]# chmod 755 /var/qmail/rc
        Index: openacs-4/packages/acs-core-docs/www/install-redhat.adp
        ===================================================================
        RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-redhat.adp,v
        diff -u -r1.5.2.12 -r1.5.2.13
        --- openacs-4/packages/acs-core-docs/www/install-redhat.adp	1 Aug 2024 08:03:40 -0000	1.5.2.12
        +++ openacs-4/packages/acs-core-docs/www/install-redhat.adp	2 Sep 2024 09:40:22 -0000	1.5.2.13
        @@ -1,18 +1,19 @@
         
        -{/doc/acs-core-docs/ {ACS Core Documentation}} {Appendix A. Install Red Hat
        -8/9}
        -Appendix A. Install Red Hat
        -8/9
        +{/doc/acs-core-docs/ {ACS Core Documentation}} {Appendix A. Install Red Hat 8/9}
        +Appendix A. Install Red Hat 8/9
         
        +              
         
         		    

        -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 @@ -38,7 +39,7 @@ Unplug the network cable from your computer. We don't want to connect to the network until we're sure the computer is secure. - (Wherever you + (Wherever you see the word secure, you should always read it as, "secure enough for our purposes, given the amount of work we're willing to exert and the estimated risk and consequences.")

  • Insert Red Hat 8.0 or 9.0 Disk 1 into the CD-ROM and reboot the @@ -76,7 +77,7 @@ screen

  • -

    Configure Networking. Again, if you know what you're doing, do this +

    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.

      @@ -104,7 +105,7 @@ development server we'll be setting up.

  • -Select any +Select any additional languages you want the computer to support and then click Next @@ -121,11 +122,11 @@ web server, because that would conflict with the database and web server we'll install later.

    +
    check Editors -(this installs emacs),
    click Details next +(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 +Publishing (this installs docbook),
    uncheck Server Configuration Tools,
    uncheck Web Server,
    uncheck Windows File Server,
    check SQL Database @@ -149,7 +150,7 @@ will appear.

    uncheck apmd (monitors power, not very useful for servers),
    check ImageMagick -(required for the photo-album packages,
    uncheckisdn4k-utils +(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 @@ -180,11 +181,9 @@ Exit, remove the CD, and watch the computer reboot.

  • After it finishes rebooting and shows the login prompt, log -in:

    -yourserver login: root
    +in:

    yourserver login: root
     Password:
    -[root root]#
    -
    +[root root]#
  • Install any security patches. For example, insert your CD with patches, mount it with mount /dev/cdrom, then cd @@ -196,7 +195,7 @@

    Lock down SSH

    1. - SSH is the + SSH is the protocol we use to connect securely to the computer (replacing telnet, which is insecure). sshd is the daemon that listens for incoming ssh connections. As a security precaution, we are now @@ -238,8 +237,7 @@ we'll use daemontools to perform a similar function for AOLserver. (The reason for these discrepancies is that, while daemontools is better, it's a pain in the ass to deal with and -nobody's had any trouble leaving PostgreSQL the way it is.)

      -[root root]# service pcmcia stop
      +nobody's had any trouble leaving PostgreSQL the way it is.)

      [root root]# service pcmcia stop
       [root root]# service netfs stop
       [root root]# chkconfig --del pcmcia
       [root root]# chkconfig --del netfs
      @@ -252,8 +250,7 @@
       
    2. Plug in the network cable.

    3. Verify that you have connectivity by going to another computer and ssh'ing to yourserver, logging in as remadmin, and -promoting yourself to root:

      -[joeuser\@someotherserver]$  ssh remadmin\@yourserver.test
      +promoting yourself to root:

      [joeuser\@someotherserver]$  ssh remadmin\@yourserver.test
       
       The authenticity of host 'yourserver.test (1.2.3.4)' can't be established.
       DSA key fingerprint is 10:b9:b6:10:79:46:14:c8:2d:65:ae:c1:61:4b:a5:a5.
      @@ -263,8 +260,7 @@
       Last login: Mon Mar  3 21:15:27 2003 from host-12-01.dsl-sea.seanet.com
       [remadmin remadmin]$ su -
       Password: 
      -[root root]#
      -
      +[root root]#
    4. If you didn't burn a CD of patches and use it, can still download and install the necessary patches. Here's how to do it @@ -273,8 +269,7 @@ 8.0 system kernel (2.4.18-14, which you can check with uname -a) has several security problems. Download the new kernel, install it, -and reboot.

      -[root root]# cd /var/tmp
      +and reboot.

      [root root]# cd /var/tmp
       [root tmp]# wget http://updates.redhat.com/7.1/en/os/i686/kernel-2.4.18-27.7.x.i686.rpm
       --20:39:00--  http://updates.redhat.com/7.1/en/os/i686/kernel-2.4.18-27.7.x.i686.rpm
                  => `kernel-2.4.18-27.7.x.i686.rpm'
      @@ -307,9 +302,8 @@
       
    \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/install-redhat.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-redhat.html,v diff -u -r1.44.2.9 -r1.44.2.10 --- openacs-4/packages/acs-core-docs/www/install-redhat.html 1 Aug 2024 08:03:40 -0000 1.44.2.9 +++ openacs-4/packages/acs-core-docs/www/install-redhat.html 2 Sep 2024 09:40:22 -0000 1.44.2.10 @@ -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 @@ -75,7 +75,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 timezone and click Next.

  • Type in a root password, twice.

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

    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 @@ -119,7 +119,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 Index: openacs-4/packages/acs-core-docs/www/install-resources.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-resources.adp,v diff -u -r1.3.2.6 -r1.3.2.7 --- openacs-4/packages/acs-core-docs/www/install-resources.adp 13 Jul 2023 12:43:21 -0000 1.3.2.6 +++ openacs-4/packages/acs-core-docs/www/install-resources.adp 2 Sep 2024 09:40:22 -0000 1.3.2.7 @@ -2,10 +2,13 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Resources} Resources +

      @@ -36,8 +39,8 @@

      \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/install-squirrelmail.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-squirrelmail.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/install-squirrelmail.adp 13 Jul 2023 12:43:21 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/install-squirrelmail.adp 2 Sep 2024 09:40:22 -0000 1.4.2.6 @@ -4,11 +4,14 @@ Install Squirrelmail for use as a webmail system for OpenACS +

      @@ -20,8 +23,7 @@ OpenACS documentation staff.

      This section is work in progress. It will detail how you can install Squirrelmail as a webmail frontend for OpenACS, thereby neglecting the need to have a separate webmail package within -OpenACS

      -[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]# cd www
      +OpenACS

      [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]# cd www
       [$OPENACS_SERVICE_NAME www]# wget http://cesnet.dl.sourceforge.net/sourceforge/squirrelmail/squirrelmail-1.4.4.tar.gz
       [$OPENACS_SERVICE_NAME www]# tar xfz squirrelmail-1.4.4.tar.gz
       [$OPENACS_SERVICE_NAME www]# mv squirrelmail-1.4.4 mail
      Index: openacs-4/packages/acs-core-docs/www/install-ssl.adp
      ===================================================================
      RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-ssl.adp,v
      diff -u -r1.4.2.5 -r1.4.2.6
      --- openacs-4/packages/acs-core-docs/www/install-ssl.adp	13 Jul 2023 12:43:21 -0000	1.4.2.5
      +++ openacs-4/packages/acs-core-docs/www/install-ssl.adp	2 Sep 2024 09:40:22 -0000	1.4.2.6
      @@ -2,10 +2,14 @@
       {/doc/acs-core-docs/ {ACS Core Documentation}} {Installing SSL Support for an OpenACS service}
       Installing SSL Support for an OpenACS service
       
      +              
       
       		    

      @@ -14,14 +18,12 @@ openssl before proceeding.

      1. Make sure nsopenssl.so is installed for AOLserver.

      2. -

        Uncomment this line from config.tcl.

        -#ns_param   nsopenssl       ${bindir}/nsopenssl.so
        +

        Uncomment this line from config.tcl.

        #ns_param   nsopenssl       ${bindir}/nsopenssl.so
         
      3. Prepare a -certificate directory for the service.

        -[$OPENACS_SERVICE_NAME etc]$ mkdir /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/certs
        +certificate directory for the service.

        [$OPENACS_SERVICE_NAME etc]$ mkdir /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/certs
         [$OPENACS_SERVICE_NAME etc]$ chmod 700 /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/certs
         [$OPENACS_SERVICE_NAME etc]$ 
         mkdir /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/certs
        @@ -42,46 +44,37 @@
         in most browsers, albeit with pop-up messages.

        Use an OpenSSL perl script to generate a certificate and key.

        Debian users: use /usr/lib/ssl/misc/CA.pl instead of /usr/share/ssl/CA

        macOS users: use perl /System/Library/OpenSSL/misc/CA.pl --newcert instead of /usr/share/ssl/CA

        -[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/certs
        +-newcert instead of /usr/share/ssl/CA

        [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/certs
         [$OPENACS_SERVICE_NAME certs]$ perl /usr/share/ssl/misc/CA -newcert
         Using configuration from /usr/share/ssl/openssl.cnf
         Generating a 1024 bit RSA private key
         ...++++++
         .......++++++
         writing new private key to 'newreq.pem'
        -Enter PEM pass phrase:
        -

        Enter a pass phrase for the CA certificate. Then, answer the -rest of the questions. At the end you should see this:

        -Certificate (and private key) is in newreq.pem
        -[$OPENACS_SERVICE_NAME certs]$
        -

        +Enter PEM pass phrase:

        Enter a pass phrase for the CA certificate. Then, answer the +rest of the questions. At the end you should see this:

        Certificate (and private key) is in newreq.pem
        +[$OPENACS_SERVICE_NAME certs]$

        newreq.pem contains our certificate and private key. The key is protected by a passphrase, which means that we'll have to enter the pass phrase each time the server starts. This is impractical and unnecessary, so we create an unprotected version of the key. Security implication: if anyone gets access to the file keyfile.pem, they effectively own the key as much as you do. Mitigation: don't use this key/cert combo for -anything besides providing ssl for the web site.

        -[root misc]# openssl rsa -in newreq.pem -out keyfile.pem
        +anything besides providing ssl for the web site.

        [root misc]# openssl rsa -in newreq.pem -out keyfile.pem
         read RSA key
         Enter PEM pass phrase:
         writing RSA key
        -[$OPENACS_SERVICE_NAME certs]$ 
        -

        To create the certificate file, we take the combined file, copy -it, and strip out the key.

        -[$OPENACS_SERVICE_NAME certs]$ cp newreq.pem certfile.pem
        +[$OPENACS_SERVICE_NAME certs]$ 

        To create the certificate file, we take the combined file, copy +it, and strip out the key.

        [$OPENACS_SERVICE_NAME certs]$ cp newreq.pem certfile.pem
         [root misc]# emacs certfile.pem
        -

        Strip out the section that looks like

        ------BEGIN RSA PRIVATE KEY-----
        +

        Strip out the section that looks like

        -----BEGIN RSA PRIVATE KEY-----
         Proc-Type: 4,ENCRYPTED
         DEK-Info: DES-EDE3-CBC,F3EDE7CA1B404997
         S/Sd2MYA0JVmQuIt5bYowXR1KYKDka1d3DUgtoVTiFepIRUrMkZlCli08mWVjE6T
         (11 lines omitted)
         1MU24SHLgdTfDJprEdxZOnxajnbxL420xNVc5RRXlJA8Xxhx/HBKTw==
        ------END RSA PRIVATE KEY-----
        -
        +-----END RSA PRIVATE KEY-----
      4. If you start up using the etc/daemontools/run script, you will need to edit this script to make sure the ports are bound for SSL. Details of this are in the run script.

      5. Index: openacs-4/packages/acs-core-docs/www/install-steps.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-steps.adp,v diff -u -r1.4.2.10 -r1.4.2.11 --- openacs-4/packages/acs-core-docs/www/install-steps.adp 1 Aug 2024 08:03:40 -0000 1.4.2.10 +++ openacs-4/packages/acs-core-docs/www/install-steps.adp 2 Sep 2024 09:40:22 -0000 1.4.2.11 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Basic Steps} Basic Steps +

        @@ -16,19 +20,15 @@ Install Red Hat 8/9 for more details). See the Table 2.2, -“Version Compatibility -Matrix”.

      6. Install a database (see the section called -“Install Oracle 8.1.7” or -Install PostgreSQL).

      7. Install AOLserver (Install AOLserver 4) .

      8. Create a unique database and system user. Install the OpenACS +“Version Compatibility Matrix”.

      9. Install a database (see the section called “Install Oracle +8.1.7” or Install PostgreSQL).

      10. Install AOLserver (Install AOLserver 4) .

      11. Create a unique database and system user. Install the OpenACS tarball, start and AOLserver instance, and use the OpenACS web pages to complete installation (see Install OpenACS 5.9.0).

      Specific instructions are available for macOS and Windows2000 -(see the section called -“OpenACS Installation Guide for -macOS” or the section called -“OpenACS Installation Guide for -Windows”).

      +(see the section called “OpenACS +Installation Guide for macOS” or the section called +“OpenACS Installation Guide for Windows”).

      Binaries and other shortcuts

      You can try out OpenACS using some binary installers. In general, they are not yet supported by the community, so they are @@ -46,8 +46,7 @@

    2. 128MB RAM (much more if you want Oracle)

    3. 1GB free space on your hard drive (much more if you want Oracle)

    4. A Unix-like operating system with Tcl, tDOM, and a mail transport agent like sendmail or qmail. (see the -section called “Prerequisite -Software”)

    5. +section called “Prerequisite Software”)

    All of the software mentioned is open-source and available without direct costs, except for Oracle. You can obtain a free copy of Oracle for development purposes. This is described in the @@ -63,11 +62,9 @@ or menu.

  • This is text that you will type.

  • This is text from a program or file which you may need to -examine or edit:

    -if {$database eq "oracle"} {
    +examine or edit:

    if {$database eq "oracle"} {
               set db_password        "mysitepassword"
    -}
    -
    +}
  • This is text that you will see and type in a command shell, including text @@ -94,22 +91,22 @@

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

    +

    Table 2.1. Default directories +for a standard install

    @@ -119,7 +116,7 @@ @@ -189,8 +186,8 @@ Index: openacs-4/packages/acs-core-docs/www/install-steps.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-steps.html,v diff -u -r1.38.2.8 -r1.38.2.9 --- openacs-4/packages/acs-core-docs/www/install-steps.html 1 Aug 2024 08:03:40 -0000 1.38.2.8 +++ openacs-4/packages/acs-core-docs/www/install-steps.html 2 Sep 2024 09:40:22 -0000 1.38.2.9 @@ -44,7 +44,7 @@ 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

    name of administrative access accountremadmin
    OpenACS service -$OPENACS_SERVICE_NAME (set to service0 +$OPENACS_SERVICE_NAME (set to service0 in default install)
    OpenACS service account$OPENACS_SERVICE_NAME
    Fully qualified domain name of your serveryourserver.test
    name of administrative access accountremadmin
    OpenACS service +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.9.0/packages/acs-core-docs/www/files
    Database backup directory/var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup
    Service config files/var/lib/aolserver/$OPENACS_SERVICE_NAME/etc
    Service log files/var/lib/aolserver/$OPENACS_SERVICE_NAME/log
    Compile directory/usr/local/src
    PostgreSQL directory/usr/local/pgsql
    AOLserver directory/usr/local/aolserver

    Index: openacs-4/packages/acs-core-docs/www/install-tclwebtest.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-tclwebtest.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/install-tclwebtest.adp 13 Jul 2023 12:43:21 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/install-tclwebtest.adp 2 Sep 2024 09:40:22 -0000 1.4.2.6 @@ -2,11 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Install tclwebtest.} Install tclwebtest. +

    Index: openacs-4/packages/acs-core-docs/www/ix01.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/ix01.adp,v diff -u -r1.4.2.10 -r1.4.2.11 --- openacs-4/packages/acs-core-docs/www/ix01.adp 1 Aug 2024 08:03:40 -0000 1.4.2.10 +++ openacs-4/packages/acs-core-docs/www/ix01.adp 2 Sep 2024 09:40:22 -0000 1.4.2.11 @@ -2,27 +2,31 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Index} Index +

    -Index

    +Index

    -

    Symbols

    $OPENACS_SERVICE_NAME, Paths and Users +

    Symbols

    $OPENACS_SERVICE_NAME, Paths and Users

    C

    -
    computeroutput
    code, Code -
    cvs
    +
    computeroutput
    code, Code +
    cvs
    initializing, Initialize CVS (OPTIONAL)
    setup, Using CVS with an OpenACS Site @@ -31,97 +35,97 @@

    D

    -
    daemontools
    installation, Install Daemontools (OPTIONAL) -
    docbook
    installation, Install Red Hat 8/9 -
    DocBook
    +
    daemontools
    installation, Install Daemontools (OPTIONAL) +
    docbook
    installation, Install Red Hat 8/9 +
    DocBook
    DTD, OpenACS Documentation Strategy: Why DocBook?
    emacs configuration for, Add PSGML commands to emacs init file (OPTIONAL)
    -
    Document structure, Document +
    Document structure, Document Structure

    E

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

    G

    -
    Graphics
    Images, Graphics +
    Graphics
    Images, Graphics

    I

    -
    informaltable
    table, Tables +
    informaltable
    table, Tables

    L

    -
    language
    installation, Install Red Hat 8/9 -
    Linking, Links -
    lists, Lists +
    language
    installation, Install Red Hat 8/9 +
    Linking, Links +
    lists, Lists
    -

    O

    OpenACS Package, What a Package Looks Like +

    O

    OpenACS Package, What a Package Looks Like
    -

    T

    The publish point for new packages should be +

    T

    The publish point for new packages should be fixed., Prepare the package for distribution.

    U

    -
    ulink, Links -
    upgrade
    +
    ulink, Links +
    upgrade
    OpenACS 4.5 to 4.6.x
    Linux/Unix, Upgrading 4.5 or higher to 4.6.3

    X

    -
    XML guidelines, OpenACS Documentation Strategy: +
    XML guidelines, OpenACS Documentation Strategy: Why DocBook? -
    xref
    linkend, Links -
    xreflabel, Headlines, +
    xref
    linkend, Links +
    xreflabel, Headlines, Sections
    @@ -133,4 +137,4 @@ rightLink="" rightLabel="" rightTitle="" homeLink="index" homeLabel="Home" upLink="index" upLabel="Up"> - \ No newline at end of file + Index: openacs-4/packages/acs-core-docs/www/ix01.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/ix01.html,v diff -u -r1.32.2.8 -r1.32.2.9 --- openacs-4/packages/acs-core-docs/www/ix01.html 1 Aug 2024 08:03:40 -0000 1.32.2.8 +++ openacs-4/packages/acs-core-docs/www/ix01.html 2 Sep 2024 09:40:22 -0000 1.32.2.9 @@ -1,3 +1,3 @@ -Index

    Index

    Symbols

    $OPENACS_SERVICE_NAME, Paths and Users

    C

    computeroutput
    code, Code
    cvs
    initializing, Initialize CVS (OPTIONAL)
    setup, Using CVS with an OpenACS Site

    E

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

    F

    full text search
    installation, Install Tsearch2 module

    G

    Graphics
    Images, Graphics

    I

    informaltable
    table, Tables

    L

    language
    installation, Install Red Hat 8/9
    Linking, Links
    lists, Lists

    O

    OpenACS Package, What a Package Looks Like

    P

    photo-album
    installation (see ImageMagick)
    Postgres
    Vacuuming, Installation Option 2: Install from tarball

    T

    The publish point for new packages should be - fixed., Prepare the package for distribution.

    U

    ulink, Links
    upgrade
    OpenACS 4.5 to 4.6.x
    Linux/Unix, Upgrading 4.5 or higher to 4.6.3
    +Index

    Index

    Symbols

    $OPENACS_SERVICE_NAME, Paths and Users

    C

    computeroutput
    code, Code
    cvs
    initializing, Initialize CVS (OPTIONAL)
    setup, Using CVS with an OpenACS Site

    E

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

    F

    full text search
    installation, Install Tsearch2 module

    G

    Graphics
    Images, Graphics

    I

    informaltable
    table, Tables

    L

    language
    installation, Install Red Hat 8/9
    Linking, Links
    lists, Lists

    O

    OpenACS Package, What a Package Looks Like

    P

    photo-album
    installation (see ImageMagick)
    Postgres
    Vacuuming, Installation Option 2: Install from tarball

    T

    The publish point for new packages should be + fixed., Prepare the package for distribution.

    U

    ulink, Links
    upgrade
    OpenACS 4.5 to 4.6.x
    Linux/Unix, Upgrading 4.5 or higher to 4.6.3
    Index: openacs-4/packages/acs-core-docs/www/kernel-doc.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/kernel-doc.adp,v diff -u -r1.3.2.5 -r1.3.2.6 --- openacs-4/packages/acs-core-docs/www/kernel-doc.adp 13 Jul 2023 12:43:21 -0000 1.3.2.5 +++ openacs-4/packages/acs-core-docs/www/kernel-doc.adp 2 Sep 2024 09:40:22 -0000 1.3.2.6 @@ -1,18 +1,19 @@ -{/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 15. Kernel -Documentation} -Chapter 15. Kernel -Documentation +{/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 15. Kernel Documentation} +Chapter 15. Kernel Documentation +

    -Chapter 15. Kernel -Documentation

    +Chapter 15. Kernel Documentation
    Index: openacs-4/packages/acs-core-docs/www/kernel-overview.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/kernel-overview.adp,v diff -u -r1.3.2.6 -r1.3.2.7 --- openacs-4/packages/acs-core-docs/www/kernel-overview.adp 13 Jul 2023 12:43:21 -0000 1.3.2.6 +++ openacs-4/packages/acs-core-docs/www/kernel-overview.adp 2 Sep 2024 09:40:22 -0000 1.3.2.7 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Overview} Overview +

    @@ -27,8 +31,8 @@

    Index: openacs-4/packages/acs-core-docs/www/mac-installation.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/mac-installation.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/mac-installation.adp 13 Jul 2023 12:43:21 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/mac-installation.adp 2 Sep 2024 09:40:22 -0000 1.4.2.6 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {OpenACS Installation Guide for macOS} OpenACS Installation Guide for macOS +

    @@ -16,9 +20,8 @@ \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/maint-performance.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/maint-performance.adp,v diff -u -r1.4.2.11 -r1.4.2.12 --- openacs-4/packages/acs-core-docs/www/maint-performance.adp 1 Aug 2024 08:03:40 -0000 1.4.2.11 +++ openacs-4/packages/acs-core-docs/www/maint-performance.adp 2 Sep 2024 09:40:22 -0000 1.4.2.12 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Diagnosing Performance Problems} Diagnosing Performance Problems +

    @@ -16,9 +20,8 @@ constantly?

  • Isolating and solving database problems.

  • Identify a runaway Oracle query: first, use ps aux or top to get the UNIX process ID of -a runaway Oracle process.

    Log in to SQL*Plus as the admin:

    -[$OPENACS_SERVICE_NAME ~]$ svrmgrl
    +a runaway Oracle process.

    Log in to SQL*Plus as the admin:

    [$OPENACS_SERVICE_NAME ~]$ svrmgrl
     
     Oracle Server Manager Release 3.1.7.0.0 - Production
     
    @@ -50,39 +52,28 @@
     With the Partitioning option
     JServer Release 8.1.7.3.0 - Production
     
    -SVRMGR> connect internal              
    -Password:
    -

    See all of the running queries, and match the UNIX PID:

    -select p.spid  -- The UNIX PID
    +SVRMGR> connect internal             
    +Password:

    See all of the running queries, and match the UNIX PID:

    select p.spid  -- The UNIX PID
            ,s.sid  ,s.serial#
            ,p.username  as os_user
            ,s.username  ,s.status
            ,p.terminal  ,p.program
       from v$session s  ,v$process p
      where p.addr = s.paddr
    - order by s.username ,p.spid ,s.sid ,s.serial# ;
    -

    See the SQL behind the oracle processes:

    -select s.username
    + order by s.username ,p.spid ,s.sid ,s.serial# ;

    See the SQL behind the oracle processes:

    select s.username
            ,s.sid  ,s.serial#
            ,sql.sql_text
       from v$session s, v$sqltext sql
      where sql.address    = s.sql_address
        and sql.hash_value = s.sql_hash_value
      --and upper(s.username) like 'USERNAME%'
    - order by s.username ,s.sid ,s.serial# ,sql.piece ;
    -

    To kill a troubled process:

    -alter system kill session 'SID,SERIAL#';  --substitute values for SID and SERIAL#
    -

    (See Andrew + order by s.username ,s.sid ,s.serial# ,sql.piece ;

    To kill a troubled process:

    alter system kill session 'SID,SERIAL#';  --substitute values for SID and SERIAL#

    (See Andrew Piskorski's Oracle notes)

  • Identify a runaway Postgres query. First, logging must be enabled in the database. This imposes a performance penalty and should not be done in normal operation.

    Edit the file postgresql.conf - its location depends on -the PostgreSQL installation - and change

    -#stats_command_string = false
    -

    to

    -stats_command_string = true
    -

    Next, connect to postgres (psql +the PostgreSQL installation - and change

    #stats_command_string = false

    to

    stats_command_string = true

    Next, connect to postgres (psql service0 ) and select * from pg_stat_activity;. Typical output should look like:

    @@ -100,8 +91,7 @@
      64344418 | openacs.org |   14311 |      101 | nsadmin | <IDLE>
      64344418 | openacs.org |   14549 |      101 | nsadmin | <IDLE>
     (8 rows)
    -openacs.org=>
    -
    +openacs.org=>
  • @@ -136,8 +126,8 @@
    \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/maintenance-deploy.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/maintenance-deploy.adp,v diff -u -r1.5.2.11 -r1.5.2.12 --- openacs-4/packages/acs-core-docs/www/maintenance-deploy.adp 1 Aug 2024 08:03:40 -0000 1.5.2.11 +++ openacs-4/packages/acs-core-docs/www/maintenance-deploy.adp 2 Sep 2024 09:40:22 -0000 1.5.2.12 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Staged Deployment for Production Networks} Staged Deployment for Production Networks +

    @@ -87,8 +91,7 @@

    To make these changes take place on service0:

     4) update the file on production:
     cd /var/lib/aolserver/service0/www
    -cvs up -Pd index.adp
    -

    If you make changes that require changes to the database, test +cvs up -Pd index.adp

    If you make changes that require changes to the database, test them out first on service0-dev, using either -create.sql or upgrade scripts. Once you've tested them, you then update and run the upgrade scripts from the package manager.

    The production site can run "HEAD" from cvs.

    The drawback to using HEAD as the live code is that you cannot @@ -123,27 +126,27 @@

    Simple A/B Deployment: Database is not changed

    -

    Figure 6.2. Simple -A/B Deployment - Step 1

    Simple A/B Deployment - Step 1
    +

    Figure 6.2. Simple A/B +Deployment - Step 1

    Simple A/B Deployment - Step 1

    -

    Figure 6.3. Simple -A/B Deployment - Step 2

    Simple A/B Deployment - Step 2
    +

    Figure 6.3. Simple A/B +Deployment - Step 2

    Simple A/B Deployment - Step 2

    -

    Figure 6.4. Simple -A/B Deployment - Step 3

    Simple A/B Deployment - Step 3
    +

    Figure 6.4. Simple A/B +Deployment - Step 3

    Simple A/B Deployment - Step 3

    Complex A/B Deployment: Database is changed

    -

    Figure 6.5. Complex A/B Deployment -- Step 1

    Complex A/B Deployment - Step 1
    +

    Figure 6.5. Complex A/B +Deployment - Step 1

    Complex A/B Deployment - Step 1

    -

    Figure 6.6. Complex A/B Deployment -- Step 2

    Complex A/B Deployment - Step 2
    +

    Figure 6.6. Complex A/B +Deployment - Step 2

    Complex A/B Deployment - Step 2

    -

    Figure 6.7. Complex A/B Deployment -- Step 3

    Complex A/B Deployment - Step 3
    +

    Figure 6.7. Complex A/B +Deployment - Step 3

    Complex A/B Deployment - Step 3

    Index: openacs-4/packages/acs-core-docs/www/maintenance-web.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/maintenance-web.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/maintenance-web.adp 13 Jul 2023 12:43:21 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/maintenance-web.adp 2 Sep 2024 09:40:22 -0000 1.4.2.6 @@ -1,9 +1,11 @@ -{/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 6. Production -Environments} -Chapter 6. Production -Environments +{/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 6. Production Environments} +Chapter 6. Production Environments + {/doc/acs-core-docs/ {ACS Core Documentation}} {Using nXML mode in Emacs} Using nXML mode in Emacs +

    Index: openacs-4/packages/acs-core-docs/www/object-identity.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/object-identity.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/object-identity.adp 13 Jul 2023 12:43:21 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/object-identity.adp 2 Sep 2024 09:40:22 -0000 1.4.2.6 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Object Identity} Object Identity +

    Index: openacs-4/packages/acs-core-docs/www/object-system-design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/object-system-design.adp,v diff -u -r1.4.2.8 -r1.4.2.9 --- openacs-4/packages/acs-core-docs/www/object-system-design.adp 1 Aug 2024 08:03:40 -0000 1.4.2.8 +++ openacs-4/packages/acs-core-docs/www/object-system-design.adp 2 Sep 2024 09:40:22 -0000 1.4.2.9 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Object Model Design} Object Model Design +

    Index: openacs-4/packages/acs-core-docs/www/object-system-requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/object-system-requirements.adp,v diff -u -r1.4.2.7 -r1.4.2.8 --- openacs-4/packages/acs-core-docs/www/object-system-requirements.adp 6 Aug 2024 09:43:17 -0000 1.4.2.7 +++ openacs-4/packages/acs-core-docs/www/object-system-requirements.adp 2 Sep 2024 09:40:22 -0000 1.4.2.8 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Object Model Requirements} Object Model Requirements +

    Index: openacs-4/packages/acs-core-docs/www/object-system-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/object-system-requirements.html,v diff -u -r1.37.2.3 -r1.37.2.4 --- openacs-4/packages/acs-core-docs/www/object-system-requirements.html 1 Aug 2024 08:03:40 -0000 1.37.2.3 +++ openacs-4/packages/acs-core-docs/www/object-system-requirements.html 2 Sep 2024 09:40:22 -0000 1.37.2.4 @@ -5,7 +5,7 @@

    I. Introduction

    A major goal in OpenACS 4 is to unify and normalize many of the core services of the system into a coherent common data model and API. In the past, these services were provided to applications in an ad-hoc and irregular fashion. -Examples of such services include:

    • General Comments

    • User/groups

    • Attribute storage in user/groups

    • General Permissions

    • Site wide search

    • General Auditing

    All of these services involve relating extra information and services to +Examples of such services include:

    • General Comments

    • User/groups

    • Attribute storage in user/groups

    • General Permissions

    • Site-wide search

    • General Auditing

    All of these services involve relating extra information and services to application data objects, examples of which include:

    • Bboard messages

    • A user home page

    • A ticket in the Ticket Tracker

    • A photograph in the PhotoDB

    In the past, developers had to use ad-hoc and inconsistent schemes to interface to the various "general" services mentioned above. Since each service used its own scheme for storing its metadata and mapping this @@ -138,7 +138,7 @@ separately.

    Examples of utilities that do this in OpenACS 3.x system are:

    • User/groups: Information is attached to group membership relations.

    • General Comments: Comments are attached to objects representing some kind of document.

    • General Permissions: Stores access control information on application data.

    • User Profiling: Maps users to pieces of content that they have looked at; -content identifiers must be managed in a uniform way.

    • Site Wide Search: Stores all content in a single flat table, with object +content identifiers must be managed in a uniform way.

    • Site-Wide Search: Stores all content in a single flat table, with object identifiers pointing to the object containing the content in the first place. This way, we can search the contents of many different types of objects in a uniform way.

    The OM will support and unify this programming idiom by providing objects Index: openacs-4/packages/acs-core-docs/www/objects.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/objects.adp,v diff -u -r1.4.2.10 -r1.4.2.11 --- openacs-4/packages/acs-core-docs/www/objects.adp 1 Aug 2024 08:03:40 -0000 1.4.2.10 +++ openacs-4/packages/acs-core-docs/www/objects.adp 2 Sep 2024 09:40:22 -0000 1.4.2.11 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {OpenACS Data Models and the Object System} OpenACS Data Models and the Object System +

    Index: openacs-4/packages/acs-core-docs/www/openacs-overview.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/openacs-overview.adp,v diff -u -r1.4.2.7 -r1.4.2.8 --- openacs-4/packages/acs-core-docs/www/openacs-overview.adp 1 Aug 2024 08:03:40 -0000 1.4.2.7 +++ openacs-4/packages/acs-core-docs/www/openacs-overview.adp 2 Sep 2024 09:40:23 -0000 1.4.2.8 @@ -2,11 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Overview} Overview +

    @@ -45,9 +48,8 @@ feel free to ask questions or provide feedback.

    Index: openacs-4/packages/acs-core-docs/www/openacs-unpack.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/openacs-unpack.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/openacs-unpack.adp 13 Jul 2023 12:43:21 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/openacs-unpack.adp 2 Sep 2024 09:40:23 -0000 1.4.2.6 @@ -2,23 +2,24 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Unpack the OpenACS tarball} 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
    +unpack the tarball now.

    [root root]# cd /tmp
     [root tmp]# tar xzf openacs-5.9.0.tgzcd /tmp
     tar xzf openacs-5.9.0.tgz
     

    If you are installing from a different method and just need the -configuration files, you can instead get them from CVS:

    -[root root]# cd /tmp
    +configuration files, you can instead get them from CVS:

    [root root]# cd /tmp
     [root tmp]# cvs -d :pserver:anonymous\@cvs.openacs.org:/cvsroot co openacs-4/packages/acs-core-docs/www/files/
     cvs checkout: warning: failed to open /root/.cvspass for reading: No such file or directory
     cvs server: Updating openacs-4/packages/acs-core-docs/www/files
    @@ -32,9 +33,8 @@
     
    Index: openacs-4/packages/acs-core-docs/www/openacs.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/openacs.adp,v diff -u -r1.4.2.11 -r1.4.2.12 --- openacs-4/packages/acs-core-docs/www/openacs.adp 1 Aug 2024 08:03:40 -0000 1.4.2.11 +++ openacs-4/packages/acs-core-docs/www/openacs.adp 2 Sep 2024 09:40:23 -0000 1.4.2.12 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Install OpenACS 5.9.0} Install OpenACS 5.9.0 +

    @@ -63,8 +67,7 @@ /var/lib/aolserver, one subdirectory per site. The first time you install an OpenACS site on a server, you must create the parent directory and set its -permissions:

    -[root root]# mkdir /var/lib/aolserver
    +permissions:

    [root root]# mkdir /var/lib/aolserver
     [root root]# chgrp web /var/lib/aolserver
     [root root]# chmod 770 /var/lib/aolserver
     [root root]#
    @@ -85,8 +88,7 @@
     cvs tree, at /etc/install. Use anonymous CVS checkout to get that
     directory in the home directory of the service's dedicated
     user. We put it there so that it is not overwritten when we do the
    -main CVS checkout to the target location.

    -[root root]# su - $OPENACS_SERVICE_NAME
    +main CVS checkout to the target location.

    [root root]# su - $OPENACS_SERVICE_NAME
     
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cvs -d :pserver:anonymous\@cvs.openacs.org:/cvsroot co -d install openacs-4/etc/install
     cvs server: Updating install
    @@ -107,8 +109,7 @@
     just want to rebuild it (drop and recreate the database and repeat
     the installation). If you have followed a stock installation, the
     default configuration will work without changes and will install an
    -OpenACS site at 127.0.0.1:8000.

    Run the install script install.sh as root:

    -[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ exit 
    +OpenACS site at 127.0.0.1:8000.

    Run the install script install.sh as root:

    [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ exit 
     [root root]# sh /home/$OPENACS_SERVICE_NAME/install/install.sh
     /home/$OPENACS_SERVICE_NAME/install/install.sh: Starting installation with config_file 
     /home/$OPENACS_SERVICE_NAME/install/install.tcl. Using serverroot=/var/lib/aolserver/
    @@ -121,9 +122,8 @@
     admin email   : admin\@yourserver.net
     admin password: xxxx
     ######################################################################
    -[root root]#
    -

    You can proceed to the section -called “Next Steps”.

    +[root root]#

    You can proceed to the section +called “Next Steps”.

    Installation Option 2: Install from @@ -141,8 +141,7 @@ $OPENACS_SERVICE_NAME to a colon: chown -R $OPENACS_SERVICE_NAME:$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME -

    -[root root]# su - $OPENACS_SERVICE_NAME
    +

    [root root]# su - $OPENACS_SERVICE_NAME
     
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver
     [$OPENACS_SERVICE_NAME aolserver]$ tar xzf /var/tmp/openacs-5.9.0.tgz
    @@ -175,44 +174,35 @@
     
  • Prepare Oracle for -OpenACS. If you won't be using Oracle, -skip to Prepare PostgreSQL for +OpenACS. If you won't be using Oracle, skip to +Prepare PostgreSQL for an OpenACS Service

    You should be sure that your user account (e.g. $OPENACS_SERVICE_NAME) is in the dba group.

    1. -

      Verify membership by typing groups when you login:

      -[$OPENACS_SERVICE_NAME ~]$ groups
      -dba web
      -

      If you do not see these groups, take the following action:

      -[$OPENACS_SERVICE_NAME ~]$ su -
      +

      Verify membership by typing groups when you login:

      [$OPENACS_SERVICE_NAME ~]$ groups
      +dba web

      If you do not see these groups, take the following action:

      [$OPENACS_SERVICE_NAME ~]$ su -
       Password: ************
       [root ~]# adduser $OPENACS_SERVICE_NAME dba
       

      If you get an error about an undefined group, then add that -group manually:

      -[root ~]# groupadd dba
      +group manually:

      [root ~]# groupadd dba
       [root ~]# groupadd web
       

      Make sure to logout as root when you are finished with this step and log back in as your regular user.

    2. -

      Connect to Oracle using svrmgrl and login:

      -[$OPENACS_SERVICE_NAME ~]$ svrmgrl
      +

      Connect to Oracle using svrmgrl and login:

      [$OPENACS_SERVICE_NAME ~]$ svrmgrl
       SVRMGR> connect internal
      -Connected.
      -
      +Connected.
    3. -

      Determine where the system tablespaces are stored:

      -SVRMGR> select file_name from dba_data_files;
      -

      Example results:

      -/ora8/m01/app/oracle/oradata/ora8/system01.dbf
      +

      Determine where the system tablespaces are stored:

      SVRMGR> select file_name from dba_data_files;
      +

      Example results:

      /ora8/m01/app/oracle/oradata/ora8/system01.dbf
       /ora8/m01/app/oracle/oradata/ora8/tools01.dbf
       /ora8/m01/app/oracle/oradata/ora8/rbs01.dbf
       /ora8/m01/app/oracle/oradata/ora8/temp01.dbf
       /ora8/m01/app/oracle/oradata/ora8/users01.dbf
       /ora8/m01/app/oracle/oradata/ora8/indx01.dbf
      -/ora8/m01/app/oracle/oradata/ora8/drsys01.dbf
      -
      +/ora8/m01/app/oracle/oradata/ora8/drsys01.dbf
    4. Using the above output, you should determine where to store your tablespace. As a general rule, you'll want to store your tablespace on a mount point under the /ora8 directory that is separate from the @@ -233,17 +223,15 @@ [root ~]# chown $OPENACS_SERVICE_NAME:web /ora8/m02/oradata/ora8 [root ~]# chmod 775 /ora8/m02/oradata/ora8 [root ~]# exit -[$OPENACS_SERVICE_NAME ~]$ -

  • +[$OPENACS_SERVICE_NAME ~]$
  • Create a tablespace for the service. It is important that the tablespace can autoextend. This allows the tablespace's storage capacity to grow as the size of the data grows. We set the pctincrease to be a very low value so that our extents won't grow geometrically. We do not set it to 0 at the tablespace level because this would affect Oracle's -ability to automatically coalesce free space in the tablespace.

    -[$OPENACS_SERVICE_NAME ~]$ svrmgrl
    +ability to automatically coalesce free space in the tablespace.

    [$OPENACS_SERVICE_NAME ~]$ svrmgrl
     SVRMGR> connect internal;
     SVRMGR> create tablespace $OPENACS_SERVICE_NAME
           datafile '/ora8/m02/oradata/ora8/$OPENACS_SERVICE_NAME01.dbf' 
    @@ -270,12 +258,10 @@
     SVRMGR> exit;
     

    Your table space is now ready. In case you are trying to delete a previous OpenACS installation, consult these commands in -the section called -“Deleting a tablespace” -below.

    +the section called “Deleting a +tablespace” below.

  • -

    Make sure that you can login to Oracle using your service_name account:

    -[$OPENACS_SERVICE_NAME ~]$ sqlplus $OPENACS_SERVICE_NAME/$OPENACS_SERVICE_NAMEpassword
    +

    Make sure that you can login to Oracle using your service_name account:

    [$OPENACS_SERVICE_NAME ~]$ sqlplus $OPENACS_SERVICE_NAME/$OPENACS_SERVICE_NAMEpassword
     
     SQL> select sysdate from dual;
     SYSDATE
    @@ -285,9 +271,8 @@
     

    You should see today's date in a format 'YYYY-MM-DD.' If you can't login, try redoing step 1 again. If the date is in the wrong format, make sure you followed -the steps outlined in the section called -“Troubleshooting Oracle -Dates” +the steps outlined in the section called “Troubleshooting +Oracle Dates”

  • @@ -304,23 +289,20 @@ if one exists. We currently use postgres "super-users" for everything, which means that anyone with access to any of the OpenACS system accounts on a machine has full access to all -postgresql databases on that machine.

    -[root root]# su - postgres
    +postgresql databases on that machine.

    [root root]# su - postgres
     [postgres pgsql]$ createuser -a -d $OPENACS_SERVICE_NAME
     
     CREATE USER
     [postgres pgsql]$ exit
     logout
    -[root root]#
    -
    +[root root]#
  • Create a database with the same name as our service name, $OPENACS_SERVICE_NAME. The full pathname for createdb needs to be used, since the pgsql directory has not been added to the -$OPENACS_SERVICE_NAME bash profile.

    -[root root]# su - $OPENACS_SERVICE_NAME
    +$OPENACS_SERVICE_NAME bash profile.

    [root root]# su - $OPENACS_SERVICE_NAME
     
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ /usr/local/pgsql/bin/createdb -E UNICODE $OPENACS_SERVICE_NAME
     
    @@ -336,16 +318,14 @@
     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
    +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
    +(*) 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 @@ -370,8 +350,7 @@ specific port, e.g. port 80. In order for OpenACS to work, you need to configure a virtual server. The Reference Platform uses a configuration file included in the OpenACS tarball, /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/config.tcl. -Open it in an editor to adjust the parameters.

    -[root root]# su - $OPENACS_SERVICE_NAME
    +Open it in an editor to adjust the parameters.

    [root root]# su - $OPENACS_SERVICE_NAME
     
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc
     [$OPENACS_SERVICE_NAME etc]$ emacs config.tcl
    @@ -445,13 +424,11 @@
     indicated in the comments.

    If you are root then killall will affect all OpenACS services on the machine, so if there's more than one you'll have to do ps -auxw | grep nsd and -selectively kill by job number.

    -[$OPENACS_SERVICE_NAME etc]$ killall nsd
    +selectively kill by job number.

    [$OPENACS_SERVICE_NAME etc]$ killall nsd
     nsd: no process killed
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ /usr/local/aolserver/bin/nsd-postgres -t /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/config.tcl
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ [08/Mar/2003:18:13:29][32131.8192][-main-] Notice: nsd.tcl: starting to read config file...
    -[08/Mar/2003:18:13:29][32131.8192][-main-] Notice: nsd.tcl: finished reading config file.
    -
    +[08/Mar/2003:18:13:29][32131.8192][-main-] Notice: nsd.tcl: finished reading config file.
  • @@ -476,8 +453,8 @@

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

      +Installer.  Now that you've got AOLserver up and +running, let's install OpenACS 5.9.0.

      • You should see a page from the webserver titled OpenACS Installation: Welcome. You will be warned if your version of the database driver is out of date, if AOLserver cannot connect to the database, if any modules are @@ -489,8 +466,7 @@ data model - be prepared to wait a few minutes as it works. You should see a string of output messages from the database as the datamodel is created. You'll see the line:

        -Loading package .info files ... this will take a few minutes
        -

        This will really take a few minutes. Have faith! Finally, +Loading package .info files ... this will take a few minutes

        This will really take a few minutes. Have faith! Finally, another Next button will appear at the bottom - click it.

      • The following page shows the results of loading the core package @@ -510,8 +486,7 @@ being restarted; note that unless you already set up a way for AOLserver to restart itself (i.e. 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
        +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 @@ -544,43 +519,37 @@ backups.

      • If you want traffic reports, set up analog or another log processing program.

      • Follow the instruction on the home page to change the appearance of your service or add more packages. (more -information)

      • Proceed to the tutorial -to learn how to develop your own packages.

      • +information)

      • Proceed to the tutorial to learn +how to develop your own packages.

      • Set up database environment variables for the site user. Depending on how you installed Oracle or PostgreSQL, these settings may be necessary for working with the database while logged in as the service user. They do not directly affect the service's run-time connection with the database, because those environmental variables are set by the wrapper scripts nsd-postgres and -nsd-oracle.

        -[root root]# su - $OPENACS_SERVICE_NAME
        +nsd-oracle.

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

        Put in the appropriate lines for the database you are running. If you will use both databases, put in both sets of lines.

        • -

          PostgreSQL:

          -export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib
          -export PATH=$PATH:/usr/local/pgsql/bin
          -
          +

          PostgreSQL:

          export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib
          +export PATH=$PATH:/usr/local/pgsql/bin
        • Oracle. These environment variables are specific for a local Oracle installation communicating via IPC. If you are connecting to a remote Oracle installation, you'll need to adjust these appropriately. Also, make sure that the '8.1.7' matches -your Oracle version.

          -export ORACLE_BASE=/ora8/m01/app/oracle
          +your Oracle version.

          export ORACLE_BASE=/ora8/m01/app/oracle
           export ORACLE_HOME=$ORACLE_BASE/product/8.1.7
           export PATH=$PATH:$ORACLE_HOME/bin
           export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
           export ORACLE_SID=ora8
           export ORACLE_TERM=vt100
          -export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
          -
          +export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

        Test this by logging out and back in as $OPENACS_SERVICE_NAME and -checking the paths.

        -[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ exit
        +checking the paths.

        [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ exit
         logout
         [root src]# su - $OPENACS_SERVICE_NAME
         
        @@ -590,25 +559,21 @@
         

        For PostgreSQL, you should see:

         LD_LIBRARY_PATH=:/usr/local/pgsql/lib
         PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin:\
        -  /root/bin:/usr/local/pgsql/bin:/usr/local/pgsql/bin
        -
        + /root/bin:/usr/local/pgsql/bin:/usr/local/pgsql/bin
      • -

        For Oracle:

        -ORACLE_BASE=/ora8/m01/app/oracle
        +

        For Oracle:

        ORACLE_BASE=/ora8/m01/app/oracle
         ORACLE_HOME=/ora8/m01/app/oracle/product/8.1.7
         PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin:\
           /root/bin:/ora8/m01/app/oracle/product/8.1.7/bin
         LD_LIBRARY_PATH=/ora8/m01/app/oracle/product/8.1.7/lib:/lib:/usr/lib
         ORACLE_SID=ora8
         ORACLE_TERM=vt100
        -ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
        -
        +ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
      -
    • Test your backup and -recovery procedure.

    • Set up the section called -“External uptime -validation”.

    • +
    • Test your backup and recovery +procedure.

    • Set up the section called “External uptime +validation”.

    ($‌Id: openacs.xml,v 1.33.2.3 2021/10/05 07:01:20 gustafn Exp $)
  • Index: openacs-4/packages/acs-core-docs/www/openacs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/openacs.html,v diff -u -r1.54.2.8 -r1.54.2.9 --- openacs-4/packages/acs-core-docs/www/openacs.html 1 Aug 2024 08:03:40 -0000 1.54.2.8 +++ openacs-4/packages/acs-core-docs/www/openacs.html 2 Sep 2024 09:40:23 -0000 1.54.2.9 @@ -237,7 +237,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, @@ -250,7 +250,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
     

    Index: openacs-4/packages/acs-core-docs/www/oracle.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/oracle.adp,v diff -u -r1.4.2.6 -r1.4.2.7 --- openacs-4/packages/acs-core-docs/www/oracle.adp 13 Jul 2023 12:43:21 -0000 1.4.2.6 +++ openacs-4/packages/acs-core-docs/www/oracle.adp 2 Sep 2024 09:40:23 -0000 1.4.2.7 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Install Oracle 8.1.7} Install Oracle 8.1.7 +

    @@ -68,7 +72,7 @@ expect that you used the defaults, so a change made here will necessitate further changes later. For a guide to the defaults, please see the section -called “Defaults”.

    In order for OpenACS to work properly you need to set the +called “Defaults”.

    In order for OpenACS to work properly you need to set the environment appropriately.

     export ORACLE_BASE=/ora8/m01/app/oracle
     export ORACLE_HOME=$ORACLE_BASE/product/8.1.7
    @@ -78,12 +82,9 @@
     export ORACLE_TERM=vt100
     export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
     
    -umask 022
    -
    -open_cursors = 500
    -
    -nls_date_format = "YYYY-MM-DD"
    -

    For additional resources/documentation, please see this +umask 022

    +open_cursors = 500
    +nls_date_format = "YYYY-MM-DD"

    For additional resources/documentation, please see this thread and Andrew Piskorski's mini-guide.

  • @@ -95,14 +96,12 @@
  • Login as a non-root user and start X by typing startx

    -[joeuser ~]$ startx
    -
    +[joeuser ~]$ startx
  • Open a terminal window type and login as root

     [joeuser ~]$ su -
     Password: ***********
    -[root ~]#
    -
    +[root ~]#
  • Create and setup the oracle group and oracle account

    We need to create a user oracle, which is used to install the @@ -111,8 +110,7 @@ [root ~]# groupadd oinstall [root ~]# groupadd oracle [root ~]# useradd -g dba -G oinstall,oracle -m oracle -[root ~]# passwd oracle -

    You will be prompted for the New Password and Confirmation of +[root ~]# passwd oracle

    You will be prompted for the New Password and Confirmation of that password.

  • Setup the installation location for Oracle. While Oracle can @@ -125,33 +123,27 @@ root:/ora8# cd /ora8 root:/ora8# mkdir -p m01 m02 m03/oradata/ora8 root:/ora8# chown -R oracle.dba /ora8 -root:/ora8# exit - +root:/ora8# exit

  • Set up the oracle user's environment

    • Log in as the user oracle by typing the following:

       [joeuser ~]$ su - oracle
      -Password: ********
      -
      +Password: ********
    • Use a text editor to edit the .bash_profile file in the oracle account home directory.

      -[oracle ~]$ emacs .bash_profile
      -

      You may get this error trying to start emacs:

      +[oracle ~]$ emacs .bash_profile

      You may get this error trying to start emacs:

       Xlib: connection to ":0.0" refused by server
       Xlib: Client is not authorized to connect to Server
       emacs: Cannot connect to X server :0.
       Check the DISPLAY environment variable or use `-d'.
       Also use the `xhost' program to verify that it is set to permit
      -connections from your machine.
      -

      If so, open a new terminal window and do the following:

      -[joeuser ~]$ xhost +localhost
      -

      Now, back in the oracle terminal:

      +connections from your machine.

      If so, open a new terminal window and do the following:

      +[joeuser ~]$ xhost +localhost

      Now, back in the oracle terminal:

       [oracle ~]$ export DISPLAY=localhost:0.0
      -[oracle ~]$ emacs .bash_profile
      -

      Try this procedure anytime you get an Xlib connection refused +[oracle ~]$ emacs .bash_profile

      Try this procedure anytime you get an Xlib connection refused error.

    • Add the following lines (substituting your Oracle version number @@ -164,43 +156,37 @@ export ORACLE_TERM=vt100 export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data -umask 022 -

      Save the file by typing CTRL-X +umask 022

      Save the file by typing CTRL-X CTRL-S and then exit by typing CTRL-X CTRL-C. Alternatively, use the menus.

    Make sure that you do not add any lines like the following

     # NLS_LANG=american
    -# export NLS_LANG
    -

    These lines will change the Oracle date settings and will break +# export NLS_LANG

    These lines will change the Oracle date settings and will break OpenACS since OpenACS depends on the ANSI date format, YYYY-MM-DD dates.

  • Log out as oracle

    -[oracle ~]$ exit
    -
    +[oracle ~]$ exit
  • Log back in as oracle and double check that your environment variables are as intended. The env command lists all of the variables that are set in your environment, and grep shows you just the lines you want (those with ORA in it).

     [joeuser ~]$ su - oracle
    -[oracle ~]$ env | grep ORA
    -

    If it worked, you should see:

    +[oracle ~]$ env | grep ORA

    If it worked, you should see:

     ORACLE_SID=ora8
     ORACLE_BASE=/ora8/m01/app/oracle
     ORACLE_TERM=vt100
     ORACLE_HOME=/ora8/m01/app/oracle/product/8.1.7
    -ORA_NLS33=/ora8/m01/app/oracle/product/8.1.7/ocommon/nls/admin/data
    -

    If not, try adding the files to ~/.bashrc instead of .bash_profile. Then logout and log back in +ORA_NLS33=/ora8/m01/app/oracle/product/8.1.7/ocommon/nls/admin/data

    If not, try adding the files to ~/.bashrc instead of .bash_profile. Then logout and log back in again. Also, be certain you are doing su - oracle and not just su oracle. The - means that .bashrc and .bash_profile will be evaluated.

    Make sure that /bin, /usr/bin, and /usr/local/bin are in your path by typing:

     [oracle ~]$ echo $PATH
    -/bin:/usr/bin:/usr/local/bin:/usr/bin/X11:/usr/X11R6/bin:/home/oracle/bin:/ora8/m01/app/oracle/product/8.1.7/bin
    -

    If they are not, then add them to the .bash_profile by changing the PATH +/bin:/usr/bin:/usr/local/bin:/usr/bin/X11:/usr/X11R6/bin:/home/oracle/bin:/ora8/m01/app/oracle/product/8.1.7/bin

    If they are not, then add them to the .bash_profile by changing the PATH statement above to PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin

  • @@ -214,8 +200,7 @@ [joeuser ~]$ xhost +localhost [joeuser ~]$ su - oracle Password: ********** -[oracle ~]$ export DISPLAY=localhost:0.0 - +[oracle ~]$ export DISPLAY=localhost:0.0
  • Find the runInstaller script

      @@ -226,24 +211,20 @@ [oracle ~]$ su - root [root ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom [root ~]# exit -[oracle ~]$ cd /mnt/cdrom - +[oracle ~]$ cd /mnt/cdrom
    • If you are installing from the tarball, the install script is located in the Oracle8iR2 directory that was created when you expanded the archive.

      -[oracle ~]$ cd /where/oracle/Disk1
      -
      +[oracle ~]$ cd /where/oracle/Disk1

    Check to make sure the file is there.

     oracle:/where/oracle/Disk1$ ls
    -doc  index.htm  install  runInstaller  stage  starterdb
    -

    If you don't see runInstaller, you are in the wrong +doc index.htm install runInstaller stage starterdb

    If you don't see runInstaller, you are in the wrong directory.

  • Run the installer

    -oracle:/where/oracle/Disk1$ ./runInstaller
    -

    A window will open that welcomes you to the 'Oracle +oracle:/where/oracle/Disk1$ ./runInstaller

    A window will open that welcomes you to the 'Oracle Universal Installer' (OUI). Click on "Next"

    Note

    Some people have had trouble with this step on RedHat 7.3 and 8.0. If so, try the following steps before calling ./runInstaller:

      @@ -259,8 +240,8 @@ "(wherever you mounted the CDROM)/stage/products.jar"

    1. "destination" path says "/ora8/m01/app/oracle/product/8.1.7"

      If the destination is not correct it is because your environment variables are not set properly. Make sure you logged on as -oracle using su - oracle. If so, edit the ~/.bash_profile as you did in the section called -“Pre-Installation Tasks” +oracle using su - oracle. If so, edit the ~/.bash_profile as you did in the section called “Pre-Installation +Tasks”

    2. Click "Next" (a pop up window will display Loading Product information).

    3. @@ -273,20 +254,17 @@

      Debian users need to link /bin/awk to /usr/bin/awk before running the script below

       [joueser ~]$ su -
      -[root ~]# ln -s /usr/bin/awk /bin/awk
      -
      +[root ~]# ln -s /usr/bin/awk /bin/awk
  • -

    Open a new terminal window, then type:

    -[joeuser ~]$ su -
    +

    Open a new terminal window, then type:

    [joeuser ~]$ su -
     [root ~]# cd /ora8/m01/app/oracle/product/8.1.7
     [root ~]# ./orainstRoot.sh  
     ; You should see:
     Creating Oracle Inventory pointer file (/etc/oraInst.loc)
     Changing groupname of /ora8/m01/app/oracle/oraInventory to oinstall.
     [root ~]# mkdir -p /usr/local/java
     [root ~]# exit
    -[joeuser ~]$ exit
    -
    +[joeuser ~]$ exit
  • Click "Retry"

  • @@ -373,14 +351,12 @@ created by the Oracle Enterprise Manager Intelligent Agent. These files may be found in the directories you use for storing other Net8 log and trace files. - If such files exist, the OEM IA may not restart. - + If such files exist, the OEM IA may not restart.
  • Do not follow the instructions on deleting trace and log files, it is not necessary.

  •  [root ~]# exit
    -[joeuser ~]$ exit
    -
    +[joeuser ~]$ exit
  • Go back to the pop-up window and click "OK"

  • The "Configuration Tools" screen in the OUI

    • This window displays the config tools that will automatically be launched.

    @@ -443,8 +419,7 @@ [joeuser ~]$ su - oracle Password: ********* [oracle ~]$ export DISPLAY=localhost:0.0 -[oracle ~]$ dbassist - +[oracle ~]$ dbassist
  • The "Welcome" screen in the Oracle Database Configuration Agent (ODCA)

      @@ -490,21 +465,18 @@ Assuming your $ORACLE_HOME matches our default of /ora8/m01/app/oracle/product/8.1.7, the following will open the file for editing.

      -[oracle ~]$ emacs /ora8/m01/app/oracle/product/8.1.7/dbs/initora8.ora
      -
      +[oracle ~]$ emacs /ora8/m01/app/oracle/product/8.1.7/dbs/initora8.ora
    • Add the following line to the end:

      -nls_date_format = "YYYY-MM-DD"
      -
      +nls_date_format = "YYYY-MM-DD"
    • Now find the open_cursors line in the file. If you're using emacs scroll up to the top of the buffer and do CTRL-S and type open_cursors to find the line. The default is 100. Change it to 500.

      -open_cursors = 500
      -
      +open_cursors = 500
    • Save the file. In emacs, do CTRL-X CTRL-S to save followed by CTRL-X CTRL-C to exit or use the menu.

    • At this point, you are ready to initiate database creation. We recommend shutting down X to free up some RAM unless you have 256 @@ -515,8 +487,7 @@

      Change to the directory where the database creation script is and run it:

       [oracle ~]$ cd /ora8/m01/app/oracle/product/8.1.7/assistants/dbca/jlib
      -oracle:/ora8/m01/app/oracle/product/8.1.7/assistants/dbca/jlib$ ./sqlora8.sh
      -

      In some instances, Oracle will save the file to /ora8/m01/app/oracle/product/8.1.7/assistants/dbca +oracle:/ora8/m01/app/oracle/product/8.1.7/assistants/dbca/jlib$ ./sqlora8.sh

      In some instances, Oracle will save the file to /ora8/m01/app/oracle/product/8.1.7/assistants/dbca Try running the script there if your first attempt does not succeed.

    • @@ -536,34 +507,28 @@ Save the file to /var/tmp

    • In the oracle shell, copy the file.

      -[oracle ~]$ cp /var/tmp/acceptance-sql.txt /var/tmp/acceptance.sql
      -
      +[oracle ~]$ cp /var/tmp/acceptance-sql.txt /var/tmp/acceptance.sql
    • Once you've got the acceptance test file all set, stay in your term and type the following:

      -[oracle ~]$ sqlplus system/manager
      -

      SQL*Plus should startup. If you get an ORA-01034: Oracle not Available error, it +[oracle ~]$ sqlplus system/manager

      SQL*Plus should startup. If you get an ORA-01034: Oracle not Available error, it is because your Oracle instance is not running. You can manually start it as the oracle user.

       [oracle ~]$ svrmgrl
       SVRMGR> connect internal
      -SVRMGR> startup
      -
      +SVRMGR> startup
    • Now that you're into SQL*Plus, change the default passwords for system, sys, and ctxsys to "alexisahunk" (or to something you'll remember):

       SQL> alter user system identified by alexisahunk;
       SQL> alter user sys identified by alexisahunk;
      -SQL> alter user ctxsys identified by alexisahunk;
      -
      +SQL> alter user ctxsys identified by alexisahunk;
    • Verify that your date settings are correct.

      -SQL> select sysdate from dual;
      -

      If you don't see a date that fits the format YYYY-MM-DD, please read the section called -“Troubleshooting Oracle -Dates”.

      +SQL> select sysdate from dual;

      If you don't see a date that fits the format YYYY-MM-DD, please read the section called “Troubleshooting +Oracle Dates”.

    • At this point we are going to hammer your database with an intense acceptance test. This usually takes around 30 minutes.

      @@ -576,19 +541,17 @@
       ----------
       2000-06-10
       
      -SQL>
      -

      Many people encounter an error regarding maximum key length:

      +SQL>

      Many people encounter an error regarding maximum key length:

       ERROR at line 1:
      -ORA-01450: maximum key length (758) exceeded
      -

      This error occurs if your database block size is wrong and is +ORA-01450: maximum key length (758) exceeded

      This error occurs if your database block size is wrong and is usually suffered by people trying to load OpenACS into a pre-existing database. Unfortunately, the only solution is to create a new database with a block size of at least 4096. For instructions on how to do this, -see the section called -“Creating the First Database” -above. You can set the parameter using the dbassist program or by setting the -DB_BLOCK_SIZE parameter in your -database's creation script.

      If there were no errors, then consider yourself fortunate. Your +see the section called “Creating the +First Database” above. You can set the parameter using the +dbassist program or by setting +the DB_BLOCK_SIZE parameter in +your database's creation script.

      If there were no errors, then consider yourself fortunate. Your Oracle installation is working.

    @@ -604,24 +567,21 @@ distribution does not work out of the box. The fix is simple. Follow these directions to apply it. First, save dbstart to /var/tmp. Then, as oracle, do the following:

     [oracle ~]$ cp /var/tmp/dbstart.txt /ora8/m01/app/oracle/product/8.1.7/bin/dbstart 
    -[oracle ~]$ chmod 755 /ora8/m01/app/oracle/product/8.1.7/bin/dbstart
    -
    +[oracle ~]$ chmod 755 /ora8/m01/app/oracle/product/8.1.7/bin/dbstart
  • While you're logged in as oracle, you should configure the oratab file to load your database at start. Edit the file /etc/oratab:

    • You will see this line.

      -ora8:/ora8/m01/app/oracle/product/8.1.7:N
      -

      By the way, if you changed the service name or have multiple +ora8:/ora8/m01/app/oracle/product/8.1.7:N

      By the way, if you changed the service name or have multiple databases, the format of this file is:

      service_name:$ORACLE_HOME:Y || N (for autoload)

    • Change the last letter from "N" to "Y". This tells Oracle that you want the database to start when the machine boots. It should look like this.

      -ora8:/ora8/m01/app/oracle/product/8.1.7:Y
      -
      +ora8:/ora8/m01/app/oracle/product/8.1.7:Y
    • Save the file & quit the terminal.

  • @@ -633,8 +593,7 @@ [oracle ~]$ su - [root ~]# cp /var/tmp/oracle8i.txt /etc/rc.d/init.d/oracle8i [root ~]# chown root.root /etc/rc.d/init.d/oracle8i -[root ~]# chmod 755 /etc/rc.d/init.d/oracle8i - +[root ~]# chmod 755 /etc/rc.d/init.d/oracle8i
  • Test the script by typing the following commands and checking the output. (Debian Users: as root, do mkdir /var/lock/subsys first)

    @@ -680,8 +639,7 @@
     
     Database "ora8" warm started.
     
    -Database "ora8" warm started.
    -
    +Database "ora8" warm started.
  • If it worked, then run these commands to make the startup and shutdown automatic.

      @@ -691,8 +649,7 @@ [root ~]# chkconfig --add oracle8i [root ~]# chkconfig --list oracle8i ; You should see: -oracle8i 0:off 1:off 2:off 3:on 4:on 5:on 6:off - +oracle8i 0:off 1:off 2:off 3:on 4:on 5:on 6:off
    • Debian users:

       [root ~]# update-rc.d oracle8i defaults
      @@ -703,8 +660,7 @@
          /etc/rc2.d/S20oracle8i -> ../init.d/oracle8i
          /etc/rc3.d/S20oracle8i -> ../init.d/oracle8i
          /etc/rc4.d/S20oracle8i -> ../init.d/oracle8i
      -   /etc/rc5.d/S20oracle8i -> ../init.d/oracle8i
      -
      + /etc/rc5.d/S20oracle8i -> ../init.d/oracle8i
    • SuSE users:

       [root ~]# cd /etc/rc.d/init.d
      @@ -746,8 +702,7 @@
       Executing /sbin/conf.d/SuSEconfig.tetex...
       Executing /sbin/conf.d/SuSEconfig.ypclient...
       Processing index files of all manpages...
      -Finished.
      -
      +Finished.
  • @@ -767,8 +722,7 @@ [oracle ~]$ exit [root ~]# cp /var/tmp/listener8i.txt /etc/rc.d/init.d/listener8i [root ~]# cd /etc/rc.d/init.d -root:/etc/rc.d/init.d# chmod 755 listener8i -

    Test the listener automation by running the following commands +root:/etc/rc.d/init.d# chmod 755 listener8i

    Test the listener automation by running the following commands and checking the output.

     root:/etc/rc.d/init.d# ./listener8i stop
     Oracle 8i listener start/stop
    @@ -811,8 +765,7 @@
     Services Summary...
       PLSExtProc        has 1 service handler(s)
       ora8      has 1 service handler(s)
    -The command completed successfully
    -

    This test will verify that the listener is operating normally. +The command completed successfully

    This test will verify that the listener is operating normally. Login into the database using the listener naming convention.

    sqlplususername/password/\@SID

    @@ -827,16 +780,14 @@
     
     SQL> exit
     [oracle ~]$ exit
    -[root ~]#
    -
      +[root ~]#
      • RedHat users:

        Now run chkconfig on the listener8i script.

         [root ~]# cd /etc/rc.d/init.d/
         root:/etc/rc.d/init.d# chkconfig --add listener8i
         root:/etc/rc.d/init.d# chkconfig --list listener8i
        -listener8i      0:off   1:off   2:off   3:on    4:on    5:on    6:off
        -
        +listener8i 0:off 1:off 2:off 3:on 4:on 5:on 6:off
      • Debian users:

        Now run update-rc.d on the listener8i script.

        @@ -848,20 +799,17 @@
            /etc/rc2.d/S21listener8i -> ../init.d/listener8i
            /etc/rc3.d/S21listener8i -> ../init.d/listener8i
            /etc/rc4.d/S21listener8i -> ../init.d/listener8i
        -   /etc/rc5.d/S21listener8i -> ../init.d/listener8i
        -
        + /etc/rc5.d/S21listener8i -> ../init.d/listener8i
    • Test the automation

      As a final test, reboot your computer and make sure Oracle comes up. You can do this by typing

      -[root ~]# /sbin/shutdown -r -t 0 now
      -

      Log back in and ensure that Oracle started automatically.

      +[root ~]# /sbin/shutdown -r -t 0 now

      Log back in and ensure that Oracle started automatically.

       [joeuser ~]$ su - oracle
       [oracle ~]$ sqlplus system/alexisahunk\@ora8
       
      -SQL> exit
      -
      +SQL> exit

    Congratulations, your installation of Oracle 8.1.7 is complete.

    @@ -877,17 +825,14 @@ 'YYYY-MM-DD'.

    To fix this, you should include the following line in $ORACLE_HOME/dbs/initSID.ora or for the default case, $ORACLE_HOME/dbs/initora8.ora

    -nls_date_format = "YYYY-MM-DD"
    -

    You test whether this solved the problem by firing up +nls_date_format = "YYYY-MM-DD"

    You test whether this solved the problem by firing up sqlplus and typing:

    -SQL> select sysdate from dual;
    -

    You should see back a date like 2000-06-02. If some of the date is chopped +SQL> select sysdate from dual;

    You should see back a date like 2000-06-02. If some of the date is chopped off, i.e. like 2000-06-0, everything is still fine. The problem here is that sqlplus is simply truncating the output. You can fix this by typing:

     SQL> column sysdate format a15
    -SQL> select sysdate from dual;
    -

    If the date does not conform to this format, double-check that +SQL> select sysdate from dual;

    If the date does not conform to this format, double-check that you included the necessary line in the init scripts. If it still isn't working, make sure that you have restarted the database since adding the line:

    @@ -899,16 +844,13 @@
     Database dismounted.
     ORACLE instance shut down.
     SVRMGR> startup
    -ORACLE instance started.
    -

    If you're sure that you have restarted the database since +ORACLE instance started.

    If you're sure that you have restarted the database since adding the line, check your initialization scripts. Make sure that the following line is not included:

    -export nls_lang = american
    -

    Setting this environment variable will override the date +export nls_lang = american

    Setting this environment variable will override the date setting. Either delete this line and login again or add the following entry to your login scripts after the nls_lang line:

    -export nls_date_format = 'YYYY-MM-DD'
    -

    Log back in again. If adding the nls_date_format line doesn't help, you +export nls_date_format = 'YYYY-MM-DD'

    Log back in again. If adding the nls_date_format line doesn't help, you can ask for advice in our OpenACS forums.

  • @@ -917,28 +859,25 @@

    Dropping a tablespace

    • Run sqlplus as the dba:

      -[oracle ~]$ sqlplus system/changeme
      -
      +[oracle ~]$ sqlplus system/changeme
    • To drop a user and all of the tables and data owned by that user:

      -SQL> drop user oracle_user_name cascade;
      -
      +SQL> drop user oracle_user_name cascade;
    • To drop the tablespace: This will delete everything in the tablespace overriding any referential integrity constraints. Run this command only if you want to clean out your database entirely.

      -SQL> drop tablespace table_space_name including contents cascade constraints;
      -
      +SQL> drop tablespace table_space_name including contents cascade constraints;

    For more information on Oracle, please consult the documentation.

    Oracle Next Steps

    the -section called “Creating an appropriate tuning -and monitoring environment”

    +section called “Creating an appropriate tuning and monitoring +environment”

    Defaults

    We used the following defaults while installing Oracle.

    Index: openacs-4/packages/acs-core-docs/www/os-install.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/os-install.adp,v diff -u -r1.3.2.5 -r1.3.2.6 --- openacs-4/packages/acs-core-docs/www/os-install.adp 13 Jul 2023 12:43:21 -0000 1.3.2.5 +++ openacs-4/packages/acs-core-docs/www/os-install.adp 2 Sep 2024 09:40:23 -0000 1.3.2.6 @@ -2,10 +2,13 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Linux Install Guides}Linux Install Guides +

    Index: openacs-4/packages/acs-core-docs/www/os-security.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/os-security.adp,v diff -u -r1.3.2.5 -r1.3.2.6 --- openacs-4/packages/acs-core-docs/www/os-security.adp 13 Jul 2023 12:43:21 -0000 1.3.2.5 +++ openacs-4/packages/acs-core-docs/www/os-security.adp 2 Sep 2024 09:40:23 -0000 1.3.2.6 @@ -2,10 +2,13 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Security Information} Security Information +

    Index: openacs-4/packages/acs-core-docs/www/packages.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/packages.adp,v diff -u -r1.7.2.11 -r1.7.2.12 --- openacs-4/packages/acs-core-docs/www/packages.adp 1 Aug 2024 08:03:40 -0000 1.7.2.11 +++ openacs-4/packages/acs-core-docs/www/packages.adp 2 Sep 2024 09:40:23 -0000 1.7.2.12 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {OpenACS Packages} OpenACS Packages +

    @@ -44,8 +48,7 @@ tcl/ bootstrap code www/ - Pages not in packages (static content, customized pages) -

    + Pages not in packages (static content, customized pages)

    @@ -123,8 +126,7 @@ | | +-- *.adp UI Templates | | +-- *-oracle.xql Oracle-specific Queries | | +-- *-postgresql.xql PostgreSQL-specific Queries - +-- Other package directories. -

    + +-- Other package directories.

    All file locations are relative to the package root, which in this case is ROOT/packages/notes. The following table describes in detail what each of the files up in the diagram @@ -328,8 +330,7 @@ this point, you should add your package files to your CVS repository. I'll assume that you have set up your development repository according to the standards described in this appendix. If so, then -you just do this:

    -% cd ROOT/packages
    +you just do this:

    % cd ROOT/packages
     % cvs add notes
     % cd notes
     % cvs add notes.info
    @@ -338,8 +339,7 @@
     % cvs add *.sql
     % cd ROOT/packages/notes
     % cvs commit -m "add new package for notes"
    -    
    -
    +
  • Now you can start developing the package. In addition to writing code, you should also consider the tasks outlined in the package development tutorial.

  • @@ -407,8 +407,8 @@

    {/doc/acs-core-docs/ {ACS Core Documentation}} {Parties in OpenACS} Parties in OpenACS +

    Index: openacs-4/packages/acs-core-docs/www/permissions-design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions-design.adp,v diff -u -r1.4.2.7 -r1.4.2.8 --- openacs-4/packages/acs-core-docs/www/permissions-design.adp 1 Aug 2024 08:03:41 -0000 1.4.2.7 +++ openacs-4/packages/acs-core-docs/www/permissions-design.adp 2 Sep 2024 09:40:23 -0000 1.4.2.8 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Permissions Design} Permissions Design +

    Index: openacs-4/packages/acs-core-docs/www/permissions-requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions-requirements.adp,v diff -u -r1.4.2.6 -r1.4.2.7 --- openacs-4/packages/acs-core-docs/www/permissions-requirements.adp 1 Aug 2024 08:03:41 -0000 1.4.2.6 +++ openacs-4/packages/acs-core-docs/www/permissions-requirements.adp 2 Sep 2024 09:40:23 -0000 1.4.2.7 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Permissions Requirements} Permissions Requirements +

    Index: openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.adp,v diff -u -r1.4.2.10 -r1.4.2.11 --- openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.adp 1 Aug 2024 08:03:41 -0000 1.4.2.10 +++ openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.adp 2 Sep 2024 09:40:23 -0000 1.4.2.11 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {OpenACS Permissions Tediously Explained} OpenACS Permissions Tediously Explained +

    @@ -50,8 +54,7 @@ constraint acs_objects_context_object_un unique (context_id, object_id) disable ); - -

    This means that items that want to use the features of the +

    This means that items that want to use the features of the OpenACS object system needs to have an entry in the acs_objects. This allows developers to define relationships between any two entities A and B by defining a relationship between their corresponding entries in the acs_objects table. One of the applications @@ -63,8 +66,7 @@ pretty_name varchar2(100), pretty_plural varchar2(100) ); - -

    +    
       create table acs_permissions (
           object_id
               not null
    @@ -78,8 +80,7 @@
           constraint acs_permissions_pk
               primary key (object_id, grantee_id, privilege)
       );
    -    
    -

    The acs_privileges table +

    The acs_privileges table stores named privileges like read, write, delete, create, and admin. The acs_permissions table stores assertions of the form:

    Who (grantee_id) can do what (privilege) on which object @@ -257,8 +258,7 @@ constraint acs_object_context_index_pk primary key (object_id, ancestor_id) ) organization index; - -

    A few things to note about this table are these. Number one, it +

    A few things to note about this table are these. Number one, it is an index-organized table, which means it is substantially optimized for access by primary key. Number two, as the above computations suggest, the size of the table grows @@ -304,15 +304,12 @@

    @@ -361,8 +357,7 @@ constraint acs_privilege_hierarchy_pk primary key (privilege, child_privilege) ); - -

    As in the case of the context hierarchy, it is convenient to +

    As in the case of the context hierarchy, it is convenient to have a flattened representation of this hierarchal structure. This is accomplished by defining the following view.

       create or replace view acs_privilege_descendant_map
    @@ -385,8 +380,7 @@
              prior child_privilege = privilege
           )
         or p2.privilege = p1.privilege;
    -    
    -

    As the number of different privileges in the system is expected +

    As the number of different privileges in the system is expected to be reasonably small, there is no pressing need to cache the flattened ansector-descendant view of the privilege hierarchy in a specially maintained table like it is done in the case of the @@ -412,8 +406,7 @@ constraint parties_email_un unique, url varchar2(200) ); - -

    +    
       create table persons (
           person_id
               not null
    @@ -424,8 +417,7 @@
           last_name            varchar2(100)
               not null
       );
    -    
    -
    +    
       create table users (
           user_id
               not null
    @@ -434,18 +426,15 @@
           password        char(40),
           -- other attributes
       );
    -    
    -
    - 
    +    
     
       create table groups (
           group_id
               not null
               constraint groups_group_id_fk references parties (party_id)
               constraint groups_pk primary key,
           group_name           varchar2(100) not null
       );
    -    
    -

    Recall that the grantee_id +

    Recall that the grantee_id column of the acs_permissions table references parties.party_id. This means that you can grant a privilege on an object to a party, person, user, or group. @@ -476,8 +465,7 @@ constraint acs_object_rels_un unique (rel_type, object_id_one, object_id_two) ); - -

    +    
       create table membership_rels (
           rel_id
               constraint membership_rel_rel_id_fk references acs_rels (rel_id)
    @@ -487,8 +475,7 @@
               constraint membership_rel_mem_ck
                check (member_state in ('approved', 'banned', 'rejected', 'deleted'))
       );
    -    
    -

    The acs_rels table +

    The acs_rels table entries would look like so:


    A
    object_id=10
    readable by Joe
    -       


    B
    object_id=20
    readable by Joe
    -               


    C
    object_id=30
    security_inherit_p = 'f'
    not readable by Joe
    -       

    @@ -322,7 +319,6 @@       


    F
    object_id=60
    security_inherit_p = 'f'
    not readable by Joe
    -       

    @@ -515,8 +502,7 @@ constraint composition_rels_rel_id_fk references acs_rels (rel_id) constraint composition_rels_rel_id_pk primary key ); - -

    The relevant entries in the acs_rels look +

    The relevant entries in the acs_rels look like so.

    @@ -562,8 +548,7 @@ constraint group_component_index_pk primary key (group_id, component_id, rel_id) ) organization index; - -
    +    
       create table group_member_index (
           group_id
               not null
    @@ -580,8 +565,7 @@
           constraint group_member_index_pk
               primary key (member_id, group_id, rel_id)
       ) organization index;
    -    
    -

    The group_component_index +

    The group_component_index table stores a flattened representation of the group composition hierarchy that is maintained in sync with the acs_rels and composition_rels tables through @@ -616,8 +600,7 @@ where mr.rel_id = r.rel_id and r.object_id_one = gci.component_id; - -

    A heuristic way to verify that group_member_view is essentially identical +

    A heuristic way to verify that group_member_view is essentially identical to group_member_index is to compute the symmetric difference between the two:

     select
    @@ -637,8 +620,7 @@
        minus
        select group_id, member_id from group_member_view
       )
    -    
    -

    The query returns no rows. The important point is, if we have a +

    The query returns no rows. The important point is, if we have a flattened view of the composition hierarchy -- like one provided by the group_component_index table -- membership relationship resolution can be computed @@ -649,8 +631,7 @@

    Putting It All Together

    Security information is queried by calling the acs_permission.permission_p function in -OpenACS. This is accessible from Tcl via the permission::permission_p procedure.

    -  
    +OpenACS. This is accessible from Tcl via the permission::permission_p procedure.

      
       create or replace package body acs_permission
       as
         -- some stuff removed for the sake of brevity
    @@ -673,8 +654,7 @@
         end;
     
       end acs_permission;
    -    
    -

    problem +

    problem avoidance

    The function queries acs_object_party_privilege_map, which is a humongous view that joins three flattened hierarchies: the context tree, the privilege @@ -686,8 +666,7 @@ would ultimately result in a query error.

    For example, do not try to do things like

     select count(*)
       from acs_object_party_privilege_map;
    -    
    -

    To give another example of things to avoid, I have seen code +

    To give another example of things to avoid, I have seen code like this:

       declare
           cursor cur is
    @@ -713,18 +692,15 @@
     
       end;
       /
    -    
    -

    The acs_permission.revoke_permission function -merely runs a delete statement like so:

    -  
    +    

    The acs_permission.revoke_permission function +merely runs a delete statement like so:

      
       delete from
          acs_permissions
       where
          object_id = revoke_permission.object_id
          and grantee_id = revoke_permission.grantee_id
          and privilege = revoke_permission.privilege;
    -    
    -

    Note that in the above example, acs_permissions had only one entry that +

    Note that in the above example, acs_permissions had only one entry that needed to be deleted:

    @@ -759,8 +735,7 @@ privilege from acs_object_grantee_priv_map; - -
    +    
     create or replace view acs_object_grantee_priv_map
     as
     select
    @@ -772,9 +747,7 @@
       acs_privilege_descendant_map m
     where
       a.privilege = m.privilege;
    -    
    -
    - 
    +    
     
     create or replace view acs_permissions_all
     as
     select
    @@ -786,8 +759,7 @@
       acs_permissions p
     where
       op.ancestor_id = p.object_id;
    -    
    -
    +    
     create or replace view acs_object_paths
     as
     select
    @@ -796,9 +768,7 @@
       n_generations
     from
       acs_object_context_index;
    -    
    -
    - 
    +    
     
     
     create or replace view group_member_map
     as
    @@ -809,8 +779,7 @@
       container_id
     from
       group_member_index;
    -    
    -
    + {/doc/acs-core-docs/ {ACS Core Documentation}} {Groups, Context, Permissions} Groups, Context, Permissions +

    Index: openacs-4/packages/acs-core-docs/www/postgres.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/postgres.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/postgres.adp 13 Jul 2023 12:43:22 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/postgres.adp 2 Sep 2024 09:40:23 -0000 1.4.2.6 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Install PostgreSQL} Install PostgreSQL +

    Index: openacs-4/packages/acs-core-docs/www/profile-code.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/profile-code.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/profile-code.adp 13 Jul 2023 12:43:22 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/profile-code.adp 2 Sep 2024 09:40:23 -0000 1.4.2.6 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Profile your code} Profile your code +

    Index: openacs-4/packages/acs-core-docs/www/programming-with-aolserver.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/programming-with-aolserver.adp,v diff -u -r1.5.2.6 -r1.5.2.7 --- openacs-4/packages/acs-core-docs/www/programming-with-aolserver.adp 13 Jul 2023 12:43:22 -0000 1.5.2.6 +++ openacs-4/packages/acs-core-docs/www/programming-with-aolserver.adp 2 Sep 2024 09:40:23 -0000 1.5.2.7 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Programming with AOLserver} Programming with AOLserver +

    Index: openacs-4/packages/acs-core-docs/www/psgml-for-emacs.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/psgml-for-emacs.adp,v diff -u -r1.4.2.10 -r1.4.2.11 --- openacs-4/packages/acs-core-docs/www/psgml-for-emacs.adp 1 Aug 2024 08:03:41 -0000 1.4.2.10 +++ openacs-4/packages/acs-core-docs/www/psgml-for-emacs.adp 2 Sep 2024 09:40:23 -0000 1.4.2.11 @@ -2,26 +2,27 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {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 + If you plan to write or edit any documentation with emacs, install a customized emacs configuration file with DocBook commands in the skeleton directory, so it will be used for all new users. The file also fixes the backspace -> help mis-mapping that often occurs in -terminals.

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

    [root tmp]# cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/emacs.txt /etc/skel/.emacs
     cp: overwrite `/etc/skel/.emacs'? y
    -[root tmp]# 
    -

    Debian users:

    apt-get install psgml

    Note: The new nxml mode for emacs, when used in combination with +[root tmp]#

    Debian users:

    apt-get install psgml

    Note: The new nxml mode for emacs, when used in combination with psgml, provides a pretty good set of functionality that makes DocBook editing much less painless. In particular, nxml does syntax testing in real-time so that you can see syntax errors immediately Index: openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html,v diff -u -r1.44.2.8 -r1.44.2.9 --- openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html 1 Aug 2024 08:03:41 -0000 1.44.2.8 +++ openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html 2 Sep 2024 09:40:23 -0000 1.44.2.9 @@ -1,5 +1,5 @@ -Add PSGML commands to emacs init file (OPTIONAL)

    Prev Appendix B. Install additional supporting software Next

    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 Index: openacs-4/packages/acs-core-docs/www/psgml-mode.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/psgml-mode.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/psgml-mode.adp 13 Jul 2023 12:43:22 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/psgml-mode.adp 2 Sep 2024 09:40:23 -0000 1.4.2.6 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Using PSGML mode in Emacs} Using PSGML mode in Emacs +

    @@ -142,9 +146,8 @@

    -Further reading

    Start with the the section called -“OpenACS Documentation -Guide” +Further reading

    Start with the the section called “OpenACS +Documentation Guide”

    ($‌Id: psgml-mode.xml,v 1.9.2.1 2021/09/02 16:56:02 gustafn Exp $)
    Index: openacs-4/packages/acs-core-docs/www/release-notes.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/release-notes.adp,v diff -u -r1.8.2.13 -r1.8.2.14 --- openacs-4/packages/acs-core-docs/www/release-notes.adp 1 Aug 2024 08:03:41 -0000 1.8.2.13 +++ openacs-4/packages/acs-core-docs/www/release-notes.adp 2 Sep 2024 09:40:23 -0000 1.8.2.14 @@ -2,134 +2,1151 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {OpenACS Release Notes} OpenACS Release Notes +

    OpenACS Release Notes

    -Release 5.10.1

      -
    • The release of OpenACS 5.10.1 contains the 97 packages of the +Release 5.10.1

    The release of OpenACS 5.10.1 contains the 94 packages of the oacs-5-10 branch. These packages include the OpenACS core packages, -the major application packages (e.g. most the ones used on -OpenACS.org), and DotLRN 2.10.1.

  • -

    Improved templating

      -
    • Client-side double click prevention

    • Support for generic icon names, which can be mapped differently -depending on the installed packages and themes: The generic names -are supported via <adp:icon -name="NAME" title=....>. By using this feature, -one can use font-based icons (like e.g. glyphicons of Bootstrap5, +the major application packages (e.g. most the ones used on +OpenACS.org), and DotLRN 2.10.1.

      Altogether, OpenACS 5.10.1 differs from OpenACS 5.10.0 by the +following statistics

      +        3027 files changed, 428212 insertions(+), 219697 deletions(-)

      contributed by 8 committers (Antonio Pisano, Gustaf Neumann, +Günter Ernst, Héctor Romojaro, Michael Aram, Raúl Rodríguez, +Sebastian Scheder, and Thomas Renner) and additional 8 patch/bugfix +providers (Felix Mödritscher, Frank Bergmann, Franz Penz, Josue +Cardona, Keith Paskett, Markus Moser, Marty Israelsen, and Monika +Andergassen) - all sorted by the first names.

      In terms of changes, this is the largest amount of changes at +least since the release of OpenACS 5.9.0. Below is a summary of the +most important changes, often together with the commit references +in Git. The summary was made on subjective criteria, to get an +overview of the changes.

      For all details, consult the raw +ChangeLog.

      +

      +Changes in the acs-core packages between OpenACS 5.10.0 and +5.10.1

      +

      +New +Features

        +
      • +

        +Security and Privacy Posture +Overview: As expressed as a wish from OpenACS users +at the last OpenACS conference, a Security and Privacy Posture Overview was +added that offers a quick overview of the state of the system and +eases access to the parameters scattered over different packages in +the system. The page offers:

          +
        • Quick overview
        • Check of security and privacy relevant package +parameters
        • Permission and accessibility check of mounted +packages
        • Response header check
        • External library check (CDN vs local usage, +vulnerable or outdated libraries) The page is linked from the +site-wide-admin page (/acs-admin).
        • +
        +
      • +Stronger Password Hashes for +OpenACS (commit fe2bdb547, 8eee6a932, 52d2c997e, +62d969c85): Introduction of new password hash functions alongside +the pre-existing salted-sha1. The new algorithms are named +scram-sha-256, scrypt-16384-8-1, +argon2-argon2-12288-3-1, argon2-rfc9106-high-mem, and argon2-rfc9106-low-mem. +These algorithms can be specified via the kernel package parameter +PasswordHashAlgorithm. The algorithms +require a recent version of NaviServer and a recent version of +OpenSSL, which serves as a crypto library. This feature enhances +security against brute-force attacks on password hashes (when db is +compromised). Preferences of the password hash algorithms can be +set via kernel package parameter PasswordHashAlgorithm, the first available +algorithm is taken from the preference list, hash re-coding happens +automatically at the next login.

      • +Setting of CSP rules based on MIME +types (commit 6bc253f1e, commit 94b8513ae). This is +necessary to mitigate certain attacks on static SVG files uploaded +to, e.g., the content repository. For example, set the following to +the ns/server/$server/acs section of +your NaviServer configuration file:

      • +
      +        ns_param StaticCSP {
      +            image/svg+xml "script-src 'none'"
      +        }
      +
        +
      • +

        +Support for generic icon +names Support for generic icon names, which can be +mapped differently depending on the installed packages and themes. +The support provides a mapping from a set of generic names to the +names provided by different libraries sich as Glyph Icons, +Bootstrap Icons, Font-Awsome. The provided support can be inspected +on the site-wide page of acs-templating.

        The generic names can be used via the special tag <adp:icon name="NAME" +title=....> in .adp-files. By using this feature, one can +use font-based icons (like e.g. glyphicons of Bootstrap5, bootstrap-icons, fa-icons, ...) instead of the old-style .gif and .png images. This makes the appearance more uniform, has better resizing behavior, and works more efficiently (fewer requests for embedded resources). Most of the occurrences of the old-style images in standard core and non-core packages in oacs-5-10 are -already replaced.

      • Support for listing registered URNs

      • +already replaced. (commit c129c89ec, 996740672, e9cae22dc, +c7705c68b, a85ea7301, 58ad43055, 737da5514, a05813ec7, 110b2f5d6, +7011c8fd9, 286fd9e58, 927d9d5ef)

        +
      • +Better Automated Site +Configurability: Support for installing themes from +install.xml (commit 2f9761160).

      • +Dynamic Cluster Nodes and Cluster +Infrastructure (commit 5738761db, 7cbc3e63c, +1a7a7656c, 3faceddc4, 5fba13c0f, 7cbc3e63c, 3faceddc4, 1a7a7656c): +Added support for dynamically adding and removal of nodes in an +OpenACS cluster. In contrast to static cluster nodes, the IP +addresses of dynamic cluster nodes do not have to be provided at +startup time. The changes introduce new admin pages and further +configuration options.

      • +Optional Caching +Deactivation (commit 75c3f2b25): It is possible to +deactivate caching via the ns_cache +infrastructure when the NaviServer configuration variable +cachingmode is set to none. The change modifies per_thread_cache to behave like a per_connection_cache. This option is useful for +cluster configurations, when legacy components do not handle cache +coherency (e.g. via acs::clusterwide)

      • +Support for Cloud Identity +Providers (commit e506dee05, fd7af8d17, 06954d83b). +Additional Identity providers can be added as secondary registries +(e.g., MS Azure via oauth2), to support e.g. logins via the +classical register page and via a +cloud registry (requires package xooauth for full +functionality)

      • +Client-side double click +prevention: This change makes it possible to +provide a double click prevention for HTML elements via the CSS +class prevent-double-click. The double click +prevention deactivates a button or an anchor element after clicking +for a short time (per default for 1s) and ignores in this time +window further clicks. The time window can be specified via the +data element oacs-timeout. (commit 5f2edeec2a9a831, +916d365aa11f2d)

      • +Cookie Namespaces +(commit ce1573ed8): Important, when multiple OpenACS instances are +served from the same domain name, but different cookies have to be +used.

      +
      +

      +Reforms

        +
      • +lc_time_tz_convert: Enforce ISO format for dates +and other changes (commit 9a5b5cd97).
      • +template::element +validation reform to improve validation on fields (commit +87919f923).
      • Provide timeouts for caching operations to +improve liveliness also when certain calls are hanging (commit +22cd530d4).
      • Form widget attributes reform consolidating +logics for merging tag attributes (commit 3a7fc6a8e).
      • Streamlined resource_info handling by adding versioning and +better management of external library dependencies. External +libraries can be used from CDN or downloaded, the versions are +checked for vulnerabilities, which are reported via posture +overview and package-specific site-wide admin pages.

      • +
      +
      +

      +Configuration Changes

        +
      • Set the (default) theme package on the subsite +upon installation (commit 0ff7101b3).
      • Improved clusterwide operations with new +configuration parameters (commit 5738761db).
      • New configuration options CSSToolkit and IconSet for acs-subsite (commit fc56a275b).
      • Support specification of allowed +tags/attributes/protocols via global package parameters (commit +657cef99a,fc46466e3).
      • Made ad_html_security_check configurable (commit +bc63ee424).
      • Support for memory units as default cache +sizes (commit 68c853abd).
      • +
      +
      +

      +Bug +Fixes

        +
      • Fixed missing update_content-lob.set_content (commit a3effac23, +4ce8e9fae).
      • Fixed incorrect HTTP status code on result +page (commit 636226cb2).
      • Fixed signature of service contract +implementation (commit b9f0c541c).
      • Fixed implementation of ad_acs_admin_node (commit 34a823c51).
      • Fixed reference in doc (commit +e596b46f8).
      • Fixed ad_approval_system_inuse_p implementation (commit +bd8afdeeb).
      • Fixed self-inflicted bug in form variable +specification (commit 79e6df943).
      • Fixed a bug in db_multirow_group_last_row_p (commit +aafd1db58).
      • Fixed issue with ns_parseurl in util::split_location (commit aee571ad1).
      • Various fixes for Oracle 19c compatibility +issues (numerous commits).
      • Fixed broken function_args definition and +other issues (commit 83e45f9b5, d166927d2, etc.).
      • Fixed a bug in db_driverkey when OpenACS connects to multiple +databases, involving the removal of per-thread caching (commit +18e656b00).
      • Fixed and generalized version_dir handling for download of external +resources (commit 8e9a6a5c8).
      • Fixed selector for click all list callback in +core.js (commit 00b9db614).
      • Fixed a bug in db_foreach with -column_set flag (commit 95e8970d7).
      • Handle null dates in core.js (commit +1dd928238).
      • Fixed issues in SQL function calling to avoid +incorrect function selection due to typecasting issues (commit +bc33e9938).
      • Corrected problems with session handling in +cluster mode and fixed cache coherency issues in clustered +environments (commit c0a1cf7b9).
      • +
      +
      +

      +Improvements

        +
      • +Security +Improvements
          +
        • In addition to the new security features +mentioned above, the new release was tested several times by +different vulnerability scanners, which triggered a large number of +changes as for example strengthening the input tests in page +contracts, consequent use of bind variables and permission +checks.
        • New API ad_mktmpdir and ad_opentmpfile (commit a10b55d3d).
        • Added support for elliptic curve certificates +(ecdsa) when the lets-encrypt module from NaviServer is used +(commit 2c40f1d9d).
        • Hardened page contracts, added many +constraints to address potential SQI and XQL etc. attacks (many +commits, e.g. 8eee6a932, d4846d106)
        • Warn warning when parametersecret is not set (commit +0ec8f0183).
        • Safe creation of temporary directories (commit +d25ff6593).
        • Upgraded internal use of JavaScript and HTML +standards to improve security and performance (commit +e68a73c92).
        • +
      • -

        Security improvements

          -
        • Stronger password hashes (scram-sha-256 hash in addition to the -classical salted-sha1)

        • -

          Added optional CSP rules based on MIME types. This is important -for user-contributed content. When users upload e.g. SVG-files to -the file storage, and the content is served from there, it poses a -potential security hole. One can now define an additional parameter -called StaticCSP in the section -ns/server/$server/acs of the -OpenACS configuration file to deactivate execution of script files -from static content.

          -                                ns_param StaticCSP {
          -                                image/svg+xml "script-src 'none'"
          -                                }
          -                    
          -
          +Performance +Improvements
            +
          • New partial index for a common query in +acs-tcl (commit aaaf86adb).
          • Implemented ad_html_security_check based on ns_parsehtml (commit 387f3de3e).
          • Added support for NaviServer built-in +ns_trim -prefix (commit +500099e0).
          • Change in storing and displaying util user +messages (commit bb0702bf3).
          • +
        • -

          Cookie-Namespace: When multiple OpenACS instances are served -from the same domain name, the same cookies (e.g. ad_session_id, -ad_login, ...) are set to all servers. For sensible cases, a -cookie-namespace can be used, which can be used as a replacement of -the traditional ad_ prefix. -This can be as well set in the section ns/server/$server/acs of the OpenACS -configuration file:

          -                                # Provide optionally a different cookie namespace
          -                                # (used for prefixing OpenACS cookies)
          -                                ns_param CookieNamespace "ad_"
          -                    
          -
          +Additional +Filters for Page Contracts
            +
          • Introduced ad_page_contract filter object type (commit +2f9d127a0).
          • Introduced a new clock page contract filter (commit +5544faffc).
          • Introduced new tmpfile page contract filter (commit +1a179e9bc).
          • Allow more characters in argument specs +(commit f952d9d5e).
          • +
          +
        • +Code +Refactoring
            +
          • Added a new procedure ad_log_deprecated for unified logging of +deprecated usages (commit 0e03b3358).
          • Improved configurability of LockfreeCache +(commit 9bc412576).
          • Reform of site-nodes-procs for improved +clarity and ease of maintenance, esp. Oracle (commit +3fe93032e).
          • Update of SQL function calls via API, made it +callable during initial bootstrap (commit ad97aa747).
          • Modernization of idioms and cleanup of +deprecated code (e.g., commit a5c537515, e68a73c92, +1d1ff8c4e).
          • Improved documentation, localization updates, +and typo fixes (e.g., commit 5c23325a3, f3590415f, 7a97e0ea0).
          • Phased out outdated procedures and functions +that were superseded by more efficient and secure implementations +(e.g., commit 6272226b6).
          • Deprecated old APIs that no longer align with +modern security practices or performance standards (commit +cd0af7373).
          • Removed legacy support for certain outdated +browser features and replaced them with modern alternatives (commit +a1a7c22a7).
          • Further reduced divergence between Oracle and +Postgres SQL. Target version of Oracle could be 12.*, as Extended +support ends in 2022 (see https://www.oracle.com/us/support/library/lifetime-support-technology-069183.pdf). +This change implies: +
              +
            • change limit ... rownum ... to standard +fetch first +... +
            • use Postgres schemas where available for +stored procedures so that they can be invoked with the same Oracle +idiom
            • +
        • -

          Further reduce divergence between Oracle and Postgres SQL. -Target version of Oracle could be 12.*, as Extended support ends in -2022 (see https://www.oracle.com/us/support/library/lifetime-support-technology-069183.pdf)

            -
          • limit / rownum -> fetch first

          • use Postgres schemas for stored procedures so that they can be -invoked with the same Oracle idiom

          • +Miscellaneous
              +
            • Message keys for content repository (commit +2f89a971a).
            • Make util::join_location usable for UDP and SMTP +(commit 01b5c0d61).
            • Zero-dependency implementations of Modal and +Tooltip using CSS and JavaScript (commit db0f52664, +02bfffbb2).
            • Deprecation of specific functions and APIs in +favor of modern replacements (e.g., commit 4493f07b9, 6db041083, +94c505b01).
            • Extended API: Introduced new API functions +like ad_unless_script_abort, +aa_silence_log_entries, and +util::json2dict to enhance error +handling and logging cleanliness (commit aeb027aeb, f455d60c6, +e9298cf02).
            • Expanded timezone data and improved +internationalization features, including better locale management +and updated localization data (commit 828ab0bd4, 47d478bcf).
            • Added Support for listing registered URNs (per +package on the site-wide admin page of a package, full set on the +adm page of acs-templating)
            • Added support for relative redirects (commit +867d9441e).
          • -

            Deprecated commands

              -
            • acs_message_id contract -filter

            • acs_privacy::*

            • acs_tcl_vars_list_to_ns_set

            • acs_tcl_vars_to_ns_set

            • ad_apply

            • ad_approval_system_inuse_p

            • ad_dateentrywidget

            • ad_db_select_widget

            • ad_decorate_top

            • ad_ns_set_to_tcl_vars

            • ad_package_admin_home

            • ad_parameter_all_values_as_list

            • ad_user_class_description

            • apm_file_type_keys

            • application_group::child_application_groups

            • attachments::root_folder_map_p

            • bulk_mail::parameter

            • bulk_mail::pretty_name

            • calendar_portlet_display::get_url_stub

            • calendar::adjust_date

            • calendar::assign_permissions

            • calendar::from_sql_datetime

            • calendar::item::assign_permission

            • calendar::make_datetime

            • content::revision::update_attribute_index

            • dotlrn_chat::add_portlet_helper

            • dt_widget_*

            • export_entire_form

            • export_entire_form_as_url_vars

            • export_ns_set_vars

            • -f::* API that cannot be -replaced by a drop-in alternative

            • forum::new_questions_allowed_p

            • forum::new_questions_allow

            • forum::new_questions_deny

            • fs::add_created_version

            • fs::get_archive_extension

            • fs::get_folder_contents

            • fs::item_editable_info

            • fs::torrent::get_hashsum

            • notification::get_delivery_method_id

            • notification::get_interval_id

            • oacs_util::vars_to_ns_set

            • template::adp_levels

            • template::form::export

            • template::util::array_to_vars

            • template::util::is_true

            • template::util::list_to_array

            • template::util::list_opts

            • template::util::nvl

            • template::util::tcl_to_sql_list

            • template::util::set_to_list

            • template::util::set_to_vars

            • template::util::vars_to_array

            • twt::server_url

            • twt::user::create

            • twt::user::delete

            • util_AnsiDatetoPrettyDate

            • util_commify_number

            • util_get_current_url

            • util_list_to_ns_set

            • util_ns_set_to_list

            • util_report_successful_library_load

            • util_report_library_entry

            • util::string_check_urlsafe

            • Color widget API

            • ...

            • New proc ad_log_deprecated: -unified interface for logging deprecated usages The existing code -used a larger variety of different messages to denote invocations -of deprecated procs and other artifacts. ad_log_deprecated provides a unified -interface, and provides a usage hint what to use instead based on -the API-doc definitions in the log-file.

            • Move deprecated code into separate files

            • Give people the chance to use OpenACS with WithDeprecatedCode set to 0. When OpenACS -is configured to omit loading of long deprecated code (WithDeprecatedCode set to 0) files like -deprecated-procs.tcl are not loaded. Therefore, these files should -only contain code, which was deprecated at LEAST ONE RELEASE -EARLIER, such that site admins have one release time to fix calls -to deprecated code. This is especially important for public -procs.

            • +Regression +Test: +
                +
              • The regression test was substantially extended +and in part overworked
              • The test includes now checks for resource +leaks (tDOM documents and nodes, temporary objects, etc.) and +leaves less garbage in the /tmp directory
              • For the major packages (core and application +packages), the tests run without reporting errors.
              • For the tests of the majro packages, the +system.log is now free of error messages (e.g., when handling cases +in the test that are supposed to fail)
              + +
            +
          +

          +Version requirements

            +
          • Require NaviServer (i.e. drop AOLserver +support). Rationale: AOLserver cannot be compiled with the required +modules with recent Tcl versions. Trying to backport NaviServer +compatibility functions seems to be an overkill for the OpenACS +project.
          • Bootstrap 3 reached EOL in 2019, Bootstrap 4 +had EOL 2022, so we should migrate to Bootstrap 5 (details: +https://github.com/twbs/release)
          • Require Tcl 8.6.2, XOTcl 2.1, PostgreSQL 12 +(PostgreSQL 11 EOL: November 23), tdom 0.9
          • Support for fresh installations on Oracle 19c +(for details, see: oacs-5-10-on-oracle-19c)
          • +
          +
          +
        +

        +Changes in OpenACS Application +Packages

        +

        +New +Packages in OpenACS 5.10.1

        +
        +

        +Changes in package +"attachments"

        +
        +Improvements
          +
        • +Security +Improvements
          • Strengthen page contracts (3b9068ad)
        • -

          General cleanup/maintenance

            -
          • Modernization of Tcl idioms.

          • Compliance of files, proc names, ... to the naming -conventions.

          • White space cleanup, indentation changes.

          • Improvement of public API documentation

          • Adjustment of proc protection levels (public, private)

          • Adjustment of log severity

          • Cleanup of obsolete files

          • Replacement of handcrafted forms by ad_form

          • Typo fixing

          • Editor hints

          • Replacement of deprecated calls

          • Addition of missing contracts

          • ...

          • +Code +Refactoring
              +
            • Replace handcrafted HTML icons with new +adp:icon adp tag (f45e6406)
            • Replace deprecated util_commify_number, with lc_numeric (518e1b34)
          • -

            New Packages:

              -
            • openacs-bootstrap5: Bootstrap 5 theme for OpenACS

            • bootstrap-icons: Free, high-quality, open-source icon library -with over 1,600 icons. Include them anyway you -like””SVGs, SVG sprite, or web fonts. Use them -with or without Bootstrap in any project

            • fa-icons: Free, high-quality, open-source icon library with over -2,000 free icons. As of 2020, Font Awesome was used by 38% of sites -that use third-party font scripts, placing Font Awesome in second -place after Google Fonts

            • highcharts: The Highcharts library is a JavaScript and -TypeScript package for producing data visualizations (line/bar/pie -charts etc.). The OpenACS package offers support to load this -library either via CDN or from a local installation (via acs-admin -and global administration UI)

            • +Miscellaneous
                +
              • Document public API (fd5b5e1c)
              • Improve test suite and cover 100% of public +api (3446f91c, c933a64e)
              -
            • Migrate to bootstrap 5. Bootstrap 3 reached EOL in 2019, -Bootstrap 4 had EOL 2022. See https://github.com/twbs/release -

            • Potential incompatibility with OpenACS 5.10.0: -"permission::permission_p" returns Boolean values as -"t" and "f" and not "1" and -"0". Avoid literal comparisons of the result and use -boolean tests available in Tcl/OpenACS.

            • Support for fresh installations on Oracle 19c.

            • Require NaviServer (i.e. drop AOLserver support). AOLserver -cannot be compiled with the required modules with recent Tcl -versions. Trying to backport NaviServer compatibility functions -seems to be an overkill for the OpenACS project.

            • Require Tcl 8.6, XOTcl 2.1, PostgreSQL 11 (PostgreSQL 10 EOL: -November 2022), tdom 0.9

            • -

            Altogether, OpenACS 5.10.1 differs from OpenACS 5.10.0 by the -following statistics

            -            2886 files changed, 197060 insertions(+), 182613 deletions(-)
            -        
            -

            contributed by 6 committers (Antonio Pisano, Gustaf Neumann, -Günter Ernst, Héctor Romojaro, -Raúl Rodríguez, Thomas Renner) and -additional 7 patch/bugfix providers (Felix -Mödritscher, Frank Bergmann, Franz Penz, Markus Moser, -Marty Israelsen, Monika Andergassen, Sebastian Scheder). All -packages of the release were tested with PostgreSQL 13.* and Tcl -8.6.*.

            For more details, consult the raw -ChangeLog.

            +
          • +
          +
        +
        +Deprecations
        • +attachments::root_folder_map_p -> duplicates +functionalities of attachments::root_folder_p (cc3177d1)
        +
        +
        +

        +Changes in package +"calendar"

        +
        +New Features
        • +Inclusion of +multiple calendars (77f4db84): name calendar forms +in a way that multiple calendars can be embedded on the same page +(relevant in the context of .LRN portlets)
        +
        +
        +Bug +Fixes
          +
        • Javascript fixes (b1d49bc1)
        • Fix retrieval of a calendar item when a +connection context is not available (772449b4, a049d806)
        • +
        +
        +
        +Improvements
          +
        • +Security +Improvements
            +
          • Improve/harden input validation (many +commits)
          • Don’t expose immutable values as hidden +formfields (03e3f2e7, 31955520)
          • +
          +
        • +Code +Refactoring
            +
          • Replace deprecated API (8e6d01a0, +9cfbf8a1)
          • Streamline idioms (50c5c2d3)
          • Replace handcrafted HTML icons with new +adp:icon adp tag (054c46cc, 8bb2cd6f)
          • Replace custom calendar widget implementation +with native HTML5 form fields and streamline input validation +(6bd30d58, f5118fb4)
          • +
          +
        • +Miscellaneous
            +
          • Improve spelling in catalog files +(258edac5)
          • Pass properties to master template as literal +according to best practices (9598e88e)
          • Improve API documentation (d924a307)
          • Cleanup vestigial features/dead code (various +commits)
          • Port of downstream localization +(90dbfa96)
          • Various typos and formatting improvements
          • Increase test suite of functionalities and +cover 100% of public api (various commits)
          • +
          +
        • +
        +
        +
        +Deprecations
          +
        • +calendar::adjust_date -> inlined the one +occurrence (fbd97314)
        • +calendar::from_sql_datetime, calendar::make_datetime -> not used upstream, +superseded by modern clock idioms and HTML5 features (bccd1c3a, +7264a2fe)
        • +cal_outlook_gmt_sql -> last usage in the +codebase 2002 (1ee22f96)
        • +calendar::item::assign_permission. calendar::assign_permissions -> trivial +wrappers over the permission api (a1ddaed5, f174fd12)
        • +
        +
        +
        +

        +Changes in package +"captcha"

        +
        +Features
          +
        • +Bot protection +for your form implements template::widget::captcha. +This can be used in forms exposed to the public to hinder automated +bots. Based on the implementation at https://fossil-scm.org/
        • +Scalable a new captcha is +generated fast, from scratch and on the fly
        • +No external +dependencies this package does not require any +external commands or libraries
        • +
        +
        +
        +

        +Changes in package +"categories"

        +
        +Reforms
        • Mark service contract implementations as +private (efd3b8e5, 886068d3)
        +
        +
        +Improvements
          +
        • +Performance +Improvements
          • Create indices on FK constraints +(e935a857)
          +
        • +Security +Improvements
            +
          • Add include contracts where missing (40b5bdc3, +667d9cdf, 5d3fb337)
          • Strengthen page contracts (1ad80ea6)
          • +
          +
        • +Code +Refactoring
            +
          • Replace deprecated template::util::is_true with inline string idiom +(f2604994)
          • Replace handcrafted HTML icons with new +adp:icon adp tag (035bd73b)
          • Better qualify command invocation +(a693a8be)
          • +
          +
        • +Miscellaneous
            +
          • Cleanup and formatting changes (various +commits)
          • Increase test suite of functionalities and +reach 80.82% coverage of public api (various commits)
          • Improved documentation of library file and +public API (8da391b1)
          • +
          +
        • +
        +
        +
        +

        +Changes in package +"chat"

        +
        +New Features
          +
        • +Anonymous chat +participants (3a73986c, 214684f3): use newly +introduced support for anonymous users built in xowiki to support +not logged-in users
        • +Chat +include (c2ab5967) : Move the main chat rendering +in an include to allow reuse in other contexts
        • +
        +
        +
        +Bug +Fixes
          +
        • Fix typo in datamodel code affecting new +installations (98d26cfa)
        • Improve/fix Oracle compatibility (d3e0d69b, +cb2e52d0, 04e229f2)
        • Allow for arbitrary arguments to be passed +when extending inherited methods (95ca0c0e)
        • Allow to persist chat messages also in the +chat sweeper (4bf7bd59)
        • +
        +
        +
        +Improvements
          +
        • +Performance +Improvements
          • (Postgres only) Improve performances when +fetching the available chat rooms using recursive permission api +(56d47b31, 0b2cff50)
          +
        • +Security +Improvements
            +
          • Improve SQL quoting (e2146673)
          • Harden page contracts and use new contract +features from the core (43955d16, 148be6f4, 7f6b5c92)
          • +
          +
        • +Code +Refactoring
            +
          • Replace :xo::clusterwide -> +::acs::clusterwide for cluster-aware chaching (76fbfe1f)
          • Replace ::xo::db::sql -> ::acs::dc as tcl +abstraction for db stored procedures (76fbfe1f)
          • Replace deprecated api (928793ce, +cb2e52d0)
          • Replace handcrafted HTML icons with new +adp:icon adp tag (054c46cc)
          • Reduce layers of redirection when accessing a +chat room (4f57e272)
          • +
          +
        • +Miscellaneous
            +
          • Prefer message keys from core packages +(943daaa3)
          • Cleanup vestigial features/dead code +(23fe7d3a, b8d5da6d, d7434cae)
          • Pass properties to master template as literal +according to best practices (98a2b1ec)
          • Extend test suite to 100% public API coverage +(117c66e3, 210e3f16, b2abc81c, fe60e3d1)
          • Improve configurability and styling of the +chat includelet (54bb236f, 289ddee6)
          • Streamline idioms (2b0bd209)
          • Replace legacy message keys (a465cf76)
          • Improve localization (0252ed50)
          • +
          +
        • +
        +
        +
        +

        +Changes in package +"dotlrn" and associated packages

        +
        +Reforms
          +
        • +dotlrn: +
            +
          • Deactivate obsolete SQL function in creation +script (sql/postgresql/dotlrn-create.sql). This complements commit +3a280c7e in acs-kernel (commit 1b845ba0).
          • Use dotlrn-bootstrap3-theme as default theme +(commit c6547eb8).
          • +
          +
        • +theme-zen: Adapt to commit +3a280c7e (acs-kernel) and c6547eb8 (dotlrn) (commit 6d50cb9b).
        • +
        +
        +
        +Improvements
          +
        • +Performance +Improvements
            +
          • +dotlrn: Prefer APIs returning +cached values before querying the DB using site_node:: (commit 4d025e63)
          • +dotlrn-fs: Prefer APIs returning +cached values before querying the DB using site_node:: (39bcaf3f)
          • +
          +
        • +Security +Improvements
          • +dotlrn: Mitigating potential XSS +attacks using NaviServer own ns_quotehtml (commit 4476e815)
          +
        • +Code +Refactoring
            +
          • +dotlrn: +
              +
            • Replace deprecated notification::get_interval_id with notification::interval::get_id_from_name (commit +871dd502)
            • Replace deprecated notification::get_delivery_method_id with +notification::delivery::get_id (commit +a9760fc4)
            • Replace deprecated template::util::is_true with [string is true -strict $value] (commit +38981891)
            • Replace deprecated util_commify_number with lc_numeric (commit 7c14688e)
            • Replace deprecated twt::user::create and twt::user::delete with the respective acs::test::user:: counterparts (commit +dea8673e)
            • Cleanup usage of deprecated API template::util::nvl (commit 0775f434, +73b52fba)
            • Cleanup usage of deprecated API acs_privacy:: (commit d31c3b6f, 9ae5aa4a)
            • Replace deprecated bulk_mail::parameter with parameter::get (commit b10c5f26)
            • Replace deprecated forum::new_questions_deny and forum::new_questions_allow with permission::grant (commit 4880f884)
            • Replace custom calendar widget implementation +with native HTML5 fields (commit 113b1cb4)
            • +
            +
          • +dotlrn-bm: Replace deprecated +bulk_mail::pretty_name with +parameter::get (commit b6b7aec1)
          • +dotlrn-calendar: Reform handling +of admin permissions (commit ce9e27d4, 6a9ada80)
          • +dotlrn-forums: +
              +
            • Replace deprecated notification::get_interval_id with notification::interval::get_id_from_name (commit +d77b24b7)
            • Replace deprecated notification::get_delivery_method_id with +notification::delivery::get_id (commit +075b8adc)
            • +
            +
          • +dotlrn-fs: Replace Naviserver +ns_mktemp with ad_tmpnam (commit f5fd2c96)
          • +dotlrn-homework: +
              +
            • Alter reference to db-error file in +acs-subsite (commit d47e5f2c)
            • Replace deprecated util_commify_number with lc_numeric (commit 990b0b0a)
            • Replace handcrafted HTML icons with adp:icon +adp tag (commit 3f1557c2)
            • +
            +
          • +dotlrn-news: +
              +
            • Replace deprecated notification::get_interval_id with notification::interval::get_id_from_name (commit +586cc6ae)
            • Replace deprecated notification::get_delivery_method_id with +notification::delivery::get_id +(28661484)
            • +
            +
          • +dotlrn-static: Fix applet mount +point (commit 233e0c6c)
          • +new-portal: +
              +
            • Replace export_ns_set_vars with export_vars (commit e8ab835d)
            • Prefer adp:icon adp tag over handcrafted HTML +icons (commit 7afadf3b)
            • +
            +
          • +
          +
        • +Miscellaneous
          • +All +packages: +
              +
            • Cleanup and formatting (various commits)
            • Strengthen page contracts (various +commits)
            • Document public API, e.g., in new-portal, +dotlrn-dotlrn (e.g., commit 75656f6f, 05540825)
            • Improve test coverage, e.g., in dotlrn-portlet (e.g., commit dcfe916b, 712e8793, +59ec97b0)
            • +
            +
          +
        • +
        +
        +
        +

        +Changes in package +"faq"

        +
        +New Features
        • +faq::new +API (1fc77330): an API to create an FAQ, also +useful for testing
        +
        +
        +Bug +Fixes
        • Fixes for Oracle compatibility (3e5418a3)
        +
        +
        +Reforms
          +
        • Mark service contract implementations as +private (987ef426)
        • Mark apm callbacks as private (6861af77)
        • +
        +
        +
        +Improvements
          +
        • +Security +Improvements
          • Harden page contract validation (a2904377, +87d05896, a4c9fc52)
          +
        • +Code +Refactoring
            +
          • Replace deprecated twt::user::create and twt::user::delete with their acs::test::user:: +counterpart (27286797)
          • Replace handcrafted HTML icons with new +adp:icon adp tag (17acc438, 5a7ce6b6)
          • Replace rp_form_put with plain ns_set idioms +(d7deda66)
          • +
          +
        • +Miscellaneous
            +
          • Cleanup and formatting changes (various +commits)
          • Increase test suite of functionalities and +cover 100% of public api (various commits)
          • +
          +
        • +
        +
        +
        +

        +Changes in package +"file-storage"

        +
        +Bug +Fixes
          +
        • Make fs::get_file_package_id more robust to cases where +the package_id is not set on the object itself (bbbbf93b)
        • Fixes for Oracle compatibility (9a5b9cf4, +0d4331cb, de75d648)
        • Fix regression when the files list is rendered +in list +format (d0eecbe4)
        • +
        +
        +
        +Reforms
          +
        • Make oacs-dav an optional, uninstallable +dependency (c8e3b5f8)
        • Make Service Contract implementation private +and use the abstract api instead (81ef9be7, 6eee7dbd, 846b226b, +f56b331a)
        • +
        +
        +
        +Improvements
          +
        • +Performance +Improvements
          • (Postgres only) Improve performances when +fetching folder files using recursive permission api +(02f64379)
          +
        • +Security +Improvements
          • Improve server and client-side input +validation (various commits)
          +
        • +Code +Refactoring
            +
          • Reduce divergency between Oracle and Postgres +codebase (55e70c4f, 2cf7bbf5)
          • Replace deprecated template::util::tcl_to_sql_list with NaviServer +own ns_dbquotelist (8b1a62d0)
          • Replace deprecated twt::user::create and twt::user::delete with their acs::test::user:: +counterpart (cbc632d0)
          • Cleanup obsolete error catching +(d99eccfb)
          • Replace handcrafted HTML icons with new +adp:icon adp tag (602c473d, 651ab668, 53b1248d)
          • Replace ad_tmpnam +with ad_opentmpfile and ad_mktmpdir, safer from race conditions (576d51a1, +8a9ac2b9)
          • +
          +
        • +Miscellaneous
            +
          • Cleanup and formatting (various commits)
          • Improve test suite and cover 100% of public +api (various commits)
          • +
          +
        • +
        +
        +
        +Deprecations
          +
        • +fs::add_created_version -> behavior specific to +this proc was to fs::add_version, +largely similar (815cbaae)
        • +fs::torrent::get_hashsum -> superseded by +NaviServer ns_md command +(aaf2751d)
        • +fs::item_editable_p, fs::item_editable_info -> Unused, unclear +usefulness (86cd3917)
        • +fs::get_archive_extension -> trivial wrapper +over the parameter api (aa63e153)
        • +fs::get_folder_contents -> Not used in the +codebase, same result can be achieved with other api +(72e444b8)
        • +
        +
        +
        +

        +Changes in package +"forums"

        +
        +Bug +Fixes
          +
        • Fix broken message key (74cadd4f)
        • Fixes for Oracle compatibility (f5db030e)
        • Rely less on values provided by the connection +(f85185af)
        • +
        +
        +
        +Reforms
          +
        • Adapt template::element calls after replacing +template::util::get_opts +(16b22e9e)
        • Mark service contract implementations as +private (bb6e3b3b)
        • Use UTF-8 emojis instead of actual images to +render supported smileys in forum posts (335f1ede)
        • +
        +
        +
        +Improvements
          +
        • +Performance +Improvements
            +
          • Avoid transaction when unnecessary +(aeb4e876)
          • Use cached api when detecting if attachments +are supported (83b9a2e8)
          • +
          +
        • +Security +Improvements
            +
          • Improve server response in error situations +(b2e833ab)
          • Harden page contract validation (c92794b8, +22c992f2, 655eea7b, 619b2580, c403e313, 189442f8, 0a4c5d1d)
          • Increase permission checking (6ddf512d)
          • +
          +
        • +Code +Refactoring
            +
          • Pass properties in adp consistently with +\@….;literal\@ best practice (dc2b6f8f, 44d3483e)
          • Replace deprecated template::util::is_true with inline string idiom +(88c779b5)
          • Replace handcrafted HTML icons with new +adp:icon adp tag (1b6adbcb, 0cf9dfe4)
          • +
          +
        • +Miscellaneous
            +
          • Cleanup and formatting changes (various +commits)
          • Increase test suite of functionalities and +cover 100% of public api (various commits)
          • +
          +
        • +
        +
        +
        +Deprecations
          +
        • +forum::new_questions_allowed_p -> Trivial +shotrhand to forum::get (5e7c3e01)
        • +forum::new_questions_allow and forum::new_questions_deny -> Trivial shorthands +to forum::edit
        • +forum::message::get_attachments -> Unused and +repleaceable by other API
        • +
        +
        +
        +

        +Changes in package +"general-comments"

        +
        +Bug +Fixes
        • Fixes for Oracle compatibility (e6fdab8b)
        +
        +
        +Reforms
        • Reimplement add/edit UI to use ad_form and +reduce duplication (0842ac32)
        +
        +
        +Improvements
          +
        • +Security +Improvements
          • Harden page contract validation (a17a883b, +438b62a5, 150c40c4, c08961bd, 993e67b1, 026075fc, b041c11b, +b6e063dc, dc08e85c, c34e943b)
          +
        • +Code +Refactoring
            +
          • Replace deprecated export_ns_set_vars with alternative idioms +(4892cc8d)
          • Replace deprecated ad_convert_to_html with ad_html_text_convert (e48e5624)
          • +
          +
        • +
        +
        +
        +

        +Changes in package +"proctoring-support"

        +
        +New Features
          +
        • +Support for mock +exams (commit 114d489e): introduce parameter +record_p in the main proctoring include allowing to turn off +artifacts collection. Useful FOR mock exams.
        • +Artifacts data +model (commit 9acb6bc8, f9206d9e): proctoring +artifacts are now stored in actual database tables and not only on +the filesystem.
        • +Test +pages (commit 30ea5f4b): the default proctoring +installation provides a fully-functional test environment of the +admin and regular user functionalities.
        • +Push updates for +new artifacts (commit 337d8cb6): the proctoring +display UI now uses websockets to receive push updates from the +server when new artifacts are available.
        • +Artifacts review +UI (commit 99cdda4a and various others): the +proctoring display UI now enables admin users to review proctoring +artifacts via comments or flagging.
        • +Red +border (commit d20cb434): allow one to display an +additional border around the proctored window. Useful to increase +the visibility of the proctored session in a classroom.
        • +
        +
        +
        +Reforms
          +
        • Proctoring enforcing: captive-portal the +proctoring session using a callback mechanism, rather than via +includes in the master template (commit 9acb6bc8).
        • Stop the proctoring session from the client +side when no artifacts are sent for too long (commit +0b87b9e0).
        • +
        +
        +
        +Bug +Fixes
          +
        • Be more robust in case of client-side error +conditions (commit 64d4dde9, 2c7ff02a, 7dc4239a)
        • Use PiP to circumvent browser powersaving that +would shut down MediaStreams when a browser is out of focus. +(commit 0b87b9e0, c0d97c91)
        • Relax enforcing of duplicated images for +proctored desktops (commit c72ddbb3)
        • +
        +
        +
        +Improvements
          +
        • +Code +Refactoring
            +
          • Replace deprecated api (various commits)
          • Modernize javascript idioms (various +commits)
          • Maintain an adequate look and feel using both +Bootstrap5 and Bootstrap3 (70a0f52c, f07dfc06, e913ee2b, 54d4f3cc +and others)
          • Drop custom implementation of lazy loading for the +proctoring display UI and rely on modern native browser features +instead (commit 90d2404c)
          • +
          +
        • +Usability
          • Improve usability of the proctoring display UI +on mobile and when using a keyboard (various commits)
          +
        • +Miscellaneous
            +
          • Improve integration with master template +(9acb6bc8, 44729649)
          • Streamline idioms (various commits)
          • Improved documentation
          • Increase test suite of functionalities and +cover 100% of public api (various commits)
          • Extend package localization. Currently +English, German, Italian and Spanish are supported.
          • +
          +
        • +
        +
        +
        +

        +Changes in package +"xotcl-core"

        +
        +New Features
          +
        • Added value checker signed (commit 1ce581a)
        • Added value checker oneof (commits 58bc938, 2dbadad, 65575bf, +58bc938).
        • Added value checker cr_item_of_package (commit 6fc46f3)
        • Provided consistent sorting for Database and +Tcl sorts (commit 6effe16)
        • +
        +
        +
        +Bug +Fixes
          +
        • Avoiding double quoting (commit 08386db).
        • Fixed potential memory leaks +
            +
          • Free explicitly answer ns_set in database sets method (commit +158a831)
          • Free ns_set +storage more eager (when e.g. large queries are used in longer +loops) (commit 3d6b05a)
          • +
          +
        • Compatibility Fixes for Oracle 19c (commit +de4a9a5, 88f8521, 1408e2b)
        • +
        +
        +
        +Improvements
          +
        • Security improvements: +
            +
          • Support for form_parameter specs with value checkers added +(commit 64bb847).
          • harden page contracts (commit b0c282d)
          • +
          +
        • Performance improvements: +
            +
          • Improved prepared-statement handling (commit +fac52ce)
          • Various other changes such as +e.g. d22121d
          • +
          +
        • Unified package parameter handing between xo* +and oacs-core (commit 66ee181)
        • Reduced verbosity of logging for streamlined +output (commit 0553811).
        • Stop sending messages to other (potentially +stopped) thread to avoid log messages (commit 0aa8c98).
        • +
        +
        +
        +

        +Changes in package +"xowiki"

        +
        +New Features
          +
        • GUI improvements +
            +
          • New abstraction xowiki::CSS to provide +portability between different frameworks and version of frameworks +(commit 99e3331c)
          • Added xowiki::bootstrap::card for increased +configurability (commits 97685004, 4e09efa9, 136edcc5).
          • Use adp:icon for better cross framework +compatibility (commits 562e9e48, 19407b34, 71606059)
          • Support for Bootstrap5 (commits 97685004, +ddae6214, 701612b7, a073060e, de6f0f48, 694c61b5, 48efaa9e, +57a7e91a, b71aacc0, 07be172b and several more)
          • Added native CSS classes for Tree renderer and +made TreeRenderer more configurable, reduce YUI (commit +83eafdcf).
          • Beautify display of CSS tree renderer for +deeper trees (commit ab624faa).
          • +
          +
        • Chat improvements +
            +
          • Reduce server-side guessing of browser +capabilities and minimize mode-specific JavaScript code (commit +8d98e9bf).
          • Support for anonymous users in chat class, +allowing mixed participation of authenticated and non-authenticated +users (commit d929ec45).
          • +
          +
        • Drag and Drop improvements +
            +
          • Support for drag & drop for reordering +items for mobile devices (commit 4489907b).
          • Extended functionality of the DropZone widget +(commit d65bd411).
          • +
          +
        • Added support for archiving of items (commit +4d17aa0e).
        • +
        +
        +
        +Reforms
        • Generalized handling of error pages in +disconnected stage (commit b3b677d4).
        +
        +
        +Configuration Changes
          +
        • Update CDN sources where necessary (commit +d4d0d85e).
        • Updates of external libraries and CDN +providers (commits d4d0d85e, f71db88b, 2986f329, f22f9b0b, +e3b9f244, c63f61c9)
        • Improved Parameterization *Ability to +parameterize www-delete and +www-toggle-publish-status with +return_url for workflow-specific +behavior (commit abba6cd1). +
            +
          • New package parameter: PackageInitParameter for instance-specific package +behavior (commit cc5b9959).
          • Added support for passing parameter specs of +the form parameter_name:value_constraint to xowiki::Package.get_parameter (commit +9df95cb3).
          • +
          +
        • +
        +
        +
        +Bug +Fixes:
          +
        • Test reproducing a bug in acs::test::xpath::get_form_values proc (commit +f495cac3).
        • Fixed test case returned violation on plain +instance (commit 78ec506d).
        • Fixed xowiki create_form_with_form_instance automated test +(commit a9a37dcc).
        • Handle more gracefully the case of missing +files on the filesystem (commit 72c1aeeb).
        • +
        +
        +
        +Improvements:
          +
        • Improved autosave support (commit +b373091c).
        • Added support to check the file types of +uploaded content (commit 80756c4b).
        • Improved portability +
            +
          • Added missing Oracle support for Oracle 19c +(commit 777eadbc).
          • Fix for Oracle 19c issues (commit +777eadbc).
          • +
          +
        • Improved error handling +
            +
          • Improved handling of pages with parent_id == 0 (commit 7637ff52).
          • Improved error message clarity and handling +(multiple commits).
          • Improved warning message (commit +80c69179).
          • Various small improvements in handling form +pages and error messages (commit 1c11ce20).
          • +
          +
        • Various API improvements: +
          • Updated interface for Page.create_form_page_instance (commit +c0ee21d6).
          +
        • Security improvements: +
            +
          • Enhanced form and query variable validation +(commit d405042d).
          • Improved safety of SQL queries (commit +be15be72).
          • +
          +
        • Code Maintenance: +
            +
          • Cleanup and modernization of code, removal of +obsolete and commented code (multiple commits).
          • Extended regression test (commit +8daa654b).
          • Improved comments (commit 9e9a99f5).
          • Improved documentation and cleanup (commit +27609be3).
          • +
          +
        • +
        +
        +
        +Deprecations:
          +
        • Cleanup of deprecated API references and +methods (commit b0a9b875, commit fc1e48d1, commit 2c490318).
        • Logging of deprecated usages unified under +ad_log_deprecated (commit +56d4b9d5).
        • Removal of features and scripts no longer in +use (commit 726cc0dd, commit c8100365).
        • Added \@see to deprecated proc (commit +bb2fa23a).
        • Got rid of legacy message key menu-Clipboard-Copy (commit ba901036).
        • +
        +
        +
        +

        +Changes in package +"xowf"

        +
        +New Features
        • Improved Support E-Learning applications +(mostly inclass exam) +
            +
          • Support for restricting access to exams based +on IP addresses (7fc8473).
          • Drag and Drop interface for feedback files +(fd68c22).
          • Support for pool questions in the test-item +family (No specific commit hash related to this feature was found +in the provided content).
          • Improved support for viewing and downloading +exam results (250d5a4).
          • Added Support for viewing/altering all +configuration options for inclass exams via modal dialogs +(39d5063).
          • Added Parameter to allow/disallow page +translation and spell checker for exams (commits 97e383e, +20a2d49).
          • +
          +
        +
        +
        +Configuration Changes
        • Turn off production mode by default +(363c839).
        +
        +
        +Bug +Fixes
          +
        • Fixed achieved points in exam statistics per +question (f05631f).
        • Fix for potential loss of statistics for +auto-graded exams (fc03d5f).
        • +
        +
        +
        +Improvements
          +
        • Improved Maintainability: Added Site-wide +admin pages for xowf (cbb3bc8).
        • Improved Performance: Added support for shared +workflow definitions (2628b6f).
        • Improved GUI: +
            +
          • Improved support for Bootstrap5 +(e.g. commits 8623ebd and a5e1f6c).
          • Enhanced usability and styling for inclass +exams and workflows (3d33b2a).
          • +
          +
        • +
        +
        +
        +

        +Changes in package +"xotcl-request-monitor"

        +
        +New Features
          +
        • Ability to order by time values in long-calls +listing (Commit 031ee35).
        • Support for ordering long-calls by start time +or by end time in long-calls listing (Commit 7c9ffe9).
        • +
        +
        +
        +Configuration Changes
        • Added configurability to watchdog with +parameters like -maxWaiting and -maxRunning (Commit +60ba4e3).
        +
        +
        +Improvements
        • Security Improvements +
            +
          • Protect query-parameters against exceptions +with empty values (Commit 176a32b).
          • Added safety measures for potential DOS +attacks and improved request blocking (Commit ef39b79).
          • Improved strictness of tests (Commit +ceb4a88).
          • Improved description of package parameters +(Commit ff8c44d)
          • Enhanced the initial population of +request-monitor counters for robustness (Commit 622d8f2).
          • Switch from xo::db::sql to acs::dc interface (Commit a2d4688).
          • +
          +
        +
        +
        +

        Release 5.10.0

          @@ -175,14 +1192,12 @@
        • The registered URN can be used like classical URL after registration.

          Example consumer:

          -   template::head::add_javascript -src urn:ad:js:jquery
          -
          + template::head::add_javascript -src urn:ad:js:jquery
        • Declare composite files: Provide an interface to define that a .js file or a .css file contains multiple other .js/.css files in order to reduce the number of requests.

          -   template::head::includes -container urn:js::style.js -parts {urn:ad:js:jquery ...}
          -
          + template::head::includes -container urn:js::style.js -parts {urn:ad:js:jquery ...}
      • Improved API browser: Visualization for code dependencies (which @@ -476,8 +1491,8 @@

      • New Packages:

        @@ -914,13 +1928,12 @@

      Altogether, OpenACS 5.9.1 differs from OpenACS 5.9.1 by the following statistics

              3548 files changed, 113292 insertions(+), 90507 deletions(-)
      -    
      -

      contributed by 5 committers (Michael Aram, Gustaf Neumann, +

      contributed by 5 committers (Michael Aram, Gustaf Neumann, Antonio Pisano, Hector Romojaro, Thomas Renner) and 8 patch/bugfix -providers (Frank Bergmann, Günter Ernst, Brian -Fenton, Felix Mödritscher, Marcus Moser, Franz Penz, -Stefan Sobernig, Michael Steigman). All packages of the release -were tested with PostgreSQL 9.6.* and Tcl 8.5.*.

      For more details, consult the raw ChangeLog.

      +providers (Frank Bergmann, Günter Ernst, Brian Fenton, Felix +Mödritscher, Marcus Moser, Franz Penz, Stefan Sobernig, Michael +Steigman). All packages of the release were tested with PostgreSQL +9.6.* and Tcl 8.5.*.

      For more details, consult the raw ChangeLog.

      Release 5.9.0

        @@ -1018,13 +2031,12 @@

      Altogether, OpenACS 5.9.0 differs from OpenACS 5.8.1 by the following statistics

             3658 files changed, 120800 insertions(+), 97617 deletions(-)
      -    
      -

      contributed by 4 committers (Michael Aram, Victor Guerra, Gustaf +

      contributed by 4 committers (Michael Aram, Victor Guerra, Gustaf Neumann, Antonio Pisano) and patch/bugfix providers (Frank -Bergmann, Andrew Helsley, Felix Mödritscher, Markus -Moser, Franz Penz, Thomas Renner). These are significantly more -changes as the differences in the last releases. All packages of -the release were tested with PostgreSQL 9.4.* and Tcl 8.5.*.

      For more details, consult the raw ChangeLog.

      +Bergmann, Andrew Helsley, Felix Mödritscher, Markus Moser, Franz +Penz, Thomas Renner). These are significantly more changes as the +differences in the last releases. All packages of the release were +tested with PostgreSQL 9.4.* and Tcl 8.5.*.

      For more details, consult the raw ChangeLog.

      Release 5.8.1

        @@ -1261,11 +2273,10 @@ contains work done on the translation server http://translate.openacs.org through 7 Nov 2003.

        Please report bugs using our Bug Tracker at the OpenACS website.

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

        After installation, the full documentation set can be found by +for the section called “a Unix-like +system”. Note that the Windows documentation is not current for +OpenACS 5.9.0, but an alternative is to use John Sequeira's +Oasis VM project.

        After installation, the full documentation set can be found by visiting http://yourserver/doc.

        New features in this release:

        • Internationalization support. A message catalog to store translated text, localization of dates, number formatting, timezone Index: openacs-4/packages/acs-core-docs/www/release-notes.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/release-notes.html,v diff -u -r1.61.2.8 -r1.61.2.9 --- openacs-4/packages/acs-core-docs/www/release-notes.html 1 Aug 2024 08:03:41 -0000 1.61.2.8 +++ openacs-4/packages/acs-core-docs/www/release-notes.html 2 Sep 2024 09:40:23 -0000 1.61.2.9 @@ -1,42 +1,1684 @@ -OpenACS Release Notes

          OpenACS Release Notes

          Release 5.10.1

          • - The release of OpenACS 5.10.1 contains the 97 packages of the oacs-5-10 - branch. These packages include the OpenACS core packages, the major - application packages (e.g. most the ones used on OpenACS.org), and - DotLRN 2.10.1. -

          • Improved templating -

            • Client-side double click prevention

            • Support for generic icon names, which can be mapped differently depending on the installed packages and themes: The generic names are supported via <adp:icon name="NAME" title=....>. By using this feature, one can use font-based icons (like e.g. glyphicons of Bootstrap5, bootstrap-icons, fa-icons, ...) instead of the old-style .gif and .png images. This makes the appearance more uniform, has better resizing behavior, and works more efficiently (fewer requests for embedded resources). Most of the occurrences of the old-style images in standard core and non-core packages in oacs-5-10 are already replaced.

            • Support for listing registered URNs

            -

          • Security improvements -

            • Stronger password hashes (scram-sha-256 hash in addition to the classical salted-sha1)

            • Added optional CSP rules based on MIME types. This is important for user-contributed content. When users upload e.g. SVG-files to the file storage, and the content is served from there, it poses a potential security hole. One can now define an additional parameter called StaticCSP in the section ns/server/$server/acs of the OpenACS configuration file to deactivate execution of script files from static content.

              -                                ns_param StaticCSP {
              -                                image/svg+xml "script-src 'none'"
              -                                }
              -                    
            • Cookie-Namespace: When multiple OpenACS instances are served from the same domain name, the same cookies (e.g. ad_session_id, ad_login, ...) are set to all servers. For sensible cases, a cookie-namespace can be used, which can be used as a replacement of the traditional ad_ prefix. This can be as well set in the section ns/server/$server/acs of the OpenACS configuration file:

              -                                # Provide optionally a different cookie namespace
              -                                # (used for prefixing OpenACS cookies)
              -                                ns_param CookieNamespace "ad_"
              -                    

            -

          • Further reduce divergence between Oracle and Postgres SQL. Target version of Oracle could be 12.*, as Extended support ends in 2022 (see https://www.oracle.com/us/support/library/lifetime-support-technology-069183.pdf) -

            • limit / rownum -> fetch first

            • use Postgres schemas for stored procedures so that they can be invoked with the same Oracle idiom

            -

          • Deprecated commands -

            • acs_message_id contract filter

            • acs_privacy::*

            • acs_tcl_vars_list_to_ns_set

            • acs_tcl_vars_to_ns_set

            • ad_apply

            • ad_approval_system_inuse_p

            • ad_dateentrywidget

            • ad_db_select_widget

            • ad_decorate_top

            • ad_ns_set_to_tcl_vars

            • ad_package_admin_home

            • ad_parameter_all_values_as_list

            • ad_user_class_description

            • apm_file_type_keys

            • application_group::child_application_groups

            • attachments::root_folder_map_p

            • bulk_mail::parameter

            • bulk_mail::pretty_name

            • calendar_portlet_display::get_url_stub

            • calendar::adjust_date

            • calendar::assign_permissions

            • calendar::from_sql_datetime

            • calendar::item::assign_permission

            • calendar::make_datetime

            • content::revision::update_attribute_index

            • dotlrn_chat::add_portlet_helper

            • dt_widget_*

            • export_entire_form

            • export_entire_form_as_url_vars

            • export_ns_set_vars

            • f::* API that cannot be replaced by a drop-in alternative

            • forum::new_questions_allowed_p

            • forum::new_questions_allow

            • forum::new_questions_deny

            • fs::add_created_version

            • fs::get_archive_extension

            • fs::get_folder_contents

            • fs::item_editable_info

            • fs::torrent::get_hashsum

            • notification::get_delivery_method_id

            • notification::get_interval_id

            • oacs_util::vars_to_ns_set

            • template::adp_levels

            • template::form::export

            • template::util::array_to_vars

            • template::util::is_true

            • template::util::list_to_array

            • template::util::list_opts

            • template::util::nvl

            • template::util::tcl_to_sql_list

            • template::util::set_to_list

            • template::util::set_to_vars

            • template::util::vars_to_array

            • twt::server_url

            • twt::user::create

            • twt::user::delete

            • util_AnsiDatetoPrettyDate

            • util_commify_number

            • util_get_current_url

            • util_list_to_ns_set

            • util_ns_set_to_list

            • util_report_successful_library_load

            • util_report_library_entry

            • util::string_check_urlsafe

            • Color widget API

            • ...

            • New proc ad_log_deprecated: unified interface for logging deprecated usages The existing code used a larger variety of different messages to denote invocations of deprecated procs and other artifacts. ad_log_deprecated provides a unified interface, and provides a usage hint what to use instead based on the API-doc definitions in the log-file.

            • Move deprecated code into separate files

            • Give people the chance to use OpenACS with WithDeprecatedCode set to 0. When OpenACS is configured to omit loading of long deprecated code (WithDeprecatedCode set to 0) files like deprecated-procs.tcl are not loaded. Therefore, these files should only contain code, which was deprecated at LEAST ONE RELEASE EARLIER, such that site admins have one release time to fix calls to deprecated code. This is especially important for public procs.

            -

          • General cleanup/maintenance -

            • Modernization of Tcl idioms.

            • Compliance of files, proc names, ... to the naming conventions.

            • White space cleanup, indentation changes.

            • Improvement of public API documentation

            • Adjustment of proc protection levels (public, private)

            • Adjustment of log severity

            • Cleanup of obsolete files

            • Replacement of handcrafted forms by ad_form

            • Typo fixing

            • Editor hints

            • Replacement of deprecated calls

            • Addition of missing contracts

            • ...

            -

          • New Packages: -

            • openacs-bootstrap5: Bootstrap 5 theme for OpenACS

            • bootstrap-icons: Free, high-quality, open-source icon library with over 1,600 icons. Include them anyway you like—SVGs, SVG sprite, or web fonts. Use them with or without Bootstrap in any project

            • fa-icons: Free, high-quality, open-source icon library with over 2,000 free icons. As of 2020, Font Awesome was used by 38% of sites that use third-party font scripts, placing Font Awesome in second place after Google Fonts

            • highcharts: The Highcharts library is a JavaScript and TypeScript package for producing data visualizations (line/bar/pie charts etc.). The OpenACS package offers support to load this library either via CDN or from a local installation (via acs-admin and global administration UI)

            -

          • Migrate to bootstrap 5. Bootstrap 3 reached EOL in 2019, Bootstrap 4 had EOL 2022. See https://github.com/twbs/release

          • Potential incompatibility with OpenACS 5.10.0: "permission::permission_p" returns Boolean values as "t" and "f" and not "1" and "0". Avoid literal comparisons of the result and use boolean tests available in Tcl/OpenACS.

          • Support for fresh installations on Oracle 19c.

          • Require NaviServer (i.e. drop AOLserver support). AOLserver cannot be compiled with the required modules with recent Tcl versions. Trying to backport NaviServer compatibility functions seems to be an overkill for the OpenACS project.

          • Require Tcl 8.6, XOTcl 2.1, PostgreSQL 11 (PostgreSQL 10 EOL: November 2022), tdom 0.9

          Altogether, OpenACS 5.10.1 differs from OpenACS 5.10.0 by the +OpenACS Release Notes

          OpenACS Release Notes

          Release 5.10.1

          + The release of OpenACS 5.10.1 contains the 94 packages of the + oacs-5-10 branch. These packages include the OpenACS core packages, + the major application packages (e.g. most the ones used on + OpenACS.org), and DotLRN 2.10.1. +

          Altogether, OpenACS 5.10.1 differs from OpenACS 5.10.0 by the following statistics

          -            2886 files changed, 197060 insertions(+), 182613 deletions(-)
          -        

          - contributed by 6 committers (Antonio Pisano, Gustaf Neumann, Günter Ernst, Héctor Romojaro, Raúl Rodríguez, Thomas Renner) and additional 7 patch/bugfix providers (Felix Mödritscher, Frank Bergmann, Franz Penz, Markus Moser, Marty Israelsen, Monika Andergassen, Sebastian Scheder). + 3027 files changed, 428212 insertions(+), 219697 deletions(-)

          - All packages of - the release were tested with PostgreSQL 13.* and Tcl 8.6.*. + contributed by 8 committers (Antonio Pisano, + Gustaf Neumann, + Günter Ernst, + Héctor Romojaro, + Michael Aram, + Raúl Rodríguez, + Sebastian Scheder, and + Thomas Renner) + and additional 8 patch/bugfix providers (Felix Mödritscher, + Frank Bergmann, + Franz Penz, + Josue Cardona, + Keith Paskett, + Markus Moser, + Marty Israelsen, and + Monika Andergassen) - all sorted by the first names.

          - For more details, consult the + In terms of changes, this is the largest amount of changes at + least since the release of OpenACS 5.9.0. + Below is a summary of the most important changes, often + together with the commit references in Git. The summary was + made on subjective criteria, to get an overview of the + changes. +

          + For all details, consult the raw ChangeLog. -

          Release 5.10.0

          • +

            Changes in the acs-core packages between OpenACS 5.10.0 and + 5.10.1

            New Features

            • + Security and Privacy Posture + Overview: As expressed as a wish from OpenACS users + at the last OpenACS conference, a Security and Privacy + Posture Overview was added that offers a quick + overview of the state of the system and eases access to the + parameters scattered over different packages in the system. + The page offers: +

              • + Quick overview +
              • + Check of security and privacy relevant package parameters +
              • + Permission and accessibility check of mounted packages +
              • + Response header check +
              • + External library check (CDN vs local usage, vulnerable or + outdated libraries) The page is linked from the + site-wide-admin page (/acs-admin). +

              +

            • + Stronger Password Hashes for + OpenACS (commit fe2bdb547, 8eee6a932, 52d2c997e, + 62d969c85): Introduction of new password hash functions + alongside the pre-existing salted-sha1. The new + algorithms are named scram-sha-256, + scrypt-16384-8-1, + argon2-argon2-12288-3-1, + argon2-rfc9106-high-mem, and + argon2-rfc9106-low-mem. These algorithms can be + specified via the kernel package parameter + PasswordHashAlgorithm. The algorithms require a + recent version of NaviServer and a recent version of OpenSSL, + which serves as a crypto library. This feature enhances + security against brute-force attacks on password hashes (when + db is compromised). Preferences of the password hash + algorithms can be set via kernel package parameter + PasswordHashAlgorithm, the first available + algorithm is taken from the preference list, hash re-coding + happens automatically at the next login. +

            • + Setting of CSP rules based on MIME + types (commit 6bc253f1e, commit 94b8513ae). This is + necessary to mitigate certain attacks on static SVG files + uploaded to, e.g., the content repository. For example, set + the following to the ns/server/$server/acs + section of your NaviServer configuration file: +

            +        ns_param StaticCSP {
            +            image/svg+xml "script-src 'none'"
            +        }
            +
            • + Support for generic icon + names Support for generic icon names, which can + be mapped differently depending on the installed packages + and themes. The support provides a mapping from a set of + generic names to the names provided by different libraries + sich as Glyph Icons, Bootstrap Icons, Font-Awsome. The + provided support can be inspected on the site-wide page of + acs-templating. +

              The generic names can be used via the special tag <adp:icon + name="NAME" title=....> in .adp-files. By + using this feature, one can use font-based icons (like + e.g. glyphicons of Bootstrap5, bootstrap-icons, fa-icons, + ...) instead of the old-style .gif and .png images. This + makes the appearance more uniform, has better resizing + behavior, and works more efficiently (fewer requests for + embedded resources). Most of the occurrences of the + old-style images in standard core and non-core packages in + oacs-5-10 are already replaced. (commit c129c89ec, + 996740672, e9cae22dc, c7705c68b, a85ea7301, 58ad43055, + 737da5514, a05813ec7, 110b2f5d6, 7011c8fd9, 286fd9e58, + 927d9d5ef) + +

            • + Better Automated Site + Configurability: Support for installing themes from + install.xml (commit 2f9761160). +

            • + Dynamic Cluster Nodes and Cluster + Infrastructure (commit 5738761db, 7cbc3e63c, + 1a7a7656c, 3faceddc4, 5fba13c0f, 7cbc3e63c, 3faceddc4, + 1a7a7656c): Added support for dynamically adding and removal + of nodes in an OpenACS cluster. In contrast to static cluster + nodes, the IP addresses of dynamic cluster nodes do not have + to be provided at startup time. The changes introduce new + admin pages and further configuration options. +

            • + Optional Caching Deactivation + (commit 75c3f2b25): It is possible to deactivate caching via + the ns_cache infrastructure when the + NaviServer configuration variable + cachingmode is set to + none. The change modifies + per_thread_cache to behave like a + per_connection_cache. This option is useful + for cluster configurations, when legacy components do not + handle cache coherency (e.g. via + acs::clusterwide) +

            • + Support for Cloud Identity + Providers (commit e506dee05, fd7af8d17, 06954d83b). + Additional Identity providers can be added as secondary + registries (e.g., MS Azure via oauth2), to support e.g. logins + via the classical register page and via a + cloud registry (requires package xooauth for full + functionality) +

            • + Client-side double click + prevention: This change makes it possible to + provide a double click prevention for HTML elements via the + CSS class prevent-double-click. The double + click prevention deactivates a button or an anchor element + after clicking for a short time (per default for 1s) and + ignores in this time window further clicks. The time window + can be specified via the data element oacs-timeout. (commit + 5f2edeec2a9a831, 916d365aa11f2d) +

            • + Cookie Namespaces (commit + ce1573ed8): Important, when multiple OpenACS instances are + served from the same domain name, but different cookies have + to be used. +

            Reforms

            • lc_time_tz_convert: Enforce ISO format for + dates and other changes (commit 9a5b5cd97). +
            • template::element validation reform to + improve validation on fields (commit 87919f923). +
            • + Provide timeouts for caching operations to improve liveliness + also when certain calls are hanging (commit 22cd530d4). +
            • + Form widget attributes reform consolidating logics for merging + tag attributes (commit 3a7fc6a8e). +
            • + Streamlined resource_info handling by adding versioning and + better management of external library dependencies. External + libraries can be used from CDN or downloaded, the versions are + checked for vulnerabilities, which are reported via posture + overview and package-specific site-wide admin pages. +

            Configuration Changes

            • + Set the (default) theme package on the subsite upon + installation (commit 0ff7101b3). +
            • + Improved clusterwide operations with new configuration + parameters (commit 5738761db). +
            • + New configuration options CSSToolkit and + IconSet for acs-subsite + (commit fc56a275b). +
            • + Support specification of allowed tags/attributes/protocols via + global package parameters (commit 657cef99a,fc46466e3). +
            • + Made ad_html_security_check configurable + (commit bc63ee424). +
            • + Support for memory units as default cache sizes (commit + 68c853abd). +

            Bug Fixes

            • + Fixed missing + update_content-lob.set_content (commit + a3effac23, 4ce8e9fae). +
            • + Fixed incorrect HTTP status code on result page (commit + 636226cb2). +
            • + Fixed signature of service contract implementation (commit + b9f0c541c). +
            • + Fixed implementation of ad_acs_admin_node + (commit 34a823c51). +
            • + Fixed reference in doc (commit e596b46f8). +
            • + Fixed ad_approval_system_inuse_p + implementation (commit bd8afdeeb). +
            • + Fixed self-inflicted bug in form variable specification + (commit 79e6df943). +
            • + Fixed a bug in db_multirow_group_last_row_p + (commit aafd1db58). +
            • + Fixed issue with ns_parseurl in + util::split_location (commit aee571ad1). +
            • + Various fixes for Oracle 19c compatibility issues (numerous + commits). +
            • + Fixed broken function_args definition and other issues (commit + 83e45f9b5, d166927d2, etc.). +
            • + Fixed a bug in db_driverkey when OpenACS + connects to multiple databases, involving the removal of + per-thread caching (commit 18e656b00). +
            • + Fixed and generalized version_dir handling + for download of external resources (commit 8e9a6a5c8). +
            • + Fixed selector for click all list callback in core.js (commit + 00b9db614). +
            • + Fixed a bug in db_foreach with + -column_set flag (commit 95e8970d7). +
            • + Handle null dates in core.js (commit 1dd928238). +
            • + Fixed issues in SQL function calling to avoid incorrect + function selection due to typecasting issues (commit + bc33e9938). +
            • + Corrected problems with session handling in cluster mode and + fixed cache coherency issues in clustered environments (commit + c0a1cf7b9). +

            Improvements

            • Security Improvements
              • + In addition to the new security features mentioned + above, the new release was tested several times by + different vulnerability scanners, which triggered a + large number of changes as for example strengthening + the input tests in page contracts, consequent use of + bind variables and permission checks. +
              • + New API ad_mktmpdir and + ad_opentmpfile (commit a10b55d3d). +
              • + Added support for elliptic curve certificates (ecdsa) when + the lets-encrypt module from NaviServer is used (commit + 2c40f1d9d). +
              • + Hardened page contracts, added many constraints to address + potential SQI and XQL etc. attacks (many commits, + e.g. 8eee6a932, d4846d106) +
              • + Warn warning when parametersecret is + not set (commit 0ec8f0183). +
              • + Safe creation of temporary directories (commit d25ff6593). +
              • + Upgraded internal use of JavaScript and HTML standards to + improve security and performance (commit e68a73c92). +
            • Performance Improvements
              • + New partial index for a common query in acs-tcl (commit + aaaf86adb). +
              • + Implemented ad_html_security_check + based on ns_parsehtml (commit + 387f3de3e). +
              • + Added support for NaviServer built-in + ns_trim -prefix (commit 500099e0). +
              • + Change in storing and displaying util user messages + (commit bb0702bf3). +
            • Additional Filters for Page + Contracts
              • + Introduced ad_page_contract filter + object type (commit 2f9d127a0). +
              • + Introduced a new clock page contract + filter (commit 5544faffc). +
              • + Introduced new tmpfile page contract + filter (commit 1a179e9bc). +
              • + Allow more characters in argument specs (commit + f952d9d5e). +
            • Code Refactoring
              • + Added a new procedure ad_log_deprecated + for unified logging of deprecated usages (commit + 0e03b3358). +
              • + Improved configurability of LockfreeCache (commit + 9bc412576). +
              • + Reform of site-nodes-procs for improved clarity and ease + of maintenance, esp. Oracle (commit 3fe93032e). +
              • + Update of SQL function calls via API, made it callable + during initial bootstrap (commit ad97aa747). +
              • + Modernization of idioms and cleanup of deprecated code + (e.g., commit a5c537515, e68a73c92, 1d1ff8c4e). +
              • + Improved documentation, localization updates, and typo + fixes (e.g., commit 5c23325a3, f3590415f, 7a97e0ea0). +
              • + Phased out outdated procedures and functions that were + superseded by more efficient and secure implementations + (e.g., commit 6272226b6). +
              • + Deprecated old APIs that no longer align with modern + security practices or performance standards (commit + cd0af7373). +
              • + Removed legacy support for certain outdated browser + features and replaced them with modern alternatives + (commit a1a7c22a7). +
              • + Further reduced divergence between Oracle and Postgres + SQL. Target version of Oracle could be 12.*, as Extended + support ends in 2022 (see +https://www.oracle.com/us/support/library/lifetime-support-technology-069183.pdf). + This change implies: +
                • + change limit ... rownum ... to standard + fetch first ...
                • + use Postgres schemas where available for stored + procedures so that they can be invoked with the same + Oracle idiom +
            • Miscellaneous
              • + Message keys for content repository (commit 2f89a971a). +
              • + Make util::join_location usable for UDP + and SMTP (commit 01b5c0d61). +
              • + Zero-dependency implementations of Modal and Tooltip using + CSS and JavaScript (commit db0f52664, 02bfffbb2). +
              • + Deprecation of specific functions and APIs in favor of + modern replacements (e.g., commit 4493f07b9, 6db041083, + 94c505b01). +
              • + Extended API: Introduced new API functions like + ad_unless_script_abort, + aa_silence_log_entries, and + util::json2dict to enhance error + handling and logging cleanliness (commit aeb027aeb, + f455d60c6, e9298cf02). +
              • + Expanded timezone data and improved internationalization + features, including better locale management and updated + localization data (commit 828ab0bd4, 47d478bcf). +
              • + Added Support for listing registered URNs (per package on + the site-wide admin page of a package, full set on the adm + page of acs-templating) +
              • + Added support for relative redirects (commit 867d9441e). +
            • Regression Test: +
              • + The regression test was substantially extended and in part + overworked +
              • + The test includes now checks for resource leaks (tDOM + documents and nodes, temporary objects, etc.) and leaves less + garbage in the /tmp directory +
              • + For the major packages (core and application packages), + the tests run without reporting errors. +
              • + For the tests of the majro packages, the system.log is now free of + error messages (e.g., when handling cases in the test that + are supposed to fail) +

            Version requirements

            • + Require NaviServer (i.e. drop AOLserver support). Rationale: + AOLserver cannot be compiled with the required modules with + recent Tcl versions. Trying to backport NaviServer + compatibility functions seems to be an overkill for the + OpenACS project. +
            • + Bootstrap 3 reached EOL in 2019, Bootstrap 4 had EOL 2022, so + we should migrate to Bootstrap 5 (details: + https://github.com/twbs/release) +
            • + Require Tcl 8.6.2, XOTcl 2.1, PostgreSQL 12 (PostgreSQL 11 + EOL: November 23), tdom 0.9 +
            • + Support for fresh installations on Oracle 19c (for details, + see: +oacs-5-10-on-oracle-19c) +

            Changes in OpenACS Application Packages

            New Packages in OpenACS 5.10.1

            • + bootstrap-icons +
            • + caldav +
            • + captcha +
            • + fa-icons +
            • + highcharts +
            • + openacs-bootstrap5-theme +
            • + For a description of all packages, see: + https://openacs.org/repository/5-10/ + +

            Changes in package "attachments"

            Improvements
            • Security Improvements
              • + Strengthen page contracts (3b9068ad) +
            • Code Refactoring
              • + Replace handcrafted HTML icons with new adp:icon adp tag + (f45e6406) +
              • + Replace deprecated + util_commify_number, with + lc_numeric (518e1b34) +
            • Miscellaneous
              • + Document public API (fd5b5e1c) +
              • + Improve test suite and cover 100% of public api + (3446f91c, c933a64e) +
            Deprecations
            • attachments::root_folder_map_p -> + duplicates functionalities of + attachments::root_folder_p (cc3177d1) +

            Changes in package "calendar"

            New Features
            • Inclusion of multiple + calendars (77f4db84): name calendar forms in a + way that multiple calendars can be embedded on the same page + (relevant in the context of .LRN portlets) +
            Bug Fixes
            • + Javascript fixes (b1d49bc1) +
            • + Fix retrieval of a calendar item when a connection context + is not available (772449b4, a049d806) +
            Improvements
            • Security Improvements
              • + Improve/harden input validation (many commits) +
              • + Don’t expose immutable values as hidden formfields + (03e3f2e7, 31955520) +
            • Code Refactoring
              • + Replace deprecated API (8e6d01a0, 9cfbf8a1) +
              • + Streamline idioms (50c5c2d3) +
              • + Replace handcrafted HTML icons with new adp:icon adp tag + (054c46cc, 8bb2cd6f) +
              • + Replace custom calendar widget implementation with + native HTML5 form fields and streamline input validation + (6bd30d58, f5118fb4) +
            • Miscellaneous
              • + + Improve spelling in catalog files (258edac5) + +
              • + + Pass properties to master template as literal according + to best practices (9598e88e) + +
              • + + Improve API documentation (d924a307) + +
              • + + Cleanup vestigial features/dead code (various commits) + +
              • + + Port of downstream localization (90dbfa96) + +
              • + + Various typos and formatting improvements + +
              • + + Increase test suite of functionalities and cover 100% of + public api (various commits) + +
            Deprecations
            • calendar::adjust_date -> inlined the + one occurrence (fbd97314) +
            • calendar::from_sql_datetime, + calendar::make_datetime -> not used + upstream, superseded by modern clock idioms and HTML5 + features (bccd1c3a, 7264a2fe) +
            • cal_outlook_gmt_sql -> last usage in + the codebase 2002 (1ee22f96) +
            • calendar::item::assign_permission. + calendar::assign_permissions -> + trivial wrappers over the permission api (a1ddaed5, + f174fd12) +

            Changes in package "captcha"

            Features
            • Bot protection for your + form implements template::widget::captcha. This + can be used in forms exposed to the public to hinder + automated bots. Based on the implementation at + https://fossil-scm.org/ + +
            • Scalable a new captcha is + generated fast, from scratch and on the fly + +
            • No external dependencies + this package does not require any external commands or + libraries + +

            Changes in package "categories"

            Reforms
            • + + Mark service contract implementations as private (efd3b8e5, + 886068d3) + +
            Improvements
            • Performance Improvements
              • + + Create indices on FK constraints (e935a857) + +
            • Security Improvements
              • + + Add include contracts where missing (40b5bdc3, 667d9cdf, + 5d3fb337) + +
              • + + Strengthen page contracts (1ad80ea6) + +
            • Code Refactoring
              • + + Replace deprecated + template::util::is_true with inline + string idiom (f2604994) + +
              • + + Replace handcrafted HTML icons with new adp:icon adp tag + (035bd73b) + +
              • + + Better qualify command invocation (a693a8be) + +
            • Miscellaneous
              • + + Cleanup and formatting changes (various commits) + +
              • + + Increase test suite of functionalities and reach 80.82% + coverage of public api (various commits) + +
              • + + Improved documentation of library file and public API + (8da391b1) + +

            Changes in package "chat"

            New Features
            • Anonymous chat + participants (3a73986c, 214684f3): use newly + introduced support for anonymous users built in xowiki to + support not logged-in users + +
            • Chat include (c2ab5967) : + Move the main chat rendering in an include to allow reuse in + other contexts + +
            Bug Fixes
            • + + Fix typo in datamodel code affecting new installations + (98d26cfa) + +
            • + + Improve/fix Oracle compatibility (d3e0d69b, cb2e52d0, + 04e229f2) + +
            • + + Allow for arbitrary arguments to be passed when extending + inherited methods (95ca0c0e) + +
            • + + Allow to persist chat messages also in the chat sweeper + (4bf7bd59) + +
            Improvements
            • Performance Improvements
              • + + (Postgres only) Improve performances when fetching the + available chat rooms using recursive permission api + (56d47b31, 0b2cff50) + +
            • Security Improvements
              • + + Improve SQL quoting (e2146673) + +
              • + + Harden page contracts and use new contract features from + the core (43955d16, 148be6f4, 7f6b5c92) + +
            • Code Refactoring
              • + + Replace :xo::clusterwide -> ::acs::clusterwide for + cluster-aware chaching (76fbfe1f) + +
              • + + Replace ::xo::db::sql -> ::acs::dc as tcl abstraction + for db stored procedures (76fbfe1f) + +
              • + + Replace deprecated api (928793ce, cb2e52d0) + +
              • + + Replace handcrafted HTML icons with new adp:icon adp tag + (054c46cc) + +
              • + + Reduce layers of redirection when accessing a chat room + (4f57e272) + +
            • Miscellaneous
              • + + Prefer message keys from core packages (943daaa3) + +
              • + + Cleanup vestigial features/dead code (23fe7d3a, + b8d5da6d, d7434cae) + +
              • + + Pass properties to master template as literal according + to best practices (98a2b1ec) + +
              • + + Extend test suite to 100% public API coverage (117c66e3, + 210e3f16, b2abc81c, fe60e3d1) + +
              • + + Improve configurability and styling of the chat + includelet (54bb236f, 289ddee6) + +
              • + + Streamline idioms (2b0bd209) + +
              • + + Replace legacy message keys (a465cf76) + +
              • + + Improve localization (0252ed50) + +

            Changes in package "dotlrn" and associated packages

            +

            Reforms
            • dotlrn: + +
              • + + Deactivate obsolete SQL function in creation script + (sql/postgresql/dotlrn-create.sql). This complements + commit 3a280c7e in acs-kernel (commit 1b845ba0). + +
              • + + Use dotlrn-bootstrap3-theme as default theme (commit + c6547eb8). + +
            • theme-zen: Adapt to + commit 3a280c7e (acs-kernel) and c6547eb8 (dotlrn) (commit + 6d50cb9b). + +
            Improvements
            • Performance Improvements
              • dotlrn: Prefer APIs + returning cached values before querying the DB using + site_node:: (commit 4d025e63) + +
              • dotlrn-fs: Prefer + APIs returning cached values before querying the DB + using site_node:: (39bcaf3f) + +
            • Security Improvements
              • dotlrn: Mitigating + potential XSS attacks using NaviServer own + ns_quotehtml (commit 4476e815) + +
            • Code Refactoring
              • dotlrn: + +
                • + + Replace deprecated + notification::get_interval_id + with + notification::interval::get_id_from_name + (commit 871dd502) + +
                • + + Replace deprecated + notification::get_delivery_method_id + with + notification::delivery::get_id + (commit a9760fc4) + +
                • + + Replace deprecated + template::util::is_true with + [string is true -strict $value] + (commit 38981891) + +
                • + + Replace deprecated + util_commify_number with + lc_numeric (commit 7c14688e) + +
                • + + Replace deprecated + twt::user::create and + twt::user::delete with the + respective acs::test::user:: + counterparts (commit dea8673e) + +
                • + + Cleanup usage of deprecated API + template::util::nvl (commit + 0775f434, 73b52fba) + +
                • + + Cleanup usage of deprecated API + acs_privacy:: (commit d31c3b6f, + 9ae5aa4a) + +
                • + + Replace deprecated + bulk_mail::parameter with + parameter::get (commit b10c5f26) + +
                • + + Replace deprecated + forum::new_questions_deny and + forum::new_questions_allow with + permission::grant (commit + 4880f884) + +
                • + + Replace custom calendar widget implementation with + native HTML5 fields (commit 113b1cb4) + +
              • dotlrn-bm: Replace + deprecated bulk_mail::pretty_name + with parameter::get (commit b6b7aec1) + +
              • dotlrn-calendar: + Reform handling of admin permissions (commit ce9e27d4, + 6a9ada80) + +
              • dotlrn-forums: + +
                • + + Replace deprecated + notification::get_interval_id + with + notification::interval::get_id_from_name + (commit d77b24b7) + +
                • + + Replace deprecated + notification::get_delivery_method_id + with + notification::delivery::get_id + (commit 075b8adc) + +
              • dotlrn-fs: Replace + Naviserver ns_mktemp with + ad_tmpnam (commit f5fd2c96) + +
              • dotlrn-homework: + +
                • + + Alter reference to db-error file in acs-subsite + (commit d47e5f2c) + +
                • + + Replace deprecated + util_commify_number with + lc_numeric (commit 990b0b0a) + +
                • + + Replace handcrafted HTML icons with adp:icon adp tag + (commit 3f1557c2) + +
              • dotlrn-news: + +
                • + + Replace deprecated + notification::get_interval_id + with + notification::interval::get_id_from_name + (commit 586cc6ae) + +
                • + + Replace deprecated + notification::get_delivery_method_id + with + notification::delivery::get_id + (28661484) + +
              • dotlrn-static: Fix + applet mount point (commit 233e0c6c) + +
              • new-portal: + +
                • + + Replace export_ns_set_vars with + export_vars (commit e8ab835d) + +
                • + + Prefer adp:icon adp tag over handcrafted HTML icons + (commit 7afadf3b) + +
            • Miscellaneous
              • All packages: + +
                • + + Cleanup and formatting (various commits) + +
                • + + Strengthen page contracts (various commits) + +
                • + Document public API, e.g., in new-portal, + dotlrn-dotlrn (e.g., commit 75656f6f, 05540825) +
                • + + Improve test coverage, e.g., in + dotlrn-portlet (e.g., commit + dcfe916b, 712e8793, 59ec97b0) + +

            Changes in package "faq"

            New Features
            • faq::new API (1fc77330): + an API to create an FAQ, also useful for testing + +
            Bug Fixes
            • + + Fixes for Oracle compatibility (3e5418a3) + +
            Reforms
            • + + Mark service contract implementations as private (987ef426) + +
            • + + Mark apm callbacks as private (6861af77) + +
            Improvements
            • Security Improvements
              • + + Harden page contract validation (a2904377, 87d05896, + a4c9fc52) + +
            • Code Refactoring
              • + + Replace deprecated twt::user::create + and twt::user::delete with their + acs::test::user:: counterpart (27286797) + +
              • + + Replace handcrafted HTML icons with new adp:icon adp tag + (17acc438, 5a7ce6b6) + +
              • + + Replace rp_form_put with plain ns_set + idioms (d7deda66) + +
            • Miscellaneous
              • + + Cleanup and formatting changes (various commits) + +
              • + + Increase test suite of functionalities and cover 100% of + public api (various commits) + +

            Changes in package "file-storage"

            Bug Fixes
            • + + Make fs::get_file_package_id more robust + to cases where the package_id is not set on the object + itself (bbbbf93b) + +
            • + + Fixes for Oracle compatibility (9a5b9cf4, 0d4331cb, + de75d648) + +
            • + + Fix regression when the files list is rendered in + list format (d0eecbe4) + +
            Reforms
            • + + Make oacs-dav an optional, uninstallable dependency + (c8e3b5f8) + +
            • + + Make Service Contract implementation private and use the + abstract api instead (81ef9be7, 6eee7dbd, 846b226b, + f56b331a) + +
            Improvements
            • Performance Improvements
              • + + (Postgres only) Improve performances when fetching + folder files using recursive permission api (02f64379) + +
            • Security Improvements
              • + + Improve server and client-side input validation (various + commits) + +
            • Code Refactoring
              • + + Reduce divergency between Oracle and Postgres codebase + (55e70c4f, 2cf7bbf5) + +
              • + + Replace deprecated + template::util::tcl_to_sql_list with + NaviServer own ns_dbquotelist + (8b1a62d0) + +
              • + + Replace deprecated twt::user::create + and twt::user::delete with their + acs::test::user:: counterpart (cbc632d0) + +
              • + + Cleanup obsolete error catching (d99eccfb) + +
              • + + Replace handcrafted HTML icons with new adp:icon adp tag + (602c473d, 651ab668, 53b1248d) + +
              • + + Replace ad_tmpnam with + ad_opentmpfile and + ad_mktmpdir, safer from race + conditions (576d51a1, 8a9ac2b9) + +
            • Miscellaneous
              • + + Cleanup and formatting (various commits) + +
              • + + Improve test suite and cover 100% of public api (various + commits) + +
            Deprecations
            • fs::add_created_version -> behavior + specific to this proc was to + fs::add_version, largely similar + (815cbaae) + +
            • fs::torrent::get_hashsum -> superseded + by NaviServer ns_md command (aaf2751d) + +
            • fs::item_editable_p, + fs::item_editable_info -> Unused, + unclear usefulness (86cd3917) + +
            • fs::get_archive_extension -> trivial + wrapper over the parameter api (aa63e153) + +
            • fs::get_folder_contents -> Not used in + the codebase, same result can be achieved with other api + (72e444b8) + +

            Changes in package "forums"

            Bug Fixes
            • + + Fix broken message key (74cadd4f) + +
            • + + Fixes for Oracle compatibility (f5db030e) + +
            • + + Rely less on values provided by the connection (f85185af) + +
            Reforms
            • + + Adapt template::element calls after replacing + template::util::get_opts (16b22e9e) + +
            • + + Mark service contract implementations as private (bb6e3b3b) + +
            • + + Use UTF-8 emojis instead of actual images to render + supported smileys in forum posts (335f1ede) + +
            Improvements
            • Performance Improvements
              • + + Avoid transaction when unnecessary (aeb4e876) + +
              • + + Use cached api when detecting if attachments are + supported (83b9a2e8) + +
            • Security Improvements
              • + + Improve server response in error situations (b2e833ab) + +
              • + + Harden page contract validation (c92794b8, 22c992f2, + 655eea7b, 619b2580, c403e313, 189442f8, 0a4c5d1d) + +
              • + + Increase permission checking (6ddf512d) + +
            • Code Refactoring
              • + + Pass properties in adp consistently with @….;literal@ + best practice (dc2b6f8f, 44d3483e) + +
              • + + Replace deprecated + template::util::is_true with inline + string idiom (88c779b5) + +
              • + + Replace handcrafted HTML icons with new adp:icon adp tag + (1b6adbcb, 0cf9dfe4) + +
            • Miscellaneous
              • + + Cleanup and formatting changes (various commits) + +
              • + + Increase test suite of functionalities and cover 100% of + public api (various commits) + +
            Deprecations
            • forum::new_questions_allowed_p -> + Trivial shotrhand to forum::get (5e7c3e01) + +
            • forum::new_questions_allow and + forum::new_questions_deny -> Trivial + shorthands to forum::edit + +
            • forum::message::get_attachments -> + Unused and repleaceable by other API + +

            Changes in package "general-comments"

            Bug Fixes
            • + + Fixes for Oracle compatibility (e6fdab8b) + +
            Reforms
            • + + Reimplement add/edit UI to use ad_form and reduce + duplication (0842ac32) + +
            Improvements
            • Security Improvements
              • + + Harden page contract validation (a17a883b, 438b62a5, + 150c40c4, c08961bd, 993e67b1, 026075fc, b041c11b, + b6e063dc, dc08e85c, c34e943b) + +
            • Code Refactoring
              • + + Replace deprecated export_ns_set_vars + with alternative idioms (4892cc8d) + +
              • + + Replace deprecated ad_convert_to_html + with ad_html_text_convert (e48e5624) + +

            Changes in package "proctoring-support"

            New Features
            • Support for mock exams + (commit 114d489e): introduce parameter record_p in the main + proctoring include allowing to turn off artifacts + collection. Useful FOR mock exams. + +
            • Artifacts data model + (commit 9acb6bc8, f9206d9e): proctoring artifacts are now + stored in actual database tables and not only on the + filesystem. + +
            • Test pages (commit + 30ea5f4b): the default proctoring installation provides a + fully-functional test environment of the admin and regular + user functionalities. + +
            • Push updates for new + artifacts (commit 337d8cb6): the proctoring + display UI now uses websockets to receive push updates from + the server when new artifacts are available. + +
            • Artifacts review UI + (commit 99cdda4a and various others): the proctoring display + UI now enables admin users to review proctoring artifacts + via comments or flagging. + +
            • Red border (commit + d20cb434): allow one to display an additional border around + the proctored window. Useful to increase the visibility of + the proctored session in a classroom. + +
            Reforms
            • + + Proctoring enforcing: captive-portal the proctoring session + using a callback mechanism, rather than via includes in the + master template (commit 9acb6bc8). + +
            • + + Stop the proctoring session from the client side when no + artifacts are sent for too long (commit 0b87b9e0). + +
            Bug Fixes
            • + + Be more robust in case of client-side error conditions + (commit 64d4dde9, 2c7ff02a, 7dc4239a) + +
            • + + Use PiP to circumvent browser powersaving that would shut + down MediaStreams when a browser is out of focus. (commit + 0b87b9e0, c0d97c91) + +
            • + + Relax enforcing of duplicated images for proctored desktops + (commit c72ddbb3) + +
            Improvements
            • Code Refactoring
              • + + Replace deprecated api (various commits) + +
              • + + Modernize javascript idioms (various commits) + +
              • + + Maintain an adequate look and feel using both Bootstrap5 + and Bootstrap3 (70a0f52c, f07dfc06, e913ee2b, 54d4f3cc + and others) + +
              • + + Drop custom implementation of lazy + loading for the proctoring display UI and rely + on modern native browser features instead (commit + 90d2404c) + +
            • Usability
              • + + Improve usability of the proctoring display UI on mobile + and when using a keyboard (various commits) + +
            • Miscellaneous
              • + + Improve integration with master template (9acb6bc8, + 44729649) + +
              • + + Streamline idioms (various commits) + +
              • + + Improved documentation + +
              • + + Increase test suite of functionalities and cover 100% of + public api (various commits) + +
              • + + Extend package localization. Currently English, German, + Italian and Spanish are supported. + +

            Changes in package "xotcl-core"

            New Features
            • + + Added value checker signed (commit + 1ce581a) + +
            • + + Added value checker oneof (commits + 58bc938, 2dbadad, 65575bf, 58bc938). + +
            • + + Added value checker cr_item_of_package + (commit 6fc46f3) + +
            • + + Provided consistent sorting for Database and Tcl sorts + (commit 6effe16) + +
            Bug Fixes
            • + + Avoiding double quoting (commit 08386db). + +
            • + + Fixed potential memory leaks + +
              • + + Free explicitly answer ns_set in + database sets method (commit 158a831) + +
              • + + Free ns_set storage more eager (when + e.g. large queries are used in longer loops) (commit + 3d6b05a) + +
            • + + Compatibility Fixes for Oracle 19c (commit de4a9a5, 88f8521, + 1408e2b) + +
            Improvements
            • + + Security improvements: + +
              • + + Support for form_parameter specs with + value checkers added (commit 64bb847). + +
              • + + harden page contracts (commit b0c282d) + +
            • + + Performance improvements: + +
              • + + Improved prepared-statement handling (commit fac52ce) + +
              • + + Various other changes such as e.g. d22121d + +
            • + + Unified package parameter handing between xo* and oacs-core + (commit 66ee181) + +
            • + + Reduced verbosity of logging for streamlined output (commit + 0553811). + +
            • + + Stop sending messages to other (potentially stopped) thread + to avoid log messages (commit 0aa8c98). + +

            Changes in package "xowiki"

            New Features
            • + + GUI improvements + +
              • + + New abstraction xowiki::CSS to provide portability + between different frameworks and version of frameworks + (commit 99e3331c) + +
              • + + Added xowiki::bootstrap::card for + increased configurability (commits 97685004, 4e09efa9, + 136edcc5). + +
              • + + Use adp:icon for better cross framework compatibility + (commits 562e9e48, 19407b34, 71606059) + +
              • + + Support for Bootstrap5 (commits 97685004, ddae6214, + 701612b7, a073060e, de6f0f48, 694c61b5, 48efaa9e, + 57a7e91a, b71aacc0, 07be172b and several more) + +
              • + + Added native CSS classes for Tree renderer and made + TreeRenderer more configurable, reduce YUI (commit + 83eafdcf). + +
              • + + Beautify display of CSS tree renderer for deeper trees + (commit ab624faa). + +
            • + + Chat improvements + +
              • + + Reduce server-side guessing of browser capabilities and + minimize mode-specific JavaScript code (commit + 8d98e9bf). + +
              • + + Support for anonymous users in chat class, allowing + mixed participation of authenticated and + non-authenticated users (commit d929ec45). + +
            • + + Drag and Drop improvements + +
              • + + Support for drag & drop for reordering items for + mobile devices (commit 4489907b). + +
              • + + Extended functionality of the DropZone widget (commit + d65bd411). + +
            • + + Added support for archiving of items (commit 4d17aa0e). + +
            Reforms
            • + + Generalized handling of error pages in disconnected stage + (commit b3b677d4). + +
            Configuration Changes
            • + + Update CDN sources where necessary (commit d4d0d85e). + +
            • + + Updates of external libraries and CDN providers (commits + d4d0d85e, f71db88b, 2986f329, f22f9b0b, e3b9f244, c63f61c9) + +
            • + + Improved Parameterization *Ability to parameterize + www-delete and + www-toggle-publish-status with + return_url for workflow-specific behavior + (commit abba6cd1). + +
              • + + New package parameter: + PackageInitParameter for + instance-specific package behavior (commit cc5b9959). + +
              • + + Added support for passing parameter specs of the form + parameter_name:value_constraint to + xowiki::Package.get_parameter (commit + 9df95cb3). + +
            Bug Fixes:
            • + + Test reproducing a bug in + acs::test::xpath::get_form_values proc + (commit f495cac3). + +
            • + + Fixed test case returned violation on plain instance (commit + 78ec506d). + +
            • + + Fixed xowiki + create_form_with_form_instance automated + test (commit a9a37dcc). + +
            • + + Handle more gracefully the case of missing files on the + filesystem (commit 72c1aeeb). + +
            Improvements:
            • + + Improved autosave support (commit b373091c). + +
            • + + Added support to check the file types of uploaded content + (commit 80756c4b). + +
            • + + Improved portability + +
              • + + Added missing Oracle support for Oracle 19c (commit + 777eadbc). + +
              • + + Fix for Oracle 19c issues (commit 777eadbc). + +
            • + + Improved error handling + +
              • + + Improved handling of pages with + parent_id == 0 (commit 7637ff52). + +
              • + + Improved error message clarity and handling (multiple + commits). + +
              • + + Improved warning message (commit 80c69179). + +
              • + + Various small improvements in handling form pages and + error messages (commit 1c11ce20). + +
            • + + Various API improvements: + +
              • + + Updated interface for + Page.create_form_page_instance + (commit c0ee21d6). + +
            • + + Security improvements: + +
              • + + Enhanced form and query variable validation (commit + d405042d). + +
              • + + Improved safety of SQL queries (commit be15be72). + +
            • + + Code Maintenance: + +
              • + + Cleanup and modernization of code, removal of obsolete + and commented code (multiple commits). + +
              • + + Extended regression test (commit 8daa654b). + +
              • + + Improved comments (commit 9e9a99f5). + +
              • + + Improved documentation and cleanup (commit 27609be3). + +
            Deprecations:
            • + + Cleanup of deprecated API references and methods (commit + b0a9b875, commit fc1e48d1, commit 2c490318). + +
            • + + Logging of deprecated usages unified under + ad_log_deprecated (commit 56d4b9d5). + +
            • + + Removal of features and scripts no longer in use (commit + 726cc0dd, commit c8100365). + +
            • + + Added @see to deprecated proc (commit + bb2fa23a). + +
            • + + Got rid of legacy message key + menu-Clipboard-Copy (commit ba901036). + +

            Changes in package "xowf"

            New Features
            • + + Improved Support E-Learning applications (mostly inclass + exam) + +
              • + + Support for restricting access to exams based on IP + addresses (7fc8473). + +
              • + + Drag and Drop interface for feedback files (fd68c22). + +
              • + + Support for pool questions in the test-item family (No + specific commit hash related to this feature was found + in the provided content). + +
              • + + Improved support for viewing and downloading exam + results (250d5a4). + +
              • + + Added Support for viewing/altering all configuration + options for inclass exams via modal dialogs (39d5063). + +
              • + + Added Parameter to allow/disallow page translation and + spell checker for exams (commits 97e383e, 20a2d49). + +
            Configuration Changes
            • + + Turn off production mode by default (363c839). + +
            Bug Fixes
            • + + Fixed achieved points in exam statistics per question + (f05631f). + +
            • + + Fix for potential loss of statistics for auto-graded exams + (fc03d5f). + +
            Improvements
            • + + Improved Maintainability: Added Site-wide admin pages for + xowf (cbb3bc8). + +
            • + + Improved Performance: Added support for shared workflow + definitions (2628b6f). + +
            • + + Improved GUI: + +
              • + + Improved support for Bootstrap5 (e.g. commits 8623ebd + and a5e1f6c). + +
              • + + Enhanced usability and styling for inclass exams and + workflows (3d33b2a). + +

            Changes in package + "xotcl-request-monitor"

            New Features
            • + + Ability to order by time values in long-calls listing + (Commit 031ee35). + +
            • + + Support for ordering long-calls by start time or by end time + in long-calls listing (Commit 7c9ffe9). + +
            Configuration Changes
            • + + Added configurability to watchdog with parameters like + -maxWaiting and -maxRunning + (Commit 60ba4e3). + +
            Improvements
            • + + Security Improvements + +
              • + + Protect query-parameters against exceptions with empty + values (Commit 176a32b). + +
              • + + Added safety measures for potential DOS attacks and + improved request blocking (Commit ef39b79). + +
              • + + Improved strictness of tests (Commit ceb4a88). + +
              • + + Improved description of package parameters (Commit + ff8c44d) + +
              • + + Enhanced the initial population of request-monitor + counters for robustness (Commit 622d8f2). + +
              • + + Switch from xo::db::sql to + acs::dc interface (Commit a2d4688). + +

          Release 5.10.0

          • The release of OpenACS 5.10.0 contains the 93 packages of the oacs-5-10 branch. These packages include the OpenACS core packages, the major application packages (e.g. most the ones used on OpenACS.org), and Index: openacs-4/packages/acs-core-docs/www/releasing-openacs-core.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/releasing-openacs-core.adp,v diff -u -r1.6.2.9 -r1.6.2.10 --- openacs-4/packages/acs-core-docs/www/releasing-openacs-core.adp 1 Aug 2024 08:03:41 -0000 1.6.2.9 +++ openacs-4/packages/acs-core-docs/www/releasing-openacs-core.adp 2 Sep 2024 09:40:23 -0000 1.6.2.10 @@ -2,19 +2,22 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {OpenACS Core and .LRN} OpenACS Core and .LRN +

            OpenACS Core and .LRN

            1. -Update Translations. the section called -“How to Update the -translations” +Update Translations. the section called “How to Update +the translations”

            2. Rebuild the Changelog. Rebuild the @@ -43,27 +46,24 @@ /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/xml/variables.ent with the new version number.

            3. Add new section in /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/xml/for-everyone/release-notes.xml

            4. -

              Regenerate all HTML docs

              -cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/xml
              -make
              -
              +

              Regenerate all HTML docs

              cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/xml
              +make
            5. Update /var/lib/aolserver/$OPENACS_SERVICE_NAME/readme.txt with the new version number

            6. Update version number and release date in all of the core packages. Use /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/update-info.sh with the new version number and the release date as arguments. Run -it from /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages:

              -cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages
              +it from /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages:

              cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages
                      ./acs-core-docs/www/files/update-info 5.2.12006-01-16
               
            7. Install a new site using the modified code and verify that the automated tests pass.

            8. Commit changes to CVS

          • -Tag the files in CVS. The steps to -this point should have ensured that the head of the current branch +Tag the files in CVS. The steps to this +point should have ensured that the head of the current branch contains the full set of code to release. Now we need to tag it as the code to be released.

            1. @@ -95,8 +95,7 @@ feature freeze. Branching is almost the same as tagging, except for the flag and slightly different tag nomenclature. To see the list of old branches, cvs status -v -somefile.

              -cvs tag -b oacs-5-0
              +somefile.

              cvs tag -b oacs-5-0
               

            If doing .LRN: Since the .LRN packages aren't all in one module, we iterate through all of the modules. Log in first (cvs @@ -163,33 +162,30 @@

        • -Test the new tarball(s). Download -the tarballs just created and install them and make sure everything +Test the new tarball(s). Download the +tarballs just created and install them and make sure everything looks okay and that automated tests pass.

        • -Update Web site. Update the -different places on OpenACS.org where we track status.

            +Update Web site. Update the different +places on OpenACS.org where we track status.

            • Release Status for the current version - something like http://openacs.org/projects/openacs/5.0/milestones

            • Home page of openacs.org

            • Post a new news item

          • -Clean Up. Clean up after -yourself.

            cd /var/tmp
            +Clean Up. Clean up after yourself.

            cd /var/tmp
             rm -rf tarball dotlrn-tarball dotlrn-packages openacs-5.0.0a1
             rm -rf /var/tmp/openacs-4

          Here is a shell script that automates packaging the tarball (it's a bit out of date with the new steps - I've been doing everything manually or with little throwaway scripts as -detailed above until the process is stabilized).

          -release script missing
          -
          ($‌Id: releasing-openacs.xml,v 1.24.2.1 +detailed above until the process is stabilized).

          release script missing
          ($‌Id: releasing-openacs.xml,v 1.24.2.1 2020/07/02 08:39:25 gustafn Exp $)
          {/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 16. Releasing -OpenACS} -Chapter 16. Releasing -OpenACS +{/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 16. Releasing OpenACS} +Chapter 16. Releasing OpenACS +

          Index: openacs-4/packages/acs-core-docs/www/releasing-package.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/releasing-package.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/releasing-package.adp 13 Jul 2023 12:43:22 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/releasing-package.adp 2 Sep 2024 09:40:23 -0000 1.4.2.6 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {How to package and release an OpenACS Package} How to package and release an OpenACS Package +

          Index: openacs-4/packages/acs-core-docs/www/remote-postgres.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/remote-postgres.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/remote-postgres.adp 13 Jul 2023 12:43:22 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/remote-postgres.adp 2 Sep 2024 09:40:23 -0000 1.4.2.6 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Running a PostgreSQL database on another server} Running a PostgreSQL database on another server +

          @@ -17,11 +21,7 @@
        • Edit the database configuration file, which in a Reference install is located at /usr/local/pgsql/data/postgresql.conf and -change

          -#tcpip_socket = false
          -

          to

          -tcpip_socket = true
          -
          +change

          #tcpip_socket = false

          to

          tcpip_socket = true
        • Change the access control file for the database to permit specific remote clients to access. Access can be controlled ... (add notes from forum post)

        • @@ -32,8 +32,8 @@
      Index: openacs-4/packages/acs-core-docs/www/request-processor.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/request-processor.adp,v diff -u -r1.4.2.7 -r1.4.2.8 --- openacs-4/packages/acs-core-docs/www/request-processor.adp 1 Aug 2024 08:03:41 -0000 1.4.2.7 +++ openacs-4/packages/acs-core-docs/www/request-processor.adp 2 Sep 2024 09:40:23 -0000 1.4.2.8 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {The Request Processor} The Request Processor +

      Index: openacs-4/packages/acs-core-docs/www/requirements-template.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/requirements-template.adp,v diff -u -r1.4.2.7 -r1.4.2.8 --- openacs-4/packages/acs-core-docs/www/requirements-template.adp 13 Jul 2023 12:43:22 -0000 1.4.2.7 +++ openacs-4/packages/acs-core-docs/www/requirements-template.adp 2 Sep 2024 09:40:23 -0000 1.4.2.8 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {System/Application Requirements Template} System/Application Requirements Template +

      Index: openacs-4/packages/acs-core-docs/www/rp-design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/rp-design.adp,v diff -u -r1.4.2.6 -r1.4.2.7 --- openacs-4/packages/acs-core-docs/www/rp-design.adp 13 Jul 2023 12:43:22 -0000 1.4.2.6 +++ openacs-4/packages/acs-core-docs/www/rp-design.adp 2 Sep 2024 09:40:23 -0000 1.4.2.7 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Request Processor Design} Request Processor Design +

      Index: openacs-4/packages/acs-core-docs/www/rp-requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/rp-requirements.adp,v diff -u -r1.5.2.5 -r1.5.2.6 --- openacs-4/packages/acs-core-docs/www/rp-requirements.adp 13 Jul 2023 12:43:22 -0000 1.5.2.5 +++ openacs-4/packages/acs-core-docs/www/rp-requirements.adp 2 Sep 2024 09:40:23 -0000 1.5.2.6 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Request Processor Requirements} Request Processor Requirements +

      Index: openacs-4/packages/acs-core-docs/www/security-design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/security-design.adp,v diff -u -r1.4.2.6 -r1.4.2.7 --- openacs-4/packages/acs-core-docs/www/security-design.adp 13 Jul 2023 12:43:22 -0000 1.4.2.6 +++ openacs-4/packages/acs-core-docs/www/security-design.adp 2 Sep 2024 09:40:23 -0000 1.4.2.7 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Security Design} Security Design +

      Index: openacs-4/packages/acs-core-docs/www/security-notes.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/security-notes.adp,v diff -u -r1.4.2.6 -r1.4.2.7 --- openacs-4/packages/acs-core-docs/www/security-notes.adp 13 Jul 2023 12:43:22 -0000 1.4.2.6 +++ openacs-4/packages/acs-core-docs/www/security-notes.adp 2 Sep 2024 09:40:23 -0000 1.4.2.7 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Security Notes} Security Notes +

      Index: openacs-4/packages/acs-core-docs/www/security-requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/security-requirements.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/security-requirements.adp 13 Jul 2023 12:43:22 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/security-requirements.adp 2 Sep 2024 09:40:23 -0000 1.4.2.6 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Security Requirements} Security Requirements +

      Index: openacs-4/packages/acs-core-docs/www/snapshot-backup.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/snapshot-backup.adp,v diff -u -r1.4.2.6 -r1.4.2.7 --- openacs-4/packages/acs-core-docs/www/snapshot-backup.adp 13 Jul 2023 12:43:22 -0000 1.4.2.6 +++ openacs-4/packages/acs-core-docs/www/snapshot-backup.adp 2 Sep 2024 09:40:23 -0000 1.4.2.7 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Manual backup and recovery} Manual backup and recovery +

      @@ -17,8 +21,7 @@ the information needed to rebuild the site, including the AOLserver config files, is then in tree for regular filesystem backup.

      1. -

        Back up the database to a -file. 

          +

          Back up the database to a file. 

          • Oracle.  @@ -27,15 +30,13 @@ /var/tmp/export-oracle.txt

          • Login as root. The following commands will install the export -script:

            -[joeuser ~]$ su -
            +script:

            [joeuser ~]$ su -
             [root ~]# cp /var/tmp/export-oracle.txt /usr/sbin/export-oracle
             [root ~]# chmod 700 /usr/sbin/export-oracle
             
          • Setup the export directory; this is the directory where backups -will be stored. We recommend the directory /ora8/m02/oracle-exports.

            -[root ~]# mkdir /ora8/m02/oracle-exports
            +will be stored. We recommend the directory /ora8/m02/oracle-exports.

            [root ~]# mkdir /ora8/m02/oracle-exports
             [root ~]# chown oracle:dba /ora8/m02/oracle-exports
             [root ~]# chmod 770 /ora8/m02/oracle-exports
             
            @@ -46,8 +47,7 @@ their correct values. If you want to use a directory other than /ora8/m02/oracle-exports, you also need to change the exportdir -setting.

            Test the export procedure by running the command:

            -[root ~]# /usr/sbin/export-oracle
            +setting.

            Test the export procedure by running the command:

            [root ~]# /usr/sbin/export-oracle
             mv: /ora8/m02/oracle-exports/oraexport-service_name.dmp.gz: No such file or directory
             
             Export: Release 8.1.6.1.0 - Production on Sun Jun 11 18:07:45 2000
            @@ -82,16 +82,14 @@
               . exporting dimensions
               . exporting post-schema procedural objects and actions
               . exporting statistics
            -Export terminated successfully without warnings.
            -
            +Export terminated successfully without warnings.
        • PostgreSQL. Create a backup file and verify that it was created and has a reasonable -size (several megabytes).

          -[root root]# su - $OPENACS_SERVICE_NAME
          +size (several megabytes).

          [root root]# su - $OPENACS_SERVICE_NAME
           [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ pg_dump -f /var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup/before_upgrade_to_4.6.dmp $OPENACS_SERVICE_NAME
           
           [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ ls -al /var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup/before_upgrade_to_4.6.dmp 
          @@ -107,8 +105,8 @@
           
      2. -Back up the filesystem. Back up all -of the files in the service, including the database backup file but +Back up the filesystem. Back up all of the +files in the service, including the database backup file but excluding the auto-generated supervise directory, which is unnecessary and has complicated permissions.

        In the tar command,

        • @@ -126,19 +124,16 @@ correct extensions.

        • The last clause, /var/lib/aolserver/$OPENACS_SERVICE_NAME/, specifies the starting point for backup. Tar defaults to recursive backup.

        • -
        -[root root]# su - $OPENACS_SERVICE_NAME
        +

    [root root]# su - $OPENACS_SERVICE_NAME
     
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ tar -cpsz --exclude /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/daemontools/supervise \
        --file /var/tmp/$OPENACS_SERVICE_NAME-backup.tar.gz /var/lib/aolserver/$OPENACS_SERVICE_NAME/
     tar: Removing leading `/' from member names
    -[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$
    -
    +[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$
  • Suffer a catastrophic failure on your production -system. (We'll simulate this step)

    -[root root]# svc -d /service/$OPENACS_SERVICE_NAME
    +system. (We'll simulate this step)

    [root root]# svc -d /service/$OPENACS_SERVICE_NAME
     [root root]# mv /var/lib/aolserver/$OPENACS_SERVICE_NAME/ /var/lib/aolserver/$OPENACS_SERVICE_NAME.lost
     [root root]# rm /service/$OPENACS_SERVICE_NAME
     rm: remove symbolic link `/service/$OPENACS_SERVICE_NAME'? y
    @@ -154,8 +149,7 @@
     DROP USER
     [postgres pgsql]$ exit
     logout
    -[root root]#
    -
    +[root root]#
  • Recovery.  @@ -165,8 +159,7 @@ install material (OS CDs, OpenACS tarball and supporting software) and repeating the install guide. Recreate the service user ($OPENACS_SERVICE_NAME).

  • -

    Restore the OpenACS files and database backup file.

    -[root root]# su - $OPENACS_SERVICE_NAME
    +

    Restore the OpenACS files and database backup file.

    [root root]# su - $OPENACS_SERVICE_NAME
     
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver
     [$OPENACS_SERVICE_NAME aolserver]$ tar xzf /var/tmp/$OPENACS_SERVICE_NAME-backup.tar.gz
    @@ -186,9 +179,8 @@
     
     
  • -Postgres. If -the database user does not already exist, create it.

    -[root root]# su - postgres
    +Postgres. If the
    +database user does not already exist, create it.

    [root root]# su - postgres
     [postgres ~]$ createuser $OPENACS_SERVICE_NAME
     
     Shall the new user be allowed to create databases? (y/n) y
    @@ -201,8 +193,7 @@
     create any out-of-order database objects. Next, restore the
     database from the dump file. The restoration will show some error
     messages at the beginning for objects that were precreated from the
    -OpenACS initialization script, which can be ignored.

    -[root root]# su - $OPENACS_SERVICE_NAME
    +OpenACS initialization script, which can be ignored.

    [root root]# su - $OPENACS_SERVICE_NAME
     
     [$OPENACS_SERVICE_NAME ~]$ createdb $OPENACS_SERVICE_NAME
     
    @@ -213,13 +204,11 @@
     (many lines omitted)
     [$OPENACS_SERVICE_NAME ~]$ exit
     [postgres ~]$ exit
    -logout
    -
    +logout
  • -

    Activate the service

    -[root root]# ln -s /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/daemontools /service/$OPENACS_SERVICE_NAME
    +

    Activate the service

    [root root]# ln -s /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/daemontools /service/$OPENACS_SERVICE_NAME
     
     [root root]# sleep 10
     [root root]# svgroup web /service/$OPENACS_SERVICE_NAME
    Index: openacs-4/packages/acs-core-docs/www/style-guide.adp
    ===================================================================
    RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/style-guide.adp,v
    diff -u -r1.4.2.6 -r1.4.2.7
    --- openacs-4/packages/acs-core-docs/www/style-guide.adp	13 Jul 2023 12:43:22 -0000	1.4.2.6
    +++ openacs-4/packages/acs-core-docs/www/style-guide.adp	2 Sep 2024 09:40:23 -0000	1.4.2.7
    @@ -2,10 +2,14 @@
     {/doc/acs-core-docs/ {ACS Core Documentation}} {OpenACS Style Guide}
     OpenACS Style Guide
     
    +              
     
     		    

    @@ -41,53 +45,52 @@ ignored won't break anything, but if you follow the rules people will be able to understand your package much more easily.

  • -Be literate in your programming.  -Use ad_proc, ad_library, and ad_page_contract to provide -documentation for your code, use comments on your datamodel, -explain what things mean and how they should work.

  • -Test.  Write test cases for your -API and data model; test negative cases as well as positive; -document your tests. Provide tests for bugs which are not yet -fixed. Test, Test, Test.

  • -Use namespaces.  For new packages -choose a namespace and place all procedures in it and in oracle -create packages.

  • +Be literate in your programming.  Use +ad_proc, ad_library, and ad_page_contract to provide documentation +for your code, use comments on your datamodel, explain what things +mean and how they should work.

  • +Test.  Write test cases for your API and +data model; test negative cases as well as positive; document your +tests. Provide tests for bugs which are not yet fixed. Test, Test, +Test.

  • +Use namespaces.  For new packages choose a +namespace and place all procedures in it and in oracle create +packages.

  • Follow the constraint naming and the PL/SQL and PL/pgSQL rules.  Naming constraints is important for upgradability and for consistency. Also, named constraints can be immensely helpful in developing good error handling. Following the PL/SQL and PL/pgSQL rules ensure that the procedures created can be handled similarly across both Oracle and PostgreSQL databases.

  • -Follow the code formatting -guidelines.  The code base is very large and -if things are formatted consistently it is easier to read. Also, if -it conforms to the standard it won't be reformatted (which can -mask the change history and making tracking down bugs much harder). -Using spaces rather than tabs makes patches easier to read and -manage and does not force other programmers to decipher what tab -settings you had in place in your editor.

  • -Use the standard APIs.  Don't -reinvent the wheel. Prefer extending an existing core API to -creating your own. If something in the core does not meet your -particular needs it probably won't meet others as well and -fleshing out the core API's makes the toolkit more useful for -everyone and more easily extended.

  • +Follow the code formatting guidelines.  +The code base is very large and if things are formatted +consistently it is easier to read. Also, if it conforms to the +standard it won't be reformatted (which can mask the change +history and making tracking down bugs much harder). Using spaces +rather than tabs makes patches easier to read and manage and does +not force other programmers to decipher what tab settings you had +in place in your editor.

  • +Use the standard APIs.  Don't reinvent +the wheel. Prefer extending an existing core API to creating your +own. If something in the core does not meet your particular needs +it probably won't meet others as well and fleshing out the core +API's makes the toolkit more useful for everyone and more +easily extended.

  • Make sure your datamodel create/drop scripts work.  Break the table creation out from the package/stored procedure creation and use create or replace where possible so that scripts can be sourced more than once. Make sure your drop script works if data has been inserted (and permissioned and notifications have been attached etc).

  • -Practice CVS/Bug Tracker Hygiene.  -Commit your work. commit with sensible messages and include patch -and bug numbers in your commit messages.

    Create bug tracker tickets for things you are going to work on +Practice CVS/Bug Tracker Hygiene.  Commit +your work. commit with sensible messages and include patch and bug +numbers in your commit messages.

    Create bug tracker tickets for things you are going to work on yourself (just in case you don't get to it and to act as a pointer for others who might encounter the same problem).

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

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

    @@ -104,8 +107,8 @@

    Index: openacs-4/packages/acs-core-docs/www/subsites-design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/subsites-design.adp,v diff -u -r1.5.2.6 -r1.5.2.7 --- openacs-4/packages/acs-core-docs/www/subsites-design.adp 13 Jul 2023 12:43:23 -0000 1.5.2.6 +++ openacs-4/packages/acs-core-docs/www/subsites-design.adp 2 Sep 2024 09:40:23 -0000 1.5.2.7 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Subsites Design Document} Subsites Design Document +

    Index: openacs-4/packages/acs-core-docs/www/subsites-requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/subsites-requirements.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/subsites-requirements.adp 13 Jul 2023 12:43:23 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/subsites-requirements.adp 2 Sep 2024 09:40:23 -0000 1.4.2.6 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Subsites Requirements} Subsites Requirements +

    Index: openacs-4/packages/acs-core-docs/www/subsites.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/subsites.adp,v diff -u -r1.4.2.7 -r1.4.2.8 --- openacs-4/packages/acs-core-docs/www/subsites.adp 13 Jul 2023 12:43:23 -0000 1.4.2.7 +++ openacs-4/packages/acs-core-docs/www/subsites.adp 2 Sep 2024 09:40:23 -0000 1.4.2.8 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Writing OpenACS Application Pages} Writing OpenACS Application Pages +

    Index: openacs-4/packages/acs-core-docs/www/tcl-doc.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tcl-doc.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/tcl-doc.adp 13 Jul 2023 12:43:23 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/tcl-doc.adp 2 Sep 2024 09:40:23 -0000 1.4.2.6 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Documenting Tcl Files: Page Contracts and Libraries} Documenting Tcl Files: Page Contracts and Libraries +

    Index: openacs-4/packages/acs-core-docs/www/templates.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/templates.adp,v diff -u -r1.5.2.5 -r1.5.2.6 --- openacs-4/packages/acs-core-docs/www/templates.adp 13 Jul 2023 12:43:23 -0000 1.5.2.5 +++ openacs-4/packages/acs-core-docs/www/templates.adp 2 Sep 2024 09:40:23 -0000 1.5.2.6 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Using Templates in OpenACS} Using Templates in OpenACS +

    Index: openacs-4/packages/acs-core-docs/www/tutorial-admin-pages.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-admin-pages.adp,v diff -u -r1.6.2.7 -r1.6.2.8 --- openacs-4/packages/acs-core-docs/www/tutorial-admin-pages.adp 13 Jul 2023 12:43:23 -0000 1.6.2.7 +++ openacs-4/packages/acs-core-docs/www/tutorial-admin-pages.adp 2 Sep 2024 09:40:23 -0000 1.6.2.8 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Admin Pages} Admin Pages +

    @@ -20,17 +24,14 @@ that users aren't interested in or aren't allowed to see you will need dedicated admin pages. The conventional place to put those dedicated admin pages is in the /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www/admin -directory.

    -[$OPENACS_SERVICE_NAME www]$ mkdir admin
    -
    -[$OPENACS_SERVICE_NAME www]$ cd admin
    +directory.

    [$OPENACS_SERVICE_NAME www]$ mkdir admin
    +
    [$OPENACS_SERVICE_NAME www]$ cd admin
     

    Even if your application doesn't need any admin pages of its own you will usually need at least one simple page with a bunch of links to existing administration UI such as Category Management or standard Parameters UI. Adding the link to Category Management is described in the section on categories. The listing below adds a -link to the Parameters UI of our package.

    -[$OPENACS_SERVICE_NAME admin]$ vi index.adp
    +link to the Parameters UI of our package.

    [$OPENACS_SERVICE_NAME admin]$ vi index.adp
     
     <master>
     <property name="title">\@title;literal\@</property>
    @@ -39,8 +40,7 @@
     <ul class="action-links">
       <li><a href="\@parameters_url\@" title="Set parameters" class="action_link">Set parameters</a></li>
     </ul>
    -
    -[$OPENACS_SERVICE_NAME admin]$ vi index.tcl
    +
    [$OPENACS_SERVICE_NAME admin]$ vi index.tcl
     
     ad_page_contract {} {
     } -properties {
    Index: openacs-4/packages/acs-core-docs/www/tutorial-advanced.adp
    ===================================================================
    RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-advanced.adp,v
    diff -u -r1.4.2.5 -r1.4.2.6
    --- openacs-4/packages/acs-core-docs/www/tutorial-advanced.adp	13 Jul 2023 12:43:23 -0000	1.4.2.5
    +++ openacs-4/packages/acs-core-docs/www/tutorial-advanced.adp	2 Sep 2024 09:40:23 -0000	1.4.2.6
    @@ -2,16 +2,18 @@
     {/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 10. Advanced Topics}
     Chapter 10. Advanced Topics
     
    +              
     
     		    

    -Chapter 10. Advanced -Topics

    +Chapter 10. Advanced Topics

    Table of Contents

    Write the Requirements and Design Specs
    Add the new Index: openacs-4/packages/acs-core-docs/www/tutorial-caching.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-caching.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/tutorial-caching.adp 13 Jul 2023 12:43:23 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/tutorial-caching.adp 2 Sep 2024 09:40:23 -0000 1.4.2.6 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Basic Caching} Basic Caching +

    @@ -21,13 +25,11 @@ one argument, -foo, so the wrapper passes that on. The wrapper also uses the list command, to ensure that the arguments get passed correctly and to prevent commands passed in as arguments from being -executed.

    -ad_proc my_proc {-foo} {
    +executed.

    ad_proc my_proc {-foo} {
             Get a cached version of my_proc.
     } {
         return [util_memoize [list my_proc_not_cached -foo $foo]]
    -}
    -
    +}
  • In your code, always call my_proc. There will be a separate cache item for each unique call to my_proc_not_cached so that calls with different arguments are cached separately. You can flush the Index: openacs-4/packages/acs-core-docs/www/tutorial-categories.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-categories.adp,v diff -u -r1.4.2.9 -r1.4.2.10 --- openacs-4/packages/acs-core-docs/www/tutorial-categories.adp 1 Aug 2024 08:03:41 -0000 1.4.2.9 +++ openacs-4/packages/acs-core-docs/www/tutorial-categories.adp 2 Sep 2024 09:40:23 -0000 1.4.2.10 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Categories} Categories +

    @@ -36,12 +40,10 @@ Management pages. Add the following snippet to your /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www/admin/index.tcl file:

                       set category_map_url [export_vars -base "[site_node::get_package_url -package_key categories]cadmin/one-object" { { object_id $package_id } }]
    -          
    -

    and the following snippet to your /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www/admin/index.adp +

    and the following snippet to your /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www/admin/index.adp file:

                       <a href="\@category_map_url\@">#­categories.Site_wide_Categories#</a>
    -          
    -

    The link created by the above code (category_map_url) will take the admin to +

    The link created by the above code (category_map_url) will take the admin to the generic admin UI where he can pick category trees that make sense for this application. The same UI also includes facilities to build and edit category trees. Notice that the only parameter in @@ -79,8 +81,7 @@ ad_returnredirect "." ad_script_abort } - -

    While the category::ad_form::add_widgets proc is +

    While the category::ad_form::add_widgets proc is taking care to extend your form with associated categories you need to ensure that your items are mapped to the corresponding category object yourself.

    @@ -95,10 +96,8 @@ need the extra features of ad_form. The form calls itself, but with hidden variables carrying both note_id and confirm_p. If confirm_p is present, we delete the record, set redirection back to the index, and abort -script execution.

    The database commands:

    -[$OPENACS_SERVICE_NAME\@yourserver www]$ emacs note-delete.xql
    -
    -<?xml version="1.0"?>
    +script execution.

    The database commands:

    [$OPENACS_SERVICE_NAME\@yourserver www]$ emacs note-delete.xql
    +
    <?xml version="1.0"?>
     <queryset>
       <fullquery name="do_delete">
         <querytext>
    @@ -110,17 +109,14 @@
           select samplenote__name(:note_id)
         </querytext>
       </fullquery>
    -</queryset>
    -

    And the adp page:

    -[$OPENACS_SERVICE_NAME\@yourserver www]$ emacs note-delete.adp
    +</queryset>

    And the adp page:

    [$OPENACS_SERVICE_NAME\@yourserver www]$ emacs note-delete.adp
     
     <master>
     <property name="title">\@title\@</property>
     <property name="context">{\@title\@}</property>
     <h2>\@title\@</h2>
     <formtemplate id="note-del-confirm"></formtemplate>
    -</form>
    -

    The ADP is very simple. The formtemplate tag outputs the HTML form +</form>

    The ADP is very simple. The formtemplate tag outputs the HTML form generated by the ad_form command with the matching name. Test it by adding the new files in the APM and then deleting a few samplenotes.

    @@ -132,14 +128,12 @@ and the default value "0".

    Add the following lines to your index.tcl:

               set return_url [ns_conn url]
               set use_categories_p [parameter::get -parameter "EnableCategoriesP"]
    -          
    -

    Change your to this:

    +          

    Change your to this:

                             <a href=configure?<%=[export_vars -url {return_url}]%>>Configure</a>
                             <if \@use_categories_p\@>
                             <a href="\@category_map_url\@">#­categories.Site_wide_Categories#</a>
                             </if>
    -          
    -

    Now create a configure page

    +          

    Now create a configure page

                     ad_page_contract {
                             This page allows an admin to change the categories usage mode.
                             } {
    @@ -164,31 +158,27 @@
                                     ns_returnredirect $return_url
                             }
                             }
    -           
    -

    and add this to its corresponding ADP page

    +           

    and add this to its corresponding ADP page

                     <master>
                             <property name="title">\@title\@</property>
                             <property name="context">\@context\@</property>
     
                             <formtemplate id="categories_mode"></formtemplate>
    -              
    -

    Reference this page from your admin page

    +              

    Reference this page from your admin page

                     #TCL:
                     set return_url [ad_conn url]
     
                     #ADP:
                     <a href=configure?<%=[export_vars -url {return_url}]%>>Configure</a>
    -                
    -

    Change the note-edit.tcl:

    +                

    Change the note-edit.tcl:

                     # Use Categories?
                     set use_categories_p [parameter::get -parameter "EnableCategoriesP" -default 0]
                     if { $use_categories_p == 1 } {
                             # YOUR NEW FORM DEFINITION
                     } else {
                     # YOUR OLD FORM DEFINITION
                     }
    -        
    -
    +

  • You can filter your notes using categories. The below example does not support multiple filters and displays a category in a flat @@ -199,12 +189,11 @@ YOURPARAMS {category_id:integer,optional {}} } - -

    Now you have to check whether categories are enabled or not. If +

    Now you have to check whether categories are enabled or not. If this is the case and a category id is passed you need to extend your sql select query to support filtering. One way would be to extend the mfp::note::get proc -to support two more swiches -where_clause and -from_clause.

    +to support two more switches -where_clause and -from_clause.

                     set use_categories_p [parameter::get -parameter "EnableCategoriesP" -default 0]
     
                     if { $use_categories_p == 1 && $category_id ne "" } {
    @@ -224,8 +213,7 @@
                     } else {
                     # OLD STUFF
                     }
    -          
    -

    Also you need to make sure that the user can see the +

    Also you need to make sure that the user can see the corresponding categories. Add the following snippet to the end of your index page:

               # Site-Wide Categories
    @@ -259,8 +247,7 @@
                             set tree_name [category_tree::get_name $tree_id]
                     }
                     }
    -                
    -

    and to the corresponding index ADP page:

    +                

    and to the corresponding index ADP page:

                     <if \@use_categories_p\@>
                             <multiple name="categories">
                             <h2>\@categories.tree_name\@
    @@ -269,19 +256,16 @@
                             </group>
                     </multiple>
                     <a href="\@package_url\@view?\@YOURPARAMS\@">All Items</if>
    -          
    -

    Finally you need an index.vuh in your www folder to rewrite the -URLs correctly, the section called -“Using .vuh files for pretty -URLs”:

    +          

    Finally you need an index.vuh in your www folder to rewrite the +URLs correctly, the section called “Using .vuh +files for pretty URLs”:

               set url /[ad_conn extra_url]
     
               if {[regexp {^/+cat/+([^/]+)/*} $url ignore_whole category_id]} {
                   rp_form_put category_id $category_id
               }
               rp_internal_redirect "/packages/YOURPACKAGE/www/index"          
    -          
    -

    Now when ever the user select a category only notes that belong +

    Now when ever the user select a category only notes that belong to this category are displayed.

  • Index: openacs-4/packages/acs-core-docs/www/tutorial-categories.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-categories.html,v diff -u -r1.17.2.5 -r1.17.2.6 --- openacs-4/packages/acs-core-docs/www/tutorial-categories.html 1 Aug 2024 08:03:41 -0000 1.17.2.5 +++ openacs-4/packages/acs-core-docs/www/tutorial-categories.html 2 Sep 2024 09:40:23 -0000 1.17.2.6 @@ -185,7 +185,7 @@

    Now you have to check whether categories are enabled or not. If this is the case and a category id is passed you need to extend your sql select query to support filtering. One way would be to extend the mfp::note::get proc to - support two more swiches -where_clause and + support two more switches -where_clause and -from_clause.

      	  	set use_categories_p [parameter::get -parameter "EnableCategoriesP" -default 0]
     
    Index: openacs-4/packages/acs-core-docs/www/tutorial-comments.adp
    ===================================================================
    RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-comments.adp,v
    diff -u -r1.3.2.5 -r1.3.2.6
    --- openacs-4/packages/acs-core-docs/www/tutorial-comments.adp	13 Jul 2023 12:43:23 -0000	1.3.2.5
    +++ openacs-4/packages/acs-core-docs/www/tutorial-comments.adp	2 Sep 2024 09:40:23 -0000	1.3.2.6
    @@ -2,10 +2,14 @@
     {/doc/acs-core-docs/ {ACS Core Documentation}} {Adding Comments}
     Adding Comments
     
    +              
     
     		    

    @@ -20,22 +24,17 @@ { object_name $title } { return_url "[ad_conn url]?[ad_conn query]"} }] - -

    This calls a global, public Tcl function that the +

    This calls a global, public Tcl function that the general_comments package registered, to get its url. You then embed in that url the id of the note and its title, and set the return_url to the current url so that the user can return after adding a comment.

    We need to create html that shows any existing comments. We do -this with another general_comments function:

    -set comments_html [general_comments_get_comments
    -     -print_content_p 1 $note_id]
    -

    First, we pass in an optional parameter that says to actually +this with another general_comments function:

    set comments_html [general_comments_get_comments
    +     -print_content_p 1 $note_id]

    First, we pass in an optional parameter that says to actually show the contents of the comments, instead of just the fact that there are comments. Then you pass the note id, which is also the -acs_object id.

    We put our two new variables in the note-edit.adp page.

    -<a href="\@comment_add_url\@">Add a comment</a>
    - \@comments_html\@
    -
    +acs_object id.

    We put our two new variables in the note-edit.adp page.

    <a href="\@comment_add_url\@">Add a comment</a>
    + \@comments_html\@
    {/doc/acs-core-docs/ {ACS Core Documentation}} {Laying out a page with CSS instead of tables} Laying out a page with CSS instead of tables +

    Laying out a page with CSS instead of tables

    .LRN home page -with table-based layout

    A sample of the HTML code (full source)

    -<table border="0" width="100%">
    +with table-based layout

    A sample of the HTML code (full source)

    <table border="0" width="100%">
       <tr>
         <td valign="top" width="50%">
           <table class="element" border="0" cellpadding="0" cellspacing="0" width="100%">
    @@ -36,22 +39,19 @@
                       <table border="0" bgcolor="white" cellpadding="0" cellspacing="0" width="100%">
                         <tr>
                           <td class=element-text>
    -                        MBA 101
    -
    + MBA 101

    .LRN Home with -CSS-based layout

    A sample of the HTML code (full source)

    -<div class="left">
    +CSS-based layout

    A sample of the HTML code (full source)

    <div class="left">
       <div class="portlet-wrap-shadow">
         <div class="portlet-wrap-bl">
           <div class="portlet-wrap-tr">
             <div class="portlet">
               <h2>Groups</h2>
               <ul>
                 <li>
    -              <a href="#">Class MBA 101</a>
    -

    If the CSS is removed from the file, it looks somewhat + <a href="#">Class MBA 101</a>

    If the CSS is removed from the file, it looks somewhat different:

    Index: openacs-4/packages/acs-core-docs/www/tutorial-cvs.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-cvs.adp,v diff -u -r1.4.2.10 -r1.4.2.11 --- openacs-4/packages/acs-core-docs/www/tutorial-cvs.adp 1 Aug 2024 08:03:41 -0000 1.4.2.10 +++ openacs-4/packages/acs-core-docs/www/tutorial-cvs.adp 2 Sep 2024 09:40:24 -0000 1.4.2.11 @@ -2,18 +2,21 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Add the new package to CVS} Add the new package to CVS +

    Add the new package to CVS

    Before you do any more work, make sure that your work is protected by putting it all into cvs. The cvs add command is not recursive, so you'll have to traverse the directory tree manually and add as -you go. (More on CVS)

    -[$OPENACS_SERVICE_NAME xml]$ cd ..
    +you go. (More on CVS)

    [$OPENACS_SERVICE_NAME xml]$ cd ..
     [$OPENACS_SERVICE_NAME doc]$ cd ..
     [$OPENACS_SERVICE_NAME www]$ cd ..
     [$OPENACS_SERVICE_NAME myfirstpackage]$ cd ..
    @@ -69,10 +72,9 @@
     initial revision: 1.1
     done
     (many lines omitted)
    -[$OPENACS_SERVICE_NAME myfirstpackage]$
    -
    -

    Figure 10.1. Upgrading a local CVS -repository

    Upgrading a local CVS repository
    +[$OPENACS_SERVICE_NAME myfirstpackage]$
    +

    Figure 10.1. Upgrading a local +CVS repository

    Upgrading a local CVS repository

    {/doc/acs-core-docs/ {ACS Core Documentation}} {Setting Up Database Objects} Setting Up Database Objects +

    @@ -48,13 +52,11 @@


    The top of each SQL file has some standard comments, including doc tags such as \@author which will be picked up by the API browser. The string $‌Id:$ will automatically be expanded when -the file is checked in to cvs.

    -[$OPENACS_SERVICE_NAME ~]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/sql/postgresql
    +the file is checked in to cvs.

    [$OPENACS_SERVICE_NAME ~]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/sql/postgresql
     [$OPENACS_SERVICE_NAME postgresql]$ emacs myfirstpackage-create.sql
     

    Paste the text below into the file, save, and close.

    -

    Figure 9.3. The -Database Creation Script

    --- creation script
    +

    Figure 9.3. The Database +Creation Script

    -- creation script
     --
     -- \@author joel\@aufrecht.org
     -- \@cvs-id &Id:$
    @@ -83,8 +85,7 @@
     [$OPENACS_SERVICE_NAME postgresql]$ emacs myfirstpackage-drop.sql
     

    Figure 9.4. Database Deletion -Script

    --- drop script
    +Script

    -- drop script
     --
     -- \@author joel\@aufrecht.org
     -- \@cvs-id &Id:$
    @@ -100,34 +101,29 @@
     

    (like the creation script the drop script calls a PL/pgSQL function: content_type__drop_type

    Run the create script manually to add your tables and -functions.

    -[$OPENACS_SERVICE_NAME postgresql]$ psql service0 -f myfirstpackage-create.sql
    +functions.

    [$OPENACS_SERVICE_NAME postgresql]$ psql service0 -f myfirstpackage-create.sql
     psql:myfirstpackage-create.sql:15: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index 'mfp_notes_pkey' for table 'mfp_notes'
     psql:myfirstpackage-create.sql:15: NOTICE:  CREATE TABLE will create implicit trigger(s) for FOREIGN KEY check(s)
      content_type__create_type
     ---------------------------
                              0
     (1 row)
     
    -[$OPENACS_SERVICE_NAME postgresql]$
    -

    If there are errors, use them to debug the SQL file and try +[$OPENACS_SERVICE_NAME postgresql]$

    If there are errors, use them to debug the SQL file and try again. If there are errors in the database table creation, you may need to run the drop script to drop the table so that you can recreate it. The drop script will probably have errors since some of the things it's trying to drop may be missing. They can be ignored.

    Once you get the same output as shown above, test the drop -script:

    -[$OPENACS_SERVICE_NAME postgresql]$ psql service0 -f myfirstpackage-drop.sql
    +script:

    [$OPENACS_SERVICE_NAME postgresql]$ psql service0 -f myfirstpackage-drop.sql
     
      content_type__drop_type
     -------------------------
                            0
     (1 row)
     
    -[$OPENACS_SERVICE_NAME postgresql]$
    -

    Once both scripts are working without errors, run the create script one last time and -proceed.

    -[$OPENACS_SERVICE_NAME postgresql]$ psql service0 -f myfirstpackage-create.sql
    +[$OPENACS_SERVICE_NAME postgresql]$

    Once both scripts are working without errors, run the create script one last time and +proceed.

    [$OPENACS_SERVICE_NAME postgresql]$ psql service0 -f myfirstpackage-create.sql
     
    Index: openacs-4/packages/acs-core-docs/www/tutorial-debug.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-debug.adp,v diff -u -r1.4.2.13 -r1.4.2.14 --- openacs-4/packages/acs-core-docs/www/tutorial-debug.adp 1 Aug 2024 08:03:42 -0000 1.4.2.13 +++ openacs-4/packages/acs-core-docs/www/tutorial-debug.adp 2 Sep 2024 09:40:24 -0000 1.4.2.14 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Debugging and Automated Testing} Debugging and Automated Testing +

    @@ -16,30 +20,26 @@ OpenACS documentation staff.

    Debugging

    -Developer Support. The Developer -Support package adds several goodies: debug information for every -page; the ability to log comments to the page instead of the error -log, and fast user switching so that you can test pages as -anonymous and as dummy users without logging in and out.

    -PostgreSQL. You can work directly -with the database to do debugging steps like looking directly at -tables and testing stored procedures. Start emacs. Type -M-x sql-postgres. -Press enter for server name and use $OPENACS_SERVICE_NAME +Developer Support. The Developer Support +package adds several goodies: debug information for every page; the +ability to log comments to the page instead of the error log, and +fast user switching so that you can test pages as anonymous and as +dummy users without logging in and out.

    +PostgreSQL. You can work directly with the +database to do debugging steps like looking directly at tables and +testing stored procedures. Start emacs. Type M-x sql-postgres. Press enter for +server name and use $OPENACS_SERVICE_NAME for database name. You can use C-(up arrow) and C-(down arrow) for command history.

    Hint: "Parse error near *" usually means that an xql file wasn't recognized, because the Tcl file is choking on the *SQL* placeholder that it falls back on.

    Watching the server log. 

    To set up real-time monitoring of the AOLserver error log, type -

    -less /var/lib/aolserver/$OPENACS_SERVICE_NAME/log/openacs-dev-error.log
    -

    +

    less /var/lib/aolserver/$OPENACS_SERVICE_NAME/log/openacs-dev-error.log

    F to show new log entries in real time (like tail -f)
    C-c to stop and F to start it up again. 
    G goes to the end.
    - ? searches backward 
    / searches forward. 
              

    @@ -79,19 +79,17 @@

    by Simon Carstensen and Joel Aufrecht

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

    - It seems to + It seems to me that a lot of people have been asking for some guidelines on how to write automated tests. I've done several tests by now and have found the process to be extremely easy and useful. It's a joy to work with automated testing once you get the hang of it.

    Create the directory that will contain the test script and edit the script file. The directory location and filename are standards -which are recognized by the automated testing package:

    -[$OPENACS_SERVICE_NAME www]$ mkdir /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/tcl/test
    +which are recognized by the automated testing package:

    [$OPENACS_SERVICE_NAME www]$ mkdir /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/tcl/test
     [$OPENACS_SERVICE_NAME www]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/tcl/test
     [$OPENACS_SERVICE_NAME test]$ emacs myfirstpackages-procs.tcl
     

    Write the tests. This is obviously the big step :) The script -should first call ad_library like any normal -procs.tcl file:

    -ad_library {
    +should first call ad_library like any normal -procs.tcl file:

    ad_library {
         ...
     }
     

    To create a test case you call @@ -110,10 +108,8 @@ back once the test has been executed. A very useful feature. Instead of inserting bogus data like: set name "Simon", I tend to generate a random script in order avoid inserting a value -that's already in the database:

    -set name [ad_generate_random_string]
    -

    Here's how the test case looks so far:

    -aa_register_case mfp_basic_test {
    +that's already in the database:

    set name [ad_generate_random_string]
    +

    Here's how the test case looks so far:

    aa_register_case mfp_basic_test {
         My test
     } {
         aa_run_with_teardown \
    @@ -129,8 +125,7 @@
     specific word in the title."

           set name [ad_generate_random_string]
           set new_id [mfp::note::add -title $name]
    -      aa_true "Note add succeeded" {$new_id ne ""}
    -

    To test our simple case, we must load the test file into the + aa_true "Note add succeeded" {$new_id ne ""}

    To test our simple case, we must load the test file into the system (just as with the /tcl file in the basic tutorial, since the file didn't exist when the system started, the system doesn't know about it.) To make this file take effect, go to @@ -162,8 +157,7 @@

    Example

    Now we can add the rest of the API tests, including a test with -deliberately bad data. The complete test looks like:

    -ad_library {
    +deliberately bad data. The complete test looks like:

    ad_library {
         Test cases for my first package.
     }
     
    @@ -315,15 +309,14 @@
     #    tcl-indent-level: 4
     #    indent-tabs-mode: nil
     # End:
    -

    See also the section called -“Automated Testing”.

    +

    See also the section called “Automated Testing”.

    \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/tutorial-debug.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-debug.html,v diff -u -r1.46.2.10 -r1.46.2.11 --- openacs-4/packages/acs-core-docs/www/tutorial-debug.html 1 Aug 2024 08:03:42 -0000 1.46.2.10 +++ openacs-4/packages/acs-core-docs/www/tutorial-debug.html 2 Sep 2024 09:40:24 -0000 1.46.2.11 @@ -32,7 +32,7 @@ Search for a note.

    Write automated tests

    by Simon Carstensen and Joel Aufrecht

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

    +

    It seems to me that a lot of people have been asking for some guidelines on how to write automated tests. I've done several tests by now and have found the process to be extremely easy and useful. It's a joy to work with automated testing once you get the hang of it.

    Create the directory that will contain the test script and edit the script file. The directory location and filename are standards which are recognized by the automated testing package:

    [$OPENACS_SERVICE_NAME www]$ mkdir /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/tcl/test
     [$OPENACS_SERVICE_NAME www]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/tcl/test
    Index: openacs-4/packages/acs-core-docs/www/tutorial-distribute.adp
    ===================================================================
    RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-distribute.adp,v
    diff -u -r1.4.2.10 -r1.4.2.11
    --- openacs-4/packages/acs-core-docs/www/tutorial-distribute.adp	1 Aug 2024 08:03:42 -0000	1.4.2.10
    +++ openacs-4/packages/acs-core-docs/www/tutorial-distribute.adp	2 Sep 2024 09:40:24 -0000	1.4.2.11
    @@ -2,18 +2,22 @@
     {/doc/acs-core-docs/ {ACS Core Documentation}} {Prepare the package for distribution.}
     Prepare the package for distribution.
     
    +              
     
     		    

    Prepare the package for distribution.

    Browse to the package manager. Click on tutorialapp.

    Click on Generate a distribution file for this package from the filesystem.

    Click on the file size (37.1KB) after the label Distribution File: and save the -file to /var/tmp.

    Package development guidelines

    +file to /var/tmp.

    Package development guidelines

    37.1KB
    ) after the label Distribution File: and save the file to - /var/tmp.

    + /var/tmp.

    Package development guidelines

    Index: openacs-4/packages/acs-core-docs/www/tutorial-etp-templates.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-etp-templates.adp,v diff -u -r1.4.2.10 -r1.4.2.11 --- openacs-4/packages/acs-core-docs/www/tutorial-etp-templates.adp 1 Aug 2024 08:03:42 -0000 1.4.2.10 +++ openacs-4/packages/acs-core-docs/www/tutorial-etp-templates.adp 2 Sep 2024 09:40:24 -0000 1.4.2.11 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {OpenACS Edit This Page Templates} OpenACS Edit This Page Templates +

    @@ -48,11 +52,9 @@ Exercise 2: Checkout and Install edit-this-page (ETP)

    • -

      Checkout ETP from CVS:

      -cd ~/openacs/packages
      +

      Checkout ETP from CVS:

      cd ~/openacs/packages
                   cvs -d:pserver:anonymous\@openacs.org:/cvsroot login
      -            cvs -d:pserver:anonymous\@openacs.org:/cvsroot co edit-this-page
      -
      + cvs -d:pserver:anonymous\@openacs.org:/cvsroot co edit-this-page
    • Go to the package manager at http://yoursite/acs-admin/apm. And install the new package: edit-this-page.

    • Or use the "Add Application" form available on the Main site.

    • @@ -72,22 +74,18 @@ Exercise 4: Create a New ETP Template

    • -

      Browse the files for each of the above ETP templates at:

      -cd ~/openacs/packages/edit-this-page/templates
      -
      +

      Browse the files for each of the above ETP templates at:

      cd ~/openacs/packages/edit-this-page/templates
    • Use the article template as the basis of our new col2 -template.

      -cp article-content.adp col2-content.adp
      +template.

      cp article-content.adp col2-content.adp
                   cp article-content.tcl col2-content.tcl
                   cp article-index.adp col2-index.adp
      -            cp article-index.tcl col2-index.tcl
      -
      + cp article-index.tcl col2-index.tcl
    • The template should provide us with the following ETP layout:

      -

      Table 10.1. table -showing ETP layout

      +

      Table 10.1. table showing ETP +layout

      @@ -108,10 +106,8 @@ col2 Template with ETP
      • Need to register your template with ETP so that it appears in -the drop-down menu that you would have seen in Exercise 3.

        -cd ~/openacs/packages/edit-this-page/tcl
        -            emacs etp-custom-init.tcl
        -
        +the drop-down menu that you would have seen in Exercise 3.

        cd ~/openacs/packages/edit-this-page/tcl
        +            emacs etp-custom-init.tcl
      • Use the function etp::define_application to register your template with ETP

          @@ -133,8 +129,8 @@ Who Wrote This and When

      This problem set was originally written by Nick Carroll in August 2004 for the University of Sydney Course EBUS5002.

      This material is copyright 2004 by Nick Carroll. It may be copied, reused, and modified, provided credit is given to the -original author.

      ($‌Id: tutorial-advanced.xml,v 1.60.2.12 -2024/02/05 15:35:07 gustafn Exp $)
      +original author.

      ($‌Id: tutorial-advanced.xml,v 1.60.2.13 +2024/09/01 12:39:59 gustafn Exp $)
      {/doc/acs-core-docs/ {ACS Core Documentation}} {Future Topics} Future Topics +

      @@ -22,8 +26,8 @@

      \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/tutorial-hierarchical.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-hierarchical.adp,v diff -u -r1.4.2.6 -r1.4.2.7 --- openacs-4/packages/acs-core-docs/www/tutorial-hierarchical.adp 13 Jul 2023 12:43:23 -0000 1.4.2.6 +++ openacs-4/packages/acs-core-docs/www/tutorial-hierarchical.adp 2 Sep 2024 09:40:24 -0000 1.4.2.7 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Hierarchical data} Hierarchical data +

      @@ -38,8 +42,7 @@ c.category_id = o.object_id ORDER BY o.tree_sortkey" - -

      Note the use of the tree_level() function, which gives you the +

      Note the use of the tree_level() function, which gives you the level, starting from 1, 2, 3...

      Here's an example, pulling all of the children for a given parent:

             SELECT 
      @@ -53,8 +56,7 @@
             children.tree_sortkey between parent.tree_sortkey and tree_right(parent.tree_sortkey)
             and parent.tree_sortkey <> children.tree_sortkey
             and parent.key = :the_parent_key;
      -      
      -

      The reason we subtract the parent's tree_level from the +

      The reason we subtract the parent's tree_level from the child's tree_level is that the tree_levels are global, so if you want the parent's tree_level to start with 0, you'll want the subtraction in there. This is a reason you'll commonly @@ -70,8 +72,7 @@ WHERE subtree.tree_sortkey between parent.tree_sortkey and tree_right(parent.tree_sortkey) and parent.key = :the_parent_key; - -

      If you are using the Content Repository, you get a similar +

      If you are using the Content Repository, you get a similar facility, but the parent_id column is already there. Note you can do joins with tree_sortkey:

             SELECT
      @@ -82,8 +83,7 @@
             FROM pm_projectsx p, cr_items i
             WHERE p.project_id = i.live_revision
             ORDER BY i.tree_sortkey
      -    
      -

      This rather long thread explains How tree_sortkeys work and this paper describes the technique for tree_sortkeys, +

      This rather long thread explains How tree_sortkeys work and this paper describes the technique for tree_sortkeys, although the OpenACS implementation has a few differences in the implementation, to make it work for many languages and the LIKE construct in PostgreSQL.

      Index: openacs-4/packages/acs-core-docs/www/tutorial-html-email.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-html-email.adp,v diff -u -r1.4.2.6 -r1.4.2.7 --- openacs-4/packages/acs-core-docs/www/tutorial-html-email.adp 13 Jul 2023 12:43:23 -0000 1.4.2.6 +++ openacs-4/packages/acs-core-docs/www/tutorial-html-email.adp 2 Sep 2024 09:40:24 -0000 1.4.2.7 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Sending HTML email from your application} Sending HTML email from your application +

      @@ -46,8 +50,7 @@ -subject $subject \ -body $message \ -extraheaders $extra_headers - - +

      {/doc/acs-core-docs/ {ACS Core Documentation}} {Creating an Application Package} Creating an Application Package +

      @@ -124,23 +128,21 @@

      Quick start

      The remainder of the tutorial walks you through each file one at a time as you create the package. You can skip all this, and get a -working package, by doing the following:

      -cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/tutorial
      +working package, by doing the following:

      cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/tutorial
       psql $OPENACS_SERVICE_NAME -f myfirstpackage-create.sql
       cp note-edit.* note-delete.tcl index.* ../../../../myfirstpackage/www/
       mkdir ../../../../myfirstpackage/lib
       cp note-list.* ../../../../myfirstpackage/lib/
       cp myfirstpackage-*sql ../../../../myfirstpackage/sql/postgresql/
       cp myfirstpackage-procs.tcl ../../../../myfirstpackage/tcl/test/
      -cp note-procs.tcl ../../../../myfirstpackage/tcl/
      -

      After restarting the server, the tutorial application will be +cp note-procs.tcl ../../../../myfirstpackage/tcl/

      After restarting the server, the tutorial application will be installed and working at the url you selected in the previous step.

      Index: openacs-4/packages/acs-core-docs/www/tutorial-notifications.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-notifications.adp,v diff -u -r1.4.2.6 -r1.4.2.7 --- openacs-4/packages/acs-core-docs/www/tutorial-notifications.adp 13 Jul 2023 12:43:23 -0000 1.4.2.6 +++ openacs-4/packages/acs-core-docs/www/tutorial-notifications.adp 2 Sep 2024 09:40:24 -0000 1.4.2.7 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Notifications} Notifications +

      @@ -86,8 +90,7 @@ select inline_0(); drop function inline_0(); - -

      You also need a drop script. This is untested for compatibility +

      You also need a drop script. This is untested for compatibility with the above script.

             -- \@author gwong\@orchardlabs.com,ben\@openforce.biz
             -- \@creation-date 2002-05-16
      @@ -177,8 +180,7 @@
       
       select inline_0();
       drop function inline_0();
      -    
      -

      The next step is to setup our notification creation. A new +

      The next step is to setup our notification creation. A new notification must be added to the notification table for each blog entry added. We do this using the notification::new procedure

               notification::new \
      @@ -188,8 +190,7 @@
                   -response_id $blog(entry_id) \
                   -notif_subject $blog(title) \
                   -notif_text $new_content
      -    
      -

      This code is placed in the Tcl procedure that creates blog +

      This code is placed in the Tcl procedure that creates blog entries, right after the entry gets created in the code. The $blog(package_id) is the OpenACS object_id of the Weblogger instance to which the entry has @@ -211,10 +212,8 @@ -pretty_name [lars_blog_name] \ -url [lars_blog_public_package_url] \ ] - -

      which will return something like

      -    You may <a href="/notifications/request-new?...">request notification</a> for Weblogger.
      -

      which can be readily put on the blog index page. The +

      which will return something like

      +    You may <a href="/notifications/request-new?...">request notification</a> for Weblogger.

      which can be readily put on the blog index page. The pretty_name parameter is what appears at the end of the text returned (i.e. "... request notification</a> for pretty_name"), The url parameter should be set to the address Index: openacs-4/packages/acs-core-docs/www/tutorial-pages.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-pages.adp,v diff -u -r1.6.2.11 -r1.6.2.12 --- openacs-4/packages/acs-core-docs/www/tutorial-pages.adp 1 Aug 2024 08:03:42 -0000 1.6.2.11 +++ openacs-4/packages/acs-core-docs/www/tutorial-pages.adp 2 Sep 2024 09:40:24 -0000 1.6.2.12 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Creating Web Pages} Creating Web Pages +

      @@ -42,11 +46,9 @@ -postgres.xql and -oracle.xql files contains database-specific SQL. The default page in any directory is index, so we'll build that -first, starting with the Tcl file:

      -[$OPENACS_SERVICE_NAME postgresql]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackages/www
      +first, starting with the Tcl file:

      [$OPENACS_SERVICE_NAME postgresql]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackages/www
       [$OPENACS_SERVICE_NAME www]$ emacs index.tcl
      -

      Paste this into the file.

      -ad_page_contract {
      +

      Paste this into the file.

      ad_page_contract {
           This is the main page for the package.  It displays all of the Notes and provides links to edit them and to create new Notes.
       
           \@author Your Name (you\@example.com)
      @@ -60,19 +62,15 @@
       #    tcl-indent-level: 4
       #    indent-tabs-mode: nil
       # End:
      -

      Now index.adp:

      -<master>
      +

      Now index.adp:

      <master>
         <property name="doc(title)">\@page_title;literal\@</property>
         <property name="context">\@context;literal\@</property>
      -<include src="/packages/myfirstpackage/lib/note-list">
      -

      The index page includes the list page, which we put in /lib +<include src="/packages/myfirstpackage/lib/note-list">

      The index page includes the list page, which we put in /lib instead of /www to designate that it's available for reuse by -other packages.

      -[$OPENACS_SERVICE_NAME www]$ mkdir /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/lib
      +other packages.

      [$OPENACS_SERVICE_NAME www]$ mkdir /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/lib
       [$OPENACS_SERVICE_NAME www]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/lib
       [$OPENACS_SERVICE_NAME lib]$ emacs note-list.tcl
      -
      -template::list::create \
      +
      template::list::create \
           -name notes \
           -multirow notes \
           -actions { "Add a Note" note-edit} \
      @@ -113,18 +111,13 @@
       #    tcl-indent-level: 4
       #    indent-tabs-mode: nil
       # End:
      -
      -[$OPENACS_SERVICE_NAME lib]$ emacs note-list.adp
      -
      -<listtemplate name="notes"></listtemplate>
      -

      You can test your work by viewing the page /myfirstpackage on +

      [$OPENACS_SERVICE_NAME lib]$ emacs note-list.adp
      +
      <listtemplate name="notes"></listtemplate>

      You can test your work by viewing the page /myfirstpackage on your installation.

      Create the add/edit page. If note_id is passed in, it display that note, and can change to edit mode if appropriate. Otherwise, -it presents a form for adding notes.

      -[$OPENACS_SERVICE_NAME lib]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www
      +it presents a form for adding notes.

      [$OPENACS_SERVICE_NAME lib]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www
       [$OPENACS_SERVICE_NAME www]$ emacs note-edit.tcl
      -
      -ad_page_contract {
      +
      ad_page_contract {
           This is the view-edit page for notes.
       
           \@author Your Name (you\@example.com)
      @@ -170,20 +163,15 @@
       #    tcl-indent-level: 4
       #    indent-tabs-mode: nil
       # End:
      -
      -[$OPENACS_SERVICE_NAME www]$ emacs note-edit.adp
      -
      -<master>
      +
      [$OPENACS_SERVICE_NAME www]$ emacs note-edit.adp
      +
      <master>
         <property name="doc(title)">\@page_title;literal\@</property>
         <property name="context">\@context;literal\@</property>
         <property name="focus">note.title</property>
         
      -<formtemplate id="note"></formtemplate>
      -

      And the delete page. Since it has no UI, there is only a Tcl -page, and no adp page.

      -[$OPENACS_SERVICE_NAME www]$ emacs note-delete.tcl
      -
      -ad_page_contract {
      +<formtemplate id="note"></formtemplate>

      And the delete page. Since it has no UI, there is only a Tcl +page, and no adp page.

      [$OPENACS_SERVICE_NAME www]$ emacs note-delete.tcl
      +
      ad_page_contract {
           This deletes a note
       
           \@author Your Name (you\@example.com)
      Index: openacs-4/packages/acs-core-docs/www/tutorial-parameters.adp
      ===================================================================
      RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-parameters.adp,v
      diff -u -r1.4.2.5 -r1.4.2.6
      --- openacs-4/packages/acs-core-docs/www/tutorial-parameters.adp	13 Jul 2023 12:43:23 -0000	1.4.2.5
      +++ openacs-4/packages/acs-core-docs/www/tutorial-parameters.adp	2 Sep 2024 09:40:24 -0000	1.4.2.6
      @@ -2,10 +2,14 @@
       {/doc/acs-core-docs/ {ACS Core Documentation}} {Adding in parameters for your package}
       Adding in parameters for your package
       
      +              
       
       		    

      Index: openacs-4/packages/acs-core-docs/www/tutorial-schedule-procs.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-schedule-procs.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/tutorial-schedule-procs.adp 13 Jul 2023 12:43:23 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/tutorial-schedule-procs.adp 2 Sep 2024 09:40:24 -0000 1.4.2.6 @@ -2,19 +2,21 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Scheduled Procedures} Scheduled Procedures +

      Scheduled Procedures

      Put this proc in a file /packages/myfirstpackage/tcl/scheduled-init.tcl. Files in /tcl with the -init.tcl ending are sourced on server -startup. This one executes my_proc every 60 seconds:

      -ad_schedule_proc 60 myfirstpackage::my_proc
      -

      This executes once a day, at midnight:

      -ad_schedule_proc \
      +startup. This one executes my_proc every 60 seconds:

      ad_schedule_proc 60 myfirstpackage::my_proc
      +

      This executes once a day, at midnight:

      ad_schedule_proc \
           -schedule_proc ns_schedule_daily \
           [list 0 0] \
           myfirstpackage::my_proc
      Index: openacs-4/packages/acs-core-docs/www/tutorial-second-database.adp
      ===================================================================
      RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-second-database.adp,v
      diff -u -r1.3.2.5 -r1.3.2.6
      --- openacs-4/packages/acs-core-docs/www/tutorial-second-database.adp	13 Jul 2023 12:43:23 -0000	1.3.2.5
      +++ openacs-4/packages/acs-core-docs/www/tutorial-second-database.adp	2 Sep 2024 09:40:24 -0000	1.3.2.6
      @@ -2,10 +2,14 @@
       {/doc/acs-core-docs/ {ACS Core Documentation}} {Connect to a second database}
       Connect to a second database
       
      +              
       
       		    

      @@ -16,8 +20,7 @@
    • Modify config.tcl to accommodate the legacy database, and to ensure that the legacy database is not used for standard OpenACS -queries:

      -ns_section ns/db/pools
      +queries:

      ns_section ns/db/pools
       ns_param   pool1              "Pool 1"
       ns_param   pool2              "Pool 2"
       ns_param   pool3              "Pool 3"
      @@ -69,20 +72,17 @@
       ns_section ns/server/${server}/acs/database
       ns_param database_names [list main legacy]
       ns_param pools_main [list pool1 pool2 pool3]
      -ns_param pools_legacy [list legacy]
      -
      +ns_param pools_legacy [list legacy]
    • To use the legacy database, use the -dbn flag for any of the db_ API calls. For example, suppose there is a table called "foo" in the legacy system, with a field "bar". List "bar" for all records with this Tcl -file:

      -db_foreach -dbn legacy get_bar_query {
      +file:

      db_foreach -dbn legacy get_bar_query {
         select bar from foo
         limit 10
       } {
         ns_write "<br/>$bar"
      -}
      -
      +}
    • Index: openacs-4/packages/acs-core-docs/www/tutorial-specs.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-specs.adp,v diff -u -r1.4.2.7 -r1.4.2.8 --- openacs-4/packages/acs-core-docs/www/tutorial-specs.adp 13 Jul 2023 12:43:23 -0000 1.4.2.7 +++ openacs-4/packages/acs-core-docs/www/tutorial-specs.adp 2 Sep 2024 09:40:24 -0000 1.4.2.8 @@ -2,18 +2,21 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Write the Requirements and Design Specs} Write the Requirements and Design Specs +

      Write the Requirements and Design Specs

      Before you get started you should make yourself familiar with the tags that are used to write your documentation. For tips on editing SGML files in emacs, see the -section called “OpenACS Documentation -Guide”.

      It's time to document. For the tutorial we'll use +section called “OpenACS Documentation Guide”.

      It's time to document. For the tutorial we'll use pre-written documentation. When creating a package from scratch, start by copying the documentation template from /var/lib/aolserver/openacs-dev/packages/acs-core-docs/xml/docs/xml/package-documentation-template.xml to myfirstpackage/www/docs/xml/index.xml.

      You then edit that file with emacs to write the requirements and @@ -22,13 +25,11 @@ www/doc/xml directory, and store png or jpg versions of supporting files in the www/doc directory.

      For this tutorial, you should instead install the pre-written documentation files for the tutorial app. Log in as $OPENACS_SERVICE_NAME, create the -standard directories, and copy the prepared documentation:

      -[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/
      +standard directories, and copy the prepared documentation:

      [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/
       [$OPENACS_SERVICE_NAME myfirstpackage]$ mkdir -p www/doc/xml
       [$OPENACS_SERVICE_NAME myfirstpackage]$ cd www/doc/xml
       [$OPENACS_SERVICE_NAME xml]$ cp /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/myfirstpackage/* .
      -[$OPENACS_SERVICE_NAME xml]$
      -

      OpenACS uses DocBook for documentation. DocBook is an XML +[$OPENACS_SERVICE_NAME xml]$

      OpenACS uses DocBook for documentation. DocBook is an XML standard for semantic markup of documentation. That means that the tags you use indicate meaning, not intended appearance. The style sheet will determine appearance. You will edit the text in an XML @@ -41,8 +42,7 @@ stored in the www/docs/ directory. A Makefile is provided to generate html from the xml, and copy all of the supporting files. If Docbook is set up -correctly, all you need to do is:

      -[$OPENACS_SERVICE_NAME xml]$ make
      +correctly, all you need to do is:

      [$OPENACS_SERVICE_NAME xml]$ make
       cd .. ; /usr/bin/xsltproc ../../../acs-core-docs/www/xml/openacs.xsl xml/index.xml
       Writing requirements-introduction.html for chapter(requirements-introduction)
       Writing requirements-overview.html for chapter(requirements-overview)
      @@ -58,14 +58,13 @@
       Writing admin-guide.html for chapter(admin-guide)
       Writing bi01.html for bibliography
       Writing index.html for book
      -[$OPENACS_SERVICE_NAME xml]$
      -

      Verify that the documentation was generated and reflects your +[$OPENACS_SERVICE_NAME xml]$

      Verify that the documentation was generated and reflects your changes by browsing to http://yoursite:8000/myfirstpackage/doc

      Index: openacs-4/packages/acs-core-docs/www/tutorial-upgrade-scripts.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-upgrade-scripts.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/tutorial-upgrade-scripts.adp 13 Jul 2023 12:43:23 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/tutorial-upgrade-scripts.adp 2 Sep 2024 09:40:24 -0000 1.4.2.6 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Writing upgrade scripts} Writing upgrade scripts +

      @@ -24,9 +28,8 @@ changes are more serious and fundamental changes than the program .tcl files.

      Now use the APM to create a new package version 1.0b2. Commit all your changes, tag the release (the section called -“Distributing upgrades of your -package”), and both new installations and upgrades -will be taken care of.

      +“Distributing upgrades of your package”), and both new +installations and upgrades will be taken care of.

      {/doc/acs-core-docs/ {ACS Core Documentation}} {Distributing upgrades of your package} Distributing upgrades of your package +

      @@ -20,13 +24,12 @@ release a new version of your package.

      For the sake of this example, let's assume you are the package owner of the notes package. It is currently at version 1.5, and you are planning on -releasing version 1.6. It is also located in OpenACS's CVS.

      To release your package:

      -cd /path/to/notes
      +releasing version 1.6. It is also located in OpenACS's CVS.

      To release your package:

      cd /path/to/notes
       cvs commit -m "Update package to version 1.6."
       cvs tag notes-1-6-final
       cvs tag -F openacs-5-1-compat
      -

      Of course, make sure you write upgrade scripts (the section called -“Writing upgrade scripts”)

      +

      Of course, make sure you write upgrade scripts (the section called “Writing upgrade +scripts”)

      {/doc/acs-core-docs/ {ACS Core Documentation}} {Using .vuh files for pretty URLs} Using .vuh files for pretty URLs +

      @@ -14,11 +18,9 @@ notes. Instead of note-edit?item_id=495, we can use note/495. To do this, we will need a new .vuh file for redirection and we will need to change the -referring links in note-list. First, add the vuh:

      -[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www
      +referring links in note-list. First, add the vuh:

      [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www
       [$OPENACS_SERVICE_NAME www]$ emacs note.vuh
      -

      Paste this into the file:

      -# Transform requests of type: a/b
      +

      Paste this into the file:

      # Transform requests of type: a/b
       # into this internal request: A?c=b
       # for example, note/495 > note-edit?item_id=496
       # a: base name of this .vuh file
      @@ -50,8 +52,7 @@
       able to look up an item based on pretty id.

      We use rp_form_put to store the item id in the internal register that the next page is expecting, and then redirects the request in process internally -(ie, without a browser refresh).

      Next, modify note-list so that its link is of the new form.:

      -[$OPENACS_SERVICE_NAME www]$ emacs ../lib/note-edit.tcl
      +(ie, without a browser refresh).

      Next, modify note-list so that its link is of the new form.:

      [$OPENACS_SERVICE_NAME www]$ emacs ../lib/note-edit.tcl
       
       db_multirow \
           -extend {
      Index: openacs-4/packages/acs-core-docs/www/tutorial-wysiwyg-editor.adp
      ===================================================================
      RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-wysiwyg-editor.adp,v
      diff -u -r1.4.2.5 -r1.4.2.6
      --- openacs-4/packages/acs-core-docs/www/tutorial-wysiwyg-editor.adp	13 Jul 2023 12:43:23 -0000	1.4.2.5
      +++ openacs-4/packages/acs-core-docs/www/tutorial-wysiwyg-editor.adp	2 Sep 2024 09:40:24 -0000	1.4.2.6
      @@ -2,10 +2,14 @@
       {/doc/acs-core-docs/ {ACS Core Documentation}} {Enabling WYSIWYG}
       Enabling WYSIWYG
       
      +              
       
       		    

      @@ -16,17 +20,15 @@ OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

      Most of the forms in OpenACS are created using the form builder, see the section -called “Using Form Builder: building html forms -dynamically”. For detailed information on the API -take a look here.

      The following section shows how you can modify your form to +called “Using Form Builder: building html forms dynamically”. +For detailed information on the API take a look here.

      The following section shows how you can modify your form to allow WYSIWYG functionalities.

      Convert your page to use ad_form (some changes but worth it)

      Here an examples. From:

               template::form create my_form
               template::element create my_form my_form_id -label "The ID" -datatype integer -widget hidden
               template::element create my_form my_input_field_1 -html { size 30 } -label "Label 1" -datatype text -optional
               template::element create my_form my_input_field_2 -label "Label 2" -datatype text -help_text "Some Help" -after_html {<a name="#">Anchor</a>}
      -        
      -

      To:

      +        

      To:

               ad_form -name my_form -form {
                       my_form_id:key(acs_object_id_seq)
                       {my_input_field_1:text,optional
      @@ -38,20 +40,17 @@
                          {after_html
                      {<a name="#">Anchor</a>}}}
               } ...
      -        
      -
      +

      Warning

      You must not give your form the same name that your page has. Otherwise HTMLArea won't load.

      Convert your textarea widget to a richtext widget and enable htmlarea.

      The htmlarea_p-flag can be used to prevent WYSIWYG functionality. Defaults to true if left away.

      From:

               {my_input_field_2:text
      -        
      -

      To:

      +        

      To:

               {my_input_field_2:richtext(richtext)
                               {htmlarea_p "t"}
      -        
      -

      The richtext widget presents a list with two elements: text and +

      The richtext widget presents a list with two elements: text and content type. To learn more on existing content types search in Google for "MIME-TYPES" or take a look at the cr_mime_types table.

      Make sure that both values are passed as a list to your @@ -65,16 +64,14 @@ -on_request block. If you have the format stored in the database pass this as well else use "text/html":

               set my_input_field_2 [template::util::richtext::create $my_input_field_2 "text/html"]
      -        
      -

      Now make sure that your SQL queries that do the data +

      Now make sure that your SQL queries that do the data manipulation retrieve the correct value. If you simply use my_input_field_2 you will store a list. Thus you need to add an -on_submit block:

               set my_input_field_2 [ template::util::richtext::get_property contents $my_input_field_2]
               set format [ template::util::richtext::get_property format $my_input_field_2] #This is optional
      -        
      -

      Now the correct values for my_input_field_2 and format +

      Now the correct values for my_input_field_2 and format are passed to the -new_data and -edit_data blocks which don't need to get touched.

      To make HTMLArea optional per package instance define a string @@ -86,12 +83,10 @@ ... {htmlarea_p $use_wysiwyg_p} - -

      The -on_request switch should set this +

      The -on_request switch should set this value for your form.

               set htmlarea_p $use_wysiwyg_p
      -        
      -

      All you need now is a configuration page where the user can +

      All you need now is a configuration page where the user can change this setting. Create a configure.tcl file:

       ad_page_contract {
       
      @@ -126,15 +121,13 @@
               <property name="context">\@context\@</property>
       
               <formtemplate id="categories_mode"></formtemplate>
      -        
      -

      And finally reference this page from your admin page

      +        

      And finally reference this page from your admin page

               #TCL:
               set return_url [ad_conn url]
       
               #ADP:
               <a href=configure?<%=[export_vars -url {return_url}]%>>Configure</a>
      -        
      -
      +

      {/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 9. Development -Tutorial} -Chapter 9. Development -Tutorial +{/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 9. Development Tutorial} +Chapter 9. Development Tutorial +

      -Chapter 9. Development -Tutorial

      +Chapter 9. Development Tutorial

      Index: openacs-4/packages/acs-core-docs/www/unix-installation.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/unix-installation.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/unix-installation.adp 13 Jul 2023 12:43:23 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/unix-installation.adp 2 Sep 2024 09:40:24 -0000 1.4.2.6 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Install a Unix-like system and supporting software} Install a Unix-like system and supporting software +

      @@ -37,14 +41,14 @@

      In order to cut and paste the example code into your shell, you must first do Setting a global shell variable for cut and paste.

      To install a machine to the specifications of the Reference -Platform, do the walkthrough -of the Red Hat 8.0 Install for OpenACS.

      ($‌Id: os.xml,v 1.16 2017/08/07 23:47:55 gustafn +Platform, do the walkthrough of the Red +Hat 8.0 Install for OpenACS.

      ($‌Id: os.xml,v 1.16 2017/08/07 23:47:55 gustafn Exp $)
      Index: openacs-4/packages/acs-core-docs/www/update-repository.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/update-repository.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/update-repository.adp 13 Jul 2023 12:43:23 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/update-repository.adp 2 Sep 2024 09:40:24 -0000 1.4.2.6 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {How to Update the OpenACS.org repository} How to Update the OpenACS.org repository +

      @@ -31,8 +35,7 @@ for building the repository, invoked with this shell script. Since the page circumvents security checks for ease of use, the entire site is limited to local requests. The script is called daily with -a cron job.

      -#!/bin/sh
      +a cron job.

      #!/bin/sh
       #set -x
       
       STATUS=`wget --output-document - http://127.0.0.1:8002/build-repository.tcl | grep DONE | wc -l`
      @@ -42,8 +45,7 @@
           rm -rf /web/openacs.org/www/repository.old
           mv /web/openacs.org/www/repository /web/openacs.org/www/repository.old
           cp -r /web/repository/www/repository /web/openacs.org/www/repository
      -fi
      -
      +fi

      Index: openacs-4/packages/acs-core-docs/www/update-translations.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/update-translations.adp,v diff -u -r1.4.2.6 -r1.4.2.7 --- openacs-4/packages/acs-core-docs/www/update-translations.adp 13 Jul 2023 12:43:23 -0000 1.4.2.6 +++ openacs-4/packages/acs-core-docs/www/update-translations.adp 2 Sep 2024 09:40:24 -0000 1.4.2.7 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {How to Update the translations} How to Update the translations +

      @@ -16,13 +20,11 @@ format [two-letter code for language, lowercase]_[TWO-LETTER CODE FOR COUNTRY, UPPER-CASE], and create a sql command. A example sql command for creating a -locale is:

      -insert into ad_locales 
      +locale is:

      insert into ad_locales 
              (locale, label, language, country, nls_language, nls_territory, 
               nls_charset, mime_charset, default_p, enabled_p)
              values ('fa_IR', 'Farsi (IR)', 'fa', 'IR', 'FARSI', 'IRAN', 'AL24UTFFSS', 
      -        'windows-1256', 't', 'f');
      -

      Put this command into the following four files. For the upgrade + 'windows-1256', 't', 'f');

      Put this command into the following four files. For the upgrade files, the correct filename will depend on the exact version.

      • /packages/acs-lang/sql/postgresql/ad-locales.sql

      • /packages/acs-lang/sql/postgresql/upgrade/upgrade-current-version.sql

      • /packages/acs-lang/sql/oracle/ad-locales.sql

      • /packages/acs-lang/sql/oracle/upgrade/upgrade-current-version.sql

      @@ -36,10 +38,8 @@ usually, /etc/config.tcl and /etc/daemontools/run and modify appropriately. Also, copy over several translation-server-only -files:

      -...TBD
      -          
      -
      +files:

      ...TBD
      +          
    • Shut down the production site and put up a notice (no procedure on how to do this yet.)

    • Start the new site, and upgrade it.

    • Go to ACS Lang admin page and click "Import All Messages"

    • Resolve conflicts, if any, on the provided page.

    • Back on the admin page, click the export link. If there are Index: openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.adp,v diff -u -r1.4.2.11 -r1.4.2.12 --- openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.adp 1 Aug 2024 08:03:42 -0000 1.4.2.11 +++ openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.adp 2 Sep 2024 09:40:24 -0000 1.4.2.12 @@ -2,14 +2,17 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Upgrading 4.5 or higher to 4.6.3} Upgrading 4.5 or higher to 4.6.3 +

      -Upgrading 4.5 or higher to 4.6.3

      The required platform for OpenACS 4.6 is the same as 4.5, with +Upgrading 4.5 or higher to 4.6.3

    • The required platform for OpenACS 4.6 is the same as 4.5, with the exception of OpenFTS. OpenACS 4.6 and later require OpenFTS 0.3.2 for full text search on PostgreSQL. If you have OpenFTS 0.2, you'll need to upgrade.

      If upgrading from 4.4, you need to manually run @@ -21,27 +24,21 @@

      1. -Make a Backup. Back up the database -and filesystem (see the section called -“Manual backup and -recovery”).

      2. -OPTIONAL: Upgrade -OpenFTS. the section called -“Upgrading OpenFTS from 0.2 to -0.3.2” +Make a Backup. Back up the database and +filesystem (see the section called “Manual backup and +recovery”).

      3. +OPTIONAL: Upgrade OpenFTS. the section called “Upgrading +OpenFTS from 0.2 to 0.3.2”

      4. -

        Stop the server

        -[root root]# svc -d /service/$OPENACS_SERVICE_NAME
        +

        Stop the server

        [root root]# svc -d /service/$OPENACS_SERVICE_NAME
         
         
      5. -Upgrade the filesystem. the section called -“Upgrading the OpenACS -files” +Upgrade the filesystem. the section called “Upgrading the +OpenACS files”

      6. Start the -server

        -[root root]# svc -u /service/$OPENACS_SERVICE_NAME
        +server

        [root root]# svc -u /service/$OPENACS_SERVICE_NAME
         
         
      7. @@ -57,8 +54,7 @@ kernel by itself, and then come back and upgrade the rest of the desired packages in a second pass.

      8. On the next screen, click Install Packages

      9. -

        When prompted, restart the server:

        -[root root]# restart-aolserver $OPENACS_SERVICE_NAME
        +

        When prompted, restart the server:

        [root root]# restart-aolserver $OPENACS_SERVICE_NAME
         
         
      10. Wait a minute, then browse to the package manager, http://yourserver/acs-admin/apm.

      11. Check that the kernel upgrade worked by clicking All and making sure that Index: openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.html,v diff -u -r1.30.2.8 -r1.30.2.9 --- openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.html 1 Aug 2024 08:03:42 -0000 1.30.2.8 +++ openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.html 2 Sep 2024 09:40:24 -0000 1.30.2.9 @@ -1,5 +1,5 @@ -Upgrading 4.5 or higher to 4.6.3

      Prev Chapter 5. Upgrading Next

      Upgrading 4.5 or higher to 4.6.3

      The required platform for OpenACS 4.6 is the same as +Upgrading 4.5 or higher to 4.6.3

      Upgrading 4.5 or higher to 4.6.3

      The required platform for OpenACS 4.6 is the same as 4.5, with the exception of OpenFTS. OpenACS 4.6 and later require OpenFTS 0.3.2 for full text search on PostgreSQL. If you have OpenFTS 0.2, you'll need to upgrade.

      If upgrading from 4.4, you need to manually run acs-kernel/sql/postgres/upgrade-4.4-4.5.sql. See Bug #632

      1. Make a Backup. Back up the database and filesystem (see the section called “Manual backup and recovery”).

      2. OPTIONAL: Upgrade OpenFTS. the section called “Upgrading OpenFTS from 0.2 to 0.3.2”

      3. Stop the server

        [root root]# svc -d /service/$OPENACS_SERVICE_NAME
      4. Upgrade the filesystem. the section called “Upgrading the OpenACS files”

      5. Index: openacs-4/packages/acs-core-docs/www/upgrade-4.6.3-to-5.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-4.6.3-to-5.adp,v diff -u -r1.4.2.6 -r1.4.2.7 --- openacs-4/packages/acs-core-docs/www/upgrade-4.6.3-to-5.adp 13 Jul 2023 12:43:23 -0000 1.4.2.6 +++ openacs-4/packages/acs-core-docs/www/upgrade-4.6.3-to-5.adp 2 Sep 2024 09:40:24 -0000 1.4.2.7 @@ -2,37 +2,37 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Upgrading OpenACS 4.6.3 to 5.0} Upgrading OpenACS 4.6.3 to 5.0 +

        Upgrading OpenACS 4.6.3 to 5.0

        • -Oracle. This forum posting -documents how to upgrade an Oracle installation from OpenACS 4.6.3 to +Oracle. This forum posting documents +how to upgrade an Oracle installation from OpenACS 4.6.3 to 5 .

        • -PostgreSQL. You must use PostgreSQL -7.3.x or newer to upgrade OpenACS beyond 4.6.3. See Upgrade PostgreSQL to +PostgreSQL. You must use PostgreSQL 7.3.x +or newer to upgrade OpenACS beyond 4.6.3. See Upgrade PostgreSQL to 7.3; Table 2.2, -“Version Compatibility -Matrix” +“Version Compatibility Matrix”

          1. Back up the database and filesystem.

          2. Upgrade the filesystem for -packages/acs-kernel. the section called -“Upgrading the OpenACS -files” +packages/acs-kernel. the section called “Upgrading the +OpenACS files”

          3. Upgrade the kernel manually. (There is a script to do most of the rest: /contrib/misc/upgrade_4.6_to_5.0.sh on HEAD). You'll still have to do a lot of stuff manually, but automated -trial and error is much more fun.)

            -[root root]# su - $OPENACS_SERVICE_NAME
            +trial and error is much more fun.)

            [root root]# su - $OPENACS_SERVICE_NAME
             
             [$OPENACS_SERVICE_NAME aolserver]$ cd /var/lib/aolserver/ $OPENACS_SERVICE_NAME/packages/acs-kernel/sql/postgresql/upgrade
             

            Manually execute each of the upgrade scripts in sequence, either @@ -41,8 +41,7 @@ -f upgrade-4.6.3-4.6.4.sql $OPENACS_SERVICE_NAME . Run the scripts in this order (order is tentative, not -verified):

            -psql -f upgrade-4.6.3-4.6.4.sql $OPENACS_SERVICE_NAME
            +verified):

            psql -f upgrade-4.6.3-4.6.4.sql $OPENACS_SERVICE_NAME
             psql -f upgrade-4.6.4-4.6.5.sql $OPENACS_SERVICE_NAME
             psql -f upgrade-4.6.5-4.6.6.sql $OPENACS_SERVICE_NAME
             psql -f upgrade-4.7d-4.7.2d.sql $OPENACS_SERVICE_NAME
            @@ -58,8 +57,7 @@
             psql -f upgrade-5.0.0b3-5.0.0b4.sql $OPENACS_SERVICE_NAME
             
          4. -

            Upgrade ACS Service Contracts manually:

            -[$OPENACS_SERVICE_NAME aolserver]$ cd /var/lib/aolserver/ $OPENACS_SERVICE_NAME/packages/acs-service-contracts/sql/postgresql/upgrade
            +

            Upgrade ACS Service Contracts manually:

            [$OPENACS_SERVICE_NAME aolserver]$ cd /var/lib/aolserver/ $OPENACS_SERVICE_NAME/packages/acs-service-contracts/sql/postgresql/upgrade
             psql -f upgrade-4.7d2-4.7d3.sql $OPENACS_SERVICE_NAME
             
          5. @@ -73,8 +71,7 @@ it's harmless?) Create a file which will be executed on startup which takes care of a few issues with authentication and internationalization: create $OPENACS_SERVICE_NAME/tcl/zzz-postload.tcl -containing:

            -if {![apm_package_installed_p acs-lang]} {
            +containing:

            if {![apm_package_installed_p acs-lang]} {
             apm_package_install -enable -mount_path acs-lang $::acs::rootdir/packages/acs-lang/acs-lang.info
             lang::catalog::import -locales [list "en_US"]
             }
            @@ -89,8 +86,7 @@
             acs-kernel 0 number \
             security 1 1
             parameter::set_value -package_id [ad_acs_kernel_id] -parameter UsePasswordWidgetForUsername -value 0
            -}
            -
            +}
          6. If you can login, visit /acs-admin/apm and upgrade acs-kernel and acs-service-contract and uncheck the data model scripts. Restart. If everything is still working, make another backup of the Index: openacs-4/packages/acs-core-docs/www/upgrade-5-0-dot.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-5-0-dot.adp,v diff -u -r1.4.2.6 -r1.4.2.7 --- openacs-4/packages/acs-core-docs/www/upgrade-5-0-dot.adp 13 Jul 2023 12:43:23 -0000 1.4.2.6 +++ openacs-4/packages/acs-core-docs/www/upgrade-5-0-dot.adp 2 Sep 2024 09:40:24 -0000 1.4.2.7 @@ -2,20 +2,23 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Upgrading an OpenACS 5.0.0 or greater installation} Upgrading an OpenACS 5.0.0 or greater installation +

            Upgrading an OpenACS 5.0.0 or greater installation

            • -Upgrading a stock site. If you have -no custom code, and your site is not in a CVS repository, upgrade -with these steps:

                +Upgrading a stock site. If you have no +custom code, and your site is not in a CVS repository, upgrade with +these steps:

                1. Go to /acs-admin/install/ and click "Upgrade Your System" in "Install from OpenACS Repository"

                2. Select all of the packages you want to upgrade and proceed

                3. After upgrade is complete, restart the server as indicated.

                4. If you are using locales other than en_US, go to acs-lang/admin and "Import all Messages" to load the new translated @@ -24,14 +27,13 @@

              1. -Upgrading a Custom or CVS site. If -you have custom code, and your site is in a CVS repository, upgrade +Upgrading a Custom or CVS site. If you +have custom code, and your site is in a CVS repository, upgrade with these steps:

                1. Upgrade the filesystem for all packages in -use. the section called -“Upgrading the OpenACS -files” +use. the section called “Upgrading the +OpenACS files”

                2. Go to /acs-admin/install/ and click "Upgrade Your System" in "Install from local filesystem"

                3. Select all of the packages you want to upgrade and proceed

                4. After upgrade is complete, restart the server as indicated.

                5. If you are using locales other than en_US, go to acs-lang/admin and "Import all Messages" to load the new translated Index: openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.adp,v diff -u -r1.5.2.11 -r1.5.2.12 --- openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.adp 1 Aug 2024 08:03:42 -0000 1.5.2.11 +++ openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.adp 2 Sep 2024 09:40:24 -0000 1.5.2.12 @@ -2,10 +2,13 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Upgrading the OpenACS files} Upgrading the OpenACS files +

                  @@ -22,8 +25,7 @@ filesystem for you. If you are using the last method, you can skip this page. This page describes whether or not you need to be upgrading using this page or not: the section -called “Upgrading an OpenACS 5.0.0 or greater -installation” +called “Upgrading an OpenACS 5.0.0 or greater installation”

                  @@ -32,11 +34,10 @@
                6. Upgrading files for a site which is not in a CVS -repository. Unpack the tarball into a new -directory and copy its contents on top of your working directory. -Or just 'install software', select remote repository, and -upgrade your files from there.

                  -[root root]# su - $OPENACS_SERVICE_NAME
                  +repository. Unpack the tarball into a new directory
                  +and copy its contents on top of your working directory. Or just
                  +'install software', select remote repository, and upgrade
                  +your files from there.

                  [root root]# su - $OPENACS_SERVICE_NAME
                   
                   [$OPENACS_SERVICE_NAME aolserver]$ cd /var/lib/aolserver
                   [$OPENACS_SERVICE_NAME web]$ tar xzf /var/tmp/openacs-5-1.tar.gz
                  @@ -57,20 +58,20 @@
                   version, without overriding your own local customizations.

                  This diagram explains the basic idea. However, the labels are incorrect. Step 1(a) has been removed, and Step 1(b) should be labelled Step 1.

                  -

                  Figure 5.2. Upgrading a local CVS -repository

                  Upgrading a local CVS repository
                  +

                  Figure 5.2. Upgrading a local +CVS repository

                  Upgrading a local CVS repository

                  • -Step 0: Set up a working CVS -checkout. To get your OpenACS code into your -local CVS repository, you will set up a working CVS checkout of -OpenACS. When you want to update your site, you'll update the -working CVS checkout, import those changes into your local CVS -checkout, create a temporary CVS checkout to merge your local -changes, fix any conflicts, commit your changes, and then update -your site. It sounds complicated, but it's not too bad, and it -is the best way to work around CVS's limitations.

                    This part describes how to set up your working CVS checkout. +Step 0: Set up a working CVS checkout. To +get your OpenACS code into your local CVS repository, you will set +up a working CVS checkout of OpenACS. When you want to update your +site, you'll update the working CVS checkout, import those +changes into your local CVS checkout, create a temporary CVS +checkout to merge your local changes, fix any conflicts, commit +your changes, and then update your site. It sounds complicated, but +it's not too bad, and it is the best way to work around +CVS's limitations.

                    This part describes how to set up your working CVS checkout. Once it is set up, you'll be able to update any packages using the existing working CVS checkout. We use one dedicated directory for each branch of OpenACS - if you are using OpenACS 5.1,x, you @@ -81,8 +82,7 @@ latest compatible version of each package. Each minor release of OpenACS since 5.0 has this tagging structure. For example, OpenACS 5.1.x has openacs-5-1-compat.

                    You will want to separately check out all the packages you are -using.

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

                    [root root]# su - $OPENACS_SERVICE_NAME
                     
                     [$OPENACS_SERVICE_NAME aolserver]$ cd /var/lib/aolserver
                     [$OPENACS_SERVICE_NAME aolserver]$ cvs -d :pserver:anonymous\@cvs.openacs.org:/cvsroot checkout -r openacs-5-1-compat acs-core
                    @@ -98,13 +98,11 @@
                     tree. You might want to start over, remove your working CVS
                     checkout, and try again.

                  • -

                    Step 1: Import new OpenACS -code. 

                      +

                      Step 1: Import new OpenACS code. 

                      • -Update CVS. Update your local CVS -working checkout (unless you just set it up).

                        -[root root]# su - $OPENACS_SERVICE_NAME
                        +Update CVS. Update your local CVS working
                        +checkout (unless you just set it up).

                        [root root]# su - $OPENACS_SERVICE_NAME
                         
                         [$OPENACS_SERVICE_NAME aolserver]$ cd /var/lib/aolserver/openacs-5-1
                         
                        @@ -113,9 +111,8 @@
                         
                      • Update a single package via cvs working -checkout. You can add or upgrade a single -package at a time, if you already have a cvs working directory.

                        -[root root]# su - $OPENACS_SERVICE_NAME
                        +checkout. You can add or upgrade a single package at
                        +a time, if you already have a cvs working directory.

                        [root root]# su - $OPENACS_SERVICE_NAME
                         
                         [$OPENACS_SERVICE_NAME aolserver]$ cd /var/lib/aolserver/packages/openacs-5-1
                         
                        @@ -127,21 +124,19 @@
                         
                    • -Step 2: Merge New OpenACS code. Now -that you have a local copy of the new OpenACS code, you need to -import it into your local CVS repository and resolve any conflicts -that occur.

                      Import the new files into your cvs repository; where they match -existing files, they will become the new version of the file.

                      -[$OPENACS_SERVICE_NAME openacs-5-1]$  cd /var/lib/aolserver/openacs-5-1
                      +Step 2: Merge New OpenACS code. Now that
                      +you have a local copy of the new OpenACS code, you need to import
                      +it into your local CVS repository and resolve any conflicts that
                      +occur.

                      Import the new files into your cvs repository; where they match +existing files, they will become the new version of the file.

                      [$OPENACS_SERVICE_NAME openacs-5-1]$  cd /var/lib/aolserver/openacs-5-1
                       
                       [$OPENACS_SERVICE_NAME openacs-5-1]$  cvs -d /var/lib/cvs import -m "upgrade to OpenACS 5.1" $OPENACS_SERVICE_NAME OpenACS openacs-5-1
                       
                       

                      Tip

                      If adding or upgrading a single package, run the cvs import from within the base directory of that package, and adjust the cvs command accordingly. In this example, we are adding the -myfirstpackage package.

                      -[root root]# su - $OPENACS_SERVICE_NAME
                      +myfirstpackage package.

                      [root root]# su - $OPENACS_SERVICE_NAME
                       
                       [$OPENACS_SERVICE_NAME aolserver]$ cd /var/lib/aolserver/openacs-5-0/package/myfirstpackage
                       
                      @@ -152,13 +147,11 @@
                       uses the cvs keyword yesterday, making the assumption that you
                       haven't checked in new code to your local tree in the last day.
                       This section should be improved to use tags instead of the keyword
                      -yesterday!

                      -[$OPENACS_SERVICE_NAME openacs-5.1]$  cd /var/lib/aolserver
                      +yesterday!

                      [$OPENACS_SERVICE_NAME openacs-5.1]$  cd /var/lib/aolserver
                       [$OPENACS_SERVICE_NAME tmp]$ rm -rf $OPENACS_SERVICE_NAME-upgrade
                       [$OPENACS_SERVICE_NAME tmp]$ mkdir $OPENACS_SERVICE_NAME-upgrade
                       [$OPENACS_SERVICE_NAME tmp]$ cvs checkout -d $OPENACS_SERVICE_NAME-upgrade -jOpenACS:yesterday -jOpenACS -kk $OPENACS_SERVICE_NAME > cvs.txt 2>&1
                      -(CVS feedback here)
                      -

                      The file /var/tmp/openacs-upgrade/cvs.txt contains the results +(CVS feedback here)

                      The file /var/tmp/openacs-upgrade/cvs.txt contains the results of the upgrade. If you changed files that are part of the OpenACS tarball and those changes conflict, you'll have to manually reconcile them. Use the emacs command M-x sort-lines (you may have to click @@ -167,34 +160,29 @@ C, open that file and manually resolve the conflict by deleting the excess lines. When you're finished, or if there aren't any conflicts, save and exit.

                      Once you've fixed any conflicts, commit the new code to your -local tree.

                      -[$OPENACS_SERVICE_NAME tmp]$ cd $OPENACS_SERVICE_NAME-upgrade
                      +local tree.

                      [$OPENACS_SERVICE_NAME tmp]$ cd $OPENACS_SERVICE_NAME-upgrade
                       [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME-upgrade]$ cvs commit -m "Upgraded to 5.1"
                       
                    • Step 3: Upgrade your local staging -site. Update your working tree with the new -files. The CVS flags ensure that new directories are created and -pruned directories destroyed.

                      -[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME-upgrade]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
                      +site. Update your working tree with the new files.
                      +The CVS flags ensure that new directories are created and pruned
                      +directories destroyed.

                      [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME-upgrade]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
                       
                       [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cvs up -Pd
                       (CVS feedback)
                       [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ exit
                      -[root root]# 
                      -
                      +[root root]#

                  Upgrading files for a site using -the OpenACS CVS repository (cvs.openacs.org)

                  1. -[$OPENACS_SERVICE_NAME ~]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
                    +the OpenACS CVS repository (cvs.openacs.org)

                    1. [$OPENACS_SERVICE_NAME ~]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
                       
                       [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cvs up -Pd
                       (CVS feedback)
                      -[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$
                      -
                    +[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$
                7. Upgrading a Index: openacs-4/packages/acs-core-docs/www/upgrade-overview.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-overview.adp,v diff -u -r1.4.2.10 -r1.4.2.11 --- openacs-4/packages/acs-core-docs/www/upgrade-overview.adp 1 Aug 2024 08:03:42 -0000 1.4.2.10 +++ openacs-4/packages/acs-core-docs/www/upgrade-overview.adp 2 Sep 2024 09:40:24 -0000 1.4.2.11 @@ -2,10 +2,13 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Overview} Overview +

                  @@ -49,8 +52,7 @@


                  Index: openacs-4/packages/acs-core-docs/www/upgrade-supporting.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-supporting.adp,v diff -u -r1.5.2.5 -r1.5.2.6 --- openacs-4/packages/acs-core-docs/www/upgrade-supporting.adp 13 Jul 2023 12:43:24 -0000 1.5.2.5 +++ openacs-4/packages/acs-core-docs/www/upgrade-supporting.adp 2 Sep 2024 09:40:24 -0000 1.5.2.6 @@ -2,10 +2,13 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Upgrading Platform components} Upgrading Platform components +

                  @@ -25,32 +28,25 @@

                8. Build and install the new OpenFTS driver and supporting Tcl procedures. (This section of shell code is not fully documented; -please exercise care.)

                  -cd /usr/local/src/
                  +please exercise care.)

                  cd /usr/local/src/
                             tar xzf /var/tmp/Search-OpenFTS-tcl-0.3.2.tar.gz
                             chown -R root.root Search-OpenFTS-tcl-0.3.2/
                             cd Search-OpenFTS-tcl-0.3.2/
                             ./configure --with-aolserver-src=/usr/local/src/aolserver/aolserver --with-tcl=/usr/lib/
                             cd aolserver/
                             make
                  -          
                  -

                  Back up the old fts driver as a precaution and install the newly -compiled one

                  -mv /usr/local/aolserver/bin/nsfts.so /usr/local/aolserver/bin/nsfts-0.2.so 
                  +          

                  Back up the old fts driver as a precaution and install the newly +compiled one

                  mv /usr/local/aolserver/bin/nsfts.so /usr/local/aolserver/bin/nsfts-0.2.so 
                             cp nsfts.so /usr/local/aolserver/bin
                  -          
                  -

                  Build and install the OpenFTS code for PostgreSQL

                  -cd /usr/local/src/Search-OpenFTS-tcl-0.3.2/
                  +          

                  Build and install the OpenFTS code for PostgreSQL

                  cd /usr/local/src/Search-OpenFTS-tcl-0.3.2/
                             cp -r pgsql_contrib_openfts /usr/local/src/postgresql-7.2.3/contrib /usr/local/src/postgresql-7.2.3/contrib/pgsql_contrib_openfts
                             make
                             su - postgres
                             cd tsearch/
                             make
                             make install
                  -          exit
                  -

                  In order for the OpenACS 4.6 OpenFTS Engine to use the OpenFTS -0.3.2 driver, we need some commands added to the database.

                  -[root root]# su - $OPENACS_SERVICE_NAME
                  +          exit

                  In order for the OpenACS 4.6 OpenFTS Engine to use the OpenFTS +0.3.2 driver, we need some commands added to the database.

                  [root root]# su - $OPENACS_SERVICE_NAME
                   
                             [$OPENACS_SERVICE_NAME dev]$ psql $OPENACS_SERVICE_NAME -f /usr/local/pgsql/share/contrib/openfts.sql
                             CREATE
                  @@ -69,17 +65,16 @@
                   
                9. OPTIONAL: Install the new OpenFTS -Engine. If you want to upgrade the OpenFTS -Engine, do these steps. (You must have already upgraded the OpenFTS -driver to 0.3.2.)

                    +Engine. If you want to upgrade the OpenFTS Engine, do +these steps. (You must have already upgraded the OpenFTS driver to +0.3.2.)

                    1. Browse to http://yourserver/admin/site-map

                    2. On the openfts line, click on set parameters.

                    3. Change the value of openfts_tcl_src_path from /usr/local/src/Search-OpenFTS-tcl-0.2/ to /usr/local/src/Search-OpenFTS-tcl-0.3.2/

                    4. Click Set Parameters -

                    5. -[root root]# restart-aolserver $OPENACS_SERVICE_NAME
                      +

                    6. [root root]# restart-aolserver $OPENACS_SERVICE_NAME
                       
                    7. Browse to http://yourserver/openfts

                    8. Click Administration.

                    9. Click Initialize OpenFTS Engine @@ -104,8 +99,7 @@ on the dump file, and reply the dump. See Forum OpenACS Q&A: PG 7.2->7.3 upgrade gotcha?. Example:

                      1. Back up the database as per PostgreSQL.

                      2. -

                        Run the upgrade script on the backup file.

                        -[root root]# su - $OPENACS_SERVICE_NAME
                        +

                        Run the upgrade script on the backup file.

                        [root root]# su - $OPENACS_SERVICE_NAME
                         
                                   [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]# cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/bin
                                   [$OPENACS_SERVICE_NAME bin]$ ./pg_7.2to7.3_upgrade_helper.pl \
                        @@ -121,8 +115,7 @@
                         
                                   (many lines omitted)
                                   [$OPENACS_SERVICE_NAME bin]$
                        -          
                        -
                        +
                      3. Use perl to replace timestamp with timestamptz in the dump file. See example perl code in step two in /contrib/misc/upgrade_4.6_to_5.0.sh

                      4. Create a new user for PostgreSQL 7.3.x, as per the Postgres @@ -146,8 +139,8 @@

                      \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/upgrade.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade.adp,v diff -u -r1.4.2.5 -r1.4.2.6 --- openacs-4/packages/acs-core-docs/www/upgrade.adp 13 Jul 2023 12:43:24 -0000 1.4.2.5 +++ openacs-4/packages/acs-core-docs/www/upgrade.adp 2 Sep 2024 09:40:24 -0000 1.4.2.6 @@ -2,6 +2,10 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Chapter 5. Upgrading} Chapter 5. Upgrading + {/doc/acs-core-docs/ {ACS Core Documentation}} {External uptime validation} External uptime validation +

                      Index: openacs-4/packages/acs-core-docs/www/variables.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/variables.adp,v diff -u -r1.4.2.10 -r1.4.2.11 --- openacs-4/packages/acs-core-docs/www/variables.adp 1 Aug 2024 08:03:42 -0000 1.4.2.10 +++ openacs-4/packages/acs-core-docs/www/variables.adp 2 Sep 2024 09:40:24 -0000 1.4.2.11 @@ -2,10 +2,14 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {Variables} Variables +

                      @@ -19,9 +23,8 @@ OpenACS documentation staff.

                      Starting with OpenACS 5.0 and the introduction of acs-lang, we recommend retrieving date/time information from the database in ANSI format and then using lc_time_fmt to format it for display.

                      -

                      Example 12.1. Getting datetime from -the database ANSI-style

                      -db_multirow -extend { mydate_pretty } {
                      +

                      Example 12.1. Getting datetime +from the database ANSI-style

                      db_multirow -extend { mydate_pretty } {
                           select to_char(mydate, 'YYYY-MM-DD HH24:MI:SS') as mydate_ansi,
                                 ...
                           ...
                      Index: openacs-4/packages/acs-core-docs/www/win2k-installation.adp
                      ===================================================================
                      RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/win2k-installation.adp,v
                      diff -u -r1.3.2.5 -r1.3.2.6
                      --- openacs-4/packages/acs-core-docs/www/win2k-installation.adp	13 Jul 2023 12:43:24 -0000	1.3.2.5
                      +++ openacs-4/packages/acs-core-docs/www/win2k-installation.adp	2 Sep 2024 09:40:24 -0000	1.3.2.6
                      @@ -2,10 +2,14 @@
                       {/doc/acs-core-docs/ {ACS Core Documentation}} {OpenACS Installation Guide for Windows}
                       OpenACS Installation Guide for Windows
                       
                      +              
                       
                       		    

                      Index: openacs-4/packages/acs-core-docs/www/files/acs-start.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/files/acs-start.adp,v diff -u -r1.3.2.5 -r1.3.2.6 --- openacs-4/packages/acs-core-docs/www/files/acs-start.adp 13 Jul 2023 12:43:24 -0000 1.3.2.5 +++ openacs-4/packages/acs-core-docs/www/files/acs-start.adp 2 Sep 2024 09:40:24 -0000 1.3.2.6 @@ -2,6 +2,10 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {ACS Installation: Welcome} ACS Installation: Welcome +

                      ACS Installation: Welcome

                      Thank you for installing the ArsDigita Community System, a suite of @@ -14,5 +18,5 @@

                      The next step is to install the ACS kernel data model. Click the Next button to proceed.

                      -

                      acs\@arsdigita.com
                      +

                      acs\@arsdigita.com
                      Index: openacs-4/packages/acs-core-docs/www/files/dotlrn-style-2.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/files/dotlrn-style-2.adp,v diff -u -r1.2.2.5 -r1.2.2.6 --- openacs-4/packages/acs-core-docs/www/files/dotlrn-style-2.adp 13 Jul 2023 12:43:24 -0000 1.2.2.5 +++ openacs-4/packages/acs-core-docs/www/files/dotlrn-style-2.adp 2 Sep 2024 09:40:24 -0000 1.2.2.6 @@ -2,6 +2,10 @@ {/doc/acs-core-docs/ {ACS Core Documentation}} {My Space - SloanSpace} My Space - SloanSpace +

      13 ms  dml nsdb0 (main pool) -
    -update session_statistics 
    +
    update session_statistics 
     set session_count = session_count + 1, 
     repeat_count = repeat_count + 1 
    -where entry_date = trunc(sysdate)
    -
    +where entry_date = trunc(sysdate)
      124 ms  dml nsdb0 (main pool) -
    -update users
    +
    update users
     set last_visit = sysdate,
         second_to_last_visit = last_visit,
         n_sessions = n_sessions + 1
    -where user_id = 1472
    -
    +where user_id = 1472
    @@ -108,13 +108,11 @@
      6 ms  1row nsdb1 (main pool) -
    -select decode(count(1),0,0,1) 
    +
    select decode(count(1),0,0,1) 
                    from user_group_map 
                   where user_id=1472 
                     and (group_id=6
    -                     or group_id=1181)
    -
    + or group_id=1181)
    @@ -125,68 +123,54 @@
      10 ms  0or1row nsdb2 (main pool) -
    -select group_id 
    +
    select group_id 
     from administration_info 
     where module = 'intranet' 
    -and submodule is null
    -
    +and submodule is null
      13 ms  1row nsdb2 (main pool) -
    -select count(*) from user_group_map where user_id =1472 and group_id = 2
    -
    +
    select count(*) from user_group_map where user_id =1472 and group_id = 2
      9 ms  0or1row nsdb2 (main pool) -
    -select group_id 
    +
    select group_id 
     from administration_info 
     where module = 'site_wide' 
    -and submodule is null
    -
    +and submodule is null
      12 ms  1row nsdb2 (main pool) -
    -select multi_role_p from user_groups where group_id = 1
    -
    +
    select multi_role_p from user_groups where group_id = 1
      17 ms  1row nsdb2 (main pool) -
    -select decode(count(*), 0, 0, 1) from user_group_map where user_id = 1472 and group_id = 1 and role in ('administrator', 'all')
    -
    +
    select decode(count(*), 0, 0, 1) from user_group_map where user_id = 1472 and group_id = 1 and role in ('administrator', 'all')
      18 ms  0or1row nsdb2 (main pool) -
    -select first_names || ' ' || last_name as full_name, 
    +
    select first_names || ' ' || last_name as full_name, 
                     decode(portrait_upload_date,NULL,0,1) as portrait_exists_p
                from users 
    -          where user_id=1472
    -
    + where user_id=1472
      1225 ms  select nsdb2 (main pool) -
    -select ug.group_name, ug.group_id
    +
    select ug.group_name, ug.group_id
                from user_groups ug, im_projects p
               where ad_group_member_p ( 1472, ug.group_id ) = 't'
                 and ug.group_id=p.group_id
                 and p.project_status_id in (select project_status_id
                                               from im_project_status 
                                              where project_status='Open' 
                                                 or project_status='Future' )
    -          order by lower(group_name)
    -
    + order by lower(group_name)
    @@ -209,62 +193,50 @@
      1578 ms  select nsdb2 (main pool) -
    -select ug.group_name, ug.group_id
    +
    select ug.group_name, ug.group_id
                from user_groups ug, im_customers c
               where ad_group_member_p ( 1472, ug.group_id ) = 't'
                 and ug.group_id=c.group_id
                 and c.customer_status_id in (select customer_status_id 
                                               from im_customer_status 
                                              where customer_status in ('Current','Inquiries','Creating Bid','Bid out'))
    -          order by lower(group_name)
    -
    + order by lower(group_name)
      2 ms  getrow nsdb2 t54 (main pool)
      30 ms  1row nsdb2 (main pool) -
    -select sum(hours) from im_hours where user_id=1472
    +
    select sum(hours) from im_hours where user_id=1472
         and on_which_table='im_projects'
    -    and day >= sysdate - 7
    -
    + and day >= sysdate - 7
      14 ms  1row nsdb2 (main pool) -
    -select decode(count(1),0,0,1) 
    +
    select decode(count(1),0,0,1) 
                from user_groups ug
               where ad_group_member_p ( 1472, ug.group_id ) = 't'
    -            and ug.short_name='Business'
    -
    + and ug.short_name='Business'
      15 ms  1row nsdb2 (main pool) -
    -select decode(count(1),0,0,1) 
    +
    select decode(count(1),0,0,1) 
                from user_groups ug
               where ad_group_member_p ( 1472, ug.group_id ) = 't'
    -            and ug.short_name='Finance'
    -
    + and ug.short_name='Finance'
      5 ms  1row nsdb2 (main pool) -
    -select sysdate - 30 from dual
    -
    +
    select sysdate - 30 from dual
      4 ms  select nsdb2 (main pool) -
    -select newsgroup_id from newsgroups where scope = 'all_users' or scope = 'registered_users' or (scope = 'group' and group_id = 6)
    -
    +
    select newsgroup_id from newsgroups where scope = 'all_users' or scope = 'registered_users' or (scope = 'group' and group_id = 6)
    @@ -281,8 +253,7 @@
      16 ms  select nsdb2 (main pool) -
    -select news.title, news.news_item_id, news.approval_state, 
    +
    select news.title, news.news_item_id, news.approval_state, 
      expired_p(news.expiration_date) as expired_p, 
      to_char(news.release_date,'Mon DD, YYYY') as release_date_pretty
     from news_items news, users ut
    @@ -291,8 +262,7 @@
     and news.approval_state = 'approved'
     and release_date < sysdate
     and news.creation_user = ut.user_id
    -order by release_date desc, creation_date desc
    -
    +order by release_date desc, creation_date desc
    @@ -312,8 +282,7 @@
      137 ms  select nsdb2 (main pool) -
    -select g.group_name, g.group_id
    +
    select g.group_name, g.group_id
                    from user_groups g, im_projects p, im_employees_active u, im_project_types
                   where p.project_lead_id = u.user_id
                     and p.project_type_id = im_project_types.project_type_id
    @@ -338,8 +307,7 @@
                                                        from survsimp_surveys
                                                       where short_name in ('project_report'))
                                       and submission_date > sysdate - 7
    -                                  and group_id=p.group_id)) )
    -
    + and group_id=p.group_id)) )
    @@ -350,13 +318,11 @@
      20 ms  select nsdb2 (main pool) -
    -select distinct u.user_id
    +
    select distinct u.user_id
                from users_active u, user_group_map ugm
               where u.user_id = ugm.user_id
                 and ugm.group_id = 6
    -            and u.portrait is not null
    -
    + and u.portrait is not null
    @@ -508,26 +474,22 @@
      33 ms  0or1row nsdb2 (main pool) -
    -select u.first_names || ' ' || u.last_name as name, u.bio, u.skills, 
    +
    select u.first_names || ' ' || u.last_name as name, u.bio, u.skills, 
                         ug.group_name as office, ug.group_id as office_id
                    from im_employees_active u, user_groups ug, user_group_map ugm
                   where u.user_id = ugm.user_id(+)
                     and ug.group_id = ugm.group_id
                     and ug.parent_group_id = 5
                     and u.user_id = 1678
    -                and rownum < 2
    -
    + and rownum < 2
      12 ms  select nsdb2 (main pool) -
    -select ug.group_id, ug.group_name, ai.url as ai_url
    +
    select ug.group_id, ug.group_name, ai.url as ai_url
     from  user_groups ug, administration_info ai
     where ug.group_id = ai.group_id
    -and ad_group_member_p ( 1472, ug.group_id ) = 't'
    -
    +and ad_group_member_p ( 1472, ug.group_id ) = 't'
    @@ -544,9 +506,7 @@
      11 ms  1row nsdb3 (log pool) -
    -select ad_group_member_p(1472, system_administrator_group_id) from dual
    -
    +
    select ad_group_member_p(1472, system_administrator_group_id) from dual
    @@ -556,7 +516,6 @@

    - -
    webmaster\@dev.arsdigita.com
    +
    webmaster\@dev.arsdigita.com

    Last Modified: $‌Id: developer-support-example.html,v 1.2 2017/08/07 23:47:56 gustafn Exp $

    Index: openacs-4/packages/acs-developer-support/www/doc/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-developer-support/www/doc/index.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-developer-support/www/doc/index.adp 13 Jul 2023 12:49:25 -0000 1.4.2.2 +++ openacs-4/packages/acs-developer-support/www/doc/index.adp 2 Sep 2024 09:40:24 -0000 1.4.2.3 @@ -2,6 +2,10 @@ {/doc/acs-developer-support/ {ACS Developer Support}} {ACS Developer Support} ACS Developer Support +

    ACS Developer Support

    part of the ArsDigita Community System, by Jon Salz @@ -50,9 +54,7 @@ grokking the error log to see what's wrong with your page? Use the ds_comment routine instead: -

    -ds_comment "Foo is $foo"
    -
    +
    ds_comment "Foo is $foo"
    Your comment will show up at the bottom of the page, beneath the Developer Information Index: openacs-4/packages/acs-events/www/doc/design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-events/www/doc/design.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-events/www/doc/design.adp 3 Sep 2021 09:15:43 -0000 1.3.2.1 +++ openacs-4/packages/acs-events/www/doc/design.adp 2 Sep 2024 09:40:24 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-events/ {ACS Events}} {ACS Events Design Documentation} ACS Events Design Documentation +

    ACS Events Design Documentation

    by W. Scott Meeks Index: openacs-4/packages/acs-events/www/doc/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-events/www/doc/index.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-events/www/doc/index.adp 3 Sep 2021 09:15:43 -0000 1.3.2.1 +++ openacs-4/packages/acs-events/www/doc/index.adp 2 Sep 2024 09:40:24 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-events/ {ACS Events}} {ACS Events Documentation} ACS Events Documentation +

    ACS Events Documentation

    by wsmeeks\@arsdigita.com Index: openacs-4/packages/acs-events/www/doc/requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-events/www/doc/requirements.adp,v diff -u -r1.3.2.5 -r1.3.2.6 --- openacs-4/packages/acs-events/www/doc/requirements.adp 1 Aug 2024 08:03:42 -0000 1.3.2.5 +++ openacs-4/packages/acs-events/www/doc/requirements.adp 2 Sep 2024 09:40:24 -0000 1.3.2.6 @@ -2,6 +2,10 @@ {/doc/acs-events/ {ACS Events}} {ACS Events Service Requirements} ACS Events Service Requirements +

    ACS Events Service Requirements

    by W. Scott Meeks Index: openacs-4/packages/acs-lang/www/doc/i18n-design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-lang/www/doc/i18n-design.adp,v diff -u -r1.7.2.6 -r1.7.2.7 --- openacs-4/packages/acs-lang/www/doc/i18n-design.adp 6 Aug 2024 09:43:17 -0000 1.7.2.6 +++ openacs-4/packages/acs-lang/www/doc/i18n-design.adp 2 Sep 2024 09:40:24 -0000 1.7.2.7 @@ -2,6 +2,10 @@ {/doc/acs-lang/ {ACS Localization}} {ACS 4 Globalization Detailed Design} ACS 4 Globalization Detailed Design +

    ACS 4 Globalization Detailed Design

    by Henry Minsky @@ -79,7 +83,7 @@ It has not yet been decided how the user's preferred locale -will be initialized. For now, there is a site-wide default package +will be initialized. For now, there is a site wide default package parameter [parameter::get -parameter DefaultLocale -default "en_US"] , and an API for setting the locale with @@ -513,22 +517,19 @@ (i.e. do nothing special):
         <trn>Hello</trn>
    -    
    -
    + Example 2: Assign the key key hello to the text string Hello and display the translated string in the user's preferred language:
         <trn key="hello">Hello</trn>
    -    
    -
    + Example 3: Specify that Bonjour needs to be registered as the French translation for the key hello (in addition to displaying the translation in the user's preferred language):
         <trn key="hello" lang="fr">Bonjour</trn>
    -    
    -
    + Example 4: Register the string and display it in the preferred language of the current user. Note that the possible values for the type parameter are determined by what has been @@ -539,12 +540,10 @@ current web page.
         <trn key="hello" type="user">Hello</trn>
    -    
    -

    Example 5: Translates the string once at template compile time, +

    Example 5: Translates the string once at template compile time, using the effective local of the page.

         <trn key="hello" static>Hello</trn>
    -    
    -
    +

    VII. Data Model Discussion

    Internationalizing the Data Models

    Index: openacs-4/packages/acs-lang/www/doc/i18n-requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-lang/www/doc/i18n-requirements.adp,v diff -u -r1.5.2.8 -r1.5.2.9 --- openacs-4/packages/acs-lang/www/doc/i18n-requirements.adp 6 Aug 2024 09:43:17 -0000 1.5.2.8 +++ openacs-4/packages/acs-lang/www/doc/i18n-requirements.adp 2 Sep 2024 09:40:24 -0000 1.5.2.9 @@ -2,6 +2,10 @@ {/doc/acs-lang/ {ACS Localization}} {ACS 4 Globalization Requirements} ACS 4 Globalization Requirements +

    ACS 4 Globalization Requirements

    by Henry Minsky, Yon Feldman, Lars Pind, others

    I. Introduction

    @@ -160,7 +164,7 @@ 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 +
    • 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.

      Index: openacs-4/packages/acs-lang/www/doc/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-lang/www/doc/index.adp,v diff -u -r1.2.2.1 -r1.2.2.2 --- openacs-4/packages/acs-lang/www/doc/index.adp 3 Sep 2021 09:15:44 -0000 1.2.2.1 +++ openacs-4/packages/acs-lang/www/doc/index.adp 2 Sep 2024 09:40:24 -0000 1.2.2.2 @@ -2,6 +2,10 @@ {/doc/acs-lang/ {ACS Localization}} {ACS Localization Documentation} ACS Localization Documentation +

      ACS Localization Documentation

      Engineering Documentation

        Index: openacs-4/packages/acs-messaging/www/doc/design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-messaging/www/doc/design.adp,v diff -u -r1.5.2.2 -r1.5.2.3 --- openacs-4/packages/acs-messaging/www/doc/design.adp 13 Jul 2023 12:49:25 -0000 1.5.2.2 +++ openacs-4/packages/acs-messaging/www/doc/design.adp 2 Sep 2024 09:40:24 -0000 1.5.2.3 @@ -2,6 +2,10 @@ {/doc/acs-messaging/ {ACS Messaging}} {ACS Messaging Design} ACS Messaging Design +

        ACS Messaging Design

        ACS Messaging was born out of the design of the new bboard. One @@ -53,7 +57,8 @@ ACS Messaging provides the acs_messages_all view as the primary mechanism for message queries. -
        create or replace view acs_messages_all as
        +
        
        +create or replace view acs_messages_all as
             select m.message_id, m.reply_to, o.context_id, r.title, r.publish_date,
                    r.mime_type, r.content, o.creation_user
             ...
        Index: openacs-4/packages/acs-messaging/www/doc/index.adp
        ===================================================================
        RCS file: /usr/local/cvsroot/openacs-4/packages/acs-messaging/www/doc/index.adp,v
        diff -u -r1.3.2.1 -r1.3.2.2
        --- openacs-4/packages/acs-messaging/www/doc/index.adp	3 Sep 2021 09:15:45 -0000	1.3.2.1
        +++ openacs-4/packages/acs-messaging/www/doc/index.adp	2 Sep 2024 09:40:24 -0000	1.3.2.2
        @@ -2,6 +2,10 @@
         {/doc/acs-messaging/ {ACS Messaging}} {ACS Messaging Documentation}
         ACS Messaging Documentation
         
        +              
         

        ACS Messaging Documentation

        Engineering Documentation

          Index: openacs-4/packages/acs-messaging/www/doc/requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-messaging/www/doc/requirements.adp,v diff -u -r1.7.2.4 -r1.7.2.5 --- openacs-4/packages/acs-messaging/www/doc/requirements.adp 6 Aug 2024 09:43:17 -0000 1.7.2.4 +++ openacs-4/packages/acs-messaging/www/doc/requirements.adp 2 Sep 2024 09:40:24 -0000 1.7.2.5 @@ -2,6 +2,10 @@ {/doc/acs-messaging/ {ACS Messaging}} {ACS Messaging Requirements} ACS Messaging Requirements +

          ACS Messaging Requirements

          by Anukul Kapoor @@ -40,7 +44,7 @@

          The package consists of the following components:

          • A data model for representing and storing messages.
          • A data model for representing and storing attachments to -messages.
          • A mechanism for sending messages as e-mail.
          • A mechanism for integrating the message store into site-wide +messages.
          • A mechanism for sending messages as e-mail.
          • A mechanism for integrating the message store into site wide search.

          IV. Use-cases and User Scenarios

          @@ -103,9 +107,9 @@ some other message N, then M should be able to refer to N in a straightforward way.

          70.0 Search

          -

          Messages should be searchable as part of a site-wide search. +

          Messages should be searchable as part of a site wide search. Therefore, the data model must integrate with the data model for -site-wide search.

          +site wide search.

          VI.B Requirements: API

          80.0 Messages

          The system should provide the following interfaces for Index: openacs-4/packages/acs-reference/www/doc/design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-reference/www/doc/design.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-reference/www/doc/design.adp 3 Sep 2021 09:15:46 -0000 1.3.2.1 +++ openacs-4/packages/acs-reference/www/doc/design.adp 2 Sep 2024 09:40:24 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-reference/ {ACS Reference Data}} {acs-reference Design Documentation} acs-reference Design Documentation +

          acs-reference Design Documentation

          I. Introduction

          Reference data services are often overlooked in the rush to get Index: openacs-4/packages/acs-reference/www/doc/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-reference/www/doc/index.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-reference/www/doc/index.adp 3 Sep 2021 09:15:48 -0000 1.3.2.1 +++ openacs-4/packages/acs-reference/www/doc/index.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-reference/ {ACS Reference Data}} {ACS Reference Documentation} ACS Reference Documentation +

          ACS Reference Documentation

          Engineering Documentation

            Index: openacs-4/packages/acs-reference/www/doc/requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-reference/www/doc/requirements.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-reference/www/doc/requirements.adp 3 Sep 2021 09:15:49 -0000 1.3.2.1 +++ openacs-4/packages/acs-reference/www/doc/requirements.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-reference/ {ACS Reference Data}} {ACS Reference Requirements} ACS Reference Requirements +

            ACS Reference Requirements

            by Jon Griffin

            Index: openacs-4/packages/acs-service-contract/www/doc/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-service-contract/www/doc/index.adp,v diff -u -r1.7.2.4 -r1.7.2.5 --- openacs-4/packages/acs-service-contract/www/doc/index.adp 1 Aug 2024 08:03:42 -0000 1.7.2.4 +++ openacs-4/packages/acs-service-contract/www/doc/index.adp 2 Sep 2024 09:40:25 -0000 1.7.2.5 @@ -2,6 +2,10 @@ {/doc/acs-service-contract/ {ACS Service Contracts}} {ACS Service Contract Documentation} ACS Service Contract Documentation +

            ACS Service Contract Documentation

            Why

            To facilitate greater code reuse, application integration, and @@ -74,20 +78,16 @@

          Creating Interfaces

          • (sql): -
            -                 acs_sc_contract__new (contract_name, contract_desc):
            -
            +
                             acs_sc_contract__new (contract_name, contract_desc):

          creates a new contract to serve as a logical container for operations. contract_desc is a text description of the contract.

          • (sql): -
            -                 acs_sc_operation__new (contract_name, operation_name,
            +
                             acs_sc_operation__new (contract_name, operation_name,
                                                    operation_desc, operation_iscacheable_p,
                                                    operation_inputtype, operation_outputtype
            -                                      ):
            -
            + ):

          creates a new operation as part of a contract.

          Creating Implementations

          Index: openacs-4/packages/acs-service-contract/www/doc/notes.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-service-contract/www/doc/notes.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-service-contract/www/doc/notes.adp 3 Sep 2021 09:15:49 -0000 1.3.2.1 +++ openacs-4/packages/acs-service-contract/www/doc/notes.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-service-contract/ {ACS Service Contracts}} {} + ACS Service Contract Overview by Neophytos Demetriou (k2pts\@yahoo.com) and Kapil Thangavelu (k_vertigo\@yahoo.com) Goals Index: openacs-4/packages/acs-subsite/www/doc/group-admin-pages-acceptance-test.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/doc/group-admin-pages-acceptance-test.adp,v diff -u -r1.4.2.3 -r1.4.2.4 --- openacs-4/packages/acs-subsite/www/doc/group-admin-pages-acceptance-test.adp 13 Jul 2023 12:48:33 -0000 1.4.2.3 +++ openacs-4/packages/acs-subsite/www/doc/group-admin-pages-acceptance-test.adp 2 Sep 2024 09:40:25 -0000 1.4.2.4 @@ -2,6 +2,10 @@ {/doc/acs-subsite/ {ACS Subsite}} {Group Admin Pages - Acceptance test} Group Admin Pages - Acceptance test +

          Group Admin Pages - Acceptance test

          @@ -11,7 +15,8 @@ The first thing we have to test is developer defined group types working in conjunction with the user defined ones.

          Create the following object type in SQL*Plus.

          -
          begin
          +
          
          +begin
            acs_object_type.create_type (
              supertype => 'group',
              object_type => 'developer_defined_test_type',
          @@ -217,7 +222,8 @@
           Relation
        • Delete the employment relation type.
        • Delete the employee, employer, and project_leader roles
        • Delete any groups you created for the developer defined type
        • -Drop the developer defined type (in SQL*Plus):
          exec acs_object_type.drop_type('developer_defined_test_type'); 
          +Drop the developer defined type (in SQL*Plus):
          
          +exec acs_object_type.drop_type('developer_defined_test_type'); 
           drop table developer_defined_test_types;
           drop package developer_defined_test_type;
           
          Index: openacs-4/packages/acs-subsite/www/doc/group-admin-pages-design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/doc/group-admin-pages-design.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-subsite/www/doc/group-admin-pages-design.adp 3 Sep 2021 09:15:50 -0000 1.3.2.1 +++ openacs-4/packages/acs-subsite/www/doc/group-admin-pages-design.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-subsite/ {ACS Subsite}} {Group Admin Pages - Design} Group Admin Pages - Design +

          Group Admin Pages - Design

          ACS subsite docs : Group Admin Pages - Design Index: openacs-4/packages/acs-subsite/www/doc/group-admin-pages-requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/doc/group-admin-pages-requirements.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-subsite/www/doc/group-admin-pages-requirements.adp 13 Jul 2023 12:48:33 -0000 1.4.2.2 +++ openacs-4/packages/acs-subsite/www/doc/group-admin-pages-requirements.adp 2 Sep 2024 09:40:25 -0000 1.4.2.3 @@ -2,6 +2,10 @@ {/doc/acs-subsite/ {ACS Subsite}} {Group Admin Pages - Requirements} Group Admin Pages - Requirements +

          Group Admin Pages - Requirements

          ACS subsite docs : Group Admin Pages - @@ -88,7 +92,7 @@ a group type. Removing the attribute removes all values specified for that attribute.

          40.10 Relationship Constraints

          The API must support the following types of constraints on -relationships:

          40.10.10 Permissible +relationships:

          40.10.10 Permissible relationships

          Each group type should maintain a list of all relationship types that can be used to add elements to groups of this group type.

          40.10.20 Constraints on @@ -129,9 +133,9 @@ removes all groups of this type.

        -
        +
        150.10 Group instance summary -page
        +page
        150.10.10 Display relations

        Each group should display all the parties related to it Index: openacs-4/packages/acs-subsite/www/doc/images.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/doc/images.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-subsite/www/doc/images.adp 3 Sep 2021 09:15:51 -0000 1.3.2.1 +++ openacs-4/packages/acs-subsite/www/doc/images.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-subsite/ {ACS Subsite}} {ACS Subsite Documentation} ACS Subsite Documentation +

        Images available from the acs-subsite package

        Image can be included with a link of the form <img Index: openacs-4/packages/acs-subsite/www/doc/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/doc/index.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-subsite/www/doc/index.adp 3 Sep 2021 09:15:52 -0000 1.4.2.2 +++ openacs-4/packages/acs-subsite/www/doc/index.adp 2 Sep 2024 09:40:25 -0000 1.4.2.3 @@ -2,6 +2,10 @@ {/doc/acs-subsite/ {ACS Subsite}} {ACS Subsite Documentation} ACS Subsite Documentation +

        ACS Subsite Documentation

        ACS subsite docs Index: openacs-4/packages/acs-templating/www/doc/design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/design.adp,v diff -u -r1.9.2.4 -r1.9.2.5 --- openacs-4/packages/acs-templating/www/doc/design.adp 13 Jul 2023 12:48:33 -0000 1.9.2.4 +++ openacs-4/packages/acs-templating/www/doc/design.adp 2 Sep 2024 09:40:25 -0000 1.9.2.5 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Template System} Template System +

        The Template System -- Design Document

        by Christian Brechbühler Templating System @@ -287,8 +291,7 @@ DefaultMaster=/www/default-master ; anything other than "never" or "always" means normal operation RefreshCache=as necessary - -
        +

        X. Future Improvements/Areas of Likely Change

        Passing datasources by reference is new. The acs-templating syntax &formal="actual" is different @@ -304,11 +307,11 @@

      • System creator: Karl Goldstein
      • System owners: Karl -Goldstein and Christian -Brechbühler +Goldstein and Christian Brechbühler
      • Documentation authors: Karl Goldstein, Christian -Brechbühler, and Bryan Quinn +Brechbühler, and Bryan +Quinn

      XII. Revision History

      Index: openacs-4/packages/acs-templating/www/doc/designer-guide.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/designer-guide.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/designer-guide.adp 3 Sep 2021 09:15:53 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/designer-guide.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Template Designer Guide} Template Designer Guide +

      Designer Guide

      Templating System : Designer Guide Index: openacs-4/packages/acs-templating/www/doc/developer-guide.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/developer-guide.adp,v diff -u -r1.4.2.4 -r1.4.2.5 --- openacs-4/packages/acs-templating/www/doc/developer-guide.adp 13 Jul 2023 12:48:33 -0000 1.4.2.4 +++ openacs-4/packages/acs-templating/www/doc/developer-guide.adp 2 Sep 2024 09:40:25 -0000 1.4.2.5 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Template System Guide} Template System Guide +

      Programmer / Developer Guide

      Templating System : Developer Guide @@ -21,7 +25,8 @@ datasources defined in the Tcl page.

      Guide

        -
      1. User Guide
        • +
        • User Guide + +
        • Object and API Reference Index: openacs-4/packages/acs-templating/www/doc/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/index.adp,v diff -u -r1.4.2.3 -r1.4.2.4 --- openacs-4/packages/acs-templating/www/doc/index.adp 1 Aug 2024 08:03:38 -0000 1.4.2.3 +++ openacs-4/packages/acs-templating/www/doc/index.adp 2 Sep 2024 09:40:25 -0000 1.4.2.4 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templates} Templates +

          Templating System

          Templating System Index: openacs-4/packages/acs-templating/www/doc/install.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/install.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-templating/www/doc/install.adp 13 Jul 2023 12:48:33 -0000 1.4.2.2 +++ openacs-4/packages/acs-templating/www/doc/install.adp 2 Sep 2024 09:40:25 -0000 1.4.2.3 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System: Installation} Templating System: Installation +

          Installation

          Templating System

          The templating system may be used alone or in conjunction with @@ -19,11 +23,9 @@

          Obtaining the distribution

          To install the templating system, download and unpack the tar file under your page root:

          -
          -$ wget http://bob.sf.arsdigita.com:8089/ats/ats.tar.gz
          +
          $ wget http://bob.sf.arsdigita.com:8089/ats/ats.tar.gz
           $ cd /web/myserver/www
          -$ gunzip -c ats.tar.gz | tar xvf -
          -
          +$ gunzip -c ats.tar.gz | tar xvf -

          The distribution consists of four subdirectories:

          1. @@ -47,23 +49,19 @@ installation (as indicated by the Library parameter in the ns/server/myserver/tcl section of the AOLserver configuration file):

            -
            -$ cd /web/myserver/tcl
            -$ ln -s <path_to_distribution>/ats/tcl/ ats
            -
            +
            $ cd /web/myserver/tcl
            +$ ln -s <path_to_distribution>/ats/tcl/ ats

            Configuring AOLserver

            The last step is to modify your AOLserver configuration file. You will need to register the templating system as a Tcl-only module:

            -
            -[ns/server/myserver/modules]
            +
            [ns/server/myserver/modules]
             nssock=nssock.so
             nslog=nslog.so
             ats=Tcl
             

            or if you are using the new configuration file format:

            -
            -ns_section "ns/server/${server}/modules"
            +
            ns_section "ns/server/${server}/modules"
             ns_param   nssock          nssock.so
             ns_param   nslog           nslog.so
             ns_param   ats          Tcl
            @@ -73,14 +71,12 @@
             private Tcl library.

            You will also need to ensure that the "fancy" ADP parser is the default:

            -
            -[ns/server/yourserver/adp]
            +
            [ns/server/yourserver/adp]
             Map=/*.adp
             DefaultParser=fancy
             
             [ns/server/yourserver/adp/parsers]
            -fancy=.adp
            -
            +fancy=.adp

            Optional Configuration

            The templating system recognizes two optional parameters in the AOLserver configuration file in the Index: openacs-4/packages/acs-templating/www/doc/introduction.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/introduction.adp,v diff -u -r1.4.2.1 -r1.4.2.2 --- openacs-4/packages/acs-templating/www/doc/introduction.adp 3 Sep 2021 09:15:56 -0000 1.4.2.1 +++ openacs-4/packages/acs-templating/www/doc/introduction.adp 2 Sep 2024 09:40:25 -0000 1.4.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System: Goals} Templating System: Goals +

            Goals

            Templating System

            The overall goal of the templating system is to provide the Index: openacs-4/packages/acs-templating/www/doc/migration.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/migration.adp,v diff -u -r1.5.2.4 -r1.5.2.5 --- openacs-4/packages/acs-templating/www/doc/migration.adp 13 Jul 2023 12:48:33 -0000 1.5.2.4 +++ openacs-4/packages/acs-templating/www/doc/migration.adp 2 Sep 2024 09:40:25 -0000 1.5.2.5 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating an Existing Tcl Page} Templating an Existing Tcl Page +

            Templating an Existing Tcl Page

            Templating System : Migration @@ -33,8 +37,7 @@ file.

                   [ns/server/myserver/adp]
            -      DefaultParser=fancy
            -
            + DefaultParser=fancy

            A few more hints

            • Do not write to the connection directly. Avoid @@ -46,10 +49,8 @@ that will be <include>d from several pages. Prefer this to writing a Tcl proc that returns HTML.
            • Remember to remove backslashes where you had to escape special characters, as in -
              -Nuts  \$2.70 \[<a href="\"shoppe\">buy</a>\]
              -          
              -
              +
              Nuts  \$2.70 \[<a href="\"shoppe\">buy</a>\]
              +          

            Forms

            @@ -158,8 +159,7 @@ ad_return_template - -
    +          
     
     
     
    @@ -198,8 +198,7 @@
     \@body\@
     </blockquote>
     
    -          
    -

    Multi-Row Data Sources

    @@ -287,8 +286,7 @@ security in place). </ul> -" -
  • +"
     db_multirow item
      news_items_select {
         select news_item_id, title
    @@ -298,8 +296,7 @@
         and (   expiration_date is null
              or expiration_date > sysdate)
     }
    -          
    -
    +          
     
     <ul>
     
    @@ -332,8 +329,7 @@
       security in place).
     
     </ul>
    -          
    -
    @@ -460,8 +456,7 @@ " } } - -
    +          
     set discussion_forum_alert_p 0
     
     if { [db_table_exists "bboard_email_alerts"] } {
    @@ -506,8 +501,7 @@
     }
     
               
    -          
    -
    +          
     
     
     
    @@ -560,8 +554,7 @@
     </blockquote> 
     
     </if>
    -          
    -
    +
    Index: openacs-4/packages/acs-templating/www/doc/no-quote-upgrade.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/no-quote-upgrade.adp,v diff -u -r1.6.2.7 -r1.6.2.8 --- openacs-4/packages/acs-templating/www/doc/no-quote-upgrade.adp 13 Jul 2023 12:48:33 -0000 1.6.2.7 +++ openacs-4/packages/acs-templating/www/doc/no-quote-upgrade.adp 2 Sep 2024 09:40:25 -0000 1.6.2.8 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Upgrading existing ADPs to noquote templating} Upgrading existing ADPs to noquote templating +

    Upgrading existing ADPs to noquote templating

    Introduction.

    @@ -68,8 +72,7 @@ <input name=var2 value="value2"> ... real form stuff ... </form> - - + ACS has a convenience function for creating hidden form variables, export_form_vars @@ -79,8 +82,7 @@ In that case, the Tcl code would set the HTML code to a variable:
     set form_vars [export_vars -form {var1 var2}]
    -      
    -
    + The ADP will simply refer to the form_vars variable: @@ -89,8 +91,7 @@ \@form_vars\@ <!-- WRONG! Needs noquote --> ... real form stuff ... </form> - - + This will no longer work as intended because form_vars @@ -105,8 +106,7 @@ \@form_vars;noquote\@ ... real form stuff ... </form> - - +

    Snippets of HTML produced by Tcl code, aka widgets @@ -153,14 +153,12 @@ <h1>\@heading\@</h1> <slave> </body> - -slave:

    +      
    slave:
     <master>
     <property name="title">\@title\@</property>
     <property name="heading">\@title\@</property>
     ...
    -      
    -
    + The obvious intention of the master is to allow its slave templates @@ -215,23 +213,20 @@ <property name="doc(title)">\@title;literal\@</property> <property name="heading">\@title;literal\@</property> ... - - +

    The exact same problems when the include statement passes some text. Here is an example:

    Including template:
     <include src="user-kick-form" id=\@kicked_id\@ reason=\@default_reason\@>
    -      
    -
    Included template:
    +      
    Included template:
     <form action="do-kick" method=POST>
       Kick user \@name\@.<br>
       Reason: <textarea name=reason>\@reason\@</textarea><br>
       <input type="submit" value="Kick">
     </form>
    -      
    -
    +
    Here an include statement is used to include an HTML form widget @@ -249,8 +244,7 @@
    Including template, sans over-quoting:
     <include src="user-kick-form" id=\@kicked_id;literal\@ reason=\@default_reason;literal\@>
    -      
    -
    +

    Upgrade Overview.

    Index: openacs-4/packages/acs-templating/www/doc/noquote.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/noquote.adp,v diff -u -r1.5.2.3 -r1.5.2.4 --- openacs-4/packages/acs-templating/www/doc/noquote.adp 13 Jul 2023 12:48:33 -0000 1.5.2.3 +++ openacs-4/packages/acs-templating/www/doc/noquote.adp 2 Sep 2024 09:40:25 -0000 1.5.2.4 @@ -4,6 +4,10 @@ HTMLQuoting as Part of the Templating System - Requirements +

    -Quote Always, Except +Quote Always, Except When Told Not to.

    At the time when we came to realize how serious the quoting deficiencies of ACS 4.0 were, we were about two weeks away from the release of a project for the German Bank. There was simply no time Index: openacs-4/packages/acs-templating/www/doc/requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/requirements.adp,v diff -u -r1.5.2.2 -r1.5.2.3 --- openacs-4/packages/acs-templating/www/doc/requirements.adp 13 Jul 2023 12:48:33 -0000 1.5.2.2 +++ openacs-4/packages/acs-templating/www/doc/requirements.adp 2 Sep 2024 09:40:25 -0000 1.5.2.3 @@ -2,14 +2,17 @@ {/doc/acs-templating/ {ACS Templating}} {ACS Templating Requirements} ACS Templating Requirements +

    ACS Templating Requirements

    by Karl Goldstein , -Christian -Brechbühler -, Peter -Su +Christian Brechbühler +, +Peter Su , and Yonatan Feldman

    I. Introduction

    @@ -100,7 +103,8 @@

    VI.A Functional Requirements

    • -10.0 A Common Solution

      Programmers and designers should only have to learn a single +10.0 A Common +Solution

      Programmers and designers should only have to learn a single system that serves as a UI substrate for all the functionally specific modules in the toolkit.

      10.0.1

      The system should not make any assumptions about how pages @@ -160,8 +164,8 @@

  • -20.0 Separation of Code and -Layout

    Programmers should be able to specify the page properties +20.0 Separation of Code +and Layout

    Programmers should be able to specify the page properties independently of the markup used to present the data in the template. Markup authors should be to able to write templates that reference the page properties without further intervention from the @@ -173,26 +177,26 @@ be available through the standard ACS documentation facilities.

  • -30.0 Separation of Page +30.0 Separation of Page Components

    There should be provisions so that pages can be broken into discrete components to simplify maintenance of the markup code and allow for reuse in different contexts. Examples of common page components include a navigation bar, a search box, or a section of a report or story.

  • -40.0 Global Control Over +40.0 Global Control Over Presentation

    There should be a way to define one or more standard master templates used by most pages on a site, so that changes to the overall look and feel of a site can be made in one place.

  • -50.0 Dynamic Selection of +50.0 Dynamic Selection of Presentation Style

    Given that the same data may be presented in many different ways, there should be a general mechanism for selecting a specific presentation (including file format, layout, character set and language) for each page request, depending on characteristics such as user preference, location, browser type and/or device.

  • -60.0 Usability

    Programmers should be able to develop template specifications +60.0 Usability

    Programmers should be able to develop template specifications using their standard tools for writing and maintaining code on the server. HTML authors should be able to access information about template specifications and work on templates remotely without @@ -203,13 +207,15 @@

    VI.B Non-functional Requirements

    • -100.0 Distribution

      The Templating System must be releasable as part of the ACS and +100.0 +Distribution

      The Templating System must be releasable as part of the ACS and as a separate product. When distributed as part of the ACS all documentation, examples, and source code must follow ACS standards. This includes but is not limited to: using the db_api, using ad_page_contract appropriately.

    • -110.0 Performance

      The Templating System must not cause any performance problems to +110.0 +Performance

      The Templating System must not cause any performance problems to a site. It must be fast and efficient, and it must not slow down page load speed by more than 10% versus a Tcl page with inline HTML.

      @@ -222,7 +228,7 @@ 0.1Creation8/23/2000Yonatan Feldman -0.2Merge with previous docs8/25/2000Christian Brechbühler +0.2Merge with previous docs8/25/2000Christian Brechbühler 0.3Edited, reviewed, pending freeze8/28/2000Kai Wu Index: openacs-4/packages/acs-templating/www/doc/timing-1.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/timing-1.adp,v diff -u -r1.3.2.2 -r1.3.2.3 --- openacs-4/packages/acs-templating/www/doc/timing-1.adp 3 Sep 2021 09:15:59 -0000 1.3.2.2 +++ openacs-4/packages/acs-templating/www/doc/timing-1.adp 2 Sep 2024 09:40:25 -0000 1.3.2.3 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Template Timing Results} Template Timing Results +

      Results

      The measurements were taken on dev0103-001 Index: openacs-4/packages/acs-templating/www/doc/timing-2.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/timing-2.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/timing-2.adp 3 Sep 2021 09:15:59 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/timing-2.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Template Timing Results} Template Timing Results +

      Results

      The measurements were taken on reusia.boston Index: openacs-4/packages/acs-templating/www/doc/timing-3.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/timing-3.adp,v diff -u -r1.3.2.2 -r1.3.2.3 --- openacs-4/packages/acs-templating/www/doc/timing-3.adp 31 Jul 2024 09:59:29 -0000 1.3.2.2 +++ openacs-4/packages/acs-templating/www/doc/timing-3.adp 2 Sep 2024 09:40:25 -0000 1.3.2.3 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Template Timing Results} Template Timing Results +

      Results

      The measurements were taken on reusia.boston on 17 October 2000, with tarball acs-3-4-6-R20001008. Templating under Index: openacs-4/packages/acs-templating/www/doc/timing.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/timing.adp,v diff -u -r1.5.2.3 -r1.5.2.4 --- openacs-4/packages/acs-templating/www/doc/timing.adp 13 Jul 2023 12:48:33 -0000 1.5.2.3 +++ openacs-4/packages/acs-templating/www/doc/timing.adp 2 Sep 2024 09:40:25 -0000 1.5.2.4 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Timing a Templated Page} Timing a Templated Page +

      Timing a Templated Page

      by Christian @@ -12,7 +16,8 @@ for the template system asks for efficiency:
      • -110.0 Performance

        The Templating System must not cause any performance problems to +110.0 +Performance

        The Templating System must not cause any performance problems to a site. It must be fast and efficient, and it must not slow down page load speed by more than 10% versus a Tcl page with inline HTML.

        @@ -78,8 +83,7 @@ end cut -d" " -f3 $i-1| cut -c2-| tr \? 0 > $i-2 end - - + The three resulting files, ending in -2, contain 18000 numbers, for 2 runs * 200 tries * 3 pages * 15 stages.
      • Group and sort times. The time one stage of processing @@ -141,8 +145,7 @@ (cd $i; gnuplot ../distrib.gplt > $i.gif) echo $i done. end - - +

      IV. Results

      • Index: openacs-4/packages/acs-templating/www/doc/todo.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/todo.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/todo.adp 3 Sep 2021 09:16:02 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/todo.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {} +

        Data Source API

        We need to resolve how onerow and multirow data sources are represented internally, and plug in the proper API. I originally Index: openacs-4/packages/acs-templating/www/doc/TclDocs/cm_widget.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/TclDocs/cm_widget.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/TclDocs/cm_widget.adp 3 Sep 2021 09:16:03 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/TclDocs/cm_widget.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {} +

        Namespace cm_widget

        Procedures associated with custom metadata widgets for basic CR content types
        Index: openacs-4/packages/acs-templating/www/doc/TclDocs/cms_rel.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/TclDocs/cms_rel.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/TclDocs/cms_rel.adp 3 Sep 2021 09:16:04 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/TclDocs/cms_rel.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {} +

        Namespace cms_rel

        Procedures for managing relation items and child items
        Index: openacs-4/packages/acs-templating/www/doc/TclDocs/content.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/TclDocs/content.adp,v diff -u -r1.5.2.3 -r1.5.2.4 --- openacs-4/packages/acs-templating/www/doc/TclDocs/content.adp 3 Sep 2021 09:16:04 -0000 1.5.2.3 +++ openacs-4/packages/acs-templating/www/doc/TclDocs/content.adp 2 Sep 2024 09:40:25 -0000 1.5.2.4 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {} +

        Namespace content

        Procedures for generating and processing content content creation and editing forms..
        Index: openacs-4/packages/acs-templating/www/doc/TclDocs/content_add.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/TclDocs/content_add.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/TclDocs/content_add.adp 3 Sep 2021 09:16:05 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/TclDocs/content_add.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {} +

        Namespace content_add

        Procedures regarding content methods

        Method Summary

        Index: openacs-4/packages/acs-templating/www/doc/TclDocs/content_method.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/TclDocs/content_method.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/TclDocs/content_method.adp 3 Sep 2021 09:16:06 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/TclDocs/content_method.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {} +

        Namespace content_method

        Procedures regarding content methods

        Method Summary

        Index: openacs-4/packages/acs-templating/www/doc/TclDocs/doc.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/TclDocs/doc.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/TclDocs/doc.adp 3 Sep 2021 09:16:06 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/TclDocs/doc.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {} +

        Namespace doc

        Method Summary

        Index: openacs-4/packages/acs-templating/www/doc/TclDocs/doc__util.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/TclDocs/doc__util.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-templating/www/doc/TclDocs/doc__util.adp 13 Jul 2023 12:48:33 -0000 1.4.2.2 +++ openacs-4/packages/acs-templating/www/doc/TclDocs/doc__util.adp 2 Sep 2024 09:40:25 -0000 1.4.2.3 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {} +

        Namespace doc::util

        Method Summary

        @@ -15,7 +19,7 @@ Private Methods:

        -
        set split_name +
        set split_name $see_name doc::util::text_divider split_name :: set name_length [llength $split_name] set see_namespace [join [lrange $split_name 0 [expr $name_length - 2]] \"\"] set url Index: openacs-4/packages/acs-templating/www/doc/TclDocs/form.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/TclDocs/form.adp,v diff -u -r1.5.2.1 -r1.5.2.2 --- openacs-4/packages/acs-templating/www/doc/TclDocs/form.adp 3 Sep 2021 09:16:08 -0000 1.5.2.1 +++ openacs-4/packages/acs-templating/www/doc/TclDocs/form.adp 2 Sep 2024 09:40:25 -0000 1.5.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {} +

        Namespace form

        Commands for managing dynamic templated forms.
        Index: openacs-4/packages/acs-templating/www/doc/TclDocs/item.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/TclDocs/item.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/TclDocs/item.adp 3 Sep 2021 09:16:09 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/TclDocs/item.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {} +

        Namespace item

        The item commands allow easy access to properties of the content_item object. In the future, a unified API for caching Index: openacs-4/packages/acs-templating/www/doc/TclDocs/namespace-list.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/TclDocs/namespace-list.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/TclDocs/namespace-list.adp 3 Sep 2021 09:16:10 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/TclDocs/namespace-list.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {All Namespaces} All Namespaces +

        All Namespaces

          doc
        Index: openacs-4/packages/acs-templating/www/doc/TclDocs/namespaces.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/TclDocs/namespaces.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/TclDocs/namespaces.adp 3 Sep 2021 09:16:10 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/TclDocs/namespaces.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {ATS and CMS Tcl Procedure Specifications} ATS and CMS Tcl Procedure Specifications +

        ATS and CMS Tcl Procedure Specifications

        Index: openacs-4/packages/acs-templating/www/doc/TclDocs/pagination.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/TclDocs/pagination.adp,v diff -u -r1.3.2.2 -r1.3.2.3 --- openacs-4/packages/acs-templating/www/doc/TclDocs/pagination.adp 3 Sep 2021 09:16:11 -0000 1.3.2.2 +++ openacs-4/packages/acs-templating/www/doc/TclDocs/pagination.adp 2 Sep 2024 09:40:25 -0000 1.3.2.3 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {} +

        Namespace pagination

        Procedures for paginating a datasource

        Method Summary

        Index: openacs-4/packages/acs-templating/www/doc/TclDocs/publish.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/TclDocs/publish.adp,v diff -u -r1.5.2.6 -r1.5.2.7 --- openacs-4/packages/acs-templating/www/doc/TclDocs/publish.adp 13 Jul 2023 12:48:33 -0000 1.5.2.6 +++ openacs-4/packages/acs-templating/www/doc/TclDocs/publish.adp 2 Sep 2024 09:40:25 -0000 1.5.2.7 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {} +

        Namespace publish

          by Stanislav Freidin The procs in this namespace Index: openacs-4/packages/acs-templating/www/doc/TclDocs/request.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/TclDocs/request.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/TclDocs/request.adp 3 Sep 2021 09:16:11 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/TclDocs/request.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {} +

        Namespace request

        The request commands provide a mechanism for managing the query parameters to a page. The request is simply a special Index: openacs-4/packages/acs-templating/www/doc/TclDocs/tcl-procs.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/TclDocs/tcl-procs.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-templating/www/doc/TclDocs/tcl-procs.adp 13 Jul 2023 12:48:33 -0000 1.4.2.2 +++ openacs-4/packages/acs-templating/www/doc/TclDocs/tcl-procs.adp 2 Sep 2024 09:40:25 -0000 1.4.2.3 @@ -4,3 +4,10 @@ ArsDigita Templating System, Content Management Tcl Procedure Specifications + + + + Index: openacs-4/packages/acs-templating/www/doc/TclDocs/util.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/TclDocs/util.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/TclDocs/util.adp 3 Sep 2021 09:16:12 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/TclDocs/util.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {} +

        Namespace util

        Method Summary

        Index: openacs-4/packages/acs-templating/www/doc/TclDocs/widget.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/TclDocs/widget.adp,v diff -u -r1.4.2.1 -r1.4.2.2 --- openacs-4/packages/acs-templating/www/doc/TclDocs/widget.adp 3 Sep 2021 09:16:14 -0000 1.4.2.1 +++ openacs-4/packages/acs-templating/www/doc/TclDocs/widget.adp 2 Sep 2024 09:40:25 -0000 1.4.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {} +

        Namespace widget

        Procedures for generating and processing metadata form widgets, editing attribute widgets
        Index: openacs-4/packages/acs-templating/www/doc/api/database.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/api/database.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/api/database.adp 3 Sep 2021 09:16:14 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/api/database.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System API: Database Query} Templating System API: Database Query +

        Database Query

        Templating System : API Index: openacs-4/packages/acs-templating/www/doc/api/element.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/api/element.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-templating/www/doc/api/element.adp 13 Jul 2023 12:48:33 -0000 1.4.2.2 +++ openacs-4/packages/acs-templating/www/doc/api/element.adp 2 Sep 2024 09:40:25 -0000 1.4.2.3 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System API: Form Element} Templating System API: Form Element +

        Form Element

        Templating System : API @@ -49,6 +53,7 @@ template::element get_value form_name element_name

        Example

        +
        
         
         template::element get_values form_name element_name
         
        Index: openacs-4/packages/acs-templating/www/doc/api/form.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/api/form.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-templating/www/doc/api/form.adp 13 Jul 2023 12:48:33 -0000 1.4.2.2 +++ openacs-4/packages/acs-templating/www/doc/api/form.adp 2 Sep 2024 09:40:25 -0000 1.4.2.3 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System API: Form} Templating System API: Form +

        Form

        Templating System : API @@ -17,23 +21,22 @@ must be called before adding elements to the form.

        • Additional attributes to include in the HTML form tag may be specified with the html option.
        -
        -template::form is_request name
        +
        template::form is_request name
         

        Boolean procedure for determining whether a submission is in progress. If this procedure returns true, then an initial request for the form is underway. The code for insert or add forms may thus query for primary key value(s), and the code for update forms may query for current data and set the value(s) of form elements accordingly.

        -
        -template::form is_valid name
        +
        template::form is_valid name
         

        Boolean procedure that returns true if a submission is in progress and the submission is valid. Database or any other transactions based on the form submission should only take place after this procedure has been checked.

        Example

        +
        
         

        Note(s)


        \ No newline at end of file Index: openacs-4/packages/acs-templating/www/doc/api/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/api/index.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/api/index.adp 3 Sep 2021 09:16:15 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/api/index.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Object and API Reference} Object and API Reference +

        Object and API Reference

        Templating System : Developer Guide Index: openacs-4/packages/acs-templating/www/doc/api/multirow.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/api/multirow.adp,v diff -u -r1.4.2.3 -r1.4.2.4 --- openacs-4/packages/acs-templating/www/doc/api/multirow.adp 13 Jul 2023 12:48:33 -0000 1.4.2.3 +++ openacs-4/packages/acs-templating/www/doc/api/multirow.adp 2 Sep 2024 09:40:25 -0000 1.4.2.4 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System API: Multirow} Templating System API: Multirow +

        Multirow

        Templating System : API @@ -10,8 +14,7 @@

        Access and modify rows and columns of a multirow data source.

        Methods

        -
        -multirow get name index column
        +
        multirow get name index column
         

        Get a particular column value or a reference to an entire @@ -21,26 +24,21 @@ for the row specified by index.

        -
        -multirow set name index column value
        +
        multirow set name index column value
         

        Set the value of a column in a specified row.

        -
        -multirow size name
        +
        multirow size name
         

        Get the number of rows in the data source.

        -
        -multirow create name column [column ...]
        +
        multirow create name column [column ...]
         

        Set up a new multirow data source. This is an alternative to having db_multirow create the data source.

        -
        -multirow append name value [value ...]
        +
        multirow append name value [value ...]
         

        Add a row at the end of the data source. Extra values are dropped, missing values default to the empty string

        -
        -multirow map name body
        +
        multirow map name body
         

        Evaluate body for each row of the data source, and return a list with all results. Within the body, all columns of the Index: openacs-4/packages/acs-templating/www/doc/api/request.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/api/request.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-templating/www/doc/api/request.adp 13 Jul 2023 12:48:33 -0000 1.4.2.2 +++ openacs-4/packages/acs-templating/www/doc/api/request.adp 2 Sep 2024 09:40:25 -0000 1.4.2.3 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System API: Page Request} Templating System API: Page Request +

        Page Request

        Templating System : API @@ -12,14 +16,11 @@

        This API is an alternative to ad_page_contract which should usually be preferred if you have ACS installed.

        Methods

        -
        -template::request create
        -
        +
        template::request create

        Initialize the data structure to store request parameters. Should be called at the start of any page that takes request parameters.

        -
        -template::request set_param name 
        +
        template::request set_param name 
                                     -datatype datatype
                                     -multiple
                                     -optional
        @@ -45,13 +46,11 @@
         $label may be used in the message to reference the
         parameter value and label (or name if no label is supplied).
         
        -
        -template::request get_param name
        +
        template::request get_param name
         

        Returns the value (or values if the multiple is used) of the named parameter.

        -
        -template::request is_valid error_url
        +
        template::request is_valid error_url
         

        Boolean procedure for determining whether any validation errors occurred while setting request parameters.

        Index: openacs-4/packages/acs-templating/www/doc/appendices/memory.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/appendices/memory.adp,v diff -u -r1.4.2.4 -r1.4.2.5 --- openacs-4/packages/acs-templating/www/doc/appendices/memory.adp 13 Jul 2023 12:48:33 -0000 1.4.2.4 +++ openacs-4/packages/acs-templating/www/doc/appendices/memory.adp 2 Sep 2024 09:40:25 -0000 1.4.2.5 @@ -4,6 +4,10 @@ Templating System Appendix D: Parsing templates in memory +

        Parsing Templates in Memory

        Templating System

        The templating system code is oriented towards parsing templates Index: openacs-4/packages/acs-templating/www/doc/demo/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/demo/index.adp,v diff -u -r1.6.2.3 -r1.6.2.4 --- openacs-4/packages/acs-templating/www/doc/demo/index.adp 1 Sep 2024 12:39:59 -0000 1.6.2.3 +++ openacs-4/packages/acs-templating/www/doc/demo/index.adp 2 Sep 2024 09:40:25 -0000 1.6.2.4 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System Samples} Templating System Samples +

        Samples

        Templating System : Demo @@ -97,8 +101,6 @@ below. - -
        +
        DescriptionDataTemplateCompiled
        @@ -110,53 +112,28 @@
        Repeating template chunks for each row of a query result, with custom manipulation of dataViewViewViewView
        Repeating template chunks with grouping ViewViewViewViewViewViewViewViewViewViewViewView + + + - + - - - + -
        Repeating template chunks with grouping -ViewViewViewViewRepeating template chunks as cells of a grid
        Repeating template chunks as cells of a gridViewViewViewView
        Repeating template chunks for each element of a listViewViewViewViewRepeating template chunks for each element of a list
        -

        Both Iteration and Composition

        - - - +

        Both Iteration and Composition

        ViewPlain
        FancyPlain
        FancyPlain
        Fancy
        AbsoluteViewOuter
        IncludedOuter
        IncludedViewViewViewViewView - + - + - + -
        DescriptionDataTemplateCompiled
        Template
        Output
        Apply different skins to the same dataView -Plain
        Fancy -
        -Plain
        Fancy -
        -Plain
        Fancy
        Absolute -
        Apply different skins to the same data
        Passing a multirow datasource to an included pageView -Outer
        Included -
        -Outer
        Included -
        ViewPassing a multirow datasource to an included page
        Processing a template from a string (not file)ViewViewViewViewProcessing a template from a string (not file)
        -

        Using ListBuilder

        - - - - - - - - - - - +

        Using ListBuilder

        @@ -240,11 +217,7 @@ index
        -
        DescriptionDataTemplateCompiled
        Template
        Output View
        -

        Forms

        - - - +

        Forms

        @@ -259,54 +232,31 @@ -
        DescriptionDataTemplateCompiled
        Template
        Output
        Report an error related to a request.ViewViewPlainView
        -

        Using the Form Manager.

        - - - - - - - - - - +

        Using the Form Manager.

        ViewViewViewViewViewSimple
        GriddedSimple
        GriddedSimple
        GriddedViewViewViewViewViewViewViewInline Error MessageSitewide Error +PageValid RequestViewViewViewViewViewViewViewViewViewSubmit
        ConfirmSubmit
        ConfirmViewViewViewViewViewViewViewViewView - + - + - + - - - + + + - + - + - + - + +
        DescriptionDataTemplateCompiled
        Template
        Output
        A simple formViewViewViewViewA simple form
        A form with button groupsView -Simple
        Gridded -
        -Simple
        Gridded -
        -Simple
        Gridded -
        A form with button groups
        A form with Select widgetsViewViewViewViewA form with Select widgets
        Custom validation of a requestViewViewViewInline Error -Message
        Sitewide Error Page
        Valid -Request
        A form with the Date widgetViewViewViewViewCustom validation of a request
        A form with the Date widget
        Editing: several pages in oneViewViewViewViewEditing: several pages in one
        A form with a custom confirmation pageView -Submit
        Confirm -
        -Submit
        Confirm -
        ViewA form with a custom confirmation page
        A form with display/edit modesViewViewViewViewA form with display/edit modes
        A form with multiple submit buttonsViewViewViewViewA form with multiple submit buttons


        +
        -
        -
        - \ No newline at end of file Index: openacs-4/packages/acs-templating/www/doc/exercise/ats-for-designers.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/exercise/ats-for-designers.adp,v diff -u -r1.7.2.5 -r1.7.2.6 --- openacs-4/packages/acs-templating/www/doc/exercise/ats-for-designers.adp 13 Jul 2023 12:48:33 -0000 1.7.2.5 +++ openacs-4/packages/acs-templating/www/doc/exercise/ats-for-designers.adp 2 Sep 2024 09:40:25 -0000 1.7.2.6 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {The ACS Templating System for Web Designers} The ACS Templating System for Web Designers +

        The ACS Templating System for Web Designers

        Templating System : Templating @@ -73,7 +77,8 @@ appearing once in the .adp file, are cycled repeatedly to show multiple sets of information when displayed in list-and-var-sample.acs; example: -
            <multiple name="your_multirow">
        +
        
        +    <multiple name="your_multirow">
             <tr><td>\@your_multirow.first_names\@ \@your_multirow.last_name\@ </td> </tr>
             </multiple>
             
        @@ -261,26 +266,26 @@ and <else> tags to your ATS toolbelt, it's time to put those tools to good use in formatting multirow data. First, read the docs to learn about the -automatcally generated \@your_multirow.rownum\@ -column, the \@your_multirow:rowcount\@ onevalue -which contains the total number of rows contained in your multirow, -and the <multiple> startrow and -maxrows attributes. Possible point of confusion: the -variable \@your_multirow:rowcount\@ is a -onevalue and not a column of the multirow -your_multirow, so it need not be used within -<multiple> tags and in many cases should not be used within -<multiple> tags. Why is this? (Take a look at how -\@address:rowcount\@ is used.) Now make the following -improvements to the address book listing you found in -form-sample.acs:

        +automatically generated +\@your_multirow.rownum\@ column, the +\@your_multirow:rowcount\@ onevalue which +contains the total number of rows contained in your multirow, and +the <multiple> startrow and maxrows +attributes. Possible point of confusion: the variable +\@your_multirow:rowcount\@ is a onevalue and +not a column of the multirow your_multirow, +so it need not be used within <multiple> tags and in many +cases should not be used within <multiple> tags. Why is this? +(Take a look at how \@address:rowcount\@ is used.) Now +make the following improvements to the address book listing you +found in form-sample.acs:

        • stripe the table with banded rows of alternating grey and white, or some other color scheme of your preference
        • use the startrow attribute so that the address book listing begins at a rownumber determined by the Tcl file code (check the .dat page)
        • add navigation links to the address book so that users can move forward or back between row listings, or jump to the beginning or -end of their address book
          • +end of their address book
            • each link should set the url variable that determines the first row of the set to be displayed
            • the links should only appear when necessary, that is, a link pointing towards the next set of rows should not appear if the user @@ -289,5 +294,5 @@

            shuynh\@arsdigita.com
            - -Last modified: Fri Nov 17 10:14:44 EST 2000 \ No newline at end of file +Last modified: Sun Sep 1 14:32:43 CEST 2024 + \ No newline at end of file Index: openacs-4/packages/acs-templating/www/doc/gen/proc-doc.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/gen/proc-doc.adp,v diff -u -r1.8.2.2 -r1.8.2.3 --- openacs-4/packages/acs-templating/www/doc/gen/proc-doc.adp 13 Jul 2023 12:48:33 -0000 1.8.2.2 +++ openacs-4/packages/acs-templating/www/doc/gen/proc-doc.adp 2 Sep 2024 09:40:25 -0000 1.8.2.3 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Commenting Tcl procedures for parsing} Commenting Tcl procedures for parsing +

            Using comments to document Tcl procedures

            Templating System

            Text divisions, grouping

            @@ -12,6 +16,7 @@ divisions has its own text marker(s). In the end, your Tcl file should look something like this:
            
            +
             [------------------------------------------------------]
             [------  ignored text at beginning of file  -----------]
             [------------------------------------------------------]
            @@ -109,7 +114,8 @@
             will be marked as required if it is a parameter, or
             display no information if it is an option.
             

            For example: the fictional procedure grant_permission might be -preceded by these comments:

            # \@public grant_permission
            +preceded by these comments:

            
            +# \@public grant_permission
             # checks for whether or not a user has the privilege 
             # to manipulate an object in a specific manner
             
            Index: openacs-4/packages/acs-templating/www/doc/guide/components.adp
            ===================================================================
            RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/guide/components.adp,v
            diff -u -r1.3.2.1 -r1.3.2.2
            --- openacs-4/packages/acs-templating/www/doc/guide/components.adp	3 Sep 2021 09:16:20 -0000	1.3.2.1
            +++ openacs-4/packages/acs-templating/www/doc/guide/components.adp	2 Sep 2024 09:40:25 -0000	1.3.2.2
            @@ -4,6 +4,10 @@
             Templating System User Guide: Building Reusable Template
             Components
             
            +              
             

            Building Reusable Template Components

            Templating System : Developer Guide Index: openacs-4/packages/acs-templating/www/doc/guide/composite.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/guide/composite.adp,v diff -u -r1.5.2.5 -r1.5.2.6 --- openacs-4/packages/acs-templating/www/doc/guide/composite.adp 1 Sep 2024 12:39:59 -0000 1.5.2.5 +++ openacs-4/packages/acs-templating/www/doc/guide/composite.adp 2 Sep 2024 09:40:25 -0000 1.5.2.6 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System User Guide: Composite Page} Templating System User Guide: Composite Page +

            Assembling a Page from Components

            Templating System : Developer Guide Index: openacs-4/packages/acs-templating/www/doc/guide/data.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/guide/data.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-templating/www/doc/guide/data.adp 13 Jul 2023 12:48:33 -0000 1.4.2.2 +++ openacs-4/packages/acs-templating/www/doc/guide/data.adp 2 Sep 2024 09:40:25 -0000 1.4.2.3 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System User Guide: Data Sources} Templating System User Guide: Data Sources +

            Implementing Data Sources

            Templating System : Developer Guide @@ -46,24 +50,20 @@

            The query procedure may be used as a convenient way to store the result of a one-row database query into an array:

            -
            -query name onerow "
            +
            query name onerow "
               select 
                 first_name, last_name 
               from 
                 users 
               where  
            -    user_id = 123"
            -
            + user_id = 123"

            You can embed references to column values of a onerow data source in a template with simple variable substitution.

            onelist

            onelist data sources are implemented by creating a Tcl list:

            -
            -set names [list "Walter" "Fred" "Susy" "Frieda"]
            -
            +
            set names [list "Walter" "Fred" "Susy" "Frieda"]

            The query procedure may be used to set a onelist data source based on a one-column database query:

            query name onevalue "select name from users" @@ -74,22 +74,18 @@ multirow data sources are not represented by a single Tcl data structure. As such the templating system includes a special API for constructing and manipulating them.

            -
            -multirow create cars make model year
            +
            multirow create cars make model year
             multirow append cars "Toyota" "Camry" "1996"
            -multirow append cars "Volvo" "960" "1995"
            -
            +multirow append cars "Volvo" "960" "1995"

            The query procedure may be used as a convenient way to store the result of a multi-row, multi-column database query into a multirow data source:

            -
            -query name multirow "
            +
            query name multirow "
               select 
                 make, model, year
               from 
            -    cars"
            -
            + cars"

            You can iterate over a multirow data source in a template with the multiple tag.

            Index: openacs-4/packages/acs-templating/www/doc/guide/document.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/guide/document.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-templating/www/doc/guide/document.adp 13 Jul 2023 12:48:33 -0000 1.4.2.2 +++ openacs-4/packages/acs-templating/www/doc/guide/document.adp 2 Sep 2024 09:40:25 -0000 1.4.2.3 @@ -4,6 +4,10 @@ Templating System User Guide: Documenting Data Sources +

            Documenting Data Sources

            Templating System : Developer Guide @@ -35,26 +39,23 @@ # \@input birthday date birthdate w/ "MONTH DD YYYY" format # \@input gender radio # either "m" for male or "f" for female - -
            +

            A few formatting guidelines:

            • all datasources (onevalues, onelists, multilists, multirows) are documented with the datasource directive, their name, the type -of datasource, and then necessary comments:
            • # \@datasource name <type of +of datasource, and then necessary comments:
            • # \@datasource name <type of datasource> comments -
            • multirow datasources are followed with a series of column -directives, column names, and associated explanations:
            • # \@column namecomments -
            • forms are documented with the data_input directive, and are +
          • multirow datasources are followed with a series of column +directives, column names, and associated explanations:
          • # \@column namecomments +
          • forms are documented with the data_input directive, and are also followed with a series of input directives with the name and -type of input widgets, and necessary comments:
          • -
            # \@data_input name form +type of input widgets, and necessary comments:
          • # \@data_input name form comments # \@input name <type of form entry> comments
            Possible form entry types include text (or textentry), date, -checkbox, radio, select, multiselect and textbox
          • -
          +checkbox, radio, select, multiselect and textbox

        Once the templates have been enabled, the designer can simply visit the URL from which the page will be served, substituting acs with the dat extension.

        Index: openacs-4/packages/acs-templating/www/doc/guide/form-datatypes.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/guide/form-datatypes.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/guide/form-datatypes.adp 3 Sep 2021 09:16:21 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/guide/form-datatypes.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System User Guide: Custom Data Types} Templating System User Guide: Custom Data Types +

        Custom Data Types

        Templating System : Developer Guide Index: openacs-4/packages/acs-templating/www/doc/guide/form-process.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/guide/form-process.adp,v diff -u -r1.3.2.2 -r1.3.2.3 --- openacs-4/packages/acs-templating/www/doc/guide/form-process.adp 3 Sep 2021 09:16:21 -0000 1.3.2.2 +++ openacs-4/packages/acs-templating/www/doc/guide/form-process.adp 2 Sep 2024 09:40:25 -0000 1.3.2.3 @@ -4,6 +4,10 @@ Templating System User Guide: Validating and Processing Form Submissions +

        Validating and Processing Form Submissions

        Templating System : User Index: openacs-4/packages/acs-templating/www/doc/guide/form-templates.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/guide/form-templates.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/guide/form-templates.adp 3 Sep 2021 09:16:21 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/guide/form-templates.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -4,6 +4,10 @@ Templating System User Guide: Customizing Form Templates +

        Customizing Form Templates

        Templating System : Developer Guide Index: openacs-4/packages/acs-templating/www/doc/guide/form-widgets.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/guide/form-widgets.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/guide/form-widgets.adp 3 Sep 2021 09:16:21 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/guide/form-widgets.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System User Guide: Custom Form Widgets} Templating System User Guide: Custom Form Widgets +

        Custom Form Widgets

        Templating System : Developer Guide Index: openacs-4/packages/acs-templating/www/doc/guide/forms.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/guide/forms.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-templating/www/doc/guide/forms.adp 13 Jul 2023 12:48:33 -0000 1.4.2.2 +++ openacs-4/packages/acs-templating/www/doc/guide/forms.adp 2 Sep 2024 09:40:25 -0000 1.4.2.3 @@ -4,6 +4,10 @@ Templating System User Guide: Creating and Populating Forms +

        Creating and Populating Forms

        Templating System : Developer Guide @@ -19,19 +23,15 @@ use it in the survey package.

        Create a form

        Use the form create command to initialize a form:

        -
        -form create add_user
        -
        +
        form create add_user

        See the form API for optional parameters to this command.

        Add elements

        Once the form is created, use the element create command to add elements to it:

        -
        -element create add_user first_name -datatype text \ 
        +
        element create add_user first_name -datatype text \ 
                                            -label "First Name" \
        -                                   -html { size 30 }
        -
        + -html { size 30 }

        In auto-generated forms, elements appear in the order they were created. See the element API for optional parameters to this command.

        @@ -40,8 +40,7 @@ submission is currently being processed. If a request is being processed, then form elements may need to be initialized with their appropriate values.

        -
        -if { [template::form is_request add_user] } {
        +
        if { [template::form is_request add_user] } {
         
           set db [ns_db gethandle]
         
        @@ -51,8 +50,7 @@
           ns_db releasehandle $db
         
           template::element set_properties add_user user_id -value $user_id
        -}
        -
        +}

        This may also be done using the value option to element create. In this case the value is set separately to avoid the additional database query during a submission.

        Index: openacs-4/packages/acs-templating/www/doc/guide/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/guide/index.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/guide/index.adp 3 Sep 2021 09:16:21 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/guide/index.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System User Guide: Overview} Templating System User Guide: Overview +

        Overview

        Templating System : Developer Guide Index: openacs-4/packages/acs-templating/www/doc/guide/master.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/guide/master.adp,v diff -u -r1.5.2.2 -r1.5.2.3 --- openacs-4/packages/acs-templating/www/doc/guide/master.adp 13 Jul 2023 12:48:33 -0000 1.5.2.2 +++ openacs-4/packages/acs-templating/www/doc/guide/master.adp 2 Sep 2024 09:40:25 -0000 1.5.2.3 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System User Guide: Using Master Templates} Templating System User Guide: Using Master Templates +

        Using Master Templates

        Templating System : Developer Guide @@ -45,8 +49,7 @@

        Write the Master Template

        A master template to implement the page layout shown above would have this basic structure:

        -
        -<html><body><table width="100%" cellspacing="0" cellpadding="0" border="0">
        +
        <html><body><table width="100%" cellspacing="0" cellpadding="0" border="0">
         
         <tr>
           <td><!-- LOGO --></td>
        @@ -65,8 +68,7 @@
         
         <tr><td colspan="3"><!-- FOOTER --></td></tr>
         
        -</table></body></html>
        -
        +</table></body></html>

        The only special feature of this master template is the slave tag, which marks the location of the content area. Note that the content is inserted into the master template as a @@ -78,15 +80,13 @@

        Write the Page Template(s)

        A page template must include a master tag to specify that its output should be enclosed in a master template:

        -
        -<master src="/templates/master">
        +
        <master src="/templates/master">
         
         <!--Begin layout of page content-->
         <h3>\@title\@</h3>
         <p>by \@name\@</p>
         <p><b>\@byline\@</b>: \@text</p>
        -...
        -
        +...

        The master tag may be included anywhere in the body of the page template, although usually the top of the file is the best location for it.

        @@ -97,32 +97,26 @@ user's name on every page to indicate that the site has been personalized. The Tcl script associated with the master template would include code like this:

        -
        -set user_name [your_procedure_to_get_the_current_user_name]
        -
        +
        set user_name [your_procedure_to_get_the_current_user_name]

        The template would have a section like this:

        -
        -<if \@user_name\@ nil>
        +
        <if \@user_name\@ nil>
           <a href="/register.acs">Register Now!</a>
         </if>
         <else>
           \@user_name\@ (<a href="/signout.acs">Sign Out</a>)
        -</else>
        -
        +</else>

        Passing Property Values from the Page Template to Master Template

        As mentioned above, in many cases the dynamic elements of the master template depend on whatever is appearing in the content area for a particular request. The property tag may be used in the page template to specify values that should be passed to the master template:

        -
        -<master src="/templates/master">
        +
        <master src="/templates/master">
         <property name="title">\@title\@</property>
         
         <!--Begin layout of page content-->
        -...
        -
        +...

        In this case, the property tag establishes title as a data source for the master template. Properties are set as regular Tcl variables prior to executing the Index: openacs-4/packages/acs-templating/www/doc/guide/search.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/guide/search.adp,v diff -u -r1.3.2.3 -r1.3.2.4 --- openacs-4/packages/acs-templating/www/doc/guide/search.adp 6 Jun 2023 09:30:30 -0000 1.3.2.3 +++ openacs-4/packages/acs-templating/www/doc/guide/search.adp 2 Sep 2024 09:40:25 -0000 1.3.2.4 @@ -4,6 +4,10 @@ Templating System User Guide: Search-and-Select Forms +

        Implementing Search-and-Select Forms

        Templating System : User Index: openacs-4/packages/acs-templating/www/doc/guide/skins.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/guide/skins.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/guide/skins.adp 3 Sep 2021 09:16:21 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/guide/skins.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -4,6 +4,10 @@ Templating System User Guide: Presenting Data in Multiple Styles and Formats +

        Presenting Data in Multiple Styles and Formats

        Templating System : Developer Guide Index: openacs-4/packages/acs-templating/www/doc/guide/tcl.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/guide/tcl.adp,v diff -u -r1.3.2.3 -r1.3.2.4 --- openacs-4/packages/acs-templating/www/doc/guide/tcl.adp 6 Jun 2023 09:30:30 -0000 1.3.2.3 +++ openacs-4/packages/acs-templating/www/doc/guide/tcl.adp 2 Sep 2024 09:40:25 -0000 1.3.2.4 @@ -4,6 +4,10 @@ Templating System User Guide: Embedding Code in Templates +

        Embedding Code in Templates

        Templating System : Developer Guide Index: openacs-4/packages/acs-templating/www/doc/guide/templates.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/guide/templates.adp,v diff -u -r1.4.2.1 -r1.4.2.2 --- openacs-4/packages/acs-templating/www/doc/guide/templates.adp 3 Sep 2021 09:16:22 -0000 1.4.2.1 +++ openacs-4/packages/acs-templating/www/doc/guide/templates.adp 2 Sep 2024 09:40:25 -0000 1.4.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System User Guide: Writing Templates} Templating System User Guide: Writing Templates +

        Writing Templates

        Templating System : User Index: openacs-4/packages/acs-templating/www/doc/guide/wizard-procs-doc.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/guide/wizard-procs-doc.adp,v diff -u -r1.6.2.5 -r1.6.2.6 --- openacs-4/packages/acs-templating/www/doc/guide/wizard-procs-doc.adp 13 Jul 2023 12:48:33 -0000 1.6.2.5 +++ openacs-4/packages/acs-templating/www/doc/guide/wizard-procs-doc.adp 2 Sep 2024 09:40:25 -0000 1.6.2.6 @@ -2,21 +2,23 @@ {/doc/acs-templating/ {ACS Templating}} {Using the Wizard} Using the Wizard +

        Overview Of How To Make A Wizard

        1. Create a wizard file (ex. wizard.tcl) that contains the "template::wizard create" code. -
          -ex.
          +
          ex.
                  template::wizard create -action "wizard" -name my_wizard -params {
                     my_param1 my_param2
                  } -steps {
                     1 -label "Step 1" -url "step1"
                     2 -label "Step 2" -url "step2"        
                     3 -label "Step 3" -url "step3"
                  }
          -    
          -
            +
          • action - the url where the wizard will always submit, normally its the same as your current wizard file. Has no effect for subwizards.
          • name - use to distinguish between the different wizards, since @@ -35,11 +37,9 @@ processing the wizard will take over and rewrite the url.

          • Create the wizard template file (ex. wizard.adp). This file will include the file based current step of the wizard -
            -ex.
            +
            ex.
                    <include src="\@wizard:current_url\@">
            -    
            -
            +
          • Create the individual steps, these are just normal Tcl and/or adp files. So make a step1.tcl, step1.adp, step2.tcl, step2.adp, step3.tcl and step3.adp. Normally these files are self submitting @@ -49,13 +49,11 @@ step1.tcl will include
                 template::wizard submit myform -buttons {back next}
            -    
            -
            +
        On the last step you may want to use the following on step3.tcl
             template::wizard submit myform -buttons {back next}
        -    
        -
        + The following values are acceptable for the buttons: back, next and finish. Back buttons are not rendered if the step is the first step, like wise next buttons are not displayed if its the last @@ -77,8 +75,7 @@ \@wizard.label\@ <br> </else> </multiple> - - +
      • How do you set the value of a wizard param?

        Use "template::wizard set_param myparam_name" to set it. Normally you place this in the steps of the wizard where the @@ -99,27 +96,23 @@ 2 -label "Step 2" -url "step2" 3 -label "Step 3" -url "step3" } - - + You can access my_param1 and/or my_param2 on any step1.tcl, step2.tcl, or step3.tcl by using "ad_page_contract" or "template::wizard get_param" -

        -ex.
        +
        ex.
             ad_page_contract {
                gets the wizard params
             } {
                my_param1
                my_param2
             }
        -    
        -
        +
        or
             set my_param1 [template::wizard get_param my_param1]
             set my_param2 [template::wizard get_param my_param2]
        -    
        -
        + Note: "template::wizard get_param" has the advantage of getting the param value during the response time. What does this mean? It will properly get the current value of the param which was @@ -138,8 +131,7 @@ \@wizard.label\@ <br> </a> </multiple> - - + Note: that this is not a very wise thing to do especially if the latter steps will depend on the inputs from the earlier steps. You can however do checking on each step.
      • @@ -156,8 +148,7 @@ \@wizard.label\@ <br> </else> </multiple> - - + Note: that this is not a very wise thing to do especially if the latter steps will depend on the inputs from the earlier steps. You can however do checking on each step.
      • Index: openacs-4/packages/acs-templating/www/doc/guide/wizards.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/guide/wizards.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-templating/www/doc/guide/wizards.adp 13 Jul 2023 12:48:33 -0000 1.4.2.2 +++ openacs-4/packages/acs-templating/www/doc/guide/wizards.adp 2 Sep 2024 09:40:25 -0000 1.4.2.3 @@ -4,6 +4,10 @@ Templating System User Guide: Integrating Forms into a Wizard +

        Integrating Forms into a Wizard

        Templating System : User @@ -16,24 +20,19 @@

        Use the wizard create command to initialize a wizard, declaring any wizard state variables in the -params option:

        -
        -wizard create make_sandwich -params { sandwich_id }
        -
        +
        wizard create make_sandwich -params { sandwich_id }

        See the wizard API for optional parameters to this command.

        Add steps

        Once the wizard is created, use the wizard create command to add steps to it:

        -
        -wizard add make_sandwich -label "Add the lettuce" -url "add-lettuce"
        -
        +
        wizard add make_sandwich -label "Add the lettuce" -url "add-lettuce"

        In auto-generated wizards, the wizard steps appear in the order they were created. See the wizard API for optional parameters to this command. Alternatively, wizard steps can be created in the wizard create statement with the -steps option:

        -
        -wizard create make_sandwich -action "eat-sandwich.acs?sandwich_id=$sandwich_id" -params { 
        +
        wizard create make_sandwich -action "eat-sandwich.acs?sandwich_id=$sandwich_id" -params { 
           sandwich_id 
         } -steps { 
           1 -label "Add Meat"    -url "add-meat" -repeat
        @@ -47,8 +46,7 @@
         statement. At any point in the wizard process, a state
         variable's value can be updated using the wizard
         set_param command.

        -
        -# check to see if a sandwich_id has been passed in by the wizard
        +
        # check to see if a sandwich_id has been passed in by the wizard
         request set_param sandwich_id -datatype integer -optional
         
         # if not, then set the sandwich_id
        @@ -68,22 +66,18 @@
         
        • Adding wizard submit buttons to the form in place of the standard form submit button: -

          In the .tcl file:

          -if { [wizard exists] } {
          +

          In the .tcl file:

          if { [wizard exists] } {
             wizard submit form_name -buttons { 
               { previous "Back" } repeat { next "Continue" } { finish Save } 
             }
           } else {
             element create form_name submit -datatype keyword -widget submit
           }
          -

          In the .adp file:

          -<formtemplate id=\@form_name\@ style=wizard>
          -
          +

          In the .adp file:

          <formtemplate id=\@form_name\@ style=wizard>
        • Advancing the wizard with the wizard forward command. The page the wizard forwards to depends on which wizard submit button was pressed (next, repeat, previous, finish): -
          -if { [wizard exists] } {
          +
          if { [wizard exists] } {
             # go to the next wizard step
             wizard forward
           } else {
          Index: openacs-4/packages/acs-templating/www/doc/tagref/formerror.adp
          ===================================================================
          RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/formerror.adp,v
          diff -u -r1.4.2.1 -r1.4.2.2
          --- openacs-4/packages/acs-templating/www/doc/tagref/formerror.adp	3 Sep 2021 09:16:22 -0000	1.4.2.1
          +++ openacs-4/packages/acs-templating/www/doc/tagref/formerror.adp	2 Sep 2024 09:40:25 -0000	1.4.2.2
          @@ -2,6 +2,10 @@
           {/doc/acs-templating/ {ACS Templating}} {Templating System Tag Reference: formerror}
           Templating System Tag Reference: formerror
           
          +              
           

          formerror

          Templating System : Designer Guide Index: openacs-4/packages/acs-templating/www/doc/tagref/formgroup.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/formgroup.adp,v diff -u -r1.5.2.2 -r1.5.2.3 --- openacs-4/packages/acs-templating/www/doc/tagref/formgroup.adp 13 Jul 2023 12:48:33 -0000 1.5.2.2 +++ openacs-4/packages/acs-templating/www/doc/tagref/formgroup.adp 2 Sep 2024 09:40:25 -0000 1.5.2.3 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System Tag Reference: Formgroup} Templating System Tag Reference: Formgroup +

          Formgroup

          Templating System : Designer Guide @@ -42,9 +46,7 @@ attributes in the input tags of each radio button or check box in the group. Although possible, newer browser security features such as CSP discourage the use of inline Javascript event -handlers.

          -<formgroup id="services" style="background-color:white;">
          -
          +handlers.

          <formgroup id="services" style="background-color:white;">
        • See the formtemplate and formwidget tags for more information on writing the body of a dynamic form Index: openacs-4/packages/acs-templating/www/doc/tagref/formtemplate.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/formtemplate.adp,v diff -u -r1.5.2.2 -r1.5.2.3 --- openacs-4/packages/acs-templating/www/doc/tagref/formtemplate.adp 13 Jul 2023 12:48:33 -0000 1.5.2.2 +++ openacs-4/packages/acs-templating/www/doc/tagref/formtemplate.adp 2 Sep 2024 09:40:25 -0000 1.5.2.3 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System Tag Reference: Formtemplate} Templating System Tag Reference: Formtemplate +

          Formtemplate

          Templating System : Designer Guide @@ -34,9 +38,7 @@

          If the body of the formtemplate is empty, the templating system will generate a form automatically based on the list of elements created in the Tcl script associated with the -template:

          -<formtemplate id="add_user" style="standard"></formtemplate>
          -

          The style attribute is optional. It may be used to +template:

          <formtemplate id="add_user" style="standard"></formtemplate>

          The style attribute is optional. It may be used to select a style template from /ats/templates/forms for determining the layout of the auto-generated form. The default style is defined in the DefaultFormStyle parameter on the @@ -47,9 +49,7 @@ formtemplate tag. The system will include all such attributes in the form tag of the rendered HTML form. Although possible, newer browser security features such as CSP -discourage the use of inline Javascript event handlers.

          -<formtemplate id="add_user" style="background-color:white;">
          -

          This will work for both autogenerated and explicitly formatted +discourage the use of inline Javascript event handlers.

          <formtemplate id="add_user" style="background-color:white;">

          This will work for both autogenerated and explicitly formatted forms.

        • See the formwidget and formgroup tags for more Index: openacs-4/packages/acs-templating/www/doc/tagref/formwidget.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/formwidget.adp,v diff -u -r1.5.2.2 -r1.5.2.3 --- openacs-4/packages/acs-templating/www/doc/tagref/formwidget.adp 13 Jul 2023 12:48:33 -0000 1.5.2.2 +++ openacs-4/packages/acs-templating/www/doc/tagref/formwidget.adp 2 Sep 2024 09:40:25 -0000 1.5.2.3 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System Tag Reference: Formwidget} Templating System Tag Reference: Formwidget +

          Formwidget

          Templating System : Designer Guide @@ -39,9 +43,7 @@ attributes in the input or select tag of the rendered HTML form. Although possible, newer browser security features such as CSP discourage the use of inline Javascript event -handlers.

          -<formwidget id="cc_number" style="background-color:white;">
          -
          +handlers.

          <formwidget id="cc_number" style="background-color:white;">
        • See the formtemplate and formgroup tags for more information on writing the body of a dynamic form template.

        • Index: openacs-4/packages/acs-templating/www/doc/tagref/grid.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/grid.adp,v diff -u -r1.4.2.1 -r1.4.2.2 --- openacs-4/packages/acs-templating/www/doc/tagref/grid.adp 3 Sep 2021 09:16:24 -0000 1.4.2.1 +++ openacs-4/packages/acs-templating/www/doc/tagref/grid.adp 2 Sep 2024 09:40:25 -0000 1.4.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System Tag Reference: Grid} Templating System Tag Reference: Grid +

          Grid

          Templating System : Designer Guide Index: openacs-4/packages/acs-templating/www/doc/tagref/group.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/group.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-templating/www/doc/tagref/group.adp 13 Jul 2023 12:48:33 -0000 1.4.2.2 +++ openacs-4/packages/acs-templating/www/doc/tagref/group.adp 2 Sep 2024 09:40:25 -0000 1.4.2.3 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System Tag Reference: Group} Templating System Tag Reference: Group +

          Group

          Templating System : Designer Guide @@ -28,8 +32,7 @@ group tags nested within each other.

        Usage

        -
        -<table>
        +
        <table>
         
         <multiple name="shirts">
         
        @@ -60,8 +63,7 @@
         
         </multiple>
         
        -</table>
        -
        +</table>

        [Note: Carsten added this feature during the Berlin Hackaton 2004-02-14]

        The delimiter attribute will add a string after each Index: openacs-4/packages/acs-templating/www/doc/tagref/if.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/if.adp,v diff -u -r1.5.2.3 -r1.5.2.4 --- openacs-4/packages/acs-templating/www/doc/tagref/if.adp 13 Jul 2023 12:48:33 -0000 1.5.2.3 +++ openacs-4/packages/acs-templating/www/doc/tagref/if.adp 2 Sep 2024 09:40:25 -0000 1.5.2.4 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System Tag Reference: If} Templating System Tag Reference: If +

        If

        Templating System : Designer Guide @@ -83,8 +87,7 @@

        Any of these operators can be prefixed with not to invert the outcome.

        Usage Examples

        -
        -<if \@x\@ eq 5>True</if>
        +
        <if \@x\@ eq 5>True</if>
         <if \@x\@ eq "Greta">True</if>
         
         <if \@x\@ ne 5>True</if>
        @@ -112,8 +115,7 @@
         <if \@s\@ not nil>True</if>
         
         <if \@z\@ in "Greta" "Fred" "Sam">True</if>
        -<if \@z\@ not in "Greta" "Fred" "Sam">True</if>
        -
        +<if \@z\@ not in "Greta" "Fred" "Sam">True</if>

        Notes

        • Any legal variables that may be referenced in the template may @@ -124,8 +126,7 @@ grouped correctly:

             <if \@datasource.variable\@ eq "blue sky">
               <td bgcolor="#0000ff">
          -  </if>
          -
          + </if>
      • The elseif tag may be used following an if block to specify an alternate conditional template section.

        @@ -137,8 +138,7 @@
           </elseif>
           <else>
             <td bgcolor="#ffffff">
        -  </else>
        -
        + </else>
      • The else tag may be used following an if block to specify an alternate template section when a condition is @@ -148,8 +148,7 @@ </if> <else> <td bgcolor="#ffffff"> - </else> - + </else>

      • Compound expressions can be created by combining terms with the and and or keywords, as illustrated above. Any number of statements may be connected in this fashion. There is Index: openacs-4/packages/acs-templating/www/doc/tagref/include-optional.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/include-optional.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/tagref/include-optional.adp 3 Sep 2021 09:16:24 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/tagref/include-optional.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System Tag Reference: include-optional} Templating System Tag Reference: include-optional +

        Include

        Templating System : Designer Guide Index: openacs-4/packages/acs-templating/www/doc/tagref/include.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/include.adp,v diff -u -r1.4.2.3 -r1.4.2.4 --- openacs-4/packages/acs-templating/www/doc/tagref/include.adp 13 Jul 2023 12:48:33 -0000 1.4.2.3 +++ openacs-4/packages/acs-templating/www/doc/tagref/include.adp 2 Sep 2024 09:40:25 -0000 1.4.2.4 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System Tag Reference: Include} Templating System Tag Reference: Include +

        Include

        Templating System : Designer Guide @@ -13,14 +17,10 @@ in the same fashion as any other dynamic template; the developer may associate data sources and other properties to them.

        Usage

        -
        -<include src="subtemplate" attribute="value" ...>
        -
        +
        <include src="subtemplate" attribute="value" ...>
        or -
        -<include src="/packages/packagename/www/lib/subtemplate" attribute="value" ...>
        -
        +
        <include src="/packages/packagename/www/lib/subtemplate" attribute="value" ...>

        Notes

        • Arguments may be passed to the subtemplate by specifying @@ -29,9 +29,7 @@ as variables which the subtemplate may reference using the var tag. To pass a dynamic variable to the subtemplate, specify the variable name surrounded by at signs as the value: -
          -<include src="subtemplate" source_id="\@source_id\@" ...>
          -
          +
          <include src="subtemplate" source_id="\@source_id\@" ...>
          Note that passing an html string to a subtemplate via \@var\@ will result in passing an html-escaped and internationalized string. To prevent this, use @@ -41,9 +39,7 @@ scope of the subtemplate. This variant is necessary for e.g. passing a Tcl array like a templating datasource. To pass e.g. users by reference, use this notation: -
          -<include src="subtemplate" &persons="users" ...>
          -
          +
          <include src="subtemplate" &persons="users" ...>
          This is particularly useful for passing onerow and multirow data sourced. Note that in this case, if the subtemplate modifies the value this will affect the includer. When the datasource in the Index: openacs-4/packages/acs-templating/www/doc/tagref/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/index.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-templating/www/doc/tagref/index.adp 13 Jul 2023 12:48:33 -0000 1.4.2.2 +++ openacs-4/packages/acs-templating/www/doc/tagref/index.adp 2 Sep 2024 09:40:25 -0000 1.4.2.3 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Template Markup Tag Reference} Template Markup Tag Reference +

          Template Markup Tag Reference

          Templating System : Designer Guide @@ -41,8 +45,7 @@ crowding the start and end tags like so:

           <td><if %x% eq 5><img src="five.gif"></if>
           <else><img src="notfive.gif"></else></td>
          -        
          -

          Note that this should not be done unless necessary, since it +

          Note that this should not be done unless necessary, since it reduces the legibility of the template to others who need to edit the template later.

        • Index: openacs-4/packages/acs-templating/www/doc/tagref/list.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/list.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-templating/www/doc/tagref/list.adp 13 Jul 2023 12:48:33 -0000 1.4.2.2 +++ openacs-4/packages/acs-templating/www/doc/tagref/list.adp 2 Sep 2024 09:40:25 -0000 1.4.2.3 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System Tag Reference: List} Templating System Tag Reference: List +

          List

          Templating System : Designer Guide @@ -11,8 +15,7 @@

          The list tag is used to repeat a template section for each item in a list data source.

          Usage

          -
          -<list name="datasource">
          +
          <list name="datasource">
           
             <if \@datasource:rownum\@ ne \@datasource:rowcount\@>
               \@datasource:item\@ :
          @@ -21,8 +24,7 @@
               <b>\@datasource:item\@</b>
             </else>
           
          -</list>
          -
          +</list>

          Notes

          • The special variable Index: openacs-4/packages/acs-templating/www/doc/tagref/listtemplate.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/listtemplate.adp,v diff -u -r1.2.2.1 -r1.2.2.2 --- openacs-4/packages/acs-templating/www/doc/tagref/listtemplate.adp 3 Sep 2021 09:16:24 -0000 1.2.2.1 +++ openacs-4/packages/acs-templating/www/doc/tagref/listtemplate.adp 2 Sep 2024 09:40:25 -0000 1.2.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System Tag Reference: Listtemplate} Templating System Tag Reference: Listtemplate +

            Listtemplate

            Templating System : Designer Guide Index: openacs-4/packages/acs-templating/www/doc/tagref/master.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/master.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/acs-templating/www/doc/tagref/master.adp 13 Jul 2023 12:48:33 -0000 1.4.2.2 +++ openacs-4/packages/acs-templating/www/doc/tagref/master.adp 2 Sep 2024 09:40:25 -0000 1.4.2.3 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System Tag Reference: Master} Templating System Tag Reference: Master +

            Master

            Templating System : Designer Guide @@ -15,8 +19,7 @@ slave tag in the master template.

            Usage

            -
            -<master src="master">
            +
            <master src="master">
             
             <property name="title">My Home Page</property>
             
            Index: openacs-4/packages/acs-templating/www/doc/tagref/multiple.adp
            ===================================================================
            RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/multiple.adp,v
            diff -u -r1.5.2.2 -r1.5.2.3
            --- openacs-4/packages/acs-templating/www/doc/tagref/multiple.adp	13 Jul 2023 12:48:33 -0000	1.5.2.2
            +++ openacs-4/packages/acs-templating/www/doc/tagref/multiple.adp	2 Sep 2024 09:40:25 -0000	1.5.2.3
            @@ -2,6 +2,10 @@
             {/doc/acs-templating/ {ACS Templating}} {Templating System Tag Reference: Multiple}
             Templating System Tag Reference: Multiple
             
            +              
             

            Multiple

            Templating System : Designer Guide @@ -13,8 +17,7 @@ with each repetition to the values of the next row of the data source.

            Usage

            -
            -<!-- Begin multiple layout, i.e. <table> -->
            +
            <!-- Begin multiple layout, i.e. <table> -->
             <table>
             
             <multiple name="users">
            @@ -39,8 +42,7 @@
             </multiple>
             
             <!-- End multiple layout, i.e. </table> -->
            -</table>
            -
            +</table>
            
             

            Notes

              Index: openacs-4/packages/acs-templating/www/doc/tagref/noparse.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/noparse.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/tagref/noparse.adp 3 Sep 2021 09:16:27 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/tagref/noparse.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System Tag Reference: Noparse} Templating System Tag Reference: Noparse +

              Noparse

              Templating System : Tag Index: openacs-4/packages/acs-templating/www/doc/tagref/property.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/property.adp,v diff -u -r1.4.2.4 -r1.4.2.5 --- openacs-4/packages/acs-templating/www/doc/tagref/property.adp 13 Jul 2023 12:48:33 -0000 1.4.2.4 +++ openacs-4/packages/acs-templating/www/doc/tagref/property.adp 2 Sep 2024 09:40:25 -0000 1.4.2.5 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System Tag Reference: Property} Templating System Tag Reference: Property +

              Property

              Templating System : Designer Guide @@ -14,8 +18,7 @@ the ADP parser or not. Properties are most commonly used to pass information to a master template, such as a title or logo.

              Usage

              -
              -<master src="master">
              +
              <master src="master">
               <property name="title">My Home Page</property>
               <p>Welcome to my home page!</p>x
               ...
              Index: openacs-4/packages/acs-templating/www/doc/tagref/slave.adp
              ===================================================================
              RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/slave.adp,v
              diff -u -r1.4.2.2 -r1.4.2.3
              --- openacs-4/packages/acs-templating/www/doc/tagref/slave.adp	13 Jul 2023 12:48:33 -0000	1.4.2.2
              +++ openacs-4/packages/acs-templating/www/doc/tagref/slave.adp	2 Sep 2024 09:40:25 -0000	1.4.2.3
              @@ -2,6 +2,10 @@
               {/doc/acs-templating/ {ACS Templating}} {Templating System Tag Reference: Slave}
               Templating System Tag Reference: Slave
               
              +              
               

              Slave

              Templating System : Designer Guide @@ -11,17 +15,15 @@

              The slave tag is used to mark the position in the master template where the body template should be inserted.

              Usage

              -
              -<html>
              +
              <html>
               <head><title>\@title\@</title></head>
               <body>
               <h2>\@title\@</h2>
               <hr>
               <blockquote>
                 <slave>
               </blockquote>
              -<hr>
              -
              +<hr>

              Note(s)

              • See property and master for more information related to master templates.

              Index: openacs-4/packages/acs-templating/www/doc/tagref/switch.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/switch.adp,v diff -u -r1.5.2.2 -r1.5.2.3 --- openacs-4/packages/acs-templating/www/doc/tagref/switch.adp 13 Jul 2023 12:48:33 -0000 1.5.2.2 +++ openacs-4/packages/acs-templating/www/doc/tagref/switch.adp 2 Sep 2024 09:40:25 -0000 1.5.2.3 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System Tag Reference: Switch} Templating System Tag Reference: Switch +

              Switch

              Templating System : Designer Guide @@ -68,8 +72,7 @@ with spaces correctly results in an error.

                 <case "{blue sky}">
                   <td bgcolor="#0000ff">
              -  </case>
              -
              + </case>

            Index: openacs-4/packages/acs-templating/www/doc/tagref/variable.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/variable.adp,v diff -u -r1.5.2.2 -r1.5.2.3 --- openacs-4/packages/acs-templating/www/doc/tagref/variable.adp 13 Jul 2023 12:48:33 -0000 1.5.2.2 +++ openacs-4/packages/acs-templating/www/doc/tagref/variable.adp 2 Sep 2024 09:40:25 -0000 1.5.2.3 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System Tag Reference: Variables} Templating System Tag Reference: Variables +

            Variables

            Templating System : Designer Guide @@ -13,22 +17,17 @@

            Usage

            Simple variables are referenced by surrounding the variable name with "commercial at" (\@) signs:

            -
            -<!-- simple variables -->
            -<b><i>\@first_name\@ \@last_name\@</b></i>
            -
            +
            <!-- simple variables -->
            +<b><i>\@first_name\@ \@last_name\@</b></i>

            When processing this template, the server will look for variables named first_name and last_name and substitute their values in the output:

            -
            -<b><i>Fred Finkel</b></i>
            -
            +
            <b><i>Fred Finkel</b></i>

            The columns of a row variable are referenced by separating the data source name and column with a period:

             <!-- onerow or multirow data sources -->
            -<b><i>\@user.first_name\@ \@user.last_name\@</b></i>
            -
            +<b><i>\@user.first_name\@ \@user.last_name\@</b></i>

            Note(s)

            • An attempt to reference a variable that does not exist will cause an error message to appear in the browser.

            Index: openacs-4/packages/acs-templating/www/doc/widgets/date.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/widgets/date.adp,v diff -u -r1.3.2.2 -r1.3.2.3 --- openacs-4/packages/acs-templating/www/doc/widgets/date.adp 3 Sep 2021 09:16:29 -0000 1.3.2.2 +++ openacs-4/packages/acs-templating/www/doc/widgets/date.adp 2 Sep 2024 09:40:25 -0000 1.3.2.3 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System Widget Reference: Date} Templating System Widget Reference: Date +

            The Date Widget

            Templating System : Widget Reference : Date Index: openacs-4/packages/acs-templating/www/doc/widgets/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/widgets/index.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/widgets/index.adp 3 Sep 2021 09:16:29 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/widgets/index.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System Widget Reference} Templating System Widget Reference +

            Slave

            Templating System : Widget Index: openacs-4/packages/acs-templating/www/doc/widgets/input.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/widgets/input.adp,v diff -u -r1.5.2.2 -r1.5.2.3 --- openacs-4/packages/acs-templating/www/doc/widgets/input.adp 3 Sep 2021 09:16:29 -0000 1.5.2.2 +++ openacs-4/packages/acs-templating/www/doc/widgets/input.adp 2 Sep 2024 09:40:25 -0000 1.5.2.3 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System Widget Reference: Input} Templating System Widget Reference: Input +

            The Input Widgets

            Templating System : Widget Reference : Input Index: openacs-4/packages/acs-templating/www/doc/widgets/select.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/widgets/select.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/widgets/select.adp 3 Sep 2021 09:16:30 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/widgets/select.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System Widget Reference: Select} Templating System Widget Reference: Select +

            The Input Widgets

            Templating System : Widget Reference : Select Index: openacs-4/packages/acs-templating/www/doc/widgets/table.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/widgets/table.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/acs-templating/www/doc/widgets/table.adp 3 Sep 2021 09:16:30 -0000 1.3.2.1 +++ openacs-4/packages/acs-templating/www/doc/widgets/table.adp 2 Sep 2024 09:40:25 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/acs-templating/ {ACS Templating}} {Templating System Widget Reference: Table} Templating System Widget Reference: Table +

            Table Widget

            Templating System : Widget Reference : Table Index: openacs-4/packages/ajaxhelper/www/doc/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajaxhelper/www/doc/index.adp,v diff -u -r1.2.2.4 -r1.2.2.5 --- openacs-4/packages/ajaxhelper/www/doc/index.adp 31 Jul 2024 09:59:29 -0000 1.2.2.4 +++ openacs-4/packages/ajaxhelper/www/doc/index.adp 2 Sep 2024 09:40:25 -0000 1.2.2.5 @@ -2,6 +2,10 @@ {/doc/ajaxhelper/ {Ajax Helper}} {Ajax Helper} Ajax Helper +

            Ajax Helper

            Hamilton G. Chua (ham\@solutiongrove.com)
            September 2007
            @@ -133,7 +137,7 @@
            Cinematic Effects :

            -Use ah::effects to generate javascript that allows you + Use ah::effects to generate javascript that allows you to implement transitional and cinematic effects to html elements. You will need to consult the scriptaculous documentation http://madrobby.github.io/scriptaculous/core-effects/ Index: openacs-4/packages/assessment/www/doc/as_items.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/doc/as_items.adp,v diff -u -r1.9.2.5 -r1.9.2.6 --- openacs-4/packages/assessment/www/doc/as_items.adp 31 Jul 2024 09:59:29 -0000 1.9.2.5 +++ openacs-4/packages/assessment/www/doc/as_items.adp 2 Sep 2024 09:40:25 -0000 1.9.2.6 @@ -2,6 +2,10 @@ {/doc/assessment/ {Assessment}} {As_Items} As_Items +

            Overview

            The  As_Item and Section catalogues are central parts of the assessment system. These repositories @@ -127,7 +131,7 @@

            • Open Question -(as_item_type_oq):
              • +(as_item_type_oq):
                • as_item_type_id
                • cr::name - Identifier
                • default_value: The content of this field will be prefilled in @@ -136,7 +140,7 @@ response.
              • Short Answer -(as_item_type_sa):
                • +(as_item_type_sa):
                  • as_item_type_id
                  • cr::name - Identifier
                  • increasing_p:  Increasing will give (number of correct matches / number of total matches) *100% points. All or nothing @@ -148,7 +152,7 @@
                    • Short Answer Answers -(as_item_sa_answers):
                      • +(as_item_sa_answers):
                        • answer_id
                        • cr::name - Identifier
                        • cr::title - Answer string that will be matched against the response
                        • data_type - Integer vs. real number vs. text
                        • case_sensitive_p - Shall the match be case sensitive
                        • percent_score - Percentage a correct match gives
                          @@ -166,7 +170,7 @@
                        • Multiple Choice Item (as_item_type_mc)
                          -
                          • +
                            • cr::name - Identifier
                            • increasing_p:  Increasing will give (number of correct matches / number of total matches) *100% points. All or nothing @@ -223,7 +227,7 @@
                            • Image Map Multiple Choice Item (as_item_type_im):
                              -
                              • +
                                • cr::name - Identifier
                                • cr::title - Title of the image map.
                                • increasing_p:  Increasing will give (number of correct matches / number of total matches) *100% points. All or nothing @@ -239,7 +243,7 @@
                                • Image Map Choices (as_item_image_choices):
                                  -
                                  • +
                                    • choice_id
                                    • cr::parent_id (belonging to an as_item_type_im object).
                                    • cr::name - Identifier
                                    • cr::title - what is displayed in the choice's "label"
                                    • data_type - which of the value columns has the information this @@ -309,7 +313,7 @@
                                  • short_answer (as_item_display_sa) - Multiple textboxes in one -item.
                                    • +item.
                                      • abs_size - An abstraction of the real size value in "small","medium","large". Up to the @@ -403,7 +407,7 @@
                                    • select (as_item_display_sb) - multiple-option displayed in "popup menu" (select box)
                                      -
                                      • +
                                        • sort_order_type: Numerical, alphabetic, randomized or by order of entry (sort_order field).
                                        • allow_multiple_p - Is it allow one to select multiple values ?
                                        • @@ -421,7 +425,7 @@ the "question"

                                        • -
                                      • image map (as_item_display_im) - Title with picture
                                        • +
                                      • image map (as_item_display_im) - Title with picture
                                        • allow_multiple_p - Is it allow one to select multiple values ?
                                          @@ -468,9 +472,9 @@

                                      • pop-up_date - a widget with month-day-year select elements that resets the day element based on year and month (ie include Feb 29 -during leap years -- via Javascript) and tests for valid dates

                                      • typed_date - similar to pop-up_date but month-day-year elements +during leap years -- via Javascript) and tests for valid dates

                                      • typed_date - similar to pop-up_date but month-day-year elements are textboxes for all-keyboard entry; needs no resetting scripts -but does need date validity check

                                      • file_upload - present a File box (browse button, file_name +but does need date validity check

                                      • file_upload - present a File box (browse button, file_name textbox, and submit button together) so user can upload a file

                                      Help System

                                      Index: openacs-4/packages/assessment/www/doc/as_types.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/doc/as_types.adp,v diff -u -r1.2.2.2 -r1.2.2.3 --- openacs-4/packages/assessment/www/doc/as_types.adp 31 Jul 2024 09:59:29 -0000 1.2.2.2 +++ openacs-4/packages/assessment/www/doc/as_types.adp 2 Sep 2024 09:40:25 -0000 1.2.2.3 @@ -2,6 +2,10 @@ {/doc/assessment/ {Assessment}} {Item Types and Item Display Types} Item Types and Item Display Types +

                                      Overview

                                      What to do to add new item types or item display types:

                                      Index: openacs-4/packages/assessment/www/doc/data-model.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/doc/data-model.adp,v diff -u -r1.1.2.4 -r1.1.2.5 --- openacs-4/packages/assessment/www/doc/data-model.adp 31 Jul 2024 09:59:29 -0000 1.1.2.4 +++ openacs-4/packages/assessment/www/doc/data-model.adp 2 Sep 2024 09:40:25 -0000 1.1.2.5 @@ -2,6 +2,10 @@ {/doc/assessment/ {Assessment}} {Assessment Data Model Overview} Assessment Data Model Overview +

                                      Overview

                                      At its core, the Assessment package defines a hierarchical container model of a "survey", "questionnaire" Index: openacs-4/packages/assessment/www/doc/data_collection.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/doc/data_collection.adp,v diff -u -r1.5.2.5 -r1.5.2.6 --- openacs-4/packages/assessment/www/doc/data_collection.adp 1 Aug 2024 08:03:42 -0000 1.5.2.5 +++ openacs-4/packages/assessment/www/doc/data_collection.adp 2 Sep 2024 09:40:25 -0000 1.5.2.6 @@ -2,6 +2,10 @@ {/doc/assessment/ {Assessment}} {Data Collection} Data Collection +

                                      Overview

                                      The schema for the entities that actually collect, store and retrieve Assessment data parallels the hierarchical structure of Index: openacs-4/packages/assessment/www/doc/display_types.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/doc/display_types.adp,v diff -u -r1.7.2.6 -r1.7.2.7 --- openacs-4/packages/assessment/www/doc/display_types.adp 31 Jul 2024 09:59:29 -0000 1.7.2.6 +++ openacs-4/packages/assessment/www/doc/display_types.adp 2 Sep 2024 09:40:25 -0000 1.7.2.7 @@ -2,6 +2,10 @@ {/doc/assessment/ {Assessment}} {As_Item Display Types} As_Item Display Types +

                                      Overview

                                      Displaying items to users has a couple of challenges. First of all the display of a single item can be @@ -99,7 +103,7 @@ entry (sort_order field).
                                  • select - multiple-option displayed in "popup -menu"
                                    • +menu"
                                      • sort_order: Numerical, alphabetic, randomized or by order of entry (sort_order field).
                                      • allow_multiple_p - Is it allow one to select multiple values ?
                                      • Index: openacs-4/packages/assessment/www/doc/grouping.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/doc/grouping.adp,v diff -u -r1.8.2.4 -r1.8.2.5 --- openacs-4/packages/assessment/www/doc/grouping.adp 31 Jul 2024 09:59:29 -0000 1.8.2.4 +++ openacs-4/packages/assessment/www/doc/grouping.adp 2 Sep 2024 09:40:26 -0000 1.8.2.5 @@ -2,6 +2,10 @@ {/doc/assessment/ {Assessment}} {Assessment} Assessment +

                                        Here is a graphical overview of the subsystem in the Assessment package that organizes Items into Sections and whole Assessments:
                                        @@ -65,7 +69,7 @@ incorrect). Correct and Incorrect will only show the feedback_text if the response was correct or incorrect.

                                      • section_navigation - How shall the navigation happen
                                        -
                                        • +
                                          • default path - Order given by the relationship between assessment and section (the order value in cr_rels, if this is used).
                                            @@ -81,7 +85,7 @@ as_assessment_styles:
                                            -
                                          • +
                                            • custom_header - Custom header (and footer) that will be displayed to the respondee when answering an assessment. Index: openacs-4/packages/assessment/www/doc/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/doc/index.adp,v diff -u -r1.5.2.4 -r1.5.2.5 --- openacs-4/packages/assessment/www/doc/index.adp 1 Aug 2024 08:03:42 -0000 1.5.2.4 +++ openacs-4/packages/assessment/www/doc/index.adp 2 Sep 2024 09:40:26 -0000 1.5.2.5 @@ -2,6 +2,10 @@ {/doc/assessment/ {Assessment}} {Assessment Overview} Assessment Overview +

                                              Introduction

                                              The Assessment Package unites the work and needs of various members of the OpenACS community for data collection functionality Index: openacs-4/packages/assessment/www/doc/item_types.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/doc/item_types.adp,v diff -u -r1.4.2.6 -r1.4.2.7 --- openacs-4/packages/assessment/www/doc/item_types.adp 2 Sep 2024 08:01:11 -0000 1.4.2.6 +++ openacs-4/packages/assessment/www/doc/item_types.adp 2 Sep 2024 09:40:26 -0000 1.4.2.7 @@ -2,6 +2,10 @@ {/doc/assessment/ {Assessment}} {AS_item Types} AS_item Types +

                                              Overview

                                              This is a list of item types and some of Index: openacs-4/packages/assessment/www/doc/page_flow.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/doc/page_flow.adp,v diff -u -r1.2.2.2 -r1.2.2.3 --- openacs-4/packages/assessment/www/doc/page_flow.adp 3 Sep 2021 09:16:31 -0000 1.2.2.2 +++ openacs-4/packages/assessment/www/doc/page_flow.adp 2 Sep 2024 09:40:26 -0000 1.2.2.3 @@ -2,6 +2,10 @@ {/doc/assessment/ {Assessment}} {Page Flow} Page Flow +

                                              Overview

                                              Through the OpenACS templating system, the UI look&feel will be modifiable by specific sites, so we needn't address page Index: openacs-4/packages/assessment/www/doc/policies.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/doc/policies.adp,v diff -u -r1.2.2.2 -r1.2.2.3 --- openacs-4/packages/assessment/www/doc/policies.adp 3 Sep 2021 09:16:31 -0000 1.2.2.2 +++ openacs-4/packages/assessment/www/doc/policies.adp 2 Sep 2024 09:40:26 -0000 1.2.2.3 @@ -2,6 +2,10 @@ {/doc/assessment/ {Assessment}} {Policies and Events} Policies and Events +

                                              Policies and Events

                                                Index: openacs-4/packages/assessment/www/doc/requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/doc/requirements.adp,v diff -u -r1.6.2.5 -r1.6.2.6 --- openacs-4/packages/assessment/www/doc/requirements.adp 31 Jul 2024 09:59:29 -0000 1.6.2.5 +++ openacs-4/packages/assessment/www/doc/requirements.adp 2 Sep 2024 09:40:26 -0000 1.6.2.6 @@ -2,6 +2,10 @@ {/doc/assessment/ {Assessment}} {Assessment functional requirements} Assessment functional requirements +

                                                Introduction

                                                The assessment module provides OpenACS with capabilities to conduct Index: openacs-4/packages/assessment/www/doc/sequencing.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/doc/sequencing.adp,v diff -u -r1.4.2.3 -r1.4.2.4 --- openacs-4/packages/assessment/www/doc/sequencing.adp 31 Jul 2024 09:59:29 -0000 1.4.2.3 +++ openacs-4/packages/assessment/www/doc/sequencing.adp 2 Sep 2024 09:40:27 -0000 1.4.2.4 @@ -2,6 +2,10 @@ {/doc/assessment/ {Assessment}} {Assessment Item Checks} Assessment Item Checks +

                                                Sequencing

                                                Along with Data Validation and Versioning, probably the most vexing problem confronting the Assessment package is how to handle Index: openacs-4/packages/assessment/www/doc/versioning.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/doc/versioning.adp,v diff -u -r1.2.2.2 -r1.2.2.3 --- openacs-4/packages/assessment/www/doc/versioning.adp 31 Jul 2024 09:59:29 -0000 1.2.2.2 +++ openacs-4/packages/assessment/www/doc/versioning.adp 2 Sep 2024 09:40:27 -0000 1.2.2.3 @@ -2,6 +2,10 @@ {/doc/assessment/ {Assessment}} {Versioning} Versioning +

                                                Overview

                                                This topic requires special mention because it is centrally important to Assessment and one of the most radical departures from Index: openacs-4/packages/assessment/www/doc/asm_trigger_doc/bi01.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/doc/asm_trigger_doc/bi01.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/assessment/www/doc/asm_trigger_doc/bi01.adp 3 Sep 2021 09:16:33 -0000 1.3.2.1 +++ openacs-4/packages/assessment/www/doc/asm_trigger_doc/bi01.adp 2 Sep 2024 09:40:27 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/assessment/ {Assessment}} {Bibliography} Bibliography + {/doc/assessment/ {Assessment}} {Bibliography} Bibliography + {/doc/assessment/ {Assessment}} {Chapter 1. Design} Chapter 1. Design + {/doc/assessment/ {Assessment}} {1. Data Model} 1. Data Model + {/doc/assessment/ {Assessment}} {Chapter 2. User Manual} Chapter 2. User Manual + {/doc/assessment/ {Assessment}} {1. Manage Permissions} 1. Manage Permissions + {/doc/assessment/ {Assessment}} {2. Actions Administration} 2. Actions Administration + {/doc/assessment/ {Assessment}} {3. Trigger Definition} 3. Trigger Definition + {/doc/assessment/ {Assessment}} {4. Branch Triggers} 4. Branch Triggers + {/doc/assessment/ {Assessment}} {5. Action Triggers} 5. Action Triggers + {/doc/assessment/ {Assessment}} {6. Trigger Administration} 6. Trigger Administration + {/doc/assessment/ {Assessment}} {7. Request Administration} 7. Request Administration + {/doc/assessment/ {Assessment}} {Chapter 3. Registration Assessment} Chapter 3. Registration Assessment + {/doc/assessment/ {Assessment}} {Chapter 4. Authors} Chapter 4. Authors + {/doc/assessment/ {Assessment}} {Triggers and Action Execution in Assessment} Triggers and Action Execution in Assessment + {/doc/assessment/ {Assessment}} {Assessment Creation} Assessment Creation + When creating an assessment the administrator has a couple of fields to determine the look and feel of the assessment along with the option @@ -107,12 +111,12 @@

                                              • Notifications will be done using the notification system of OpenACS.
                                              • For all notifications allow system variables should be -used.
                                                • +used.
                                                  • System_name
                                                  • User_name
                                                  • user_id
                                                  • ... (free for the developer to think about what is useful)
                                                • Links to spam the following group of people (information can be -taken out of as_sessions):
                                                  • +taken out of as_sessions):
                                                    • All respondees having access to the assessment
                                                    • All respondees that have not started the assessment
                                                    • All respondees with unfinished assessments
                                                    • All respondees with finished assessment
                                                  • Notification message: richtext. This will allow the creator to @@ -133,7 +137,7 @@ link)
                                                  • View responses per Question
                                                  • View responses by Filter / Groups / Values (e.g. search for questions with a negative distractor)
                                                  • Grant access to responses (using the permission system):
                                                    -
                                                    • +
                                                      • Closed - Only the owner of the assessment can see the responses
                                                      • Admin - Only admins of the assessment can see the Index: openacs-4/packages/assessment/www/doc/user_interface/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/doc/user_interface/index.adp,v diff -u -r1.8.2.4 -r1.8.2.5 --- openacs-4/packages/assessment/www/doc/user_interface/index.adp 31 Jul 2024 09:59:30 -0000 1.8.2.4 +++ openacs-4/packages/assessment/www/doc/user_interface/index.adp 2 Sep 2024 09:40:27 -0000 1.8.2.5 @@ -2,6 +2,10 @@ {/doc/assessment/ {Assessment}} {Appendix A: RFC for Assessment Specs} Appendix A: RFC for Assessment Specs +

                                                        Introduction

                                                        In recent times the survey system has expanded beyond it's initial scope of providing a quick and Index: openacs-4/packages/assessment/www/doc/user_interface/item_creation.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/doc/user_interface/item_creation.adp,v diff -u -r1.7.2.4 -r1.7.2.5 --- openacs-4/packages/assessment/www/doc/user_interface/item_creation.adp 2 Sep 2024 08:01:11 -0000 1.7.2.4 +++ openacs-4/packages/assessment/www/doc/user_interface/item_creation.adp 2 Sep 2024 09:40:27 -0000 1.7.2.5 @@ -2,6 +2,10 @@ {/doc/assessment/ {Assessment}} {Question Catalogue} Question Catalogue + Question Catalogue: Summary:

                                                        The question catalogue is a central part Index: openacs-4/packages/assessment/www/doc/user_interface/section_creation.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/doc/user_interface/section_creation.adp,v diff -u -r1.6.2.4 -r1.6.2.5 --- openacs-4/packages/assessment/www/doc/user_interface/section_creation.adp 2 Sep 2024 08:01:11 -0000 1.6.2.4 +++ openacs-4/packages/assessment/www/doc/user_interface/section_creation.adp 2 Sep 2024 09:40:28 -0000 1.6.2.5 @@ -2,6 +2,10 @@ {/doc/assessment/ {Assessment}} {Sections} Sections + Section page. This page is for editing information about a section and adding questions to it. It contains a couple of subpages. Data model can be found here.

                                                        @@ -39,7 +43,7 @@

                                                      • Sequencing Information
                                                        -
                                                        • +
                                                          • Display of the Pre Display Checks (with an edit and a remove link).
                                                          • Add new Pre Display Check.
                                                          • Add new Post Display Index: openacs-4/packages/assessment/www/doc/user_interface/tests.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/doc/user_interface/tests.adp,v diff -u -r1.8.2.6 -r1.8.2.7 --- openacs-4/packages/assessment/www/doc/user_interface/tests.adp 2 Sep 2024 08:01:11 -0000 1.8.2.6 +++ openacs-4/packages/assessment/www/doc/user_interface/tests.adp 2 Sep 2024 09:40:28 -0000 1.8.2.7 @@ -2,10 +2,14 @@ {/doc/assessment/ {Assessment}} {Tests} Tests -A test -is a special kind of assessment that allows the respondee's -answers to be rated immediately. Unless otherwise stated, all pages -described are admin viewable only. + +A +test is a special kind of assessment that allows the +respondee's answers to be rated immediately. Unless otherwise +stated, all pages described are admin viewable only.
                                                            • Settings
                                                                Index: openacs-4/packages/assessment/www/doc/user_interface/user_experience.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/doc/user_interface/user_experience.adp,v diff -u -r1.5.2.4 -r1.5.2.5 --- openacs-4/packages/assessment/www/doc/user_interface/user_experience.adp 2 Sep 2024 08:01:11 -0000 1.5.2.4 +++ openacs-4/packages/assessment/www/doc/user_interface/user_experience.adp 2 Sep 2024 09:40:28 -0000 1.5.2.5 @@ -2,6 +2,10 @@ {/doc/assessment/ {Assessment}} {User Experience} User Experience + User experience describes the various steps the USER sees and what he can do when taking an assessment. When answering a section a couple Index: openacs-4/packages/attachments/www/doc/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/attachments/www/doc/index.adp,v diff -u -r1.3.2.5 -r1.3.2.6 --- openacs-4/packages/attachments/www/doc/index.adp 13 Jul 2023 12:45:46 -0000 1.3.2.5 +++ openacs-4/packages/attachments/www/doc/index.adp 2 Sep 2024 09:40:28 -0000 1.3.2.6 @@ -2,6 +2,10 @@ {/doc/attachments/ {Attachments}} {} +

                                                                Contents

                                                                1 Attachments
                                                                @@ -91,30 +95,26 @@ attachments is not properly mounted. To do this, add the following proc to your package's API and wrap all calls to the attachments package with it:

                                                                -
                                                                -    ad_proc -private attachments_enabled_p {} {
                                                                +
                                                                    ad_proc -private attachments_enabled_p {} {
                                                                         set package_id [site_node_apm_integration::child_package_exists_p \
                                                                             -package_key attachments
                                                                         ]
                                                                -    }
                                                                -
                                                                + }

                                                                1.2.3.2 Get the attachment Url

                                                                When you want to set up the link that the user can click on to attach something to an object, use the attachments::add_attachment_url proc, which will return the correct Url into the attachments package mounted under your package.

                                                                -
                                                                -    if {$attachments_enabled_p} {
                                                                +
                                                                    if {$attachments_enabled_p} {
                                                                         if {$attach_p} {
                                                                             set redirect_url [attachments::add_attachment_url \
                                                                                                   -object_id $message_id \
                                                                                                   -return_url $redirect_url \
                                                                                                   -pretty_name "$subject"]
                                                                         }
                                                                -    }
                                                                -
                                                                + }

                                                                forums redirects the user to the redirect_url, if the user chose to add an attachment to their posting.

                                                                Index: openacs-4/packages/calendar/www/doc/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/calendar/www/doc/index.adp,v diff -u -r1.2.2.1 -r1.2.2.2 --- openacs-4/packages/calendar/www/doc/index.adp 3 Sep 2021 09:16:38 -0000 1.2.2.1 +++ openacs-4/packages/calendar/www/doc/index.adp 2 Sep 2024 09:40:28 -0000 1.2.2.2 @@ -2,6 +2,10 @@ {/doc/calendar/ {Calendar}} {OpenACS Calendar package} OpenACS Calendar package +

                                                                OpenACS Calendar package

                                                                OpenACS documentation

                                                                The OpenACS calendar package is a web-based calendar package. In Index: openacs-4/packages/calendar/www/doc/requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/calendar/www/doc/requirements.adp,v diff -u -r1.4.2.8 -r1.4.2.9 --- openacs-4/packages/calendar/www/doc/requirements.adp 13 Jul 2023 12:45:46 -0000 1.4.2.8 +++ openacs-4/packages/calendar/www/doc/requirements.adp 2 Sep 2024 09:40:28 -0000 1.4.2.9 @@ -2,6 +2,10 @@ {/doc/calendar/ {Calendar}} {Calendar Package Requirements} Calendar Package Requirements +

                                                                Calendar Package Requirements

                                                                by Gary Jin @@ -552,8 +556,8 @@ 50.20.70 Provide a function to generate the HTML for the complete calendar.

                                                                VII. Revision History

                                                                -
                                                                - +
                                                                +
                                                                @@ -573,9 +577,8 @@ -
                                                                Document Revision #Action Taken, NotesWhen?By Whom?
                                                                0.7Further Revisions2000/12/06Joshua Finkler and Gary Jin
                                                                -
                                                                -
                                                                +

                                                                gjin\@arsdigita.com and smeeks\@arsdigita.com
                                                                + Index: openacs-4/packages/calendar/www/doc/test-cases.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/calendar/www/doc/test-cases.adp,v diff -u -r1.2.2.1 -r1.2.2.2 --- openacs-4/packages/calendar/www/doc/test-cases.adp 3 Sep 2021 09:16:39 -0000 1.2.2.1 +++ openacs-4/packages/calendar/www/doc/test-cases.adp 2 Sep 2024 09:40:28 -0000 1.2.2.2 @@ -2,6 +2,10 @@ {/doc/calendar/ {Calendar}} {OpenACS Calendar package - test cases} OpenACS Calendar package - test cases +

                                                                OpenACS Calendar package - test cases

                                                                • Create an item that starts at 00:00

                                                                Index: openacs-4/packages/categories/www/doc/design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/categories/www/doc/design.adp,v diff -u -r1.3.2.3 -r1.3.2.4 --- openacs-4/packages/categories/www/doc/design.adp 13 Jul 2023 12:45:46 -0000 1.3.2.3 +++ openacs-4/packages/categories/www/doc/design.adp 2 Sep 2024 09:40:28 -0000 1.3.2.4 @@ -2,6 +2,10 @@ {/doc/categories/ {Categories}} {Categories} Categories +

                                                                Categories

                                                                Object Names and IdHandler Service Contract

                                                                Functionality overview

                                                                @@ -198,8 +202,7 @@ Alternatively, you can include the following in your adp:
                                                                -  <include src="/packages/categories/www/include/widget" object_id=\@object_id\@ package_id=\@package_id\@>
                                                                -
                                                                + <include src="/packages/categories/www/include/widget" object_id=\@object_id\@ package_id=\@package_id\@>

            In the processing part of ad_form use:
            Index: openacs-4/packages/categories/www/doc/index.adp
            ===================================================================
            RCS file: /usr/local/cvsroot/openacs-4/packages/categories/www/doc/index.adp,v
            diff -u -r1.2.2.1 -r1.2.2.2
            --- openacs-4/packages/categories/www/doc/index.adp	3 Sep 2021 09:16:41 -0000	1.2.2.1
            +++ openacs-4/packages/categories/www/doc/index.adp	2 Sep 2024 09:40:28 -0000	1.2.2.2
            @@ -2,6 +2,10 @@
             {/doc/categories/ {Categories}} {Categories}
             Categories
             
            +              
             

            Categories

            Index: openacs-4/packages/categories/www/doc/install.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/categories/www/doc/install.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/categories/www/doc/install.adp 3 Sep 2021 09:16:41 -0000 1.3.2.1 +++ openacs-4/packages/categories/www/doc/install.adp 2 Sep 2024 09:40:28 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/categories/ {Categories}} {Installation} Installation + {/doc/categories/ {Categories}} {IdHandler Service Contract} IdHandler Service Contract +

            IdHandler Service Contract

            Besides displaying the names of objects, some pages also want to Index: openacs-4/packages/categories/www/doc/requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/categories/www/doc/requirements.adp,v diff -u -r1.3.2.1 -r1.3.2.2 --- openacs-4/packages/categories/www/doc/requirements.adp 3 Sep 2021 09:16:41 -0000 1.3.2.1 +++ openacs-4/packages/categories/www/doc/requirements.adp 2 Sep 2024 09:40:28 -0000 1.3.2.2 @@ -2,6 +2,10 @@ {/doc/categories/ {Categories}} {Requirements} Requirements + {/doc/dotlrn-homework/ {dotLRN Homework}} {dotLRN Homework Package Design Document} dotLRN Homework Package Design Document +

            dotLRN Homework Package Design Document

            by Don Baccus Index: openacs-4/packages/file-storage/www/doc/design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/file-storage/www/doc/design.adp,v diff -u -r1.4.2.6 -r1.4.2.7 --- openacs-4/packages/file-storage/www/doc/design.adp 1 Aug 2024 08:03:42 -0000 1.4.2.6 +++ openacs-4/packages/file-storage/www/doc/design.adp 2 Sep 2024 09:40:28 -0000 1.4.2.7 @@ -2,6 +2,10 @@ {/doc/file-storage/ {File Storage}} {File Storage Design Document} File Storage Design Document +

            File Storage Design Document

            by Kevin Scaldeferri @@ -173,104 +177,95 @@

            Tcl API

            -

            children_have_permission_p

            -children_have_permission_p [ -user_id user_id ] item_idprivilege
            +

            children_have_permission_p

            children_have_permission_p [ -user_id user_id ] item_idprivilege
             
            This procedure, given a content item and a privilege, checks to see if there are any children of the item on which the user does not have that privilege.
            -
            Switches:
            +
            Switches:
            -user_id (optional)
            -
            Parameters:
            +
            Parameters:
            item_id
            privilege
            -

            fs_context_bar_list

            -fs_context_bar_list [ -final final ] item_id
            +

            fs_context_bar_list

            fs_context_bar_list [ -final final ] item_id
             
            Constructs the list to be fed to ad_context_bar appropriate for item_id. If -final is specified, that string will be the last item in the context bar. Otherwise, the name corresponding to item_id will be used.
            -
            Switches:
            +
            Switches:
            -final (optional)
            -
            Parameters:
            +
            Parameters:
            item_id
            -

            fs_file_downloader

            -fs_file_downloader connkey
            +

            fs_file_downloader

            fs_file_downloader connkey
             
            Sends the requested file to the user. Note that the path has the original file name, so the browser will have a sensible name if you save the file. Version downloads are supported by looking for the form variable version_id. We don't actually check that the version_id matches the path, we just serve it up.
            -
            Parameters:
            +
            Parameters:
            conn
            key
            -

            fs_file_p

            -fs_file_p file_id
            +

            fs_file_p

            fs_file_p file_id
             
            Returns 1 if the file_id corresponds to a file in the file-storage system. Returns 0 otherwise.
            -
            Parameters:
            +
            Parameters:
            file_id
            -

            fs_folder_p

            -fs_folder_p folder_id
            +

            fs_folder_p

            fs_folder_p folder_id
             
            Returns 1 if the folder_id corresponds to a folder in the file-storage system. Returns 0 otherwise.
            -
            Parameters:
            +
            Parameters:
            folder_id
            -

            fs_get_folder_name

            -fs_get_folder_name folder_id
            +

            fs_get_folder_name

            fs_get_folder_name folder_id
             
            Returns the name of a folder.
            -
            Parameters:
            +
            Parameters:
            folder_id
            -

            fs_root_folder

            -fs_root_folder [ -package_id package_id ]
            -
            Returns the root folder for the file storage system. +

            fs_root_folder

            fs_root_folder [ -package_id package_id ]
            Returns the root folder for the file storage system.
            -
            Switches:
            +
            Switches:
            -package_id (optional)
            -

            fs_version_p

            -fs_version_p version_id
            +

            fs_version_p

            fs_version_p version_id
             
            Returns 1 if the version_id corresponds to a version in the file-storage system. Returns 0 otherwise.
            -
            Parameters:
            +
            Parameters:
            version_id
            @@ -387,21 +382,19 @@ the canonical long form of a MIME type.

            XI. Authors

            -
            • System creator:
              -
            -
            3.x : David Hill +
          • System creator:
            3.x : David Hill and Aurelius Prochazka
            4.x : Kevin Scaldeferri -
            -
            • System owner
            +
            • +
            • System owner
              Kevin Scaldeferri
              -
              • Documentation author
              +
            • Documentation author
              Kevin Scaldeferri
              -

              XII. Revision History

              - + +

              XII. Revision History

              @@ -411,6 +404,5 @@ -
              Document Revision #Action Taken, NotesWhen?By Whom?
              0.2Revised after review by Josh11/16/2000Kevin Scaldeferri, Josh Finkler
              -
              -kevin\@arsdigita.com +

            kevin\@arsdigita.com +
          • Index: openacs-4/packages/file-storage/www/doc/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/file-storage/www/doc/index.adp,v diff -u -r1.3.2.2 -r1.3.2.3 --- openacs-4/packages/file-storage/www/doc/index.adp 13 Jul 2023 12:45:46 -0000 1.3.2.2 +++ openacs-4/packages/file-storage/www/doc/index.adp 2 Sep 2024 09:40:28 -0000 1.3.2.3 @@ -2,12 +2,15 @@ {/doc/file-storage/ {File Storage}} {File-Storage Documentation} File-Storage Documentation +

            File-Storage Documentation

            Release Notes

            Please file bugs in the Bug Tracker.


            - -
            kevin\@arsdigita.com
            +
            kevin\@arsdigita.com
            Index: openacs-4/packages/file-storage/www/doc/requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/file-storage/www/doc/requirements.adp,v diff -u -r1.2.2.1 -r1.2.2.2 --- openacs-4/packages/file-storage/www/doc/requirements.adp 3 Sep 2021 09:16:42 -0000 1.2.2.1 +++ openacs-4/packages/file-storage/www/doc/requirements.adp 2 Sep 2024 09:40:28 -0000 1.2.2.2 @@ -2,6 +2,10 @@ {/doc/file-storage/ {File Storage}} {File-Storage Application Requirements} File-Storage Application Requirements +

            File-Storage Application Requirements

            by Kevin Scaldeferri Index: openacs-4/packages/general-comments/www/doc/design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/general-comments/www/doc/design.adp,v diff -u -r1.4.2.2 -r1.4.2.3 --- openacs-4/packages/general-comments/www/doc/design.adp 3 Sep 2021 09:16:42 -0000 1.4.2.2 +++ openacs-4/packages/general-comments/www/doc/design.adp 2 Sep 2024 09:40:28 -0000 1.4.2.3 @@ -2,6 +2,10 @@ {/doc/general-comments/ {General Comments}} {Design Document} Design Document +