Index: openacs-4/packages/acs-core-docs/www/aolserver.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/aolserver.adp,v
diff -u -N -r1.1.2.9 -r1.1.2.10
--- openacs-4/packages/acs-core-docs/www/aolserver.adp 6 Jan 2017 09:18:41 -0000 1.1.2.9
+++ openacs-4/packages/acs-core-docs/www/aolserver.adp 2 Jun 2017 11:12:57 -0000 1.1.2.10
@@ -84,7 +84,7 @@
[root aolserver]# export POSTGRES=/usr/local/pgsql; ./conf
Building in /usr/local/aolserver
with the following modules:
-aolserver
+AOLserver
nscache
nsrewrite
nssha1
@@ -303,8 +303,8 @@
Install Analog web file analyzer. (OPTIONAL)
[root aolserver]# export POSTGRES=/usr/local/pgsql; ./conf
Building in /usr/local/aolserver
with the following modules:
-aolserver
+AOLserver
nscache
nsrewrite
nssha1
Index: openacs-4/packages/acs-core-docs/www/aolserver4.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/aolserver4.adp,v
diff -u -N -r1.1.2.9 -r1.1.2.10
--- openacs-4/packages/acs-core-docs/www/aolserver4.adp 21 Apr 2017 15:07:52 -0000 1.1.2.9
+++ openacs-4/packages/acs-core-docs/www/aolserver4.adp 2 Jun 2017 11:12:57 -0000 1.1.2.10
@@ -17,7 +17,7 @@
Check suitability of previously installed
-TCL. Start tcl (type tclsh
or find it using
+TCL. Start Tcl (type tclsh
or find it using
which tclsh
).
[root root]% info exists tcl_platform(threaded)
1
@@ -28,16 +28,16 @@
info exists tcl_platform(threaded)
info patchlevel
-
If the first command returns anything other than 1
, then tcl is not threaded. If tcl is
-threaded and the version is 8.4 or higher, then installing tcl from
+
If the first command returns anything other than 1
, then Tcl is not threaded. If Tcl is
+threaded and the version is 8.4 or higher, then installing Tcl from
source is optional.
Retrieve Tcl 8.4 (or higher). Download and install Tcl 8.4 from source
Note for Debian users: you can apt-get install 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 -/usr/local/lib when you try to find the tcl libraries, however.
If you have not installed Tcl already, download the latest Tcl +/usr/local/lib when you try to find the Tcl libraries, however.
If you have not installed Tcl already, download the latest Tcl version from Sourceforge
Debian:apt-get
install tcl8.4 tcl8.4-dev
and proceed to the
@@ -64,7 +64,7 @@
Retrieve AOLserver. Download the -aolserver from CVS.
+AOLserver from CVS.[root root]#cd /usr/local/src
[root src]#mkdir aolserver40r10
[root src]#cd aolserver40r10
@@ -81,7 +81,7 @@ cd /usr/local/src mkdir aolserver40r10 cd aolserver40r10 -cvs -z3 -d:pserver:anonymous\@cvs.sourceforge.net:/cvsroot/aolserver co -r aolserver_v40_r10 aolserver +cvs -z3 -d:pserver:anonymous\@cvs.sourceforge.net:/cvsroot/aolserver co -r aolserver_v40_r10 AOLserver cvs -z3 -d:pserver:anonymous\@cvs.sourceforge.net:/cvsroot/aolserver co nscache cvs -z3 -d:pserver:anonymous\@cvs.sourceforge.net:/cvsroot/aolserver co nspostgres cvs -z3 -d:pserver:anonymous\@cvs.sourceforge.net:/cvsroot/aolserver co nssha1 @@ -234,8 +234,8 @@ -b yourip:yourport switch)
Check suitability of previously installed TCL. Start tcl (type tclsh
or find it using which tclsh
).
+
Check suitability of previously installed TCL. Start Tcl (type tclsh
or find it using which tclsh
).
[root root]%info exists tcl_platform(threaded)
1 [root root]%info patchlevel
@@ -12,14 +12,14 @@ info exists tcl_platform(threaded) info patchlevel
If the first command returns anything other than 1
,
- then tcl is not threaded. If tcl is threaded and the version is 8.4 or higher, then installing
- tcl from source is optional.
+ then Tcl is not threaded. If Tcl is threaded and the version is 8.4 or higher, then installing
+ Tcl from source is optional.
Retrieve Tcl 8.4 (or higher). Download and install Tcl 8.4 from source
Note for Debian users: you can apt-get install 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 /usr/local/lib when you - try to find the tcl libraries, however.
If you have not installed Tcl already, download the latest Tcl version from Sourceforge
Debian: + try to find the Tcl libraries, however.
If you have not installed Tcl already, download the latest Tcl version from Sourceforge
Debian:
apt-get install
tcl8.4 tcl8.4-dev
and proceed to
the next step. In that step, replace
@@ -37,7 +37,7 @@
cd tcl8.4.9/unix
./configure --enable-threads
make install
-
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
@@ -53,7 +53,7 @@ cd /usr/local/src mkdir aolserver40r10 cd aolserver40r10 -cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co -r aolserver_v40_r10 aolserver +cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co -r aolserver_v40_r10 AOLserver cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co nscache cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co nspostgres cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co nssha1 Index: openacs-4/packages/acs-core-docs/www/backup-recovery.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/backup-recovery.adp,v diff -u -N -r1.1.2.15 -r1.1.2.16 --- openacs-4/packages/acs-core-docs/www/backup-recovery.adp 6 Jan 2017 09:18:41 -0000 1.1.2.15 +++ openacs-4/packages/acs-core-docs/www/backup-recovery.adp 2 Jun 2017 11:12:57 -0000 1.1.2.16 @@ -21,16 +21,16 @@ for backup-recovery
After you've installed and mounted your package, you can configure each instance to act as you would like.
This is done from the Applications page. Log in, go to the Admin or Control Panel, click on the subsite the application is in, and click on Applications. If you click on the 'Parameters' Index: openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.html,v diff -u -N -r1.10.2.13 -r1.10.2.14 --- openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.html 6 Jan 2017 09:18:41 -0000 1.10.2.13 +++ openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.html 2 Jun 2017 11:12:57 -0000 1.10.2.14 @@ -2,7 +2,7 @@
After you've installed and mounted your package, you can configure each instance to act as you would like.
This is done from the Applications page. Log in, go to the Admin or Control Panel, click on the subsite the application is in, and click on Applications. If you click on the 'Parameters' Index: openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.adp,v diff -u -N -r1.1.2.13 -r1.1.2.14 --- openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.adp 6 Jan 2017 09:18:41 -0000 1.1.2.13 +++ openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.adp 2 Jun 2017 11:12:57 -0000 1.1.2.14 @@ -17,7 +17,7 @@ OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.
After you've installed and mounted your package, you can configure each instance to act as you would like.
This is done from the Applications page. Log in, go to the Admin or Control Panel, click on the subsite the application is in, and Index: openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.html,v diff -u -N -r1.10.2.13 -r1.10.2.14 --- openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.html 6 Jan 2017 09:18:41 -0000 1.10.2.13 +++ openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.html 2 Jun 2017 11:12:57 -0000 1.10.2.14 @@ -2,7 +2,7 @@
After you've installed and mounted your package, you can configure each instance to act as you would like.
This is done from the Applications page. Log in, go to the Admin or Control Panel, click on the subsite the application is in, and click on Applications. If you click on the 'Permissions' Index: openacs-4/packages/acs-core-docs/www/configuring-install-packages.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-install-packages.adp,v diff -u -N -r1.1.2.14 -r1.1.2.15 --- openacs-4/packages/acs-core-docs/www/configuring-install-packages.adp 6 Jan 2017 09:18:41 -0000 1.1.2.14 +++ openacs-4/packages/acs-core-docs/www/configuring-install-packages.adp 2 Jun 2017 11:12:57 -0000 1.1.2.15 @@ -16,7 +16,7 @@ OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.
An OpenACS package extends your website and lets it do things it wasn't able to do before. You can have a weblog, a forums, a calendar, or even do sophisticated project-management via your website.
After you've installed OpenACS, you can congratulate Index: openacs-4/packages/acs-core-docs/www/configuring-install-packages.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-install-packages.html,v diff -u -N -r1.10.2.13 -r1.10.2.14 --- openacs-4/packages/acs-core-docs/www/configuring-install-packages.html 6 Jan 2017 09:18:41 -0000 1.10.2.13 +++ openacs-4/packages/acs-core-docs/www/configuring-install-packages.html 2 Jun 2017 11:12:57 -0000 1.10.2.14 @@ -2,7 +2,7 @@
An OpenACS package extends your website and lets it do things it wasn't able to do before. You can have a weblog, a forums, a calendar, or even do sophisticated project-management via your website.
After you've installed OpenACS, you can congratulate Index: openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.adp,v diff -u -N -r1.1.2.13 -r1.1.2.14 --- openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.adp 6 Jan 2017 09:18:41 -0000 1.1.2.13 +++ openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.adp 2 Jun 2017 11:12:57 -0000 1.1.2.14 @@ -16,7 +16,7 @@ OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.
After you've installed your packages, you have to 'mount' them in order to make them appear on your website.
Make sure you are logged in, and then click on the 'Admin' or 'Control Panel' link to get to the Index: openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.html,v diff -u -N -r1.10.2.13 -r1.10.2.14 --- openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.html 6 Jan 2017 09:18:41 -0000 1.10.2.13 +++ openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.html 2 Jun 2017 11:12:57 -0000 1.10.2.14 @@ -2,7 +2,7 @@
After you've installed your packages, you have to 'mount' them in order to make them appear on your website.
Make sure you are logged in, and then click on the 'Admin' or 'Control Panel' link to get to the Site-Wide Administration page (at /acs-admin). Click on the subsite you'd Index: openacs-4/packages/acs-core-docs/www/cvs-guidelines.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/cvs-guidelines.adp,v diff -u -N -r1.1.2.17 -r1.1.2.18 --- openacs-4/packages/acs-core-docs/www/cvs-guidelines.adp 21 Apr 2017 15:07:52 -0000 1.1.2.17 +++ openacs-4/packages/acs-core-docs/www/cvs-guidelines.adp 2 Jun 2017 11:12:57 -0000 1.1.2.18 @@ -10,15 +10,15 @@
All OpenACS code is available anonymously. To get code
anonymously, use the parameter -d:pserver:anonymous\@cvs.openacs.org:/cvsroot
immediately after cvs
in a cvs
command to check out or export code.
If you are an OpenACS developer, you should check out code so @@ -42,7 +42,7 @@ User joel
With this setup, you will be asked for your password with each cvs command. To avoid this, set up ssh certificate authentication -for your openacs account. (More information)
You may want to set some more default actions for CVS usage. To +for your OpenACS account. (More information)
You may want to set some more default actions for CVS usage. To
do so, create the file ~/.cvsrc
with the contents:
cvs -z6
cvs -q
@@ -81,7 +81,7 @@
If you are actively developing a non-core package, you should work from the latest core release branch. Currently this is oacs-5-9. This ensures that you are working on top of a stable OpenACS core, but still allows you to commit feature changes to @@ -98,7 +98,7 @@ packages and their current state.
If you are actively developing packages in the OpenACS Core, work from the HEAD branch. HEAD is used for active development of the next version of core OpenACS. It may be very buggy; it may not even install correctly. Do not use this branch for development of @@ -107,7 +107,7 @@ developer account:
cvs -d:ext:cvs.openacs.org:/cvsroot checkout acs-core
To check out HEAD anonymously:
cvs -d:pserver:anonymous\@cvs.openacs.org:/cvsroot checkout acs-core
.LRN consists of a given version OpenACS core, plus a set of packages. These are collectively packages together to form a distribution of .LRN. F .LRN 2.0.0 sits on top of OpenACS 5.0.0. .LRN also uses an OpenACS install.xml file during installation; @@ -132,11 +132,11 @@
All OpenACS code resides within a single CVS module,
openacs-4
. (The openacs-4
directory contains code for all versions of OpenACS 4 and later,
and .LRN 1 and later.) Checking out this module retrieves all
-openacs code of any type. For convenience, subsets of openacs-4
are repackaged as smaller
+OpenACS code of any type. For convenience, subsets of openacs-4
are repackaged as smaller
modules.
acs-core
contains only
critical common packages. It does not have any user applications,
@@ -169,7 +169,7 @@
module of the same name.
Tags and Branches look similar in commands, but behave differently. A tag is a fixed point on a branch. Check out a tag to get a specific version of OpenACS. Check out a branch to get the most current code for that major-minor version (e.g., 5.0.x or @@ -221,7 +221,7 @@ not new features, should be added to core packages on release branches. For all other packages, release branches are the recommended location for development. For example, if you are -working on calendar, which is compatible with openacs 5.0 but not +working on calendar, which is compatible with OpenACS 5.0 but not 5.1, work on the oacs-5-0 branch.
HEAD
is a branch used for
@@ -248,9 +248,8 @@
files, and your comments, are sent to a mailing list for OpenACS
developers. A Core Team developer may review or roll back your
changes if necessary.
Confirm via the OpenACS CVS -browser that your changes are where you intended them to -be.
Confirm via the OpenACS CVS browser that your changes are where you +intended them to be.
Add a new package. Contact the Core Team to get @@ -416,7 +415,7 @@
Informal guidelines which may be obsolete in places and should be reviewed:
Before committing to cvs you must submit a bug report and patch to the OpenACS bug @@ -453,12 +452,9 @@
The OpenACS cvs web and Jeff's cvs -browser are useful tools in understanding what is happening -with the code.
There is a mailing list of cvs changes at willfork.com -
There is an RSS feed of cvs changes at RSS -feed -
The OpenACS cvs web browser is a useful tools in +understanding what is happening with the code.
There is general information about CVS at nongnu.org .
All OpenACS code is available anonymously. To get code
anonymously, use the parameter
-d:pserver:anonymous@cvs.openacs.org:/cvsroot
immediately after cvs
in a cvs command to check out or export code.
@@ -36,7 +36,7 @@
With this setup, you will be asked for your password with each cvs command. To avoid this, set up ssh certificate - authentication for your openacs account. (More + authentication for your OpenACS account. (More information)
You may want to set some more default actions for CVS usage. @@ -53,7 +53,7 @@ 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
If you are actively developing a non-core package, you + User yournamehere
into your ~/.ssh/config
file, then you can use -d :ext:cvs-server:/cvsroot
instead of -d :ext:cvs.openacs.org:/cvsroot
. You can then change the definition of cvs-server
by changing one file instead of editing hundreds of CVSROOT/Repository
files.
If you are actively developing a non-core package, you should work from the latest core release branch. Currently this is oacs-5-9. This ensures that you are working on top of a stable OpenACS core, but still allows you to commit feature @@ -68,14 +68,14 @@ Inventory and Package maintainers and status for a list of available packages and their current state. -
If you are actively developing packages in the OpenACS
Core, work from the HEAD branch. HEAD is used for active
development of the next version of core OpenACS. It may be very
buggy; it may not even install correctly. Do not use this branch for
development of non-core features unless your work depends on some
of the HEAD core work. To check out HEAD, omit the
- -r
tag.
To check out HEAD for development, which requires an OpenACS developer account:
cvs -d:ext:cvs.openacs.org:/cvsroot checkout acs-core
To check out HEAD anonymously:
cvs -d:pserver:anonymous@cvs.openacs.org:/cvsroot checkout acs-core
- .LRN consists of a given version openacs core, plus a set of
+ -r
tag.
To check out HEAD for development, which requires an OpenACS developer account:
cvs -d:ext:cvs.openacs.org:/cvsroot checkout acs-core
To check out HEAD anonymously:
cvs -d:pserver:anonymous@cvs.openacs.org:/cvsroot checkout acs-core
+ .LRN consists of a given version OpenACS core, plus a set of packages. These are collectively packages together to form a distribution of .LRN. F .LRN 2.0.0 sits on top of OpenACS 5.0.0. .LRN also uses an OpenACS install.xml file during installation; @@ -89,8 +89,8 @@ mv dotlrn/install.xml ..
Once you have a checkout you can use some commands to track
what has changed since you checked out your copy. cvs -n update
does not change any files, but reports which changes have been updated or locally modified, or are not present in CVS.
-
To update your files, use cvs update
. This will merge changes from the repository with your local files. It has no effect on the cvs.openacs.org repository.
- All OpenACS code resides within a single CVS module, openacs-4
. (The openacs-4 directory contains code for all versions of OpenACS 4 and later, and .LRN 1 and later.) Checking out this module retrieves all openacs code of any type. For convenience, subsets of openacs-4
are repackaged as smaller modules.
+
To update your files, use cvs update
. This will merge changes from the repository with your local files. It has no effect on the cvs.openacs.org repository.
+ All OpenACS code resides within a single CVS module, openacs-4
. (The openacs-4 directory contains code for all versions of OpenACS 4 and later, and .LRN 1 and later.) Checking out this module retrieves all OpenACS code of any type. For convenience, subsets of openacs-4
are repackaged as smaller modules.
acs-core
contains only critical common
packages. It does not have any user applications, such as forums,
bug-tracker, calendar, or ecommerce. These can be added at
@@ -117,7 +117,7 @@
project-manager-all
contains the packages required, in combination with acs-core, to run the project-manager package.
Each OpenACS package (i.e., directory in openacs-4/packages/
) is also aliased as a module of the same name.
-
Tags and Branches look similar in commands, but behave differently. A tag is a fixed point on a branch. Check out @@ -154,15 +154,15 @@ added to core packages on release branches. For all other packages, release branches are the recommended location for development. For example, if you are working on - calendar, which is compatible with openacs 5.0 but not + calendar, which is compatible with OpenACS 5.0 but not 5.1, work on the oacs-5-0 branch.
HEAD
is a branch used
for development of core packages.
There are three main ways to contribute code to OpenACS:
To contribute a small fix, if you do not have a developer account, submit a patch.
If you are making many changes, or would like to become a direct contributor, send mail to the Core Team asking for commit rights. You can then commit code directly to the repository:
Use one of the checkout methods described above to get files to your system. This takes the place of steps 1 and 2 in the section called “Installation Option 2: Install from tarball”. Continue setting up the site as described there.
Fix bugs and add features.
Commit that file (or files):
cvs commit -m "what I did and why" filename
Because this occurs in your personal checkout and not an anonymous one, this commit automagically moves back upstream to the Mother Ship repository at cvs.openacs.org. The names of the changed files, and your comments, are sent to a mailing list for OpenACS developers. A Core Team developer may review or roll back your changes if necessary.
- Confirm via the + Confirm via the OpenACS CVS browser that your changes are where you intended them to be.
Add a new package. Contact the Core Team to get approval and to get a module alias created.
@@ -317,7 +317,7 @@ flag which defaults to no-effect wouldn't require a TIP. Added a new mandatory flag to an existing function would require a TIP. -
The - - OpenACS cvs web - and - - Jeff's cvs - browser - - are useful tools in understanding what is - happening with the code. + + OpenACS cvs web browser + is a useful tools in understanding what is + happening with the code.
- There is a mailing list of cvs changes at - - willfork.com - -
There is an RSS feed of cvs changes at - - RSS feed - + There is general information about CVS at + + nongnu.org + .
- cvs manual + cvs manual
- adding files/dirs with cvs + Open Source Development with CVS, 3rd Edition
backup with cvs Index: openacs-4/packages/acs-core-docs/www/cvs-tips.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/cvs-tips.adp,v diff -u -N -r1.1.2.13 -r1.1.2.14 --- openacs-4/packages/acs-core-docs/www/cvs-tips.adp 6 Jan 2017 09:18:41 -0000 1.1.2.13 +++ openacs-4/packages/acs-core-docs/www/cvs-tips.adp 2 Jun 2017 11:12:57 -0000 1.1.2.14 @@ -19,7 +19,7 @@ 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 +OPTIONAL. These steps take an existing OpenACS directory and add it to a CVS repository.
Add the Service to CVS - OPTIONAL. These steps take an existing OpenACS directory and add it to a CVS repository.
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/db-api-detailed.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/db-api-detailed.adp,v diff -u -N -r1.1.2.10 -r1.1.2.11 --- openacs-4/packages/acs-core-docs/www/db-api-detailed.adp 21 Apr 2017 15:07:52 -0000 1.1.2.10 +++ openacs-4/packages/acs-core-docs/www/db-api-detailed.adp 2 Jun 2017 11:12:57 -0000 1.1.2.11 @@ -703,7 +703,7 @@ script and should never be referenced directly by user code. Returns the current rdbms type and version. -
list critical decisions (perhaps as questions) that need to be -made before starting: which OS, which DB, which aolserver version, +made before starting: which OS, which DB, which AOLserver version, system name, dependencies et cetera. Maybe summarize options as tables or decision-trees. For example, "As you proceed throughout the installation, you will be acting on decisions that @@ -345,7 +345,7 @@ here
List suggestions for installing and setting up a development environment; these can be annotated links to the installation documentation
Provide working examples that highlight the various subsystems, -tcl environment, OpenACS protocols, aolserver template and ns_* +Tcl environment, OpenACS protocols, AOLserver template and ns_* commands, OpenACS templating, sql queries, db triggers, scheduling protocols, how to use the page contract, how to get the accessing user_id etc
Show how to construct basic SQL queries using the db API,
The life of an http request to a dynamic, templated page
General rules to follow for stability, scalability
Show the step by step customizing of an existing package that @@ -410,7 +410,7 @@ tools will be marked up to conform to the DocBook XML DTD. The remaining discussion is about publishing using Docbook.
- is a publishing standard based on XML + is a publishing standard based on XML with similar goals to the OpenACS Documentation project. Some specific reasons why we are using DocBook:
It is open-source.
A growing community surrounds DocBook (has mailing lists)
A number of free and commercial tools are available for editing and publishing DocBook @@ -449,7 +449,7 @@ of elements and use more exotic features in your documents. The list is made up of SGML-elements but basically the same elements are valid in the XML DTD as long as -you remember to: +you remember to:
- Given that your job starts at the
+ Given that your job starts at the
sect1
-level, all your documents
should open with a <sect1>
-tag
and end with the corresponding </sect1>
.
- You need to feed every <sect1>
two attributes. The first
+ You need to feed every <sect1>
two attributes. The first
attribute, id
, is standard and
can be used with all elements. It comes in very handy when
interlinking between documents (more about this when talking about
@@ -529,7 +529,7 @@
id
has to be unique throughout
the book you're making since the id
's in your sect1
's will turn into filenames when
the book is parsed into HTML.
- The other attribute is xreflabel
. The value of this is the text
+ The other attribute is xreflabel
. The value of this is the text
that will appear as the link when referring to this sect1
.
Right after the opening tag you put the title of the document -
this is usually the same as xreflabel
-attribute. E.g. the top level of
the document you're reading right now looks like this:
@@ -540,7 +540,7 @@ </sect1>
- Inside this container your document will
+ Inside this container your document will
be split up into <sect2>
's,
each with the same requirements - id
and xreflabel
attributes, and a <title>
-tag inside. Actually, the
xreflabel
is never required in
@@ -550,7 +550,7 @@
- For displaying a snippet of code, a
+ For displaying a snippet of code, a
filename or anything else you just want to appear as a part of a
sentence, we use <computeroutput>
and <code>
tags. These
replace the HTML-tag <code>
tag,
@@ -564,15 +564,15 @@
- Linking falls into two different + Linking falls into two different categories: inside the book you're making and outside:
By having unique id
's
you can cross-reference any part of your book with a simple tag,
regardless of where that part is.
-Check out how I link to a subsection of +Check out how I link to a subsection of the Developer's Guide:
Put this in your XML:
- Find information about creating a package in <xref linkend="packages-making-a-package"></xref>. @@ -596,7 +596,7 @@
- If you're hyper-linking out of the
+ If you're hyper-linking out of the
documentation, it works almost the same way as HTML - the tag is
just a little different (<ulink>
):
<ulink url="http://www.oracle.com/">Oracle Corporation</ulink> @@ -615,7 +615,7 @@ Note: The graphics guidelines are not written in stone. Use another valid approach if it works better for you.- To insert a graphic we use the elements + To insert a graphic we use the elements
<mediaobject>
,<imageobject>
,<imagedata>
, @@ -640,7 +640,7 @@
- Here's how you make the DocBook + Here's how you make the DocBook equivalent of the three usual HTML-lists:
- DocBook supports several types of tables,
+ DocBook supports several types of tables,
but in most cases, the <informaltable>
is enough:
<informaltable frame="all"> <tgroup cols="3"> @@ -739,7 +739,7 @@
- Our documentation uses two flavors of
+ Our documentation uses two flavors of
emphasis - italics and bold type. DocBook uses one - <emphasis>
.
The <emphasis>
tag
defaults to italics when parsed. If you're looking for
emphasizing with bold type, use <emphasis
Index: openacs-4/packages/acs-core-docs/www/docbook-primer.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/docbook-primer.html,v
diff -u -N -r1.52.2.13 -r1.52.2.14
--- openacs-4/packages/acs-core-docs/www/docbook-primer.html 6 Jan 2017 09:18:41 -0000 1.52.2.13
+++ openacs-4/packages/acs-core-docs/www/docbook-primer.html 2 Jun 2017 11:12:57 -0000 1.52.2.14
@@ -421,7 +421,7 @@
installation."
list critical decisions (perhaps as questions) that need to - be made before starting: which OS, which DB, which aolserver + be made before starting: which OS, which DB, which AOLserver version, system name, dependencies et cetera. Maybe summarize options as tables or decision-trees. For example, "As you proceed throughout the installation, you will be acting on @@ -458,7 +458,7 @@ installation documentation
Provide working examples that highlight the various - subsystems, tcl environment, OpenACS protocols, aolserver + subsystems, Tcl environment, OpenACS protocols, AOLserver template and ns_* commands, OpenACS templating, sql queries, db triggers, scheduling protocols, how to use the page contract, how to get the accessing user_id etc @@ -578,7 +578,7 @@ DTD. The remaining discussion is about publishing using Docbook.
- + is a publishing standard based on XML with similar goals to the OpenACS Documentation project. Some specific reasons why we are using DocBook:
@@ -641,7 +641,7 @@ list of elements and use more exotic features in your documents. The list is made up of SGML-elements but basically the same elements are valid in the XML DTD as long as you remember to: - +
Always close your tags with corresponding end-tags and to not use other tag minimization @@ -690,7 +690,7 @@ The documentation for each package will make up a little "book" that is structured like this - examples are emphasized: - +
book : Docs for one package - templating @@ -714,20 +714,20 @@ sources of these DocBook documents to get an idea of how they are tied together.
-
+
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
.
@@ -742,7 +742,7 @@ </sect1>
-
+
Inside this container your document will be split up into
<sect2>
's,
each with the same requirements - id
and xreflabel
@@ -751,7 +751,7 @@
When it comes to naming your
sect2
's and below, prefix them with some abbreviation of the id
in the sect1
such as requirements-overview
.
-
+
For displaying a snippet of code, a filename or anything else you just want to appear as a part of
a sentence, we use
<computeroutput>
@@ -769,12 +769,12 @@
tag around text that has been wrapped by combinations of <computeroutput>
and <userinput>
- + Linking falls into two different categories: inside the book you're making and outside:
By having unique id
's you can cross-reference any part of your book
with a simple tag, regardless of where that part is.
-
Check out how I link to a subsection of the Developer's Guide:
Put this in your XML:
+Check out how I link to a subsection of the Developer's Guide:
Put this in your XML:
- Find information about creating a package in <xref linkend="packages-making-a-package"></xref>.And the output is:
@@ -798,7 +798,7 @@packages-looks
, the parser will try its best to explain where the link takes you.
- + If you're hyper-linking out of the documentation, it works almost the same way as HTML - the tag is just a little different @@ -819,7 +819,7 @@ for you.
-
+
To insert a graphic we use the elements
<mediaobject>
,
<imageobject>
,
@@ -845,7 +845,7 @@
Put your graphics in a separate directory ("images") and link to them
only with relative paths.
- + Here's how you make the DocBook equivalent of the three usual HTML-lists:
Making an unordered list is pretty much like doing the same thing in HTML - if you close your <li>
, that is. The only differences are that each list item has to be wrapped in something more, such as
@@ -890,7 +890,7 @@
</variablelist>
-
+
DocBook supports several types of tables, but in most cases, the
<informaltable>
is enough:
@@ -927,7 +927,7 @@
<table>
for an example.
-
+
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-filenaming.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.adp,v diff -u -N -r1.1.2.9 -r1.1.2.10 --- openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.adp 21 Apr 2017 15:07:52 -0000 1.1.2.9 +++ openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.adp 2 Jun 2017 11:12:57 -0000 1.1.2.10 @@ -216,8 +216,8 @@
Further standards for Tcl library files are under discussion; we -plan to include naming conventions for procs.
Lowercase everything, with the exception of %TYPE and %ROWTYPE.
People have plenty of usernames and passwords already, we don't want them to have yet another. We want people to be able to log in to OpenACS with the same password they use to log in to any other system.
Besides, administrators have better things to do than create @@ -74,7 +74,7 @@
Feature | Status | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
New API |
Feature | Status | Description |
---|---|---|
New API | ||
EXT-AUTH-01 | A | Extend Authentication/Acct Status API |
EXT-AUTH-03 | A | Account Creation API |
EXT-AUTH-05 | A | Password Management API |
EXT-AUTH-30 | A | Authority Management API |
Feature | Status | Description |
---|---|---|
Login | ||
EXT-AUTH-04 | A | Rewrite login, register, and admin pages to use APIs |
EXT-AUTH-38 | A | ad_form complain feature |
EXT-AUTH-19 | A | Rewrite password recovery to use API |
EXT-AUTH-21 | A | Rewrite email verification with API |
EXT-AUTH-28 | A | Username is email switch |
Users will log in using a username, a authority, and a +
Account Management (NO PICTURE YET)
Batch Synchronization (NO PICTURE YET)
Feature | Status | Description |
---|---|---|
New API | ||
EXT-AUTH-01 | A | Extend Authentication/Acct Status API |
EXT-AUTH-03 | A | Account Creation API |
EXT-AUTH-05 | A | Password Management API |
EXT-AUTH-30 | A | Authority Management API |
Feature | Status | Description |
---|---|---|
Login | ||
EXT-AUTH-04 | A | Rewrite login, register, and admin pages to use APIs |
EXT-AUTH-38 | A | ad_form complain feature |
EXT-AUTH-19 | A | Rewrite password recovery to use API |
EXT-AUTH-21 | A | Rewrite email verification with API |
EXT-AUTH-28 | A | Username is email switch |
Users will log in using a username, a authority, and a password. The authority is the source for user/password verification. OpenACS can be an authority itself.
Each user in OpenACS will belong to exactly one authority, which can either be the "local" OpenACS users table, in which case the Index: openacs-4/packages/acs-core-docs/www/form-builder.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/form-builder.adp,v diff -u -N -r1.1.2.15 -r1.1.2.16 --- openacs-4/packages/acs-core-docs/www/form-builder.adp 6 Jan 2017 09:18:41 -0000 1.1.2.15 +++ openacs-4/packages/acs-core-docs/www/form-builder.adp 2 Jun 2017 11:12:57 -0000 1.1.2.16 @@ -25,7 +25,7 @@ Multi-part Elements
Some elements have more than one choice, or can submit more than one value.
Creating the form element. Populate a list of lists with values for the option list.
@@ -106,7 +106,7 @@ Errors
Here are some common errors and what to do when you encounter them:
This generally happens when there is an error in your query.
Index: openacs-4/packages/acs-core-docs/www/form-builder.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/form-builder.html,v diff -u -N -r1.30.2.13 -r1.30.2.14 --- openacs-4/packages/acs-core-docs/www/form-builder.html 6 Jan 2017 09:18:41 -0000 1.30.2.13 +++ openacs-4/packages/acs-core-docs/www/form-builder.html 2 Jun 2017 11:12:57 -0000 1.30.2.14 @@ -6,7 +6,7 @@ adaptable UI. Error handling includes inline error reporting, and is customizable. However, ad_form can be tricky to use. In addition to this document, the ad_form api - documentation is helpful.Some elements have more than one choice, or can submit more than one value.
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 " + documentation is helpful.
Some elements have more than one choice, or can submit more than one value.
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 @@ -51,5 +51,5 @@ ns_set print $mypage }
Here are some common errors and what to do when you - encounter them:
See also the section called “Running a PostgreSQL database on another server”.
The easiest way is to install the Edit-This-Page package.
Log in to the web site as an administrator.
Click on Admin > Install Software > Install from OpenACS Repository / Install new application
Choose Edit This Page and install
Follow the instructions within Edit This Page (the link will only work after Edit This Page is installed).
Go to /admin/permissions
and grant Create to Registered Users
Suppose you install a new site and install Weblogger, and you want all visitors to see weblogger automatically.
On the front page, click the Admin
button.
On the administration page, click Parameters
link.
Change the parameter IndexRedirectUrl
to be the URI of the
@@ -35,7 +35,7 @@
Every page within an OpenACS site is part of a subsiteMore information). The home
page of the entire site is the front page is a special, default
instance of a subsite, served from /var/lib/aolserver/$OPENACS_SERVICE_NAME/www
. If an
@@ -50,7 +50,7 @@
Almost all pages on an OpenACS site use ACS Templating, and so +How do I change the site-wide style?
Almost all pages on an OpenACS site use ACS Templating, and so their appearance is driven by a layer of different files. Let's examine how this works:
@@ -124,12 +124,12 @@
To grant permissions on a package, start at the site map. Find the event package and click "Set permissions".
Click "Grant Permission"
Grant the write permission to Registered Users.
OpenACS 5.0 offers a prettier version at /admin/applications.
The easiest way is to install the Edit-This-Page package.
Log in to the web site as an administrator.
Click on Admin > Install Software > Install from OpenACS Repository / Install new application
Choose Edit This Page and install
Follow the instructions within Edit This Page (the link will only work after Edit This Page is installed).
Go to /admin/permissions
and grant Create to Registered Users
Suppose you install a new site and install Weblogger, and you want all visitors to see weblogger automatically.
On the front page, click the Admin
button.
On the administration page, click Parameters
link.
Change the parameter IndexRedirectUrl
to be the URI of the desired application. For a default weblogger installation, this would be
. Note the trailing slash.weblogger/
Every page within an OpenACS site is part of a subsite More information). The home page of the entire site is the front page is a special, default instance of a subsite, served from /var/lib/aolserver/$OPENACS_SERVICE_NAME/www
. If an index page is not found there, the default index page for all subsites is used. To customize the code on the front page, copy the default index page from the Subsite package to the Main site and edit it:
cp /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-subsite/www/index*
/var/lib/aolserver/$OPENACS_SERVICE_NAME/www
Edit the new index.adp
to change the text; you shouldn't need to edit index.tcl
unless you are adding new functionality.
Almost all pages on an OpenACS site use ACS Templating, and so their appearance is driven by a layer of different files. Let's examine how this works:
+
The easiest way is to install the Edit-This-Page package.
Log in to the web site as an administrator.
Click on Admin > Install Software > Install from OpenACS Repository / Install new application
Choose Edit This Page and install
Follow the instructions within Edit This Page (the link will only work after Edit This Page is installed).
Go to /admin/permissions
and grant Create to Registered Users
Suppose you install a new site and install Weblogger, and you want all visitors to see weblogger automatically.
On the front page, click the Admin
button.
On the administration page, click Parameters
link.
Change the parameter IndexRedirectUrl
to be the URI of the desired application. For a default weblogger installation, this would be
. Note the trailing slash.weblogger/
Every page within an OpenACS site is part of a subsite More information). The home page of the entire site is the front page is a special, default instance of a subsite, served from /var/lib/aolserver/$OPENACS_SERVICE_NAME/www
. If an index page is not found there, the default index page for all subsites is used. To customize the code on the front page, copy the default index page from the Subsite package to the Main site and edit it:
cp /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-subsite/www/index*
/var/lib/aolserver/$OPENACS_SERVICE_NAME/www
Edit the new index.adp
to change the text; you shouldn't need to edit index.tcl
unless you are adding new functionality.
Almost all pages on an OpenACS site use ACS Templating, and so their appearance is driven by a layer of different files. Let's examine how this works:
A templated page uses an ADP/Tcl pair. The first line in the ADP file is usually:
<master>
If it appears exactly like this, without any arguments, the template 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
and the associated .tcl file.
-
The default-master
is itself a normal ADP page. It draws the subsite navigation elements and invokes site-master
(/var/lib/aolserver/$OPENACS_SERVICE_NAME/www/site-master.adp
and .tcl)
The site-master
draws site-wide navigation elements and invokes blank-master
(/var/lib/aolserver/$OPENACS_SERVICE_NAME/www/blank-master.adp
and .tcl).
Blank-master
does HTML housekeeping and provides a framework for special sitewide navigation "meta" elements such as Translator widgets and Admin widgets.
Steps to Reproduce. The events package does not allow users to register for new events.
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.
Select an available event
A link such as Registration: Deadline is 03/15/2004 10:00am.
+
The default-master
is itself a normal ADP page. It draws the subsite navigation elements and invokes site-master
(/var/lib/aolserver/$OPENACS_SERVICE_NAME/www/site-master.adp
and .tcl)
The site-master
draws site-wide navigation elements and invokes blank-master
(/var/lib/aolserver/$OPENACS_SERVICE_NAME/www/blank-master.adp
and .tcl).
Blank-master
does HTML housekeeping and provides a framework for special sitewide navigation "meta" elements such as Translator widgets and Admin widgets.
Steps to Reproduce. The events package does not allow users to register for new events.
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.
Select an available event
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"
-
Complete a new registration. Afterwards, you should be redirected back to the same page.
Actual Results: The page says "You do not have permission to register for this event."
Expected results: A link or form to sign up for the event is shown.
Finding the problem. We start with the page that has the error. In the URL it's http://myserver.net/events/event-info.tcl
, so open the file /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/events/www/event-info.tcl
. It contains this line:
set can_register_p [events::security::can_register_for_event_p -event_id $event_id]
We need to know what that procedure does, so go to /api-doc, paste events::security::can_register_for_event_p into the ACS Tcl API Search box, and click Feeling Lucky. The next pages shows the proc, and we click "show source" to see more information. The body of the proc is simply
return [permission::permission_p -party_id $user_id -object_id $event_id -privilege write]
This means that a given user must have the write privilige on the event in order to register. Let's assume that the priviliges inherit, so that if a user has the write privilige on the whole package, they will have the write privilege on the event.
Setting Permissions. A permission has three parts: the privilige, the object of the privilige, and the subject being granted the privilige. In this case the privilige is "write," the object is the Events package, and the subject is all Registered Users.
To grant permissions on a package, start at the site map. Find the event package and click "Set permissions".
Click "Grant Permission"
Grant the write permission to Registered Users.
OpenACS 5.0 offers a prettier version at /admin/applications.
Complete a new registration. Afterwards, you should be redirected back to the same page.
Actual Results: The page says "You do not have permission to register for this event."
Expected results: A link or form to sign up for the event is shown.
Finding the problem. We start with the page that has the error. In the URL it's http://myserver.net/events/event-info.tcl
, so open the file /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/events/www/event-info.tcl
. It contains this line:
set can_register_p [events::security::can_register_for_event_p -event_id $event_id]
We need to know what that procedure does, so go to /api-doc, paste events::security::can_register_for_event_p into the ACS Tcl API Search box, and click Feeling Lucky. The next pages shows the proc, and we click "show source" to see more information. The body of the proc is simply
return [permission::permission_p -party_id $user_id -object_id $event_id -privilege write]
This means that a given user must have the write privilige on the event in order to register. Let's assume that the priviliges inherit, so that if a user has the write privilige on the whole package, they will have the write privilege on the event.
Setting Permissions. A permission has three parts: the privilige, the object of the privilige, and the subject being granted the privilige. In this case the privilige is "write," the object is the Events package, and the subject is all Registered Users.
To grant permissions on a package, start at the site map. Find the event package and click "Set permissions".
Click "Grant Permission"
Grant the write permission to Registered Users.
OpenACS 5.0 offers a prettier version at /admin/applications.
Replace human-readable text in Tcl files with temporary
-tags. Examine all of the tcl files in the
+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:
+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,7 +67,7 @@
Replace the temporary message tags in Tcl -files. Repeat step 2 for tcl files. Here is +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]] \
@@ -142,7 +142,7 @@
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 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
@@ -154,7 +154,7 @@
Replace complicated keys with longer, simpler @@ -350,7 +350,7 @@ string
set title "Patch \"$patch_summary\" is nice."
breaks if the message text retains all of the escaping that was -in the tcl command:
+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> Index: openacs-4/packages/acs-core-docs/www/i18n-convert.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-convert.html,v diff -u -N -r1.26.2.15 -r1.26.2.16 --- openacs-4/packages/acs-core-docs/www/i18n-convert.html 6 Jan 2017 09:18:41 -0000 1.26.2.15 +++ openacs-4/packages/acs-core-docs/www/i18n-convert.html 2 Jun 2017 11:12:57 -0000 1.26.2.16 @@ -13,7 +13,7 @@ package and then click onInternationalization
, thenConvert ADP, Tcl, and SQL files to using the - message catalog.
. This pass only changes the adp files; it does not affect catalog files or the catalog in the database.You will now be walked through all of the selected adp pages. The UI shows you the intended changes and lets you edit or cancel them key by key.
Replace the temporary message tags in ADP files. From the same Convert ADP ...
page in /acs-admin/apm
as in the last step, repeat the process but deselect Find human language text ...
and select Replace <# ... #> tags ...
and click OK. This step replaces all of the temporary tags with "short" message lookups, inserts the message keys into the database message catalog, and then writes that catalog out to an xml file.
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:
+ message catalog.. This pass only changes the adp files; it does not affect catalog files or the catalog in the database.You will now be walked through all of the selected adp pages. The UI shows you the intended changes and lets you edit or cancel them key by key.
Replace the temporary message tags in ADP files. From the same Convert ADP ...
page in /acs-admin/apm
as in the last step, repeat the process but deselect Find human language text ...
and select Replace <# ... #> tags ...
and click OK. This step replaces all of the temporary tags with "short" message lookups, inserts the message keys into the database message catalog, and then writes that catalog out to an xml file.
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:
set title "Messages for $a(name) in $b(label)" set context [list [list . "SimPlay"] \ [list [export_vars -base case-admin { case_id }] \ @@ -26,7 +26,7 @@ <#_ Administer %a.name%#>] \ <#_ Messages for %a.name%#>]
Note that the message key case_admin_page_title
was manually selected, because an autogenerated key for this text, with its substitute variables, would have been very confusing
-
Replace the temporary message tags in Tcl files. Repeat step 2 for tcl files. Here is the example Tcl file after conversion:
+
Replace the temporary message tags in Tcl 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 }] \ @@ -60,7 +60,7 @@ 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 + \#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: @@ -72,7 +72,7 @@ test. If you don't provide the package_key argument then all packages with catalog files will be checked. The script will run its checks primarily on en_US xml catalog files. -
Replace complicated keys with longer, simpler keys. When writing in one language, it is possible to create clever code to make correct text. In English, for example, you can put an if
command at the end of a word which adds "s" if a count is anything but 1. This pluralizes nouns correctly based on the data. However, it is confusing to read and, when internationalized, may result in message keys that are both confusing and impossible to set correctly in some languages. While internationalizing, watch out that the automate converter does not create such keys. Also, refactor compound text as you encounter it.
The automated system can easily get confused by tags within message texts, so that it tries to create two or three message keys for one long string with a tag in the middle. In these cases, uncheck those keys during the conversion and then edit the files directly. For example, this code:
<p class="form-help-text"><b>Invitations</b> are sent, +
Replace complicated keys with longer, simpler keys. When writing in one language, it is possible to create clever code to make correct text. In English, for example, you can put an if
command at the end of a word which adds "s" if a count is anything but 1. This pluralizes nouns correctly based on the data. However, it is confusing to read and, when internationalized, may result in message keys that are both confusing and impossible to set correctly in some languages. While internationalizing, watch out that the automate converter does not create such keys. Also, refactor compound text as you encounter it.
The automated system can easily get confused by tags within message texts, so that it tries to create two or three message keys for one long string with a tag in the middle. In these cases, uncheck those keys during the conversion and then edit the files directly. For example, this code:
<p class="form-help-text"><b>Invitations</b> are sent, when this wizard is completed and casting begins.</p>
has a bold tag which confuses the converter into thinking there are two message keys for the text beginning "Invitations ..." where there should be one:
Instead, we cancel those keys, edit the file manually, and put in a single temporary message tag:
<p class="form-help-text"> <#Invitations_are_sent <b>Invitations</b> are sent, when this wizard is completed and casting begins.#> </p>
Complex if statements may produce convoluted message keys that are very hard to localize. Rewrite these if statements. For example:
Select which case <if @simulation.casting_type@ eq "open">and @@ -157,6 +157,6 @@ <msg key="Fix_1">for</msg> <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 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 those +
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 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] ...]
Table of Contents
Table of Contents
Table of Contents
List of Figures
List of Tables
List of Examples
List of Figures
List of Tables
List of Examples
The patch that makes exec
work on BSD is available at sourceforge.net
-
The patch for aolserver 3.x that makes ns_uuencode
work for binary files is
+
The patch for AOLserver 3.x that makes ns_uuencode
work for binary files is
available at sourceforge.net
The patch that makes AOLserver 3.x respect the -g
flag is available at sourceforge.net
- The patch for aolserver 3.x that makes ns_uuencode
+ The patch for AOLserver 3.x that makes ns_uuencode
work for binary files is available at sourceforge.net
The patch that makes AOLserver 3.x respect the Index: openacs-4/packages/acs-core-docs/www/install-cvs.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-cvs.adp,v diff -u -N -r1.1.2.13 -r1.1.2.14 --- openacs-4/packages/acs-core-docs/www/install-cvs.adp 6 Jan 2017 09:18:41 -0000 1.1.2.13 +++ openacs-4/packages/acs-core-docs/www/install-cvs.adp 2 Jun 2017 11:12:57 -0000 1.1.2.14 @@ -10,7 +10,7 @@ rightLink="psgml-for-emacs" rightLabel="Next">
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
Index: openacs-4/packages/acs-core-docs/www/install-cvs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-cvs.html,v diff -u -N -r1.40.2.13 -r1.40.2.14 --- openacs-4/packages/acs-core-docs/www/install-cvs.html 6 Jan 2017 09:18:41 -0000 1.40.2.13 +++ openacs-4/packages/acs-core-docs/www/install-cvs.html 2 Jun 2017 11:12:57 -0000 1.40.2.14 @@ -1,5 +1,5 @@ -Initialize CVS (OPTIONAL) CVS is a source control system. Create and initialize a +
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 -N -r1.1.2.13 -r1.1.2.14 --- openacs-4/packages/acs-core-docs/www/install-daemontools.adp 6 Jan 2017 09:18:41 -0000 1.1.2.13 +++ openacs-4/packages/acs-core-docs/www/install-daemontools.adp 2 Jun 2017 11:12:57 -0000 1.1.2.14 @@ -16,7 +16,7 @@ svgroup. svgroup is a script for granting permissions, to allow users other than root to use daemontools for specific services.
- -
Install Daemontools
+
Install Daemontools
download daemontools and install it.
- Index: openacs-4/packages/acs-core-docs/www/install-daemontools.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-daemontools.html,v diff -u -N -r1.41.2.13 -r1.41.2.14 --- openacs-4/packages/acs-core-docs/www/install-daemontools.html 6 Jan 2017 09:18:41 -0000 1.41.2.13 +++ openacs-4/packages/acs-core-docs/www/install-daemontools.html 2 Jun 2017 11:12:57 -0000 1.41.2.14 @@ -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.
Install Daemontools
download daemontools and install it.
Red Hat 8
[root root]#mkdir -p /package
+ services.
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-openfts.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-full-text-search-openfts.adp,v diff -u -N -r1.1.2.13 -r1.1.2.14 --- openacs-4/packages/acs-core-docs/www/install-full-text-search-openfts.adp 6 Jan 2017 09:18:41 -0000 1.1.2.13 +++ openacs-4/packages/acs-core-docs/www/install-full-text-search-openfts.adp 2 Jun 2017 11:12:57 -0000 1.1.2.14 @@ -24,7 +24,7 @@ with an automated install process using the tsearch2-driver package.If you want full text search, and you are running PostgreSQL, install this module to support FTS. Do this step after you have installed both PostgreSQL and AOLserver. You will need the openfts tarball in @@ -84,7 +84,7 @@ cd /usr/local/src/Search-OpenFTS-tcl-0.3.2/ ./configure --with-aolserver-src=/usr/local/src/aolserver/aolserver --with-tcl=/usr/lib/ make -cd aolserver +cd AOLserver make cp nsfts.so /usr/local/aolserver/bin @@ -119,7 +119,7 @@
If you are installing Full Text Search, add required packages to the new database. (In order for full text search to work, you must also install the PostgreSQL OpenFTS module and prerequisites.)
@@ -146,7 +146,7 @@If you have installed OpenFTS, you can enable it -for this service. Uncomment this line from
config.tcl
. (To uncomment a line in a tcl +for this service. Uncomment this line fromconfig.tcl
. (To uncomment a line in a Tcl file, remove the#
at the beginning of the line.)#ns_param nsfts ${bindir}/nsfts.so Index: openacs-4/packages/acs-core-docs/www/install-full-text-search-openfts.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-full-text-search-openfts.html,v diff -u -N -r1.11.2.14 -r1.11.2.15 --- openacs-4/packages/acs-core-docs/www/install-full-text-search-openfts.html 6 Jan 2017 09:18:41 -0000 1.11.2.14 +++ openacs-4/packages/acs-core-docs/www/install-full-text-search-openfts.html 2 Jun 2017 11:12:57 -0000 1.11.2.15 @@ -6,7 +6,7 @@ Tsearch2. See Install Full Text Search using Tsearch2. Tsearch2 is much easier to install, requiring only compilation of one module from PostgreSQL contrib, with an - automated install process using the tsearch2-driver package.If you want full text search, and you are running PostgreSQL, install this module to support FTS. Do this step after you have installed both PostgreSQL and + automated install process using the tsearch2-driver package.
If you want full text search, and you are running PostgreSQL, install this module to support FTS. Do this step after you have installed both PostgreSQL and AOLserver. You will need the openfts tarball in
/tmp
.
Install Tsearch. This is a PostgreSQL module that OpenFTS requires.
[root root]#su - postgres
@@ -57,7 +57,7 @@ cd /usr/local/src/Search-OpenFTS-tcl-0.3.2/ ./configure --with-aolserver-src=/usr/local/src/aolserver/aolserver --with-tcl=/usr/lib/ make -cd aolserver +cd AOLserver make cp nsfts.so /usr/local/aolserver/binBuild some supplemental modules.
[root aolserver]#cd /usr/local/src/Search-OpenFTS-tcl-0.3.2
@@ -81,7 +81,7 @@ make su postgres make install -exitIf you are installing Full Text Search, add required packages to the new database. (In order for full text search to work, you must also install the PostgreSQL OpenFTS module and prerequisites.)
[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$/usr/local/pgsql/bin/psql $OPENACS_SERVICE_NAME -f /usr/local/src/postgresql-7.3.4/contrib/tsearch/tsearch.sql
@@ -101,7 +101,7 @@ It is probably because PostgreSQL's libdir configuration variable points to a diffent directory than where tsearch is. You can find out where PostgreSQL expects to find tsearch viapg_config --pkglibdir
-
If you have installed OpenFTS, you can enable it for this service. Uncomment this line from
config.tcl
. (To uncomment a line in a tcl file, remove the#
at the beginning of the line.)#ns_param nsfts ${bindir}/nsfts.so
Click
Admin
on the top of the default home page. If prompted, log in with the account and password you entered during install.Click on the
Install +
If you have installed OpenFTS, you can enable it for this service. Uncomment this line from
config.tcl
. (To uncomment a line in a Tcl file, remove the#
at the beginning of the line.)#ns_param nsfts ${bindir}/nsfts.so
Click
Admin
on the top of the default home page. If prompted, log in with the account and password you entered during install.Click on the
Install software
link.Click on the
Install new service
link.Click on the
Install
link next to OpenFTS Driver.Restart the service.
[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$svc -t /service/$OPENACS_SERVICE_NAME
[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$Wait a minute, then browse back to the home page.
Click on
Admin
on the top of the screen.Click on
Main Site Administration
in the "Subsite Administration" section.Click on
Site Map
in the "Advanced Features" section.Mount the OpenFTS Full Text Search Engine in the site map.
Click the
new sub folder
link on the "/" line, the first line under Main Site:/.Type
openfts
Index: openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.adp,v diff -u -N -r1.1.2.14 -r1.1.2.15 --- openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.adp 21 Apr 2017 15:07:52 -0000 1.1.2.14 +++ openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.adp 2 Jun 2017 11:12:57 -0000 1.1.2.15 @@ -18,9 +18,9 @@ OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.If you want full text search, and you are running PostgreSQL, install this module to support FTS. Do this step after you have -installed both PostgreSQL and AOLserver. You will need the tseach2 +installed both PostgreSQL and AOLserver. You will need the tsearch2 module form PostgreSQL contrib. This is included with the PostgreSQL full source distribution. It is also available with the PostgreSQL contrib package provided by most distribution packages. Index: openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.html,v diff -u -N -r1.11.2.14 -r1.11.2.15 --- openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.html 21 Apr 2017 15:07:52 -0000 1.11.2.14 +++ openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.html 2 Jun 2017 11:12:57 -0000 1.11.2.15 @@ -6,8 +6,8 @@ V2 Introduction by Andrew J. Kopciuch
OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -If you want full text search, and you are running PostgreSQL, install this module to support FTS. Do this step after you have installed both PostgreSQL and - AOLserver. You will need the tseach2 module form PostgreSQL +
If you want full text search, and you are running PostgreSQL, install this module to support FTS. Do this step after you have installed both PostgreSQL and + AOLserver. You will need the tsearch2 module form PostgreSQL contrib. This is included with the PostgreSQL full source distribution. It is also available with the PostgreSQL contrib package provided by most distribution packages. On debian it is Index: openacs-4/packages/acs-core-docs/www/install-nsopenssl.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-nsopenssl.adp,v diff -u -N -r1.1.2.4 -r1.1.2.5 --- openacs-4/packages/acs-core-docs/www/install-nsopenssl.adp 21 Apr 2017 15:07:52 -0000 1.1.2.4 +++ openacs-4/packages/acs-core-docs/www/install-nsopenssl.adp 2 Jun 2017 11:12:57 -0000 1.1.2.5 @@ -16,7 +16,7 @@ OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.
This AOLserver module is required if you want people to connect to your site via https. These commands compile nsopenssl and -install it, along with a tcl helper script to handle https +install it, along with a Tcl helper script to handle https connections. You will also need ssl certificates. Because those should be different for each server service, you won't need those Index: openacs-4/packages/acs-core-docs/www/install-nsopenssl.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-nsopenssl.html,v diff -u -N -r1.26.2.5 -r1.26.2.6 --- openacs-4/packages/acs-core-docs/www/install-nsopenssl.html 21 Apr 2017 15:07:52 -0000 1.26.2.5 +++ openacs-4/packages/acs-core-docs/www/install-nsopenssl.html 2 Jun 2017 11:12:57 -0000 1.26.2.6 @@ -4,7 +4,7 @@ by OpenACS documentation staff.
This AOLserver module is required if you want people to connect to your site via https. These commands compile nsopenssl and install it, - along with a tcl helper script to handle https connections. + along with a Tcl helper script to handle https connections. You will also need ssl certificates. Because those should be different for each server service, you won't need those instructions until later.
You will need the unpacked Aolserver tarball in Index: openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.adp,v diff -u -N -r1.1.2.13 -r1.1.2.14 --- openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.adp 6 Jan 2017 09:18:42 -0000 1.1.2.13 +++ openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.adp 2 Jun 2017 11:12:57 -0000 1.1.2.14 @@ -112,7 +112,7 @@ commands.
Most of this information comes from Tom Jackson's AOLserver+Daemontools Mini-HOWTO.
-Table 6.1. How it +
Table 6.1. How it Works
Index: openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.html,v diff -u -N -r1.24.2.13 -r1.24.2.14 --- openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.html 6 Jan 2017 09:18:42 -0000 1.24.2.13 +++ openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.html 2 Jun 2017 11:12:57 -0000 1.24.2.14 @@ -64,6 +64,6 @@ Most of this information comes from Tom Jackson's AOLserver+Daemontools Mini-HOWTO. - Table 6.1. How it Works
Program Invoked by this program ... ... using this file Where to find errors Log goes to Use these commands to control it svscanboot + Table 6.1. How it Works
Program Invoked by this program ... ... using this file Where to find errors Log goes to Use these commands to control it svscanboot init /etc/inittab ps -auxw | grep readproctitle n/a aolserver supervise (a child of svscanboot)
/service/$OPENACS_SERVICE_NAME/run /var/lib/aolserver/$OPENACS_SERVICE_NAME/log/error.log /var/lib/aolserver/$OPENACS_SERVICE_NAME/log/$OPENACS_SERVICE_NAME.log svc -k /service/$OPENACS_SERVICE_NAME postgresql Redhat init scripts during boot /etc/init.d/postgresql /usr/local/pgsql/data/server.log service postgresql start (Red Hat), /etc/init.d/postgresql start (Debian)
Index: openacs-4/packages/acs-core-docs/www/install-qmail.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-qmail.adp,v diff -u -N -r1.1.2.13 -r1.1.2.14 --- openacs-4/packages/acs-core-docs/www/install-qmail.adp 6 Jan 2017 09:18:42 -0000 1.1.2.13 +++ openacs-4/packages/acs-core-docs/www/install-qmail.adp 2 Jun 2017 11:12:57 -0000 1.1.2.14 @@ -48,7 +48,7 @@ ] [ -b backlog ] [ -l localname ] [ -t timeout ] host port program [root ucspi-tcp-0.88]#- (I'm not sure if this next step is + (I'm not sure if this next step is 100% necessary, but when I skip it I get problems. If you get the error
553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)
then you need to do @@ -68,7 +68,7 @@-Install Qmail. +Install Qmail.
Download qmail, set up the standard supporting users and build the binaries:
@@ -131,7 +131,7 @@ ./collate.sh cd netqmail-1.04 make setup check -Replace sendmail with qmail's wrapper.
+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]# @@ -170,7 +170,7 @@ chmod 644 ~alias/.qmail* /var/qmail/bin/maildirmake ~alias/Maildir/ chown -R alias.nofiles /var/qmail/alias/Maildir -Configure qmail to use the Maildir delivery format (instead of +
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
Index: openacs-4/packages/acs-core-docs/www/install-qmail.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-qmail.html,v diff -u -N -r1.41.2.14 -r1.41.2.15 --- openacs-4/packages/acs-core-docs/www/install-qmail.html 6 Jan 2017 09:18:42 -0000 1.41.2.14 +++ openacs-4/packages/acs-core-docs/www/install-qmail.html 2 Jun 2017 11:12:57 -0000 1.41.2.15 @@ -30,7 +30,7 @@ tcpserver: usage: tcpserver [ -1UXpPhHrRoOdDqQv ] [ -c limit ] [ -x rules.cdb ] [ -B banner ] [ -g gid ] [ -u uid ] [ -b backlog ] [ -l localname ] [ -t timeout ] host port program [root ucspi-tcp-0.88]# -(I'm not sure if this next step is 100% necessary, but when I skip it I get problems. If you get the error
553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)
then you need to do this.) AOLserver sends outgoing mail via the ns_sendmail command, which pipes a command to the sendmail executable. Or, in our @@ -44,7 +44,7 @@ send outgoing mail.[root ucspi-tcp-0.88]#cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/tcp.smtp.txt /etc/tcp.smtp
[root ucspi-tcp-0.88]#tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/tcp.smtp.txt /etc/tcp.smtp -tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtpDownload qmail, +tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
Download qmail, set up the standard supporting users and build the binaries:
[root root]#cd /usr/local/src
[root src]#wget http://www.qmail.org/netqmail-1.04.tar.gz
[root src]#tar xzf netqmail-1.04.tar.gz
@@ -103,7 +103,7 @@ cd netqmail-1.04 ./collate.sh cd netqmail-1.04 -make setup checkReplace sendmail with qmail's wrapper.
[root qmail-1.03]#rm -f /usr/bin/sendmail /usr/sbin/sendmail
+make setup checkReplace sendmail with qmail's wrapper.
[root qmail-1.03]#rm -f /usr/bin/sendmail /usr/sbin/sendmail
[root qmail-1.03]#ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
[root qmail-1.03]# rm -f /usr/bin/sendmail /usr/sbin/sendmail @@ -125,7 +125,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/MaildirConfigure 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 -N -r1.1.2.13 -r1.1.2.14 --- openacs-4/packages/acs-core-docs/www/install-redhat.adp 6 Jan 2017 09:18:42 -0000 1.1.2.13 +++ openacs-4/packages/acs-core-docs/www/install-redhat.adp 2 Jun 2017 11:12:57 -0000 1.1.2.14 @@ -38,7 +38,7 @@ Unplug the network cable from your computer. We don't want to connect to the network until we're sure the computer is secure. - (Wherever you see the word secure, you + (Wherever you see the word secure, you should always read it as, "secure enough for our purposes, given the amount of work we're willing to exert and the estimated risk and consequences.")Insert Red Hat 8.0 or 9.0 Disk 1 into the CD-ROM and reboot the @@ -76,7 +76,7 @@ screen
- Configure Networking. Again, if you +
Configure Networking. Again, if you know what you're doing, do this step yourself, being sure to note the firewall holes. Otherwise, follow the instructions in this step to set up a computer directly connected to the internet with a @@ -105,7 +105,7 @@ development server we'll be setting up.
-Select any additional languages you want +Select any additional languages you want the computer to support and then click
Choose your time zone and click
check Editors
-(this installs emacs),click Details
next +(this installs emacs),click Details
next toText-based Internet
, checklynx
, and click;
check Authoring and -Publishing
(this installs +Publishing (this installs docbook),uncheck Server Configuration Tools
,uncheck Web Server
,uncheck Windows File @@ -150,7 +150,7 @@ will appear.
uncheck apmd
(monitors power, not very useful for servers),check ImageMagick
-(required for the photo-album packages,uncheck isdn4k-utils
+(required for the photo-album packages,uncheck isdn4k-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 @@ -197,7 +197,7 @@Lock down SSH
- SSH is the protocol we use to connect + SSH is the protocol we use to connect securely to the computer (replacing telnet, which is insecure). sshd is the daemon that listens for incoming ssh connections. As a security precaution, we are now going to tell ssh not to allow Index: openacs-4/packages/acs-core-docs/www/install-redhat.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-redhat.html,v diff -u -N -r1.41.2.13 -r1.41.2.14 --- openacs-4/packages/acs-core-docs/www/install-redhat.html 6 Jan 2017 09:18:42 -0000 1.41.2.13 +++ openacs-4/packages/acs-core-docs/www/install-redhat.html 2 Jun 2017 11:12:57 -0000 1.41.2.14 @@ -27,7 +27,7 @@
Unplug the network cable from your computer. We don't want to connect to the network until we're sure the computer is secure. - + (Wherever you see the word secure, you 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 clickOn the pop-up window asking "Are you sure you want to do this?" click
- IF YOU ARE WIPING YOUR HARD DRIVE.
Click
on the boot loader screen
Click
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.
DHCP is a system by which a computer that @@ -76,7 +76,7 @@
Mail (SMTP)
. In theOther ports
box, enter443, 8000, 8443
. Click. -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
Choose your time zone and click
.
Type in a root password, twice.
On the Package selection page, we're going to @@ -88,13 +88,13 @@ risk that's still screened by the firewall, or a resource hog. Just don't install a database or web server, because that would conflict with the database and web server we'll install later. -
At the bottom, check
Select Individual Packages
and clickWe need to fine-tune the exact list of packages. +
At the bottom, check
Select Individual Packages
and clickWe 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.Red Hat isn't completely happy with the combination +list of packages will appear.
Red Hat isn't completely happy with the combination of packages we've selected, and wants to satisfy some dependencies. Don't let it. On the next screen, choose
Ignore Package @@ -120,7 +120,7 @@ upgrading all of that. Since you are upgrading the kernel, reboot after this step.
Lock down SSH
- + SSH is the protocol we use to connect securely to the computer (replacing telnet, which is insecure). sshd is the daemon that listens for incoming Index: openacs-4/packages/acs-core-docs/www/install-steps.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-steps.adp,v diff -u -N -r1.1.2.16 -r1.1.2.17 --- openacs-4/packages/acs-core-docs/www/install-steps.adp 6 Jan 2017 09:18:42 -0000 1.1.2.16 +++ openacs-4/packages/acs-core-docs/www/install-steps.adp 2 Jun 2017 11:12:57 -0000 1.1.2.17 @@ -106,8 +106,8 @@
+Table 2.1. Default directories for a standard install
@@ -118,7 +118,7 @@ name of administrative access account remadmin OpenACS service -$OPENACS_SERVICE_NAME (set to service0 +$OPENACS_SERVICE_NAME (set to service0 in default install) OpenACS service account $OPENACS_SERVICE_NAME Index: openacs-4/packages/acs-core-docs/www/install-steps.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-steps.html,v diff -u -N -r1.35.2.13 -r1.35.2.14 --- openacs-4/packages/acs-core-docs/www/install-steps.html 6 Jan 2017 09:18:42 -0000 1.35.2.13 +++ openacs-4/packages/acs-core-docs/www/install-steps.html 2 Jun 2017 11:12:57 -0000 1.35.2.14 @@ -44,7 +44,7 @@ su - $OPENACS_SERVICE_NAME svc -d /service/$OPENACS_SERVICE_NAME dropdb $OPENACS_SERVICE_NAME -createdb $OPENACS_SERVICE_NAMESetting 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
Table 2.1. Default directories for a standard install
Fully qualified domain name of your server yourserver.test name of administrative access account remadmin - 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
Table 2.1. Default directories for a standard install
Index: openacs-4/packages/acs-core-docs/www/ix01.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/ix01.adp,v diff -u -N -r1.1.2.14 -r1.1.2.15 --- openacs-4/packages/acs-core-docs/www/ix01.adp 6 Jan 2017 09:18:42 -0000 1.1.2.14 +++ openacs-4/packages/acs-core-docs/www/ix01.adp 2 Jun 2017 11:12:57 -0000 1.1.2.15 @@ -8,23 +8,23 @@ rightLink="" rightLabel="">
A
C
-
- computeroutput
- code, Code -
- cvs
+
- computeroutput
- code, Code +
- cvs
- initializing, Initialize CVS (OPTIONAL)
- setup, Using CVS with an OpenACS Site @@ -33,62 +33,62 @@
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
F
L
-
- language
- installation, Install Red Hat 8/9 -
- Linking, Links -
- lists, Lists +
- language
- installation, Install Red Hat 8/9 +
- Linking, Links +
- lists, Lists
P
Q
-
- qmail
+
- qmail
- installation, Install qmail (OPTIONAL)
- Maildir, Install qmail (OPTIONAL) @@ -98,39 +98,39 @@
S
-
- sect1, Headlines, +
- sect1, Headlines, Sections -
- sect2, Headlines, +
- sect2, Headlines, Sections -
- Sections
- Headlines, Headlines, +
- Sections
- Headlines, Headlines, Sections -
- security
+
security
- definition, Install Red Hat 8/9
- firewall, Install Red Hat 8/9
-sendmail
- removing, Install qmail (OPTIONAL) -
ssh, Install Red Hat 8/9 + sendmail
- removing, Install qmail (OPTIONAL) +
ssh, Install Red Hat 8/9 -T
- The publish point for new +
T
- The publish point for new packages should be fixed., Prepare the package for distribution.
U
-
- ulink, Links -
- upgrade
+
- ulink, Links +
- upgrade
- OpenACS 4.5 to 4.6.x
- Linux/Unix, Upgrading 4.5 or higher to 4.6.3
X
-
Index: openacs-4/packages/acs-core-docs/www/ix01.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/ix01.html,v diff -u -N -r1.29.2.13 -r1.29.2.14 --- openacs-4/packages/acs-core-docs/www/ix01.html 6 Jan 2017 09:18:42 -0000 1.29.2.13 +++ openacs-4/packages/acs-core-docs/www/ix01.html 2 Jun 2017 11:12:57 -0000 1.29.2.14 @@ -1,3 +1,3 @@ -- XML guidelines, OpenACS +
- XML guidelines, OpenACS Documentation Strategy: Why DocBook? -
- xref
- linkend, Links -
- xreflabel, Headlines, +
- xref
- linkend, Links +
- xreflabel, Headlines, Sections
Index +Symbols
- $OPENACS_SERVICE_NAME, Paths and Users
A
- AOLserver
- configuration, Installation Option 2: Install from tarball
- Automated tests, Write automated tests
C
- computeroutput
- code, Code
- cvs
- initializing, Initialize CVS (OPTIONAL)
- setup, Using CVS with an OpenACS Site
D
- 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 Structure
E
- emacs
- installation, Install Red Hat 8/9
- emphasis
- bold, italics, Emphasis
F
- full text search
G
- Graphics
- Images, Graphics
I
- informaltable
- table, Tables
L
- language
- installation, Install Red Hat 8/9
- Linking, Links
- lists, Lists
O
- OpenACS Package, What a Package Looks Like
P
- photo-album
- installation (see ImageMagick)
- Postgres
- Vacuuming, Installation Option 2: Install from tarball
Q
- qmail
- installation, Install qmail (OPTIONAL)
- Maildir, Install qmail (OPTIONAL)
- rcpthosts error message, Install qmail (OPTIONAL)
S
- sect1, Headlines, Sections
- sect2, Headlines, Sections
- Sections
- Headlines, Headlines, Sections
- security
- definition, Install Red Hat 8/9
- firewall, Install Red Hat 8/9
- sendmail
- removing, Install qmail (OPTIONAL)
- ssh, Install Red Hat 8/9
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
X
- XML guidelines, OpenACS Documentation Strategy: Why DocBook?
- xref
- linkend, Links
- xreflabel, Headlines, Sections
Index Index: openacs-4/packages/acs-core-docs/www/maint-performance.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/maint-performance.adp,v diff -u -N -r1.1.2.14 -r1.1.2.15 --- openacs-4/packages/acs-core-docs/www/maint-performance.adp 6 Jan 2017 09:18:42 -0000 1.1.2.14 +++ openacs-4/packages/acs-core-docs/www/maint-performance.adp 2 Jun 2017 11:12:57 -0000 1.1.2.15 @@ -32,7 +32,7 @@Symbols
- $OPENACS_SERVICE_NAME, Paths and Users
A
- AOLserver
- configuration, Installation Option 2: Install from tarball
- Automated tests, Write automated tests
C
- computeroutput
- code, Code
- cvs
- initializing, Initialize CVS (OPTIONAL)
- setup, Using CVS with an OpenACS Site
D
- 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 Structure
E
- emacs
- installation, Install Red Hat 8/9
- emphasis
- bold, italics, Emphasis
F
- full text search
G
- Graphics
- Images, Graphics
I
- informaltable
- table, Tables
L
- language
- installation, Install Red Hat 8/9
- Linking, Links
- lists, Lists
O
- OpenACS Package, What a Package Looks Like
P
- photo-album
- installation (see ImageMagick)
- Postgres
- Vacuuming, Installation Option 2: Install from tarball
Q
- qmail
- installation, Install qmail (OPTIONAL)
- Maildir, Install qmail (OPTIONAL)
- rcpthosts error message, Install qmail (OPTIONAL)
S
- sect1, Headlines, Sections
- sect2, Headlines, Sections
- Sections
- Headlines, Headlines, Sections
- security
- definition, Install Red Hat 8/9
- firewall, Install Red Hat 8/9
- sendmail
- removing, Install qmail (OPTIONAL)
- ssh, Install Red Hat 8/9
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
X
- XML guidelines, OpenACS Documentation Strategy: Why DocBook?
- xref
- linkend, Links
- xreflabel, Headlines, Sections
This should return a list of database queries on the page, including the exact query (so it can be cut-paste into psql or oracle) and the time each query took.
@@ -123,7 +123,7 @@ query, install "autotrace". I usually follow the instructions here http://asktom.oracle.com/~tkyte/article1/autotrace.html.The Oracle Cost Based optimizer is a piece of software that tries to find the "optimal" execution plan for a given SQL statement. For that it estimates the costs of running a SQL Index: openacs-4/packages/acs-core-docs/www/maint-performance.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/maint-performance.html,v diff -u -N -r1.29.2.13 -r1.29.2.14 --- openacs-4/packages/acs-core-docs/www/maint-performance.html 6 Jan 2017 09:18:42 -0000 1.29.2.13 +++ openacs-4/packages/acs-core-docs/www/maint-performance.html 2 Jun 2017 11:12:57 -0000 1.29.2.14 @@ -2,7 +2,7 @@
Diagnosing Performance Problems
Did performance problems happen overnight, or did they sneak up on you? Any clue what caused the performance problems (e.g. loading 20K users into .LRN)
Is the file system out of space? Is the machine swapping to disk constantly?
Isolating and solving database problems.
Without daily internal maintenance, most databases slowly degrade in performance. For PostGreSQL, see the section called “Vacuum Postgres nightly”. For Oracle, use
exec dbms_stats.gather_schema_stats('SCHEMA_NAME')
(Andrew Piskorski's Oracle notes).You can track the exact amount of time each database query on a page takes:
Go to Main Site : Site-Wide Administration : Install Software
Click on "Install New Application" in "Install from OpenACS Repository"
Choose "ACS Developer Support">
After install is complete, restart the server.
Browse to Developer Support, which is automatically mounted at
/ds
. -Turn on Database statistics
Browse directly to a slow page and click "Request Information" at the bottom of the page.
This should return a list of database queries on the page, including the exact query (so it can be cut-paste into psql or oracle) and the time each query took.
Identify a runaway Oracle query: first, use
ps aux
ortop
to get the UNIX process ID of a runaway Oracle process.Log in to SQL*Plus as the admin:
[$OPENACS_SERVICE_NAME ~]$ svrmgrl +
Turn on Database statistics
Browse directly to a slow page and click "Request Information" at the bottom of the page.
This should return a list of database queries on the page, including the exact query (so it can be cut-paste into psql or oracle) and the time each query took.
Identify a runaway Oracle query: first, use
ps aux
ortop
to get the UNIX process ID of 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 @@ -59,7 +59,7 @@To be able to get a overview of how Oracle executes a particular query, install "autotrace". I usually follow the instructions here http://asktom.oracle.com/~tkyte/article1/autotrace.html. -
+
The Oracle Cost Based optimizer is a piece of software that tries to find the "optimal" execution plan for a given SQL statement. For that it estimates the costs of running a SQL query in a particular way (by default Index: openacs-4/packages/acs-core-docs/www/maintenance-deploy.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/maintenance-deploy.adp,v diff -u -N -r1.1.2.15 -r1.1.2.16 --- openacs-4/packages/acs-core-docs/www/maintenance-deploy.adp 6 Jan 2017 09:18:42 -0000 1.1.2.15 +++ openacs-4/packages/acs-core-docs/www/maintenance-deploy.adp 2 Jun 2017 11:12:57 -0000 1.1.2.16 @@ -24,7 +24,7 @@ working configuration safely and quickly.
With this method, we control the files on a site via CVS. This example uses one developmental server (service0-dev) and one production server (service0). Depending on your needs, you can also have a staging server for extensive testing before you go live. The @@ -103,7 +103,7 @@ tags to follow ...
The approach taken in this section is to always create a new service with the desired changes, running in parallel with the existing site. This guarantees control, at least at the final step of the process: you know what changes you are about to make because @@ -119,28 +119,28 @@ function or risk losing data in the shuffle. It also requires extra steps if the database will be affected.
Index: openacs-4/packages/acs-core-docs/www/maintenance-deploy.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/maintenance-deploy.html,v diff -u -N -r1.24.2.13 -r1.24.2.14 --- openacs-4/packages/acs-core-docs/www/maintenance-deploy.html 6 Jan 2017 09:18:42 -0000 1.24.2.13 +++ openacs-4/packages/acs-core-docs/www/maintenance-deploy.html 2 Jun 2017 11:12:57 -0000 1.24.2.14 @@ -2,7 +2,7 @@
Staged Deployment for Production Networks + run the upgrade scripts from the package manager.This section describes two minimal-risk methods for deploying changes on a production network. The important characteristics of a safe change deployment include: (THIS SECTION IN DEVELOPMENT)
Control: You know for sure that the change you are making is the change that you intend to make and is the change that you tested.
Rollback: If anything goes wrong, you can return to the previous working configuration safely and quickly.
This section describes two minimal-risk methods for deploying changes on a production network. The important characteristics of a safe change deployment include: (THIS SECTION IN DEVELOPMENT)
Control: You know for sure that the change you are making is the change that you intend to make and is the change that you tested.
Rollback: If anything goes wrong, you can return to the previous working configuration safely and quickly.
With this method, we control the files on a site via CVS. This example uses one developmental server (service0-dev) and one production server (service0). Depending on your needs, you can also have a staging server for extensive testing before you go @@ -67,4 +67,4 @@ cvs up -Pd index.adp
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 commit new work on the development server without erasing the definition of 'working production code.' So a better method is to use a tag. This guarantees that, at any time in the future, you can retrieve exactly the same set of code. This is useful for both of the characteristics of safe change deployment. For control, you can use tags to define a body of code, test that code, and then know that what you are deploying is exactly that code. For rollback, you can use return to the last working tag if the new tag (or new, untagged changes) cause problems. .... example of using tags to follow ...
The approach taken in this section is to always create a new service with the desired changes, running in parallel with the existing site. This guarantees control, at least at the final step of the process: you know what changes you are about to make because you can see them directly. It does not, by itself, guarantee the entire control chain. You need additional measures to make sure that the change you are making is exactly and completely the change you intended to make and tested previously, and nothing more. Those additional measures typically take the form of source control tags and system version numbers. The parallel-server approach also guarantees rollback because the original working service is not touched; it is merely set aside.
This approach can has limitations. If the database or file system regularly receiving new data, you must interrupt this function or risk losing data in the shuffle. It also requires extra steps if the database will be affected.
The production site can run "HEAD" from cvs.
The drawback to using HEAD as the live code is that you cannot commit new work on the development server without erasing the definition of 'working production code.' So a better method is to use a tag. This guarantees that, at any time in the future, you can retrieve exactly the same set of code. This is useful for both of the characteristics of safe change deployment. For control, you can use tags to define a body of code, test that code, and then know that what you are deploying is exactly that code. For rollback, you can use return to the last working tag if the new tag (or new, untagged changes) cause problems. .... example of using tags to follow ...
Index: openacs-4/packages/acs-core-docs/www/objects.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/objects.adp,v diff -u -N -r1.1.2.15 -r1.1.2.16 --- openacs-4/packages/acs-core-docs/www/objects.adp 6 Jan 2017 09:18:42 -0000 1.1.2.15 +++ openacs-4/packages/acs-core-docs/www/objects.adp 2 Jun 2017 11:12:57 -0000 1.1.2.16 @@ -86,7 +86,7 @@ for the PG version) file created when we created the package. Then, do the following:The approach taken in this section is to always create a new service with the desired changes, running in parallel with the existing site. This guarantees control, at least at the final step of the process: you know what changes you are about to make because you can see them directly. It does not, by itself, guarantee the entire control chain. You need additional measures to make sure that the change you are making is exactly and completely the change you intended to make and tested previously, and nothing more. Those additional measures typically take the form of source control tags and system version numbers. The parallel-server approach also guarantees rollback because the original working service is not touched; it is merely set aside.
This approach can has limitations. If the database or file system regularly receiving new data, you must interrupt this function or risk losing data in the shuffle. It also requires extra steps if the database will be affected.
First, add an entry to the
acs_object_types
table with the following PL/SQL call:begin @@ -142,7 +142,7 @@ attributes, so there is no need for us to define them.The next thing we do is make a small modification to the data model to reflect the fact that each row in the
notes
table represents something that is not only an object of typenote
, but also anacs_object
. The new table definition looks @@ -166,7 +166,7 @@acs_objects
.The next step is to define a PL/SQL package for your new type, and write some basic procedures to create and delete objects. Here is a package definition for our new type:
@@ -213,7 +213,7 @@ only" by default. We'll talk about this more later.The PL/SQL package body contains the implementations of the procedures defined above. The only subtle thing going on here is that we must use
acs_object.new
Index: openacs-4/packages/acs-core-docs/www/objects.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/objects.html,v diff -u -N -r1.52.2.13 -r1.52.2.14 --- openacs-4/packages/acs-core-docs/www/objects.html 6 Jan 2017 09:18:42 -0000 1.52.2.13 +++ openacs-4/packages/acs-core-docs/www/objects.html 2 Jun 2017 11:12:57 -0000 1.52.2.14 @@ -79,7 +79,7 @@ Fire up your text editor and open theROOT/packages/notes/sql/oracle/notes-create.sql
(ROOT/packages/notes/sql/postgresql/notes-create.sql
for the PG version) file created when we created the package. Then, do the following: -+
First, add an entry to the
acs_object_types
table with the following PL/SQL call:begin @@ -139,7 +139,7 @@ because the new typenote
is a subtype ofacs_object
, it will inherit these attributes, so there is no need for us to define them. -The next thing we do is make a small modification to the data model to reflect the fact that each row in the
notes
table represents something that is not only an object of type @@ -164,7 +164,7 @@ use theacs_objects
table to find objects will transparently find any objects that are instances of any subtype ofacs_objects
. -The next step is to define a PL/SQL package for your new type, and write some basic procedures to create and delete objects. Here is a package definition for our new type: @@ -212,7 +212,7 @@ object OBJ was "read only", then any other object that used OBJ as its context would also be "read only" by default. We'll talk about this more later. -
The PL/SQL package body contains the implementations of the procedures defined above. The only subtle thing going on here is that we must use
acs_object.new
to insert a row into Index: openacs-4/packages/acs-core-docs/www/openacs.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/openacs.adp,v diff -u -N -r1.1.2.16 -r1.1.2.17 --- openacs-4/packages/acs-core-docs/www/openacs.adp 6 Jan 2017 09:18:42 -0000 1.1.2.16 +++ openacs-4/packages/acs-core-docs/www/openacs.adp 2 Jun 2017 11:12:57 -0000 1.1.2.17 @@ -304,7 +304,7 @@ automatically authenticates as the postgres user of the same name, if one exists. We currently use postgres "super-users" for everything, which means that anyone with access to any of the -openacs system accounts on a machine has full access to all +OpenACS system accounts on a machine has full access to all postgresql databases on that machine.[root root]#su - postgres
[postgres pgsql]$createuser -a -d $OPENACS_SERVICE_NAME @@ -337,7 +337,7 @@ automate vacuuming is to edit the cron file for the database user. Recommended:
every day.VACUUM ANALYZE
every hour andVACUUM FULL -ANALYZE
every day.+ANALYZE[$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 @@ -371,7 +371,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.+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
@@ -465,7 +465,7 @@ (/var/lib/aolserver/$OPENACS_SERVICE_NAME/log/$OPENACS_SERVICE_NAME-error.log
) to make sure the service is starting without any problems. The most common errors here are trying to start a port 80 server while not -root, failing to connect because of a firewall, and aolserver +root, failing to connect because of a firewall, and AOLserver failing to start due to permissions errors or missing files. If you need to make changes, don't forget to kill any running servers withkillall @@ -611,8 +611,8 @@ recovery procedure.
- ($Id: openacs.xml,v 1.31.14.2 2016/07/05 -16:42:42 gustafn Exp $)+($Id: openacs.xml,v 1.31.14.3 2017/04/22 +17:18:48 gustafn Exp $)the section called “Troubleshooting Oracle Dates” Prepare PostgreSQL for an OpenACS Service.
Create a user in the database matching the service - name. With default PostgreSQL authentication, a system user connecting locally automatically authenticates as the postgres user of the same name, if one exists. We currently use postgres "super-users" for everything, which means that anyone with access to any of the openacs system accounts on a machine has full access to all postgresql databases on that machine.
[root root]#su - postgres
+ name. With default PostgreSQL authentication, a system user connecting locally automatically authenticates as the postgres user of the same name, if one exists. We currently use postgres "super-users" for everything, which means that anyone with access to any of the OpenACS system accounts on a machine has full access to all postgresql databases on that machine.[root root]#su - postgres
[postgres pgsql]$createuser -a -d $OPENACS_SERVICE_NAME
CREATE USER [postgres pgsql]$exit
@@ -238,7 +238,7 @@ CREATE DATABASE [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ su - $OPENACS_SERVICE_NAME -/usr/local/pgsql/bin/createdb -E UNICODE $OPENACS_SERVICE_NAMEAutomate 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 andVACUUM 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_NAMEAutomate 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 andVACUUM 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_NAMEDepending on your distribution, you may receive email when the crontab items are executed. If you don't want to receive email for those crontab items, @@ -251,7 +251,7 @@ need to configure a virtual server. The Reference Platform uses a configuration file included in the OpenACS tarball,
/var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/config.tcl
. - Open it in an editor to adjust the parameters.[root root]#su - $OPENACS_SERVICE_NAME
+ Open it in an editor to adjust the parameters.[root root]#su - $OPENACS_SERVICE_NAME
[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc
[$OPENACS_SERVICE_NAME etc]$emacs config.tcl
@@ -304,7 +304,7 @@ to make sure the service is starting without any problems. The most common errors here are trying to start a port 80 server while not root, failing to connect because of - a firewall, and aolserver failing to start due to + a firewall, and AOLserver failing to start due to permissions errors or missing files. If you need to make changes, don't forget to kill any running servers with
killall nsd
. Index: openacs-4/packages/acs-core-docs/www/oracle.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/oracle.adp,v diff -u -N -r1.1.2.12 -r1.1.2.13 --- openacs-4/packages/acs-core-docs/www/oracle.adp 21 Apr 2017 15:07:52 -0000 1.1.2.12 +++ openacs-4/packages/acs-core-docs/www/oracle.adp 2 Jun 2017 11:12:57 -0000 1.1.2.13 @@ -970,8 +970,8 @@ access to the Oracle system.($Id: oracle.xml,v 1.21.14.2 2016/12/04 -11:24:07 gustafn Exp $)+($Id: oracle.xml,v 1.21.14.3 2017/04/21 +15:07:53 gustafn Exp $)Here is how an OpenACS 5 server is laid out starting from the Server root (ROOT):
-Figure 11.1. Server file layout +
Figure 11.1. Server file layout diagram
ROOT/ bin/ @@ -65,7 +65,7 @@ To illustrate the general structure of a package, let's see what the package for the "notes" application should look like.-Figure 11.2. Package file layout +
Figure 11.2. Package file layout diagram
ROOT/ +-- packages/ APM Root @@ -136,7 +136,7 @@ files are not sourced in these directories. This makes it suitable for storing icons, css files, javascript, and other static content which can be treated this way.-Table 11.1. Package +
Table 11.1. Package files
@@ -401,8 +401,8 @@ Additional Reading ($Id: packages.xml,v 1.9.14.2 2016/10/03 -09:17:51 gustafn Exp $)+($Id: packages.xml,v 1.9.14.3 2017/04/21 +15:07:52 gustafn Exp $)Here is how an OpenACS 5 server is laid out starting from the Server root (ROOT): -
Figure 11.1. Server file layout diagram
+Figure 11.1. Server file layout diagram
ROOT/ bin/ Various executables and scripts for server maintanence. @@ -51,7 +51,7 @@ To illustrate the general structure of a package, let's see what the package for the "notes" application should look like. -Figure 11.2. Package file layout diagram
+Figure 11.2. Package file layout diagram
ROOT/ +-- packages/ APM Root | @@ -124,7 +124,7 @@ directories. This makes it suitable for storing icons, css files, javascript, and other static content which can be treated this way. -Table 11.1. Package files
File Type Its Use Naming Convention Package Specification File The package specification file is an XML file generated and + Table 11.1. Package files
File Type Its Use Naming Convention Package Specification File The package specification file is an XML file generated and maintained by the OpenACS Package Manager (APM). It specifies information about the package including its parameters and its files. notes.info
Data Model Creation Script Index: openacs-4/packages/acs-core-docs/www/permissions-design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions-design.adp,v diff -u -N -r1.1.2.4 -r1.1.2.5 --- openacs-4/packages/acs-core-docs/www/permissions-design.adp 19 Nov 2016 09:21:54 -0000 1.1.2.4 +++ openacs-4/packages/acs-core-docs/www/permissions-design.adp 2 Jun 2017 11:12:57 -0000 1.1.2.5 @@ -161,7 +161,7 @@ questions are commonly asked: First, and most commonly, "Can this party perform this method on this object?" Two Tcl functions are provided to answer this - one which returns a -boolean, the other of which results in an error page. These tcl +boolean, the other of which results in an error page. These Tcl functions directly access the acs_object_party_method_map
.The second most commonly asked question occurs when a list of objects is being displayed, often in order to provide appropriate UI functionality: "For this party, what methods are available @@ -206,7 +206,7 @@ privilege acs_permissions.privilege%TYPE );
These procedures are defined in
permissions-create.sql
-Tcl Procedures
Two tcl procedures provide a simple call for the query, +
Tcl Procedures
Two Tcl procedures provide a simple call for the query, "Can this user perform this method on this object?" One returns true or false, the other presents an error page.
To receive a true or false value, Tcl code should call:
permission::permission_p -object_id $object_id -party_id $user_id -privilege $method Index: openacs-4/packages/acs-core-docs/www/permissions-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions-design.html,v diff -u -N -r1.34.2.4 -r1.34.2.5 --- openacs-4/packages/acs-core-docs/www/permissions-design.html 6 Jan 2017 09:18:42 -0000 1.34.2.4 +++ openacs-4/packages/acs-core-docs/www/permissions-design.html 2 Jun 2017 11:12:57 -0000 1.34.2.5 @@ -116,7 +116,7 @@ questions are commonly asked: First, and most commonly, "Can this party perform this method on this object?" Two Tcl functions are provided to answer this - one which returns a boolean, the other of which results in an -error page. These tcl functions directly access the +error page. These Tcl functions directly access theacs_object_party_method_map
.The second most commonly asked question occurs when a list of objects is being displayed, often in order to provide appropriate UI functionality: "For this party, what methods are available on these objects?" @@ -153,7 +153,7 @@ privilege acs_permissions.privilege%TYPE );
These procedures are defined in -
permissions-create.sql
Tcl Procedures
Two tcl procedures provide a simple call for the query, "Can this +
permissions-create.sql
Tcl Procedures
Two Tcl procedures provide a simple call for the query, "Can this user perform this method on this object?" One returns true or false, the other presents an error page.
To receive a true or false value, Tcl code should call:
permission::permission_p -object_id $object_id -party_id $user_id -privilege $method Index: openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.adp,v diff -u -N -r1.1.2.13 -r1.1.2.14 --- openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.adp 6 Jan 2017 09:18:42 -0000 1.1.2.13 +++ openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.adp 2 Jun 2017 11:12:57 -0000 1.1.2.14 @@ -130,7 +130,7 @@ Context HierarchySuppose objects A, B, ..., and F form the following hierarchy.
This can be represented in the acs_objects table by the following entries:
-Table 11.3. acs_objects example +
Table 11.3. acs_objects example data
Index: openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html,v diff -u -N -r1.46.2.13 -r1.46.2.14 --- openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html 6 Jan 2017 09:18:42 -0000 1.46.2.13 +++ openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html 2 Jun 2017 11:12:57 -0000 1.46.2.14 @@ -105,7 +105,7 @@ Suppose objects A, B, ..., and F form the following hierarchy. -
Table 11.2. Context Hierarchy Example
+ Table 11.2. Context Hierarchy Example
A
object_id=10
@@ -139,7 +139,7 @@ This can be represented in the acs_objects table by the following entries: -+
The first entry tells us that object 20 is the descendant of object 10, and the third entry shows that object 40 is the descendant of object 20. By running a CONNECT BY query, Index: openacs-4/packages/acs-core-docs/www/postgres.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/postgres.adp,v diff -u -N -r1.1.2.6 -r1.1.2.7 --- openacs-4/packages/acs-core-docs/www/postgres.adp 19 Nov 2016 09:21:54 -0000 1.1.2.6 +++ openacs-4/packages/acs-core-docs/www/postgres.adp 2 Jun 2017 11:12:57 -0000 1.1.2.7 @@ -16,7 +16,7 @@ OpenACS documentation staff.
Skip this section if you will run only Oracle.
OpenACS 5.9.0 will run with PostgreSQL 9.0 or newer. 9.5 is currently the recommended version of PostgreSQL.
It is recommend to use a prepackaged version of PostgreSQL, -which are available in source and binary formats from www.postgresql.org/download/.
Larger installations might want to tune the PostgresSQL +which are available in source and binary formats from www.postgresql.org/download/.
Larger installations might want to tune the PostgreSQL installation with e.g. the utility pgtune, which is also available via
apt-get install pgtune
ordnf install pgtune
on Index: openacs-4/packages/acs-core-docs/www/postgres.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/postgres.html,v diff -u -N -r1.51.2.11 -r1.51.2.12 --- openacs-4/packages/acs-core-docs/www/postgres.html 19 Nov 2016 09:21:54 -0000 1.51.2.11 +++ openacs-4/packages/acs-core-docs/www/postgres.html 2 Jun 2017 11:12:57 -0000 1.51.2.12 @@ -6,7 +6,7 @@ the recommended version of PostgreSQL.It is recommend to use a prepackaged version of PostgreSQL, which are available in source and binary formats from www.postgresql.org/download/. -
Larger installations might want to tune the PostgresSQL +
Larger installations might want to tune the PostgreSQL installation with e.g. the utility pgtune, which is also available via
apt-get install pgtune
ordnf install pgtune
on Debian/Ubuntu or RedHat systems. Index: openacs-4/packages/acs-core-docs/www/psgml-for-emacs.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/psgml-for-emacs.adp,v diff -u -N -r1.1.2.13 -r1.1.2.14 --- openacs-4/packages/acs-core-docs/www/psgml-for-emacs.adp 6 Jan 2017 09:18:42 -0000 1.1.2.13 +++ openacs-4/packages/acs-core-docs/www/psgml-for-emacs.adp 2 Jun 2017 11:12:57 -0000 1.1.2.14 @@ -12,7 +12,7 @@- If you plan to write or edit any + If you plan to write or edit any documentation with emacs, install a customized emacs configuration file with DocBook commands in the skeleton directory, so it will be used for all new users. The file also fixes the backspace -> Index: openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html,v diff -u -N -r1.41.2.13 -r1.41.2.14 --- openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html 6 Jan 2017 09:18:42 -0000 1.41.2.13 +++ openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html 2 Jun 2017 11:12:57 -0000 1.41.2.14 @@ -1,5 +1,5 @@ -
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/release-notes.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/release-notes.adp,v diff -u -N -r1.1.2.16 -r1.1.2.17 --- openacs-4/packages/acs-core-docs/www/release-notes.adp 6 Jan 2017 09:18:42 -0000 1.1.2.16 +++ openacs-4/packages/acs-core-docs/www/release-notes.adp 2 Jun 2017 11:12:57 -0000 1.1.2.17 @@ -406,16 +406,16 @@ 08:32:46 gustafn Exp $)
Serving backup files and files from the CVS directories is turned off by default via the acs-kernel parameter ExcludedFiles in section request-processor (The variable provides a string match glob list of files and is defaulted to "*/CVS/* *~") -
($Id$)+($Id$)Index: openacs-4/packages/acs-core-docs/www/releasing-openacs-core.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/releasing-openacs-core.adp,v diff -u -N -r1.1.2.10 -r1.1.2.11 --- openacs-4/packages/acs-core-docs/www/releasing-openacs-core.adp 21 Apr 2017 15:07:52 -0000 1.1.2.10 +++ openacs-4/packages/acs-core-docs/www/releasing-openacs-core.adp 2 Jun 2017 11:12:57 -0000 1.1.2.11 @@ -32,7 +32,7 @@ This should only happen after a release candidate is approved..LRN: this must be repeated for .LRN modules (dotlrn-core in the dotlrn cvs tree) and for any modified modules in the .LRN prerequisites (dotlrn-prereq -in openacs cvs tree). My current working model is that I +in OpenACS cvs tree). My current working model is that I bulk-update .LRN and OpenACS core but that I don't touch dotlrn-prereq modules - I just use the most recent release and it's up to individual package developers to tag and release those @@ -141,7 +141,7 @@
Go to a new working space and export the tagged files. (was getting errors here trying to use -d, so gave up and just moved -things from openacs-4 to openacs at the end)
mkdir /var/tmp/dotlrn-tarball +things from openacs-4 to OpenACS at the end)
mkdir /var/tmp/dotlrn-tarball cd /var/tmp/dotlrn-tarball cvs -d /cvsroot export -r openacs-5-0-0a1 acs-core cd /var/tmp/dotlrn-tarball/openacs-4/packages @@ -264,8 +264,8 @@ # Clean up after ourselves... cd $BASE && rm -rf dotlrn-tarball tarball openacs-4 dotlrn-packages -
($Id: releasing-openacs.xml,v 1.22.2.3 -2016/10/03 09:17:51 gustafn Exp $)+($Id: releasing-openacs.xml,v 1.22.2.5 +2017/04/22 17:18:48 gustafn Exp $)OpenACS Core and .LRN Index: openacs-4/packages/acs-core-docs/www/rp-design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/rp-design.adp,v diff -u -N -r1.1.2.6 -r1.1.2.7 --- openacs-4/packages/acs-core-docs/www/rp-design.adp 13 Feb 2017 07:33:15 -0000 1.1.2.6 +++ openacs-4/packages/acs-core-docs/www/rp-design.adp 2 Jun 2017 11:12:57 -0000 1.1.2.7 @@ -90,9 +90,9 @@ database.
Update Translations. the section called “How to Update the translations”
Rebuild the Changelog. Rebuild the Changelog. I use a tool called cvs2cl. Run this command from the package root to automatically generate a Changelog file in the same dir. We generate two changelogs, one for the minor branch and one for the most recent release. The example below is for OpenACS 5.0.2:
cd /var/lib/aolserver/$OPENACS_SERVICE_NAME cvs2cl -F oacs-5-0 --delta openacs-5-0-0-final:oacs-5-0 -f ChangeLog -cvs2cl -F oacs-5-0 --delta openacs-5-0-1-final:oacs-5-0 -f ChangeLog-recent
Update Version Numbers. The version numbers in the documentation and in the packages must be updated. This should only happen after a release candidate is approved.
.LRN: this must be repeated for .LRN modules (dotlrn-core in the dotlrn cvs tree) and for any modified modules in the .LRN prerequisites (dotlrn-prereq in openacs cvs tree). My current working model is that I bulk-update .LRN and OpenACS core but that I don't touch dotlrn-prereq modules - I just use the most recent release and it's up to individual package developers to tag and release those packages when they change. This model is already broken because following it means that dotlrn-prereqs don't get new translations.
Update /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/xml/variables.ent with the new version number. +cvs2cl -F oacs-5-0 --delta openacs-5-0-1-final:oacs-5-0 -f ChangeLog-recent
Update Version Numbers. The version numbers in the documentation and in the packages must be updated. This should only happen after a release candidate is approved.
.LRN: this must be repeated for .LRN modules (dotlrn-core in the dotlrn cvs tree) and for any modified modules in the .LRN prerequisites (dotlrn-prereq in OpenACS cvs tree). My current working model is that I bulk-update .LRN and OpenACS core but that I don't touch dotlrn-prereq modules - I just use the most recent release and it's up to individual package developers to tag and release those packages when they change. This model is already broken because following it means that dotlrn-prereqs don't get new translations.
Update /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/xml/variables.ent with the new version number.
Add new section in /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/xml/for-everyone/release-notes.xml
Regenerate all HTML docs
cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/xml makeUpdate /var/lib/aolserver/$OPENACS_SERVICE_NAME/readme.txt with the new version number
Update version number and release date in all of the @@ -41,7 +41,7 @@
dotlrn.
Go to a new working space and export the tagged files. (was getting errors here trying to use -d, so gave up and just moved things from openacs-4 to - openacs at the end)
mkdir /var/tmp/dotlrn-tarball + OpenACS at the end)
mkdir /var/tmp/dotlrn-tarball cd /var/tmp/dotlrn-tarball cvs -d /cvsroot export -r openacs-5-0-0a1 acs-core cd /var/tmp/dotlrn-tarball/openacs-4/packages Index: openacs-4/packages/acs-core-docs/www/request-processor.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/request-processor.adp,v diff -u -N -r1.1.2.9 -r1.1.2.10 --- openacs-4/packages/acs-core-docs/www/request-processor.adp 21 Apr 2017 15:07:52 -0000 1.1.2.9 +++ openacs-4/packages/acs-core-docs/www/request-processor.adp 2 Jun 2017 11:12:57 -0000 1.1.2.10 @@ -106,7 +106,7 @@ name of the package.
[ad_conn path_info]
- -
In a .vuh file, path_info is the trailing part of the URL not matched by the .vuh file.
($Id: rp.xml,v 1.12.6.2 2016/10/03 09:17:51 +($Id: rp.xml,v 1.12.6.3 2017/04/21 15:07:52 gustafn Exp $)Authentication and Authorization
Once the request processor has located both the package_id and concrete file associated with the request, authentication is -performed by the session security system. After authentication has been -performed the user is authorized to have read access for the given -package by the OpenACS 4 Permissions Design. If +performed by the session security system. After authentication has +been performed the user is authorized to have read access for the +given package by the OpenACS 4 Permissions Design. If authorization succeeds then the request is served, otherwise it is aborted.
Concrete File Search
To actually serve a file, the request processor generates an @@ -112,7 +112,7 @@ served.
Virtual URL Handlers
If no file is found during the concrete file search, then the request processor searches the filesystem for a virtual url handler (.vuh) file. This file contains -normal tcl code, and is in fact handled by the same extension +normal Tcl code, and is in fact handled by the same extension handling procedure that handles .tcl files. The only way this file is treated differently is in how the request processor searches for it. When a lookup fails, the request processor generates each valid @@ -242,4 +242,4 @@ and Libraries" homeLink="index" homeLabel="Home" upLink="kernel-doc" upLabel="Up"> - + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/rp-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/rp-design.html,v diff -u -N -r1.37.2.5 -r1.37.2.6 --- openacs-4/packages/acs-core-docs/www/rp-design.html 13 Feb 2017 07:33:15 -0000 1.37.2.5 +++ openacs-4/packages/acs-core-docs/www/rp-design.html 2 Jun 2017 11:12:57 -0000 1.37.2.6 @@ -61,7 +61,7 @@ package pageroot, even though the global pageroot is searched later. If a file is found at any of the searched locations then it is served.
Virtual URL Handlers
If no file is found during the concrete file search, then the request processor searches the filesystem for a virtual url handler -(.vuh) file. This file contains normal tcl code, and is in +(.vuh) file. This file contains normal Tcl code, and is in fact handled by the same extension handling procedure that handles .tcl files. The only way this file is treated differently is in how the request processor searches for it. When a lookup fails, the request processor Index: openacs-4/packages/acs-core-docs/www/style-guide.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/style-guide.adp,v diff -u -N -r1.1.2.9 -r1.1.2.10 --- openacs-4/packages/acs-core-docs/www/style-guide.adp 6 Jan 2017 09:18:42 -0000 1.1.2.9 +++ openacs-4/packages/acs-core-docs/www/style-guide.adp 2 Jun 2017 11:12:57 -0000 1.1.2.10 @@ -14,12 +14,12 @@ Motivation
Why have coding standards for OpenACS? And if the code works why change it to adhere to some arbitrary rules?
Well, first lets consider the OpenACS code base (all this as of December 2003 and including dotLRN). There are about 390,000 lines -of tcl code, about 460,000 lines of sql (in datamodel scripts and +of Tcl code, about 460,000 lines of sql (in datamodel scripts and .xql files), about 80,000 lines of markup in .adp files, and about 100,000 lines of documentation. All told, just about a million lines of "stuff". In terms of logical units there are about 160 packages, 800 tables, 2,000 stored procedures, about -2,000 functional pages, and about 3,200 tcl procedures.
When confronted by this much complexity it's important to be +2,000 functional pages, and about 3,200 Tcl procedures.
When confronted by this much complexity it's important to be able to make sense of it without having to wade through it all. Things should be coherent, things should be named predictably and behave like you would expect, and your guess about what something @@ -36,7 +36,7 @@ Follow the file naming and the package structure rules. Some of the file naming rules are requirements for things to function correctly (for example data -model creation scripts and tcl library files must be named properly +model creation scripts and Tcl library files must be named properly to be used), while some are suggestions (the object-verb naming convention) which if ignored won't break anything, but if you follow the rules people will be able to understand your package much more @@ -99,8 +99,8 @@
- 0.1 Creation 12/2003 Jeff Davis ($Id: style-guide.xml,v 1.3.14.2 2016/10/03 -09:17:51 gustafn Exp $)+($Id: style-guide.xml,v 1.3.14.3 2017/04/22 +17:18:48 gustafn Exp $)Well, first lets consider the OpenACS code base (all this as of December 2003 and including dotLRN). There are about 390,000 - lines of tcl code, about 460,000 lines of sql (in datamodel + lines of Tcl code, about 460,000 lines of sql (in datamodel scripts and .xql files), about 80,000 lines of markup in .adp files, and about 100,000 lines of documentation. All told, just about a million lines of "stuff". In terms of logical units there are about 160 packages, 800 tables, 2,000 stored - procedures, about 2,000 functional pages, and about 3,200 tcl + procedures, about 2,000 functional pages, and about 3,200 Tcl procedures.
When confronted by this much complexity it's important to be @@ -32,7 +32,7 @@
Follow the file naming and the package structure rules. Some of the file naming rules are requirements for things to function correctly (for example data model creation - scripts and tcl library files must be named properly to be + scripts and Tcl library files must be named properly to be used), while some are suggestions (the object-verb naming convention) which if ignored won't break anything, but if you follow the Index: openacs-4/packages/acs-core-docs/www/tutorial-comments.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-comments.adp,v diff -u -N -r1.1.2.3 -r1.1.2.4 --- openacs-4/packages/acs-core-docs/www/tutorial-comments.adp 19 Nov 2016 09:21:55 -0000 1.1.2.3 +++ openacs-4/packages/acs-core-docs/www/tutorial-comments.adp 2 Jun 2017 11:12:58 -0000 1.1.2.4 @@ -21,7 +21,7 @@ { 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 Index: openacs-4/packages/acs-core-docs/www/tutorial-comments.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-comments.html,v diff -u -N -r1.15.2.4 -r1.15.2.5 --- openacs-4/packages/acs-core-docs/www/tutorial-comments.html 6 Jan 2017 09:18:42 -0000 1.15.2.4 +++ openacs-4/packages/acs-core-docs/www/tutorial-comments.html 2 Jun 2017 11:12:58 -0000 1.15.2.5 @@ -9,7 +9,7 @@ { 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 Index: openacs-4/packages/acs-core-docs/www/tutorial-css-layout.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-css-layout.adp,v diff -u -N -r1.1.2.15 -r1.1.2.16 --- openacs-4/packages/acs-core-docs/www/tutorial-css-layout.adp 4 Feb 2017 14:01:26 -0000 1.1.2.15 +++ openacs-4/packages/acs-core-docs/www/tutorial-css-layout.adp 2 Jun 2017 11:12:58 -0000 1.1.2.16 @@ -12,7 +12,7 @@ Laying out a page with CSS instead of tables
A sample of the HTML code (full source)
<table border="0" width="100%"> <tr> @@ -40,7 +40,7 @@A sample of the HTML code (full source)
+.LRN Home with CSS-based layoutA sample of the HTML code (full source)
<div class="left"> <div class="portlet-wrap-shadow"> <div class="portlet-wrap-bl"> Index: openacs-4/packages/acs-core-docs/www/tutorial-css-layout.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-css-layout.html,v diff -u -N -r1.12.2.13 -r1.12.2.14 --- openacs-4/packages/acs-core-docs/www/tutorial-css-layout.html 6 Jan 2017 09:18:42 -0000 1.12.2.13 +++ openacs-4/packages/acs-core-docs/www/tutorial-css-layout.html 2 Jun 2017 11:12:58 -0000 1.12.2.14 @@ -1,15 +1,15 @@ -Laying out a page with CSS instead of tables Index: openacs-4/packages/acs-core-docs/www/tutorial-database.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-database.adp,v diff -u -N -r1.1.2.16 -r1.1.2.17 --- openacs-4/packages/acs-core-docs/www/tutorial-database.adp 21 Apr 2017 15:07:52 -0000 1.1.2.16 +++ openacs-4/packages/acs-core-docs/www/tutorial-database.adp 2 Jun 2017 11:12:58 -0000 1.1.2.17 @@ -15,7 +15,7 @@ OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.A sample of the HTML code (full source)
<table border="0" width="100%"> +Laying out a page with CSS instead of tables +[$OPENACS_SERVICE_NAME myfirstpackage]$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%"> + <table class="element" border="0" cellpadding="0" cellspacing="0" width="100%"> <tr> - <td colspan=3 class="element-header-text"> + <td colspan="3" class="element-header-text"> <bold>Groups</bold> </td> </tr> <tr> - <td colspan=3 class="dark-line" height="0"><img src="/resources/acs-subsite/spacer.gif"></td></tr> + <td colspan="3" class="dark-line" height="0"><img src="/resources/acs-subsite/spacer.gif"></td></tr> <tr> <td class="light-line" width="1"> <img src="/resources/acs-subsite/spacer.gif" width="1"> @@ -21,7 +21,7 @@ <table border="0" bgcolor="white" cellpadding="0" cellspacing="0" width="100%"> <tr> <td class=element-text> - MBA 101Index: openacs-4/packages/acs-core-docs/www/tutorial-cvs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-cvs.html,v diff -u -N -r1.26.2.13 -r1.26.2.14 --- openacs-4/packages/acs-core-docs/www/tutorial-cvs.html 6 Jan 2017 09:18:42 -0000 1.26.2.13 +++ openacs-4/packages/acs-core-docs/www/tutorial-cvs.html 2 Jun 2017 11:12:58 -0000 1.26.2.14 @@ -59,4 +59,4 @@ initial revision: 1.1 done (many lines omitted) -[$OPENACS_SERVICE_NAME myfirstpackage]$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"> Index: openacs-4/packages/acs-core-docs/www/tutorial-cvs.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-cvs.adp,v diff -u -N -r1.1.2.13 -r1.1.2.14 --- openacs-4/packages/acs-core-docs/www/tutorial-cvs.adp 6 Jan 2017 09:18:42 -0000 1.1.2.13 +++ openacs-4/packages/acs-core-docs/www/tutorial-cvs.adp 2 Jun 2017 11:12:58 -0000 1.1.2.14 @@ -71,7 +71,7 @@ (many lines omitted) [$OPENACS_SERVICE_NAME myfirstpackage]$
We create all database objects with scripts in the
myfirstpackage/sql/
directory. All database +Code the data modelWe create all database objects with scripts in the
myfirstpackage/sql/
directory. All database scripts are database-specific and are thus in either themyfirstpackage/sql/oracle
ormyfirstpackage/sql/postgresql
@@ -42,7 +42,7 @@ simplify our database creation. (More information about ACS Objects. More information about the Content Repository.)The top of each sql file has some standard comments, including doc tags such as
\@author
which @@ -51,7 +51,7 @@ [$OPENACS_SERVICE_NAME ~]$cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/sql/postgresql
[$OPENACS_SERVICE_NAME postgresql]$emacs myfirstpackage-create.sql
Paste the text below into the file, save, and close.
-Figure 9.3. The +
Figure 9.3. The Database Creation Script
-- creation script -- @@ -81,7 +81,7 @@ uninstalled.[$OPENACS_SERVICE_NAME postgresql]$emacs myfirstpackage-drop.sql
-Figure 9.4. Database Deletion +
Figure 9.4. Database Deletion Script
-- drop script -- Index: openacs-4/packages/acs-core-docs/www/tutorial-database.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-database.html,v diff -u -N -r1.44.2.14 -r1.44.2.15 --- openacs-4/packages/acs-core-docs/www/tutorial-database.html 21 Apr 2017 15:07:52 -0000 1.44.2.14 +++ openacs-4/packages/acs-core-docs/www/tutorial-database.html 2 Jun 2017 11:12:58 -0000 1.44.2.15 @@ -2,7 +2,7 @@Setting Up Database Objects We create all database objects with scripts in the
myfirstpackage/sql/
directory. All database scripts are database-specific and are thus in either themyfirstpackage/sql/oracle
or @@ -32,13 +32,13 @@ repository functions to simplify our database creation. (More information about ACS Objects. More information about the Content Repository.) -The top of each sql file has some +
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
-[$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 +[$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 -- -- @author joel@aufrecht.org -- @cvs-id &Id:$ @@ -62,7 +62,7 @@ object. Notice the use of "mfp." This is derived from "My First Package" and ensures that our object is unlikely to conflict with objects from other packages.Create a database file to drop everything if the package is uninstalled.
-[$OPENACS_SERVICE_NAME postgresql]$emacs myfirstpackage-drop.sql
Figure 9.4. Database Deletion Script
-- drop script +[$OPENACS_SERVICE_NAME postgresql]$emacs myfirstpackage-drop.sql
Figure 9.4. Database Deletion Script
-- drop script -- -- @author joel@aufrecht.org -- @cvs-id &Id:$ Index: openacs-4/packages/acs-core-docs/www/tutorial-debug.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-debug.adp,v diff -u -N -r1.1.2.14 -r1.1.2.15 --- openacs-4/packages/acs-core-docs/www/tutorial-debug.adp 6 Jan 2017 09:18:42 -0000 1.1.2.14 +++ openacs-4/packages/acs-core-docs/www/tutorial-debug.adp 2 Jun 2017 11:12:58 -0000 1.1.2.15 @@ -15,7 +15,7 @@ OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.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 @@ -28,7 +28,7 @@ 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 +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
@@ -45,7 +45,7 @@Make a list of basic tests to make sure it works
+Manual testing
Make a list of basic tests to make sure it works
@@ -73,11 +73,11 @@ to delete your own note. Edit your own note. Search for a note. Test Num Action Expected Result - It seems to me that a lot of people have + It seems to me that a lot of people have been asking for some guidelines on how to write automated tests. I've done several tests by now and have found the process to be extremely easy and useful. It's a joy to work with automated @@ -148,7 +148,7 @@ myfirstpackage. You should see your test case. Run it and examine the results.
API testing can only test part of our package - it doesn't test the code in our adp/tcl pairs. For this, we can use TCLwebtest. TCLwebtest must be installed for this test to work. This provides a library of functions that make it easy to call a page @@ -158,7 +158,7 @@ integrating them.
Now we can add the rest of the API tests, including a test with deliberately bad data. The complete test looks like:
ad_library { Test cases for my first package. Index: openacs-4/packages/acs-core-docs/www/tutorial-debug.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-debug.html,v diff -u -N -r1.43.2.14 -r1.43.2.15 --- openacs-4/packages/acs-core-docs/www/tutorial-debug.html 6 Jan 2017 09:18:42 -0000 1.43.2.14 +++ openacs-4/packages/acs-core-docs/www/tutorial-debug.html 2 Jun 2017 11:12:58 -0000 1.43.2.15 @@ -2,7 +2,7 @@Debugging and Automated Testing 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 @@ -14,7 +14,7 @@ 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* + 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
F to show new log entries in real time (like tail -f)
@@ -23,16 +23,16 @@ ? searches backward
/ searches forward.
-
Make a list of basic tests to make sure it works
Test Num Action Expected Result 001 Browse to the index page while not logged in and + Make a list of basic tests to make sure it works
Test Num Action Expected Result 001 Browse to the index page while not logged in and while one or more notes exist. No edit or delete or add links should appear. 002 Browse to the index page while logged in. An Edit link should appear. Click on it. Fill out the form and click Submit. The text added in the form should be visible on the index page. API-001 Invoke mfp::note::create with a specific word as the title. Proc should return an object id. API-002 Given an object id from API-001, invoke mfp::note::get. Proc should return the specific word in the title. API-003 Given the object id from API-001, invoke mfp::note::delete. Proc should return 0 for success. Other things to test: try to delete someone else's note. Try to delete your own note. Edit your own note. - Search for a note.
It seems to me that a lot of people have been asking for some guidelines on how to write automated tests. I've done several tests by now and have found the process to be extremely easy and useful. It's a joy to work with automated testing once you get the hang of it.
Create the directory that will contain the test script and edit the script file. The directory location and file name are standards which are recognized by the automated testing package:
[$OPENACS_SERVICE_NAME www]$mkdir /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/tcl/test
[$OPENACS_SERVICE_NAME www]$cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/tcl/test
@@ -68,7 +68,7 @@ goes inside-test_code {}
. We want to implement test case API-001, "Given an object id from API-001, invoke mfp::note::get. Proc should return the specific word in the title."set name [ad_generate_random_string] set new_id [mfp::note::add -title $name] - aa_true "Note add succeeded" ([info exists new_id] && $new_id ne "")To test our simple case, we must load the test file into the system (just as with the /tcl file in the basic tutorial, since the file didn't exist when the system started, the system doesn't know about it.) To make this file take effect, go to the APM and choose "Reload changed" for "MyFirstPackage". Since we'll be changing it frequently, select "watch this file" on the next page. This will cause the system to check this file every time any page is requested, which is bad for production systems but convenient for developing. We can also add some aa_register_case flags to make it easier to run the test. The
-procs
flag, which indicates which procs are tested by this test case, makes it easier to find procs in your package that aren't tested at all. The-cats
flag, setting categories, makes it easier to control which tests to run. Thesmoke
test setting means that this is a basic test case that can and should be run any time you are doing any test. (a definition of "smoke test")Once the file is loaded, go to ACS Automated Testing and click on myfirstpackage. You should see your test case. Run it and examine the results.
API testing can only test part of our package - it doesn't test the code in our adp/tcl pairs. For this, we can use TCLwebtest. TCLwebtest must be installed for this test to work. This provides a library of functions that make it easy to call a page through HTTP, examine the results, and drive forms. TCLwebtest's functions overlap slightly with acs-automated-testing; see the example provided for one approach on integrating them.
Now we can add the rest of the API tests, including a test with deliberately bad data. The complete test looks like:
ad_library { + aa_true "Note add succeeded" ([info exists new_id] && $new_id ne "")To test our simple case, we must load the test file into the system (just as with the /tcl file in the basic tutorial, since the file didn't exist when the system started, the system doesn't know about it.) To make this file take effect, go to the APM and choose "Reload changed" for "MyFirstPackage". Since we'll be changing it frequently, select "watch this file" on the next page. This will cause the system to check this file every time any page is requested, which is bad for production systems but convenient for developing. We can also add some aa_register_case flags to make it easier to run the test. The
-procs
flag, which indicates which procs are tested by this test case, makes it easier to find procs in your package that aren't tested at all. The-cats
flag, setting categories, makes it easier to control which tests to run. Thesmoke
test setting means that this is a basic test case that can and should be run any time you are doing any test. (a definition of "smoke test")Once the file is loaded, go to ACS Automated Testing and click on myfirstpackage. You should see your test case. Run it and examine the results.
API testing can only test part of our package - it doesn't test the code in our adp/tcl pairs. For this, we can use TCLwebtest. TCLwebtest must be installed for this test to work. This provides a library of functions that make it easy to call a page through HTTP, examine the results, and drive forms. TCLwebtest's functions overlap slightly with acs-automated-testing; see the example provided for one approach on integrating them.
Now we can add the rest of the API tests, including a test with deliberately bad data. The complete test looks like:
ad_library { Test cases for my first package. } Index: openacs-4/packages/acs-core-docs/www/tutorial-distribute.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-distribute.adp,v diff -u -N -r1.1.2.13 -r1.1.2.14 --- openacs-4/packages/acs-core-docs/www/tutorial-distribute.adp 6 Jan 2017 09:18:42 -0000 1.1.2.13 +++ openacs-4/packages/acs-core-docs/www/tutorial-distribute.adp 2 Jun 2017 11:12:58 -0000 1.1.2.14 @@ -13,7 +13,7 @@ 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 labelDistribution 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.Package development guidelines
Index: openacs-4/packages/acs-core-docs/www/tutorial-etp-templates.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-etp-templates.adp,v diff -u -N -r1.1.2.15 -r1.1.2.16 --- openacs-4/packages/acs-core-docs/www/tutorial-etp-templates.adp 6 Jan 2017 09:18:42 -0000 1.1.2.15 +++ openacs-4/packages/acs-core-docs/www/tutorial-etp-templates.adp 2 Jun 2017 11:12:58 -0000 1.1.2.16 @@ -28,7 +28,7 @@ location, instead of across many files.In this problem set you will familiarise yourself with the templating system in openacs. This will be achieved through customising an existing edit-this-page application template.
Before proceeding, it is strongly advised to read the templating -documentation on your openacs installation +documentation on your OpenACS installation (http://localhost:8000/doc/acs-templating). The documentation lists the special tags available for ADP files.
@@ -86,7 +86,7 @@The template should provide us with the following ETP layout:
-Table 10.1. table +
Table 10.1. table showing ETP layout
@@ -133,8 +133,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.52.2.3 -2016/10/03 09:17:51 gustafn Exp $)+original author.($Id: tutorial-advanced.xml,v 1.52.2.6 +2017/04/22 17:18:48 gustafn Exp $)In this problem set you will familiarise yourself with the templating system in openacs. This will be achieved through customising an existing edit-this-page application template.
- Before proceeding, it is strongly advised to read the templating documentation on your openacs installation (http://localhost:8000/doc/acs-templating). The documentation lists the special tags available for ADP files. + Before proceeding, it is strongly advised to read the templating documentation on your OpenACS installation (http://localhost:8000/doc/acs-templating). The documentation lists the special tags available for ADP files.
Create a subsite called pset3.
A subsite is simply a directory or subdirectory mounted at the end of your domain name. This can be done in one of two places:
http://localhost:8000/admin/site-map
or the subsite admin form on the main site, which is available when you login to your OpenACS installation.
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-pageGo 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.
Work out how to change the ETP application.
Investigate each of the available ETP templates:
Default
News
FAQ
Browse the files for each of the above ETP templates at:
cd ~/openacs/packages/edit-this-page/templatesUse the article template as the basis of our new col2 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.tclThe template should provide us with the following ETP layout:
The "Main Content" pane should contain the editable content that ETP provides.
The "Header" should display the title of the page that you set in ETP.
The "Sidebar" should display the extlinks that you add as a content item in 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 + cp article-index.tcl col2-index.tclThe template should provide us with the following ETP layout:
The "Main Content" pane should contain the editable content that ETP provides.
The "Header" should display the title of the page that you set in ETP.
The "Sidebar" should display the extlinks that you add as a content item in 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.tclUse the function etp::define_application to register your template with ETP
Uncomment the "asc" definition
Set allow_extlinks to true, the rest should be false.
Restart your server for the changes to take effect.
Configure your ETP instance at /lab4/index to use the col2 template.
Create external links to link to other mounted ETP instances.
Check that your external links show up in the sidebar when you view your ETP application using the col2 template.
Index: openacs-4/packages/acs-core-docs/www/tutorial-future-topics.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-future-topics.adp,v diff -u -N -r1.1.2.3 -r1.1.2.4 --- openacs-4/packages/acs-core-docs/www/tutorial-future-topics.adp 19 Nov 2016 09:21:55 -0000 1.1.2.3 +++ openacs-4/packages/acs-core-docs/www/tutorial-future-topics.adp 2 Jun 2017 11:12:58 -0000 1.1.2.4 @@ -13,7 +13,7 @@ TopicsThis 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$)
How to enforce security so that users can't change other users records
How to use the content management tables so that ... what?
How to change the default stylesheets for Form Builder HTML -forms.
How to make your package searchable with OpenFTS/Oracle
How to prepare pagelets for inclusion in other pages
How and when to put procedures in a tcl procedure library
More on ad_form - data validation, other stuff. (plan to draw +forms.
How to make your package searchable with OpenFTS/Oracle
How to prepare pagelets for inclusion in other pages
How and when to put procedures in a Tcl procedure library
More on ad_form - data validation, other stuff. (plan to draw from Jon Griffin's doc)
partialquery in xql
How to use the html/text entry widget to get the "does this look right" confirm page
APM package dependencies
See also the OpenACS Index: openacs-4/packages/acs-core-docs/www/tutorial-future-topics.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-future-topics.html,v diff -u -N -r1.17.2.4 -r1.17.2.5 --- openacs-4/packages/acs-core-docs/www/tutorial-future-topics.html 6 Jan 2017 09:18:42 -0000 1.17.2.4 +++ openacs-4/packages/acs-core-docs/www/tutorial-future-topics.html 2 Jun 2017 11:12:58 -0000 1.17.2.5 @@ -2,6 +2,6 @@
Future Topics Index: openacs-4/packages/acs-core-docs/www/tutorial-newpackage.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-newpackage.adp,v diff -u -N -r1.1.2.13 -r1.1.2.14 --- openacs-4/packages/acs-core-docs/www/tutorial-newpackage.adp 6 Jan 2017 09:18:42 -0000 1.1.2.13 +++ openacs-4/packages/acs-core-docs/www/tutorial-newpackage.adp 2 Jun 2017 11:12:58 -0000 1.1.2.14 @@ -18,8 +18,8 @@ The intended page map
How to enforce security so that users can't change other users records
How to use the content management tables so that ... what?
How to change the default stylesheets for Form - Builder HTML forms.
How to make your package searchable with OpenFTS/Oracle
How to prepare pagelets for inclusion in other pages
How and when to put procedures in a tcl procedure library
More on ad_form - data validation, other stuff. + Builder HTML forms.
How to make your package searchable with OpenFTS/Oracle
How to prepare pagelets for inclusion in other pages
How and when to put procedures in a Tcl procedure library
More on ad_form - data validation, other stuff. (plan to draw from Jon Griffin's doc)
partialquery in xql
How to use the html/text entry widget to get the "does this look right" confirm page
APM package dependencies
See also the OpenACS Programming FAQ
To start developing new code in OpenACS, we build a new package. -A package is a a discrete collection of web pages, tcl code, and +Overview
To start developing new code in OpenACS, we build a new package. +A package is a a discrete collection of web pages, Tcl code, and database tables and procedures. A package with user interface is called an application; a package which provides functions to other packages and has no @@ -36,14 +36,14 @@ displaying a list of text notes.
You will need:
A computer with a working installation of OpenACS. If you don't have this, see Chapter 2, Installation Overview .
Example files, which are included in the standard OpenACS 5.9.0 distribution.
-Figure 9.1. Assumptions in this +
Figure 9.1. Assumptions in this section
@@ -62,7 +62,7 @@
We use the ACS Package Manager (APM) to add, remove, and upgrade packages. It handles package meta-data, such as lists of files that belong in the package. Each package is uniquely identified by a @@ -102,7 +102,7 @@ packages).
In order to see your work in progress, you must create a map between the URL space of incoming requests and the package application instance. You do this by adding the application in the @@ -121,7 +121,7 @@ to be satisfied from the files at
/var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www
.The remainder of the tutorial walks you through each file one at a time as you create the package. You can skip all this, and get a working package, by doing the following:
cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/tutorial Index: openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html,v diff -u -N -r1.43.2.13 -r1.43.2.14 --- openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html 6 Jan 2017 09:18:42 -0000 1.43.2.13 +++ openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html 2 Jun 2017 11:12:58 -0000 1.43.2.14 @@ -2,8 +2,8 @@Creating an Application Package To start developing new code in OpenACS, we build a new package. A package - is a a discrete collection of web pages, tcl code, and database tables and procedures. +
To start developing new code in OpenACS, we build a new package. A package + is a a discrete collection of web pages, Tcl code, and database tables and procedures. A package with user interface is called an application; a package which provides functions to other packages and has no direct interface, a service. A package can be installed, upgraded, and @@ -18,11 +18,11 @@ right now. Code that is temporary hackage is clearly marked.
In this tutorial, we will make an application package for displaying a list of text notes. -
You will need:
A computer with a working installation of +
You will need:
A computer with a working installation of OpenACS. If you don't have this, see Chapter 2, Installation Overview.
Example files, which are included in the standard OpenACS 5.9.0 distribution. -
Figure 9.1. Assumptions in this section
Fully qualified domain name of your server yourserver.test URL of your server http://yourserver.test:8000 Name of development account $OPENACS_SERVICE_NAME New Package key myfirstpackage We use the ACS Package Manager (APM) to add, remove, and +
Figure 9.1. Assumptions in this section
Fully qualified domain name of your server yourserver.test URL of your server http://yourserver.test:8000 Name of development account $OPENACS_SERVICE_NAME New Package key myfirstpackage We use the ACS Package Manager (APM) to add, remove, and upgrade packages. It handles package meta-data, such as lists of files that belong in the package. Each package is uniquely identified by a package key. To start developing a new @@ -55,7 +55,7 @@
/var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage
. This is the "home directory" of our new package, and all files in the package will be within this directory. More on the structure of - packages).In order to see your work in progress, you must create a + packages).
In order to see your work in progress, you must create a map between the URL space of incoming requests and the package application instance. You do this by adding the application in the main site administration). This creates a link between the incoming URL requests and an @@ -66,7 +66,7 @@ in this tutorial.
Browse to
http://yourserver.test:8000/admin/applications/application-add/
.Choose "My First Package" from the list and click OK (the other fields are optional).
By mounting the package, we've caused all requests to
http://yourserver.test:8000/myfirstpackage
- to be satisfied from the files at/var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www
.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 + to be satisfied from the files at/var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www
.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 psql $OPENACS_SERVICE_NAME -f myfirstpackage-create.sql cp note-edit.* note-delete.tcl index.* ../../../../myfirstpackage/www/ mkdir ../../../../myfirstpackage/lib Index: openacs-4/packages/acs-core-docs/www/tutorial-notifications.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-notifications.adp,v diff -u -N -r1.1.2.4 -r1.1.2.5 --- openacs-4/packages/acs-core-docs/www/tutorial-notifications.adp 21 Apr 2017 15:07:52 -0000 1.1.2.4 +++ openacs-4/packages/acs-core-docs/www/tutorial-notifications.adp 2 Jun 2017 11:12:58 -0000 1.1.2.5 @@ -189,7 +189,7 @@ -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 Index: openacs-4/packages/acs-core-docs/www/tutorial-notifications.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-notifications.html,v diff -u -N -r1.17.2.5 -r1.17.2.6 --- openacs-4/packages/acs-core-docs/www/tutorial-notifications.html 21 Apr 2017 15:07:52 -0000 1.17.2.5 +++ openacs-4/packages/acs-core-docs/www/tutorial-notifications.html 2 Jun 2017 11:12:58 -0000 1.17.2.6 @@ -173,7 +173,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 been Index: openacs-4/packages/acs-core-docs/www/tutorial-pages.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-pages.adp,v diff -u -N -r1.1.2.17 -r1.1.2.18 --- openacs-4/packages/acs-core-docs/www/tutorial-pages.adp 21 Apr 2017 15:07:52 -0000 1.1.2.17 +++ openacs-4/packages/acs-core-docs/www/tutorial-pages.adp 2 Jun 2017 11:12:58 -0000 1.1.2.18 @@ -15,23 +15,23 @@ OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.As a workaround for missing content-repository functionality, -copy a provided file into the directory for tcl files:
cp /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/tutorial/note-procs.tcl /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/tcl/
To make this file take effect, go to the APM and choose "Reload +Install some API
As a workaround for missing content-repository functionality, +copy a provided file into the directory for Tcl files:
cp /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/tutorial/note-procs.tcl /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/tcl/
To make this file take effect, go to the APM and choose "Reload changed" for "MyFirstPackage".
Our package will have two visible pages. The first shows a list of all objects; the second shows a single object in view or edit mode, and can also be used to add an object. The index page will display the list, but since we might reuse the list later, we'll put it in a separate file and include it on the index page.
Each user-visible page in your package has, typically, three parts. The
tcl
file holds the procedural logic for the page, including Tcl and database-independent SQL code, and does things like check @@ -40,7 +40,7 @@-postgres.xql
and-oracle.xql
files contains database-specific SQL. The default page in any directory isindex
, so we'll build that -first, starting with the tcl file:+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.
@@ -179,7 +179,7 @@ <property name="focus">note.title</property> <formtemplate id="note"></formtemplate> -And the delete page. Since it has no UI, there is only a tcl +
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
Index: openacs-4/packages/acs-core-docs/www/tutorial-pages.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-pages.html,v diff -u -N -r1.44.2.14 -r1.44.2.15 --- openacs-4/packages/acs-core-docs/www/tutorial-pages.html 21 Apr 2017 15:07:52 -0000 1.44.2.14 +++ openacs-4/packages/acs-core-docs/www/tutorial-pages.html 2 Jun 2017 11:12:58 -0000 1.44.2.15 @@ -2,8 +2,8 @@Creating Web Pages As a workaround for missing content-repository functionality, copy a provided file into the directory for tcl files:
- cp /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/tutorial/note-procs.tcl /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/tcl/
To make this file take effect, go to the APM and choose "Reload changed" for "MyFirstPackage".
Our package will have two visible pages. The first shows a list of all objects; the second shows a single object in view or edit mode, and can also be used to add an object. The index page will display the list, but since we might reuse the list later, we'll put it in a separate file and include it on the index page.
As a workaround for missing content-repository functionality, copy a provided file into the directory for Tcl files:
+ cp /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/tutorial/note-procs.tcl /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/tcl/
To make this file take effect, go to the APM and choose "Reload changed" for "MyFirstPackage".
Our package will have two visible pages. The first shows a list of all objects; the second shows a single object in view or edit mode, and can also be used to add an object. The index page will display the list, but since we might reuse the list later, we'll put it in a separate file and include it on the index page.
-Each user-visible page in your package has, typically, three parts. The
tcl
file holds the procedural logic for the page, including Tcl and database-independent SQL code, and does things like @@ -13,7 +13,7 @@ and-oracle.xql
files contains database-specific SQL. The default page in any directory isindex
, 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 { 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. @@ -130,7 +130,7 @@ <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 { + 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-second-database.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-second-database.adp,v diff -u -N -r1.1.2.4 -r1.1.2.5 --- openacs-4/packages/acs-core-docs/www/tutorial-second-database.adp 21 Apr 2017 15:07:52 -0000 1.1.2.4 +++ openacs-4/packages/acs-core-docs/www/tutorial-second-database.adp 2 Jun 2017 11:12:58 -0000 1.1.2.5 @@ -73,7 +73,7 @@To use the legacy database, use the
-dbn
flag for any of thedb_
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 +"bar". List "bar" for all records with this Tcl file:db_foreach -dbn legacy get_bar_query { select bar from foo Index: openacs-4/packages/acs-core-docs/www/tutorial-second-database.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-second-database.html,v diff -u -N -r1.10.2.3 -r1.10.2.4 --- openacs-4/packages/acs-core-docs/www/tutorial-second-database.html 21 Apr 2017 15:07:52 -0000 1.10.2.3 +++ openacs-4/packages/acs-core-docs/www/tutorial-second-database.html 2 Jun 2017 11:12:58 -0000 1.10.2.4 @@ -61,7 +61,7 @@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 { + this Tcl file:db_foreach -dbn legacy get_bar_query { select bar from foo limit 10 } { Index: openacs-4/packages/acs-core-docs/www/unix-installation.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/unix-installation.adp,v diff -u -N -r1.1.2.7 -r1.1.2.8 --- openacs-4/packages/acs-core-docs/www/unix-installation.adp 6 Jan 2017 09:18:42 -0000 1.1.2.7 +++ openacs-4/packages/acs-core-docs/www/unix-installation.adp 2 Jun 2017 11:12:58 -0000 1.1.2.8 @@ -27,7 +27,7 @@ is a native replacement for wget.Note: Instructions for installing tDOM and threaded tcl are +
Note: Instructions for installing tDOM and threaded Tcl are included with the AOLserver4 installation instructions, if these are not yet installed.
The following programs may be useful or required for some configurations. They are included in most distributions:
Index: openacs-4/packages/acs-core-docs/www/unix-installation.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/unix-installation.html,v diff -u -N -r1.33.2.13 -r1.33.2.14 --- openacs-4/packages/acs-core-docs/www/unix-installation.html 6 Jan 2017 09:18:42 -0000 1.33.2.13 +++ openacs-4/packages/acs-core-docs/www/unix-installation.html 2 Jun 2017 11:12:58 -0000 1.33.2.14 @@ -6,6 +6,6 @@ reference. More up-to-date documentation is in the install sections in the Wiki.@@ -38,7 +38,7 @@ 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.15.14.1 2015/09/28 07:54:30 +of the Red Hat 8.0 Install for OpenACS.($Id: os.xml,v 1.15.14.2 2017/04/22 17:18:48 gustafn Exp $)You will need a computer running a unix-like system with the following software installed:
tdom
tcl --if you plan to use the OpenACS installation script
gmake and the compile and build environment.
BSD Note
BSD users: in most places in these instructions, gmake will work better than make. (more - information on FreeBSD installation). Also, fetch is a native replacement for wget.
Note: Instructions for installing tDOM and threaded tcl are included with the AOLserver4 installation instructions, + information on FreeBSD installation). Also, fetch is a native replacement for wget.
Note: Instructions for installing tDOM and threaded Tcl are included with the AOLserver4 installation instructions, if these are not yet installed.
The following programs may be useful or required for some configurations. They are included in most distributions:
emacs
cvs (and initialize it)
ImageMagick (used by some packages for server side image manipulation)
Aspell (more information on spell-checking)
DocBook and supporting software (and install emacs keybindings for DocBook SGML)
daemontools (install from source)
a Mail Transport Agent, such as exim or sendmail (or install qmail from source)
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$)Index: openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.adp,v diff -u -N -r1.1.2.15 -r1.1.2.16 --- openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.adp 6 Jan 2017 09:18:42 -0000 1.1.2.15 +++ openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.adp 2 Jun 2017 11:12:58 -0000 1.1.2.16 @@ -9,7 +9,7 @@ rightLink="upgrade-4.6.3-to-5" rightLabel="Next">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 Index: openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.html,v diff -u -N -r1.27.2.13 -r1.27.2.14 --- openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.html 6 Jan 2017 09:18:42 -0000 1.27.2.13 +++ openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.html 2 Jun 2017 11:12:58 -0000 1.27.2.14 @@ -1,5 +1,5 @@ -
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 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
A computer with OpenACS 4.5.
OpenACS 4.6 tarball or CVS checkout/export.
Required for Full Text Search on PostgreSQL: OpenFTS 0.3.2
Make a Backup. Back up the database and file system (see the section called “Manual backup and recovery”).
OPTIONAL: Upgrade OpenFTS. the section called “Upgrading OpenFTS from 0.2 to 0.3.2”
Stop the server
[root root]#svc -d /service/$OPENACS_SERVICE_NAME
Upgrade the file system. the section called “Upgrading the OpenACS files”
Index: openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.adp,v diff -u -N -r1.1.2.14 -r1.1.2.15 --- openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.adp 6 Jan 2017 09:18:42 -0000 1.1.2.14 +++ openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.adp 2 Jun 2017 11:12:58 -0000 1.1.2.15 @@ -12,7 +12,7 @@ Upgrading the OpenACS files
OpenACS is distributed in many different ways:
as a collection of files
as one big tarball
via CVS
via automatic download from within the APM (package manager)
Upgrades work by first changing the file system (via any of the @@ -27,7 +27,7 @@
Upgrading files for a site which is not in a CVS @@ -56,7 +56,7 @@ 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.
- @@ -107,7 +107,7 @@ [$OPENACS_SERVICE_NAME aolserver]$
cd /var/lib/aolserver/openacs-5-1
-[$OPENACS_SERVICE_NAME aolserver]$cvs up -Pd ChangeLog *.txt bin etc tcl www packages/*
+[$OPENACS_SERVICE_NAME aolserver]$cvs up -Pd ChangeLog *.txt bin etc Tcl www packages/*
@@ -196,7 +196,7 @@
If you are upgrading a production OpenACS site which is on a private CVS tree, this process lets you do the upgrade without risking extended downtime or an unusable site:
Declare a freeze on new cvs updates - ie, you cannot run cvs Index: openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.html,v diff -u -N -r1.27.2.14 -r1.27.2.15 --- openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.html 6 Jan 2017 09:18:42 -0000 1.27.2.14 +++ openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.html 2 Jun 2017 11:12:58 -0000 1.27.2.15 @@ -1,5 +1,5 @@ -
Upgrading the OpenACS files OpenACS is distributed in many different ways: +
Upgrading the OpenACS files OpenACS is distributed in many different ways:
as a collection of files
as one big tarball
via CVS
via automatic download from within the APM (package manager)
Upgrades work by first changing the file system (via any @@ -11,7 +11,7 @@ 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” -
Upgrading files for a site which is not in a CVS repository. Unpack the tarball into a new directory and copy its +
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
@@ -32,7 +32,7 @@ with the latest OpenACS 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.
Step 0: Set up a working CVS checkout. To get your OpenACS code into your local CVS + 1(b) should be labelled Step 1.
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 @@ -65,7 +65,7 @@
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
-[$OPENACS_SERVICE_NAME aolserver]$cvs up -Pd ChangeLog *.txt bin etc tcl www packages/*
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
+[$OPENACS_SERVICE_NAME aolserver]$cvs up -Pd ChangeLog *.txt bin etc Tcl www packages/*
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
[$OPENACS_SERVICE_NAME aolserver]$cd /var/lib/aolserver/packages/openacs-5-1
[$OPENACS_SERVICE_NAME openacs-5-1]$cvs up -Pd packagename
In the next section, the import must be tailored to just this package.
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
@@ -97,7 +97,7 @@
[$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]$If you are upgrading a production OpenACS site which is on a private CVS tree, this process lets you do the upgrade without risking extended downtime or an unusable site:
Declare a freeze on new cvs updates - ie, you cannot run cvs update +[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$
If you are upgrading a production OpenACS site which is on a private CVS tree, this process lets you do the upgrade without risking extended downtime or an unusable site:
Declare a freeze on new cvs updates - ie, you cannot run cvs update on the production site
Make a manual backup of the production site in addition to the automated backups
Import the new code (for example, OpenACS 5.0.4, openacs-5-0-compat versions of Index: openacs-4/packages/acs-core-docs/www/upgrade-overview.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-overview.adp,v diff -u -N -r1.1.2.14 -r1.1.2.15 --- openacs-4/packages/acs-core-docs/www/upgrade-overview.adp 6 Jan 2017 09:18:42 -0000 1.1.2.14 +++ openacs-4/packages/acs-core-docs/www/upgrade-overview.adp 2 Jun 2017 11:12:58 -0000 1.1.2.15 @@ -26,11 +26,11 @@ upgrade scripts, and prompt you to restart the server. After restarting the server again, the upgrade is complete.
It's always a good idea to precede an upgrade attempt with a snapshot backup.
-Table 5.1. Assumptions in this +
Table 5.1. Assumptions in this section
Index: openacs-4/packages/acs-core-docs/www/upgrade-overview.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-overview.html,v diff -u -N -r1.27.2.13 -r1.27.2.14 --- openacs-4/packages/acs-core-docs/www/upgrade-overview.html 6 Jan 2017 09:18:42 -0000 1.27.2.13 +++ openacs-4/packages/acs-core-docs/www/upgrade-overview.html 2 Jun 2017 11:12:58 -0000 1.27.2.14 @@ -4,4 +4,4 @@ or better, you should always be able to upgrade all of your core packages automatically. If you haven't changed anything, no manual intervention should be required. If you are running - OpenACS prior to 4.5, upgrading will require manual effort. If all of these conditions are true:
Your OpenACS Core is 5.0.0 or later
You do not keep your OpenACS site in a local CVS repository
You do not have any custom code
then you can upgrade automatically using the automated installer in the OpenACS Package Manager (APM), and you can probably skip the rest of this chapter. To upgrade directly from the OpenACS repository using the APM:
Browse to the Installer.
Click install or upgrade under "Install from OpenACS Repository" and select the packages to install or upgrade.
The APM will download the requested packages from OpenACS.org, install the files on your hard drive, run any appropriate database upgrade scripts, and prompt you to restart the server. After restarting the server again, the upgrade is complete.
It's always a good idea to precede an upgrade attempt with a snapshot backup.
Table 5.1. Assumptions in this section
name of OpenACS user $OPENACS_SERVICE_NAME OpenACS server name $OPENACS_SERVICE_NAME Root of OpenACS file tree /var/lib/aolserver/$OPENACS_SERVICE_NAME Database backup directory /var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup
+ OpenACS prior to 4.5, upgrading will require manual effort.If all of these conditions are true:
Your OpenACS Core is 5.0.0 or later
You do not keep your OpenACS site in a local CVS repository
You do not have any custom code
then you can upgrade automatically using the automated installer in the OpenACS Package Manager (APM), and you can probably skip the rest of this chapter. To upgrade directly from the OpenACS repository using the APM:
Browse to the Installer.
Click install or upgrade under "Install from OpenACS Repository" and select the packages to install or upgrade.
The APM will download the requested packages from OpenACS.org, install the files on your hard drive, run any appropriate database upgrade scripts, and prompt you to restart the server. After restarting the server again, the upgrade is complete.
It's always a good idea to precede an upgrade attempt with a snapshot backup.
Table 5.1. Assumptions in this section
name of OpenACS user $OPENACS_SERVICE_NAME OpenACS server name $OPENACS_SERVICE_NAME Root of OpenACS file tree /var/lib/aolserver/$OPENACS_SERVICE_NAME Database backup directory /var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup
Index: openacs-4/packages/acs-core-docs/www/upgrade-supporting.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-supporting.adp,v diff -u -N -r1.1.2.4 -r1.1.2.5 --- openacs-4/packages/acs-core-docs/www/upgrade-supporting.adp 19 Nov 2016 09:21:55 -0000 1.1.2.4 +++ openacs-4/packages/acs-core-docs/www/upgrade-supporting.adp 2 Jun 2017 11:12:58 -0000 1.1.2.5 @@ -23,7 +23,7 @@- -
Build and install the new OpenFTS driver and supporting tcl +
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/ Index: openacs-4/packages/acs-core-docs/www/upgrade-supporting.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-supporting.html,v diff -u -N -r1.20.2.4 -r1.20.2.5 --- openacs-4/packages/acs-core-docs/www/upgrade-supporting.html 6 Jan 2017 09:18:42 -0000 1.20.2.4 +++ openacs-4/packages/acs-core-docs/www/upgrade-supporting.html 2 Jun 2017 11:12:58 -0000 1.20.2.5 @@ -1,6 +1,6 @@Upgrading Platform components OpenACS Full Text Search requires several pieces: the OpenFTS code, some database functions, and the OpenFTS Engine. This section describes how to upgrade OpenFTS from 0.2 to 0.3.2 and upgrade the search engine on an OpenACS site at the same time.
Uninstall the old OpenFTS Engine from the $OPENACS_SERVICE_NAME database.
Browse to
http://yourserver/openfts
. -Click
Administration
.Click
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/ +Click
Administration
.Click
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/ 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/ Index: openacs-4/packages/acs-core-docs/www/variables.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/variables.adp,v diff -u -N -r1.1.2.15 -r1.1.2.16 --- openacs-4/packages/acs-core-docs/www/variables.adp 6 Jan 2017 09:18:42 -0000 1.1.2.15 +++ openacs-4/packages/acs-core-docs/www/variables.adp 2 Jun 2017 11:12:58 -0000 1.1.2.16 @@ -19,7 +19,7 @@ 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 +
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/variables.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/variables.html,v diff -u -N -r1.30.2.13 -r1.30.2.14 --- openacs-4/packages/acs-core-docs/www/variables.html 6 Jan 2017 09:18:42 -0000 1.30.2.13 +++ openacs-4/packages/acs-core-docs/www/variables.html 2 Jun 2017 11:12:58 -0000 1.30.2.14 @@ -4,7 +4,7 @@ by 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 } { + 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 } { select to_char(mydate, 'YYYY-MM-DD HH24:MI:SS') as mydate_ansi, ... ... Index: openacs-4/packages/acs-core-docs/www/xml/developers-guide/i18n.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/developers-guide/i18n.xml,v diff -u -N -r1.27.2.7 -r1.27.2.8 --- openacs-4/packages/acs-core-docs/www/xml/developers-guide/i18n.xml 22 Apr 2017 17:18:48 -0000 1.27.2.7 +++ openacs-4/packages/acs-core-docs/www/xml/developers-guide/i18n.xml 2 Jun 2017 11:12:58 -0000 1.27.2.8 @@ -165,7 +165,7 @@The advantage of the short syntax is that it's short. It's as simple as inserting the value of a variable. Example: - @@ -402,11 +402,11 @@#forum.title# +# forum.title #|
class_instance_pages_csv -#dotlrn.class_page_home_title#,Simple 2-Column;#dotlrn.class_page_calendar_title#,Simple 1-Column;#dotlrn.class_page_file_storage_title#,Simple 1-Column +# ,Simple 2-Column;dotlrn.class_page_home_title ## ,Simple 1-Column;dotlrn.class_page_calendar_title ## ,Simple 1-Columndotlrn.class_page_file_storage_title #@@ -437,7 +437,7 @@
departments_pretty_name -#departments_pretty_name# +# departments_pretty_name #Index: openacs-4/packages/acs-core-docs/www/xml/engineering-standards/cvs.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/engineering-standards/cvs.xml,v diff -u -N -r1.6.14.4 -r1.6.14.5 --- openacs-4/packages/acs-core-docs/www/xml/engineering-standards/cvs.xml 22 Apr 2017 17:18:48 -0000 1.6.14.4 +++ openacs-4/packages/acs-core-docs/www/xml/engineering-standards/cvs.xml 2 Jun 2017 11:12:58 -0000 1.6.14.5 @@ -316,7 +316,7 @@
parameter::get -parameter departments_pretty_name -#departments_pretty_name# +# departments_pretty_name #- Confirm via the @@ -766,51 +766,34 @@+ Confirm via the OpenACS CVS browser that your changes are where you intended them to be.The - - OpenACS cvs web - and -- Jeff's cvs - browser - - are useful tools in understanding what is - happening with the code. ++ OpenACS cvs web browser + is a useful tools in understanding what is + happening with the code.- - There is a mailing list of cvs changes at - - willfork.com - + There is general information about CVS at ++ nongnu.org + .- There is an RSS feed of cvs changes at - -- RSS feed - -- cvs manual +cvs manual - adding files/dirs with cvs +Open Source Development with CVS, 3rd Edition - - -file locking etc. with cvs -- Piskorski's cvs refs