Index: openacs-4/packages/acs-core-docs/www/apm-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/apm-design.html,v diff -u -r1.21 -r1.21.2.1 --- openacs-4/packages/acs-core-docs/www/apm-design.html 11 Nov 2003 12:54:56 -0000 1.21 +++ openacs-4/packages/acs-core-docs/www/apm-design.html 14 Nov 2003 09:43:44 -0000 1.21.2.1 @@ -88,7 +88,7 @@ packages for other ACS users to download and install.
For a simple illustration of the difference between ACS without APM (pre-3.3) and ACS with APM (3.3 and beyond), consider a hypothetical ACS installation that uses only two of the thirty-odd modules available circa ACS -3.2 (say, bboard and e-commerce):
APM itself is part of a package, the OpenACS Kernel, an OpenACS +3.2 (say, bboard and e-commerce):
APM itself is part of a package, the OpenACS Kernel, an OpenACS service that is the only mandatory component of an OpenACS installation.
The OpenACS is a platform for web-based application software, and any software platform has the potential to develop problems like those described above. Fortunately, there are many precedents for systematic solutions, Index: openacs-4/packages/acs-core-docs/www/backup-recovery.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/backup-recovery.html,v diff -u -r1.15 -r1.15.2.1 --- openacs-4/packages/acs-core-docs/www/backup-recovery.html 12 Nov 2003 09:33:54 -0000 1.15 +++ openacs-4/packages/acs-core-docs/www/backup-recovery.html 14 Nov 2003 09:43:45 -0000 1.15.2.1 @@ -184,7 +184,7 @@ single nightly backup file which is then collected into a bigger backup file that includes the other parts of the service. The latter technique is more generally recommended. To make a new file every - night, edit the crontab file for service0:
[service0@yourserver service0]$ export EDITOR=emacs;crontab -e
Add this line to the file. 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.
0 1 * * * /usr/local/pgsql/bin/pg_dump -f /var/lib/aolserver/service0/database-backup/service0_`date +\%Y-\%m-\%d`.dmp service0
If you plan to back up the whole /var/lib/aolserver/service0 directory, then it would be redundant to keep a history of database backups. In that case, set up the cron job to overwrite the previous backup each time:
0 1 * * * /usr/local/pgsql/bin/pg_dump -f /var/lib/aolserver/service0/database-backup/service0_nightly.dmp service0
On a test service, make sure that your backup-recovery process work. After backing up the database and file system, delete the service as detailed below and then recover it.
Earlier strategies, included here because this section + night, edit the crontab file for service0:
[service0@yourserver service0]$ export EDITOR=emacs;crontab -e
Add this line to the file. 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.
0 1 * * * /usr/local/pgsql/bin/pg_dump -f /var/lib/aolserver/service0/database-backup/service0_`date +\%Y-\%m-\%d`.dmp service0
If you plan to back up the whole /var/lib/aolserver/service0 directory, then it would be redundant to keep a history of database backups. In that case, set up the cron job to overwrite the previous backup each time:
0 1 * * * /usr/local/pgsql/bin/pg_dump -f /var/lib/aolserver/service0/database-backup/service0_nightly.dmp service0
On a test service, make sure that your backup-recovery process work. After backing up the database and file system, delete the service as detailed below and then recover it.
Earlier strategies, included here because this section hasn't been fully updated yet.
Edit the backup script to save the backup file in /var/lib/aolserver/service0/database-backup. While you're working with Oracle, you should configure it to do Index: openacs-4/packages/acs-core-docs/www/cvs-service-import.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/Attic/cvs-service-import.html,v diff -u -r1.13 -r1.13.2.1 --- openacs-4/packages/acs-core-docs/www/cvs-service-import.html 11 Nov 2003 12:54:57 -0000 1.13 +++ openacs-4/packages/acs-core-docs/www/cvs-service-import.html 14 Nov 2003 09:43:45 -0000 1.13.2.1 @@ -1,4 +1,4 @@ -
These steps take an existing OpenACS directory and add +
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@yourserver root]# mkdir /cvsroot/service0 [root@yourserver root]# chown service0.web /cvsroot/service0 Index: openacs-4/packages/acs-core-docs/www/docbook-primer.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/docbook-primer.html,v diff -u -r1.23 -r1.23.2.1 --- openacs-4/packages/acs-core-docs/www/docbook-primer.html 11 Nov 2003 12:54:57 -0000 1.23 +++ openacs-4/packages/acs-core-docs/www/docbook-primer.html 14 Nov 2003 09:43:45 -0000 1.23.2.1 @@ -31,7 +31,7 @@ In order to separate content and presentation, all OpenACS documentation will be marked up to conform to the DocBook XML DTD - + This enables us to publish in a variety of formats and relieves each contributor of the burden of presentation, freeing him to focus on content and sharing knowledge. @@ -52,7 +52,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 @@ -98,7 +98,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 @@ -122,20 +122,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.
@@ -150,7 +150,7 @@ </sect1>
- + Inside this container your document will be split up into <sect2>'s, each with the same requirements - id and xreflabel @@ -159,7 +159,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 will use the tag <computeroutput>. @@ -169,12 +169,12 @@ <programlisting> is used. Just wrap your code block in it; mono-spacing, indents and all that stuff is taken care of automatically.
- + Linking falls into two different categories: inside the book you're making and outside:
- 1. Inside linking, cross-referencing other parts of your book
By having unique id's you can cross-reference any part of your book with a simple tag, regardless of where that part is. -
Check out how I link to a subsection of the Developer's Guide:
+Check out how I link to a subsection of the Developer's Guide:
Put this in your XML: @@ -212,7 +212,7 @@ packages-looks, the parser will try its best to explain where the link takes you.- 2. Linking outside the documentation
- + If you're hyper-linking out of the documentation, it works almost the same way as HTML - the tag is just a little different @@ -233,7 +233,7 @@ do it, so if you want to start converting your documents right away, start out with the ones without graphics ;)
- + To insert a graphic we use the elements <mediaobject>, <imageobject>, @@ -259,7 +259,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:
- 1. How to make an <ul>
Making an unordered list is pretty much like doing the same thing in HTML - if you close your <li>, that is. The only differences are that each list item has to be wrapped in something more, such as @@ -304,7 +304,7 @@ </variablelist>
- + DocBook supports several types of tables, but in most cases, the <informaltable> is enough: @@ -341,7 +341,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/ext-auth-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html,v diff -u -r1.11 -r1.11.2.1 --- openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html 11 Nov 2003 12:54:57 -0000 1.11 +++ openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html 14 Nov 2003 09:43:45 -0000 1.11.2.1 @@ -1,4 +1,4 @@ -
External Authentication Requirements People have plenty of usernames and passwords already, we +
External Authentication Requirements 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 @@ -44,7 +44,7 @@ only one implementation of the authentication API, namly the one included in OpenACS Core.
Authentication Driver API: The service contract which authentication drivers implement.
Authentication:
-
Account Management (NO PICTURE YET)
Batch Synchronization (NO PICTURE YET)
Feature Status Description 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 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 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 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/i18n.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n.html,v diff -u -r1.13 -r1.13.2.1 --- openacs-4/packages/acs-core-docs/www/i18n.html 11 Nov 2003 12:54:57 -0000 1.13 +++ openacs-4/packages/acs-core-docs/www/i18n.html 14 Nov 2003 09:43:45 -0000 1.13.2.1 @@ -38,7 +38,7 @@ which are static and mostly text, it may be easier to create a new ADP page for each language. In this case, the pages are distinguished by a file naming convention. -
If the request processor finds a file named filename.locale.adp, where locale matches the user's locale, it will process that file instead of filename.adp. For example, for a user with locale tl_PH, the file index.tl_PH.adp, if found, will be used instead of index.adp. The locale-specific file should thus contain text in the language appropriate for that locale. The code in the page, however, should still be in English. Message keys are still processed.
+
If the request processor finds a file named filename.locale.adp, where locale matches the user's locale, it will process that file instead of filename.adp. For example, for a user with locale tl_PH, the file index.tl_PH.adp, if found, will be used instead of index.adp. The locale-specific file should thus contain text in the language appropriate for that locale. The code in the page, however, should still be in English. Message keys are still processed.
Internationalizing templates is about replacing human readable text in a certain language with internal message keys, which can then be dynamically replaced with real human language in @@ -101,9 +101,9 @@
Here are a couple of examples. Say we have the following two parameters, taken directly from the dotlrn package. -
Table�10.1.�
Parameter Name Parameter Value 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 departments_pretty_name #departments_pretty_name# +
Table�10.1.�
Parameter Name Parameter Value 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 departments_pretty_name #departments_pretty_name# Then, depending on how we retrieve the value, here's what we get: -
Table�10.2.�
Command used to retrieve Value Retrieved Value parameter::get -localize -parameter class_instances_pages_csv Kurs Startseite,Simple 2-Column;Kalender,Simple 1-Column;Dateien,Simple 1-Column parameter::get -localize -parameter departments_pretty_name Abteilung parameter::get -parameter departments_pretty_name #departments_pretty_name# +
Table�10.2.�
Command used to retrieve Value Retrieved Value parameter::get -localize -parameter class_instances_pages_csv Kurs Startseite,Simple 2-Column;Kalender,Simple 1-Column;Dateien,Simple 1-Column parameter::get -localize -parameter departments_pretty_name Abteilung parameter::get -parameter departments_pretty_name #departments_pretty_name# The value in the rightmost column in the table above is the value returned by an invocation of parameter::get. Note that for localization to happen you must use the -localize flag. @@ -151,7 +151,7 @@ Use the *_pretty version in your ADP page.
To internationalize numbers, use lc_numeric $value, which formats the number using the appropriate decimal point and thousand separator for the locale. -
When coding forms, remember to use message keys for each piece of text that is user-visible, including form option labels and button labels.
When coding forms, remember to use message keys for each piece of text that is user-visible, including form option labels and button labels.
Acs-lang includes tools to automate some internationalization. From /acs-admin/apm/, select a package and then click on @@ -240,9 +240,9 @@ with the appropriate notation for the type of file, and store the text in the message catalog. You need to run the process twice, once for ADP files, and once for Tcl files. -
Find datetime in .xql files. Use command line tools to find suspect SQL code:
grep -r "to_char.*H" * +
Find datetime in .xql files. Use command line tools to find suspect SQL code:
grep -r "to_char.*H" * grep -r "to_date.*H" *In SQL statements, replace the format string with the ANSI standard format, YYYY-MM-DD HH24:MI:SS and change the field name to *_ansi so that it cannot be confused with previous, improperly formatting fields. For example,
to_char(timestamp,'MM/DD/YYYY HH:MI:SS') as foo_date_prettybecomes
to_char(timestamp,'YYYY-MM-DD HH24:MI:SS') as foo_date_ansiIn TCL files where the date fields are used, convert the datetime from local server timezone, which is how it's stored in the database, to the user's timezone for display. Do this with the localizing function lc_time_system_to_conn:
set foo_date_ansi [lc_time_system_to_conn $foo_date_ansi]When a datetime will be written to the database, first convert it from the user's local time to the server's timezone with lc_time_conn_to_system. Index: openacs-4/packages/acs-core-docs/www/index.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/index.html,v diff -u -r1.22 -r1.22.2.1 --- openacs-4/packages/acs-core-docs/www/index.html 11 Nov 2003 12:54:57 -0000 1.22 +++ openacs-4/packages/acs-core-docs/www/index.html 14 Nov 2003 09:43:45 -0000 1.22.2.1 @@ -1 +1 @@ -
OpenACS Core Documentation Table of Contents
- I. OpenACS For Everyone
- II. Administrator's Guide
- III. For OpenACS Package Developers
- 7. Development Tutorial
- 8. Development Reference
- OpenACS 5.0.0b1 Packages
- OpenACS Data Models and the Object System
- The Request Processor
- The OpenACS Database Access API
- Using Templates in OpenACS 5.0.0b1
- Groups, Context, Permissions
- Writing OpenACS 5.0.0b1 Application Pages
- Parties in OpenACS 5.0.0b1
- OpenACS 4.x Permissions Tediously Explained
- Object Identity
- Programming with AOLserver
- 9. Engineering Standards
- D. Using CVS with an OpenACS Site
- E. How to package and release OpenACS
- IV. For OpenACS Platform Developers
- Platform Development
- 10. Kernel Documentation
- Overview
- OpenACS 4 Object Model Requirements
- OpenACS 4 Object Model Design
- OpenACS 4 Permissions Requirements
- OpenACS 4 Permissions Design
- OpenACS 4 Groups Requirements
- OpenACS 4 Groups Design
- OpenACS 4 Subsites Requirements
- OpenACS 4 Subsites Design Document
- OpenACS 5.0.0b1 Package Manager Requirements
- OpenACS 5.0.0b1 Package Manager Design
- Database Access API
- OpenACS Internationalization Requirements
- Internationalization
- OpenACS 4 Security Requirements
- OpenACS 4 Security Design
- OpenACS 4 Security Notes
- OpenACS 4 Request Processor Requirements
- OpenACS 4 Request Processor Design
- Documenting Tcl Files: Page Contracts and Libraries
- Bootstrapping OpenACS
- External Authentication Requirements
List of Figures
View comments on this page at openacs.org +OpenACS Core Documentation Table of Contents
- I. OpenACS For Everyone
- II. Administrator's Guide
- III. For OpenACS Package Developers
- 7. Development Tutorial
- 8. Development Reference
- OpenACS 5.0.0b1 Packages
- OpenACS Data Models and the Object System
- The Request Processor
- The OpenACS Database Access API
- Using Templates in OpenACS 5.0.0b1
- Groups, Context, Permissions
- Writing OpenACS 5.0.0b1 Application Pages
- Parties in OpenACS 5.0.0b1
- OpenACS 4.x Permissions Tediously Explained
- Object Identity
- Programming with AOLserver
- 9. Engineering Standards
- D. Using CVS with an OpenACS Site
- E. How to package and release OpenACS
- IV. For OpenACS Platform Developers
- Platform Development
- 10. Kernel Documentation
- Overview
- OpenACS 4 Object Model Requirements
- OpenACS 4 Object Model Design
- OpenACS 4 Permissions Requirements
- OpenACS 4 Permissions Design
- OpenACS 4 Groups Requirements
- OpenACS 4 Groups Design
- OpenACS 4 Subsites Requirements
- OpenACS 4 Subsites Design Document
- OpenACS 5.0.0b1 Package Manager Requirements
- OpenACS 5.0.0b1 Package Manager Design
- Database Access API
- OpenACS Internationalization Requirements
- Internationalization
- OpenACS 4 Security Requirements
- OpenACS 4 Security Design
- OpenACS 4 Security Notes
- OpenACS 4 Request Processor Requirements
- OpenACS 4 Request Processor Design
- Documenting Tcl Files: Page Contracts and Libraries
- Bootstrapping OpenACS
- External Authentication Requirements
List of Figures
View comments on this page at openacs.org Index: openacs-4/packages/acs-core-docs/www/install-cvs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-cvs.html,v diff -u -r1.12 -r1.12.2.1 --- openacs-4/packages/acs-core-docs/www/install-cvs.html 11 Nov 2003 10:28:27 -0000 1.12 +++ openacs-4/packages/acs-core-docs/www/install-cvs.html 14 Nov 2003 09:43:45 -0000 1.12.2.1 @@ -1,4 +1,4 @@ -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@yourserver tmp]# mkdir /cvsroot [root@yourserver tmp]# cvs -d /cvsroot init [root@yourserver tmp]# Index: openacs-4/packages/acs-core-docs/www/install-daemontools.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-daemontools.html,v diff -u -r1.13 -r1.13.2.1 --- openacs-4/packages/acs-core-docs/www/install-daemontools.html 11 Nov 2003 12:54:57 -0000 1.13 +++ openacs-4/packages/acs-core-docs/www/install-daemontools.html 14 Nov 2003 09:43:45 -0000 1.13.2.1 @@ -3,7 +3,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@yourserver root]# mkdir -p /package + services.
Install Daemontools
download daemontools and install it.
Red Hat 8
[root@yourserver root]# mkdir -p /package [root@yourserver root]# chmod 1755 /package/ [root@yourserver root]# cd /package/ [root@yourserver package]# tar xzf /tmp/daemontools-0.76.tar.gz Index: openacs-4/packages/acs-core-docs/www/install-full-text-search.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/Attic/install-full-text-search.html,v diff -u -r1.11 -r1.11.2.1 --- openacs-4/packages/acs-core-docs/www/install-full-text-search.html 11 Nov 2003 10:28:27 -0000 1.11 +++ openacs-4/packages/acs-core-docs/www/install-full-text-search.html 14 Nov 2003 09:43:45 -0000 1.11.2.1 @@ -1,4 +1,4 @@ -Install Full Text Search If you want full text search, and you are running PostGreSQL, install this module to support FTS. Do this step after you have installed both PostGreSQL and +
Install Full Text Search 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@yourserver root]# su - postgres @@ -73,7 +73,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.)
[service0@yourserver service0]$ /usr/local/pgsql/bin/psql service0 -f /usr/local/src/postgresql-7.2.4/contrib/tsearch/tsearch.sql Index: openacs-4/packages/acs-core-docs/www/install-qmail.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-qmail.html,v diff -u -r1.13 -r1.13.2.1 --- openacs-4/packages/acs-core-docs/www/install-qmail.html 11 Nov 2003 12:54:57 -0000 1.13 +++ openacs-4/packages/acs-core-docs/www/install-qmail.html 14 Nov 2003 09:43:45 -0000 1.13.2.1 @@ -29,7 +29,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@yourserver 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 @@ -43,7 +43,7 @@ send outgoing mail.
[root@yourserver ucspi-tcp-0.88]# cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/tcp.smtp.txt /etc/tcp.smtp [root@yourserver ucspi-tcp-0.88]# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtpcp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/tcp.smtp.txt /etc/tcp.smtp -tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
Download 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@yourserver root]# cd /usr/local/src [root@yourserver src]# wget http://www.qmail.org/netqmail-1.04.tar.gz [root@yourserver src]# tar xzf netqmail-1.04.tar.gz @@ -102,7 +102,7 @@ cd netqmail-1.04 ./collate.sh cd netqmail-1.04 -make setup checkReplace sendmail with qmail's wrapper.
[root@yourserver qmail-1.03]# rm -f /usr/bin/sendmail /usr/sbin/sendmail +make setup checkReplace sendmail with qmail's wrapper.
[root@yourserver qmail-1.03]# rm -f /usr/bin/sendmail /usr/sbin/sendmail [root@yourserver qmail-1.03]# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail [root@yourserver qmail-1.03]#rm -f /usr/bin/sendmail /usr/sbin/sendmail @@ -124,7 +124,7 @@
cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root chmod 644 ~alias/.qmail* /var/qmail/bin/maildirmake ~alias/Maildir/ -chown -R alias.nofiles /var/qmail/alias/Maildir
Configure qmail to use the Maildir delivery format +chown -R alias.nofiles /var/qmail/alias/Maildir
Configure qmail to use the Maildir delivery format (instead of mbox), and install a version of the qmail startup script modified to use Maildir.
[root@yourserver alias]# echo "./Maildir" > /var/qmail/bin/.qmail [root@yourserver alias]# cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/qmail.rc.txt /var/qmail/rc [root@yourserver alias]# chmod 755 /var/qmail/rc Index: openacs-4/packages/acs-core-docs/www/install-redhat.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-redhat.html,v diff -u -r1.13 -r1.13.2.1 --- openacs-4/packages/acs-core-docs/www/install-redhat.html 11 Nov 2003 10:28:27 -0000 1.13 +++ openacs-4/packages/acs-core-docs/www/install-redhat.html 14 Nov 2003 09:43:45 -0000 1.13.2.1 @@ -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 click
On 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 screenClick
on the boot loader screenConfigure 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 the Other ports box, enter 443, 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,9 +88,9 @@ risk that's still screened by the firewall, or a resource hog. Just don't install a database or web server, because that would conflict with the database and web server we'll install later. -
check�Editors�(this�installs�emacs),
+check�Editors�(this�installs�emacs),
click�Details�next�to�Text-based�Internet,�check�lynx,�and�click� ;
-check�Authoring�and�Publishing�(this�installs�docbook),
+check�Authoring�and�Publishing�(this�installs�docbook),
uncheck�Server�Configuration�Tools,
uncheck�Web�Server,
uncheck�Windows�File�Server,
@@ -105,7 +105,7 @@ Flat View and wait. In a minute, a list of packages will appear.uncheck�apmd�(monitors�power,�not�very�useful�for�servers),�
-check�ImageMagick�(required�for�the�photo-album�packages,�
+check�ImageMagick�(required�for�the�photo-album�packages,�
uncheckisdn4k-utils�(unless�you�are�using�isdn,�this�installs�a�useless�daemon),�
check�mutt�(a�mail�program�that�reads�Maildir),
uncheck�nfs-utils�(nfs�is�a�major�security�risk),�
@@ -143,7 +143,7 @@ kernel and openssl/openssh root exploits, so you should be upgrading all of that. Since you are upgrading the kernel, reboot after this step. -Lock down SSH
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.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-steps.html,v diff -u -r1.6 -r1.6.2.1 --- openacs-4/packages/acs-core-docs/www/install-steps.html 11 Nov 2003 12:54:57 -0000 1.6 +++ openacs-4/packages/acs-core-docs/www/install-steps.html 14 Nov 2003 09:43:45 -0000 1.6.2.1 @@ -38,7 +38,7 @@
su - nsadmin svc -d /service/server1 dropdb server1 -createdb server1
Figure�2.2.�Assumptions in this Chapter
Fully qualified domain name of your server yourserver.test name of administrative access account remadmin OpenACS service service0 OpenACS service account service0 OpenACS database name service0 Root of OpenACS service file tree /var/lib/aolserver/service0 Location of source code tarballs for new software /tmp The OpenACS tarball contains some files which +createdb server1 Figure�2.2.�Assumptions in this Chapter
None of these locations are set in stone - they're simply @@ -77,7 +77,7 @@ comments and read other users comments about the contents of the page.
- Ask questions at the irc channel on openprojects.net + Ask questions at the irc channel on freenode.net (#openacs). They're knowledgeable and quite friendly if you can keep them on topic.
Index: openacs-4/packages/acs-core-docs/www/maintenance-web.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/maintenance-web.html,v diff -u -r1.14 -r1.14.2.1 --- openacs-4/packages/acs-core-docs/www/maintenance-web.html 11 Nov 2003 12:54:57 -0000 1.14 +++ openacs-4/packages/acs-core-docs/www/maintenance-web.html 14 Nov 2003 09:43:45 -0000 1.14.2.1 @@ -234,4 +234,4 @@ [root@yourserver root]# emacs /etc/cron.daily/analog
Put this into the file:
#!/bin/sh -/usr/share/analog-5.31/analog -G -g/var/lib/aolserver/service0/etc/analog.cfg
[root@yourserver root]# chmod 755 /etc/cron.daily/analogTest it by running the script.
[root@yourserver root]# sh /etc/cron.daily/analogBrowse to http://yourserver.test/log/traffic.html
($Id$)View comments on this page at openacs.org +/usr/share/analog-5.31/analog -G -g/var/lib/aolserver/service0/etc/analog.cfg[root@yourserver root]# chmod 755 /etc/cron.daily/analogTest it by running the script.
[root@yourserver root]# sh /etc/cron.daily/analogBrowse to http://yourserver.test/log/traffic.html
The OpenACS uptime site can monitor your site and send you an email whenever your site fails to respond. If you test the url http://yourserver.test/SYSTEM/dbtest.tcl, you should get back the string success.
($Id$)View comments on this page at openacs.org Index: openacs-4/packages/acs-core-docs/www/objects.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/objects.html,v diff -u -r1.23 -r1.23.2.1 --- openacs-4/packages/acs-core-docs/www/objects.html 11 Nov 2003 12:54:57 -0000 1.23 +++ openacs-4/packages/acs-core-docs/www/objects.html 14 Nov 2003 09:43:45 -0000 1.23.2.1 @@ -80,7 +80,7 @@ Fire up your text editor and open the ROOT/packages/notes/sql/oracle/notes-create.sql (ROOT/packages/notes/sql/postgresql/notes-create.sql for the PG version) file created when we created the package. Then, do the following: -+
First, add an entry to the acs_object_types table with the following PL/SQL call:
begin @@ -140,7 +140,7 @@ because the new type note is a subtype of acs_object, it will inherit these attributes, so there is no need for us to define them. -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 @@ -165,7 +165,7 @@ use the acs_objects table to find objects will transparently find any objects that are instances of any subtype of 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 @@ 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.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/openacs.html,v diff -u -r1.22 -r1.22.2.1 --- openacs-4/packages/acs-core-docs/www/openacs.html 11 Nov 2003 13:43:45 -0000 1.22 +++ openacs-4/packages/acs-core-docs/www/openacs.html 14 Nov 2003 09:43:45 -0000 1.22.2.1 @@ -38,7 +38,7 @@ [root@yourserver root]# useradd -g service0 -G web service0 -d /home/service0 [root@yourserver root]#
Starting with OpenACS 5.0, an experimental script is available to automate all of the steps for the rest of this - section. This only works if the machine already has AOLserver and a compliant database (see previous sections), and tclwebtest. If you are not feeling lucky, skip to the section called “Install from tarball”.
Get the install script from CVS. It is located within + section. Requires tclwebtest. If you are not feeling lucky, skip to the section called “Install from tarball”.
Get the install script from CVS. It is located within the main cvs tree, at /etc/install. Use anonymous CVS checkout to get that directory in the home directory of the service's dedicated user. We put it there so that it is not @@ -224,12 +224,8 @@ in the wrong format, make sure you followed the steps outlined in 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 the name of - the user of the process will be matched to this account - automatically.
[root@yourserver root]# su - postgres -[postgres@yourserver pgsql]$ createuser service0 -Shall the new user be allowed to create databases? (y/n) y -Shall the new user be allowed to create more new users? (y/n) y + 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@yourserver root]# su - postgres +[postgres@yourserver pgsql]$ createuser -a -d service0 CREATE USER [postgres@yourserver pgsql]$ exit logout @@ -239,7 +235,8 @@ CREATE DATABASE [service0@yourserver service0]$su - service0 -createdb -E UNICODE service0
Automate daily database Vacuuming. This is a process which cleans out discarded data from the database. A quick way to automate vacuuming is to edit the cron file for the database user.
[service0@yourserver service0]$ export EDITOR=emacs;crontab -eAdd this line to the file. 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.
0 1 * * * /usr/local/pgsql/bin/vacuumdb --analyze service0
Add Full Text Search Support (OPTIONAL)
[service0@yourserver service0]$ exit +createdb -E UNICODE service0
Automate daily database Vacuuming. This is a process which cleans out discarded data from the database. A quick way to automate vacuuming is to edit the cron file for the database user. Recommended: VACUUM ANALYZE every hour and VACUUM FULL ANALYZE every day.
[service0@yourserver service0]$ export EDITOR=emacs;crontab -eAdd this line to the file. 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.
0 1-23 * * * /usr/local/pgsql/bin/vacuumdb --full --analyze service0 +0 0 * * * /usr/local/pgsql/bin/vacuumdb --full --analyze service0Add Full Text Search Support (OPTIONAL)
[service0@yourserver service0]$ exit logout [root@yourserver root]#Configure an AOLserver Service for OpenACS.�
@@ -249,7 +246,7 @@ need to configure a virtual server. The Reference Platform uses a configuration file included in the OpenACS tarball, /var/lib/aolserver/service0/etc/config.tcl. - Open it in an editor to adjust the parameters.
[root@yourserver root]# su - service0 + Open it in an editor to adjust the parameters.[root@yourserver root]# su - service0 [service0@yourserver service0]$ cd /var/lib/aolserver/service0/etc [service0@yourserver etc]# emacs config.tcl@@ -411,4 +408,4 @@ ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
[service0@yourserver service0]$ exit logout -[root@yourserver root]#Test your backup and recovery procedure.
($Id$)View comments on this page at openacs.org +[root@yourserver root]#Test your backup and recovery procedure.
($Id$)View comments on this page at openacs.org Index: openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html,v diff -u -r1.16 -r1.16.2.1 --- openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html 11 Nov 2003 12:54:57 -0000 1.16 +++ openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html 14 Nov 2003 09:43:46 -0000 1.16.2.1 @@ -1,6 +1,6 @@OpenACS 4.x Permissions Tediously Explained by Vadim Nasardinov. Modified and converted to Docbook XML by Roberto Mello -
+
The code has been modified since this document was written so it is now obsolete. See this forum thread.
The general permissions system has a relatively complex data model in OpenACS 4.x. Developers who haven't had the time to learn the internals of the data model may end up writing seemingly correct code that crashes their system in @@ -85,7 +85,7 @@ to store permission information explicitly about every object, i.e. if the system has 100,000 and 1,000 users who have the read privilege on all objects, then we would need to store 100,000,000 entries of the form: -
Table�8.1.�
object_id grantee_id privilege object_id_1 user_id_1 'read' object_id_1 user_id_2 'read' ... object_id_1 user_id_n 'read' object_id_2 user_id_1 'read' object_id_2 user_id_2 'read' ... object_id_2 user_id_n 'read' ... ... object_id_m user_id_1 'read' object_id_m user_id_2 'read' ... object_id_m user_id_n 'read' +
Table�8.1.�
object_id grantee_id privilege object_id_1 user_id_1 'read' object_id_1 user_id_2 'read' ... object_id_1 user_id_n 'read' object_id_2 user_id_1 'read' object_id_2 user_id_2 'read' ... object_id_2 user_id_n 'read' ... ... object_id_m user_id_1 'read' object_id_m user_id_2 'read' ... object_id_m user_id_n 'read' Although quite feasible, this approach fails to take advantage of the fact that objects in the system are commonly organized hierarchally, and permissions usually follow the hierarchical structure, so that if user @@ -100,7 +100,7 @@
Suppose objects A, B, ..., and F form the following hierarchy. -
Table�8.2.�
A +
Table�8.2.�
A object_id=10
B object_id=20 @@ -116,23 +116,23 @@ 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, we can compute that object 40 is the second-generation descendant of object 10. With this in mind, if we want to record the fact that user Joe has the read privilege on objects A, ..., F, we only need to record one entry in the acs_permissions table. -
+
The fact that Joe can also read B, C, ..., and F can be derived by ascertaining that these objects are children of A by traversing the context hierarchy. As it turns out, hierarchical queries are expensive. As Rafael Schloming put it so aptly, Oracle can't deal with hierarchies for shit.
One way to solve this problem is to cache a flattened view of the context tree like so: -
+
Note that the number of entries in the flattened view grows exponentially with respect to the depth of the context tree. For instance, if you have a fully populated binary tree with a depth of n, then the number of entries @@ -203,7 +203,7 @@ an object's security_inherit_p column to 'f', you can stop permissions from cascading down the context tree. In the following example, Joe does not have the read permissions on C and F. -
Table�8.6.�
+Table�8.6.�
A
object_id=10
readable�by�Joe
@@ -231,7 +231,7 @@ Privileges are also organized hierarchically. In addition to the five main system privileges defined in the ACS Kernel data model, application developers may define their own. For instance, the Bboard package defines the following privileges: -Table�8.7.�
privilege create_category create_forum create_message delete_category delete_forum delete_message moderate_forum read_category read_forum read_message write_category write_forum write_message +
Table�8.7.�
privilege create_category create_forum create_message delete_category delete_forum delete_message moderate_forum read_category read_forum read_message write_category write_forum write_message By defining parent-child relationship between privileges, the OpenACS data model makes it easier for developers to manage permissions. Instead of granting a user explicit read, write, delete, @@ -240,7 +240,7 @@ privilege to which the first four privileges are tied. To give a more detailed example, the Bboard privileges are structured as follows. -
Table�8.8.�
admin create delete read write moderate forum create category create forum create message delete category delete forum delete message read category read forum read message write category write forum write message +
Table�8.8.�
admin create delete read write moderate forum create category create forum create message delete category delete forum delete message read category read forum read message write category write forum write message The parent-child relationship between privileges is represented in the acs_privilege_hierarchy table:
@@ -286,7 +286,7 @@Now for the third hierarchy playing a promiment role in the permission system. The party data model is set up as follows. -
+create table parties ( party_id not null @@ -370,7 +370,7 @@
The acs_rels table entries would look like so: -
Table�8.10.�
rel_type object_one object_two + Table�8.10.�
rel_type object_one object_two membership_rel Pranksters @@ -405,7 +405,7 @@ The relevant entries in the acs_rels look like so. -
Table�8.11.�
rel_type object_one object_two + Table�8.11.�
rel_type object_one object_two composition_rel Pranksters @@ -616,7 +616,7 @@ Note that in the above example, acs_permissions had only one entry that needed to be deleted: -
Table�8.12.�
object_id grantee_id privilege + Table�8.12.�
object_id grantee_id privilege default_context registered_users Index: openacs-4/packages/acs-core-docs/www/postgres.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/postgres.html,v diff -u -r1.21 -r1.21.2.1 --- openacs-4/packages/acs-core-docs/www/postgres.html 11 Nov 2003 12:54:57 -0000 1.21 +++ openacs-4/packages/acs-core-docs/www/postgres.html 14 Nov 2003 09:43:46 -0000 1.21.2.1 @@ -68,7 +68,7 @@ Change to the postgres user and run ./configure to set the compilation options automatically. This is the point at which you can configure PostgreSQL in various ways. For example, if you want to enable - Unicode support, add the flags --enable-locale and --enable-multibyte. If you want to see what the other possibilities are, run ./configure --help. + Unicode support, add the flags --enable-locale and --enable-multibyte. If you want to see what the other possibilities are, run ./configure --help. [root@yourserver src]# su - postgres [postgres@yourserver pgsql]$ cd /usr/local/src/postgresql-7.3.4 [postgres@yourserver postgresql-7.3.4]$ ./configure Index: openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html,v diff -u -r1.13 -r1.13.2.1 --- openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html 11 Nov 2003 12:54:57 -0000 1.13 +++ openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html 14 Nov 2003 09:43:46 -0000 1.13.2.1 @@ -1,8 +1,8 @@ -Add PSGML commands to emacs init file (OPTIONAL) Add PSGML commands to emacs init file (OPTIONAL) If you plan to write or edit any documentation with emacs, install a customized emacs configuration file with DocBook commands in the skeleton directory, so it will be used for all new users. The file also fixes the backspace -> help mis-mapping that often occurs in terminals.
[root@yourserver tmp]# cp /tmp/openacs-5.0.0b1/packages/acs-core-docs/www/files/emacs.txt /etc/skel/.emacs cp: overwrite `/etc/skel/.emacs'? y -[root@yourserver tmp]#Debian users:
apt-get install psgml
View comments on this page at openacs.org +[root@yourserver tmp]#Debian users:
apt-get install psgml
Note: The new nxml mode for emacs, when used in combination with psgml, provides a pretty good set of functionality that makes DocBook editing much less painless. In particular, nxml does syntax testing in real-time so that you can see syntax errors immediately instead of in the output of the xsltproc hours or days later. For debian, apt-get install nxml.
View comments on this page at openacs.org Index: openacs-4/packages/acs-core-docs/www/request-processor.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/request-processor.html,v diff -u -r1.22 -r1.22.2.1 --- openacs-4/packages/acs-core-docs/www/request-processor.html 11 Nov 2003 12:54:57 -0000 1.22 +++ openacs-4/packages/acs-core-docs/www/request-processor.html 14 Nov 2003 09:43:46 -0000 1.22.2.1 @@ -13,7 +13,7 @@ diagram summarizes the stages of the request processor assuming a URL request like http://someserver.com/notes/somepage.adp. -
[D]+
[D]
- Stage 1: Search Site Map
The first thing the RP does is to map the given URL to the appropriate Index: openacs-4/packages/acs-core-docs/www/tutorial-advanced.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-advanced.html,v diff -u -r1.14 -r1.14.2.1 --- openacs-4/packages/acs-core-docs/www/tutorial-advanced.html 11 Nov 2003 12:54:57 -0000 1.14 +++ openacs-4/packages/acs-core-docs/www/tutorial-advanced.html 14 Nov 2003 09:43:46 -0000 1.14.2.1 @@ -2,15 +2,15 @@ by Joel Aufrecht
OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -This tutorial covers topics which are not essential to creating a minimal working package. Each section can be used independently of all of the others; all sections assume that you've completed the basic tutorial.
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 make your package send email notifications
How to prepare pagelets for inclusion in other pages
How and when to put procedures in a tcl procedure library
How to add general_comments to your pages
More on ad_form - data validation, other stuff. (plan to draw from Jon Griffin's doc)
How and when to implement caching
partialquery in xql
How to use the html/text entry widget to get the - "does this look right" confirm page
APM package dependencies
It's time to document. For the tutorial we'll use + "does this look right" confirm page
APM package dependencies
It's time to document. For the tutorial we'll use pre-written documentation. When creating a package from scratch, start by copying the documentation template from /var/lib/aolserver/openacs-dev/packages/acs-core-docs/xml/docs/xml/package-documentation-template.xml @@ -60,7 +60,7 @@ Writing bi01.html for bibliography Writing index.html for book [service0@yourserver xml]$
Verify that the documentation was generated and reflects - your changes by browsing to http://yoursite:8000/samplenote/doc
Before you do any more work, make sure that your work is + your changes by browsing to http://yoursite:8000/samplenote/doc
Before you do any more work, make sure that your work is protected by putting it all into cvs. The cvs add command is not recursive, so you'll have to traverse the directory tree manually and add as you go. (More on @@ -120,7 +120,7 @@ initial revision: 1.1 done (many lines omitted) -[service0@yourserver samplenote]$
We need a way to delete records. We'll create a +[service0@yourserver samplenote]$
We need a way to delete records. We'll create a recursive confirmation page.
Add this column to the table_def in index.tcl
{delete "" {} {<td><a href="note-delete?note_id=$note_id">Delete</a></td>}}Create the delete confirmation/execution page.
[service0@yourserver www]$ emacs note-delete.tclad_page_contract { A page that gets confirmation and then delete notes. @@ -180,7 +180,7 @@ <formtemplate id="note-del-confirm"></formtemplate> </form>The ADP is very simple. The formtemplate tag outputs the HTML -form generated by the ad_form command with the matching name. Test it by adding the new files in the APM and then deleting a few samplenotes.
You can track comments for any ACS Object. Here we'll track +form generated by the ad_form command with the matching name. Test it by adding the new files in the APM and then deleting a few samplenotes.
You can track comments for any ACS Object. Here we'll track comments for notes. On the notes.tcl/adp pair, which is used to display individual notes, we want to put a link to add comments at the bottom of the screen. If there are any comments, we want to @@ -201,13 +201,13 @@ there are comments. Then you pass the note id, which is also the acs_object id.
We put our two new variables in the notes.adp page.
<a href="@comment_add_url@">Add a comment</a> -@comments_html@Browse to the package manager. Click on tutorialapp.
Click on Generate a distribution file for this package from the filesystem.
Click on the file size (37.1KB) after the label Distribution File: and save the file to - /tmp.
View comments on this page at openacs.org Index: openacs-4/packages/acs-core-docs/www/tutorial-database.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-database.html,v diff -u -r1.14 -r1.14.2.1 --- openacs-4/packages/acs-core-docs/www/tutorial-database.html 11 Nov 2003 12:54:57 -0000 1.14 +++ openacs-4/packages/acs-core-docs/www/tutorial-database.html 14 Nov 2003 09:43:46 -0000 1.14.2.1 @@ -2,7 +2,7 @@ by Joel Aufrecht
OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -We create all database objects with scripts in the myfirstpackage/sql/ directory. All database scripts are database-specific and are thus in either the myfirstpackage/sql/oracle or @@ -37,7 +37,7 @@ @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.
[service0@yourserver postgresql]$ emacs myfirstpackage-create.sqlPaste this into the file and save and close.
Figure�7.2.�Database Creation Script - master create file
-- + expanded when the file is checked in to cvs.[service0@yourserver postgresql]$ emacs myfirstpackage-create.sqlPaste this into the file and save and close.
Figure�7.2.�Database Creation Script - master create file
-- -- @author rhs@mit.edu -- @cvs-id $Id$ -- @@ -61,7 +61,7 @@ object. Notice the use of "mfp." This token, derived from "My First Package," 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.
[service0@yourserver postgresql]$ emacs myfirstpackage-drop.sqlFigure�7.3.�Database deletion script
-- packages/myfirstpackage/sql/myfirstpackage-drop.sql + is uninstalled.[service0@yourserver postgresql]$ emacs myfirstpackage-drop.sqlFigure�7.3.�Database deletion script
-- packages/myfirstpackage/sql/myfirstpackage-drop.sql -- drop script -- -- @author joel@aufrecht.org Index: openacs-4/packages/acs-core-docs/www/tutorial-debug.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-debug.html,v diff -u -r1.14 -r1.14.2.1 --- openacs-4/packages/acs-core-docs/www/tutorial-debug.html 11 Nov 2003 12:54:57 -0000 1.14 +++ openacs-4/packages/acs-core-docs/www/tutorial-debug.html 14 Nov 2003 09:43:46 -0000 1.14.2.1 @@ -2,7 +2,7 @@ by Joel Aufrecht
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 log, and fast user switching so that you can test pages as anonymous and as dummy users without logging @@ -24,17 +24,17 @@ ?�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. 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 Index: openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html,v diff -u -r1.14 -r1.14.2.1 --- openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html 11 Nov 2003 12:54:57 -0000 1.14 +++ openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html 14 Nov 2003 09:43:46 -0000 1.14.2.1 @@ -2,7 +2,7 @@ by Joel Aufrecht
OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -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 @@ -22,11 +22,11 @@
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.0.0b1 distribution. -
We use the ACS Package Manager (APM) to add, remove, and +
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 @@
This creates a package rooted at /var/lib/aolserver/service0/packages/myfirstpackage. This is the "home directory" of our new package, and all - files in the package will be within this directory.
In order to see your work in progress, you must create a + files in the package will be within this directory.
In order to see your work in progress, you must create a map between the URL space of incoming requests and the package. You do this by mounting the package in the Site Map. This creates a link between the incoming URL and an Index: openacs-4/packages/acs-core-docs/www/tutorial-pages.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-pages.html,v diff -u -r1.14 -r1.14.2.1 --- openacs-4/packages/acs-core-docs/www/tutorial-pages.html 11 Nov 2003 12:54:57 -0000 1.14 +++ openacs-4/packages/acs-core-docs/www/tutorial-pages.html 14 Nov 2003 09:43:47 -0000 1.14.2.1 @@ -2,8 +2,8 @@ by Joel Aufrecht
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/service1/packages/acs-core-docs/www/files/note-procs.tcl /var/lib/aolserver/service1/packages/myfirstpackage/tcl/
To make this file take effect, go to the APM and choose "Reload all files" for "MyFirstPackage".
As a workaround for missing content-repository functionality, copy a provided file into the directory for tcl files:
+cp /var/lib/aolserver/service1/packages/acs-core-docs/www/files/note-procs.tcl /var/lib/aolserver/service1/packages/myfirstpackage/tcl/
To make this file take effect, go to the APM and choose "Reload all files" for "MyFirstPackage".
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 Index: openacs-4/packages/acs-core-docs/www/upgrade-detail.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/Attic/upgrade-detail.html,v diff -u -r1.16 -r1.16.2.1 --- openacs-4/packages/acs-core-docs/www/upgrade-detail.html 11 Nov 2003 12:54:57 -0000 1.16 +++ openacs-4/packages/acs-core-docs/www/upgrade-detail.html 14 Nov 2003 09:43:47 -0000 1.16.2.1 @@ -9,13 +9,13 @@ manual intervention should be required. If you are running OpenACS prior to 4.5, upgrading will require manual effort.
The required platform for OpenACS 4.6 is the same as 4.5, with the excepion of OpenFTS. You now need OpenFTS 0.3.2, not 0.2. - OpenACS 4.6 does not support PostGreSQL 7.3.
A computer with OpenACS 4.5.
Required for Full Text Search on PostGreSQL: OpenFTS 0.3.2
OpenACS consists of files and a database schema. The files + OpenACS 4.6 does not support PostGreSQL 7.3.
A computer with OpenACS 4.5.
Required for Full Text Search on PostGreSQL: OpenFTS 0.3.2
OpenACS consists of files and a database schema. The files in the OpenACS 4.6 tarball include database upgrade scripts. To start the upgrade, replace your existing files with the new files and then restart the server. Then, browse to the APM, which will detect the new packages and offer to run the appropriate database upgrade scripts. After restarting the server again, the upgrade is - complete.
Make a Backup.�Back up the database and file system (see the section called “Snapshot backup and recovery”).
OPTIONAL: Upgrade OpenFTS.�OpenACS Full Text Search requires several pieces: the OpenFTS code, some database functions, and the OpenFTS Engine. If you have OpenFTS 0.2, you'll need to upgrade to to OpenFTS 0.3.2. This is backwards-compatible - + complete.
Make a Backup.�Back up the database and file system (see the section called “Snapshot backup and recovery”).
OPTIONAL: Upgrade OpenFTS.�OpenACS Full Text Search requires several pieces: the OpenFTS code, some database functions, and the OpenFTS Engine. If you have OpenFTS 0.2, you'll need to upgrade to to OpenFTS 0.3.2. This is backwards-compatible - completing this step will not break a working OpenFTS Engine from 4.5.
Uninstall the old OpenFTS Engine
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/ @@ -96,4 +96,4 @@ itself, and then come back and upgrade the rest of the desired packages in a second pass.On the next screen, click
When prompted, restart the server:
[root@localhost root]# restart-aolserver openacs-dev
Wait a minute, then browse to the package manager, http://yourserver/acs-admin/apm.
Check that the kernel upgrade worked by clicking All and making sure that acs-kernel version is 5.0.0b1.
OPTIONAL: Install the new OpenFTS Engine.�If you want to upgrade the OpenFTS Engine, do these steps. (You must have already upgraded the OpenFTS driver to - 0.3.2.)
Browse to http://yourserver/admin/site-map
On the openfts line, click on set parameters.
Change the value of openfts_tcl_src_path from /usr/local/src/Search-OpenFTS-tcl-0.2/ to /usr/local/src/Search-OpenFTS-tcl-0.3.2/
Click
[root@localhost root]# restart-aolserver openacs-dev
Browse to http://yourserver/openfts
Click Administration.
Click
Rollback.�If anything goes wrong, roll back to the backup snapshot.
($Id$)View comments on this page at openacs.org + 0.3.2.)
Browse to http://yourserver/admin/site-map
On the openfts line, click on set parameters.
Change the value of openfts_tcl_src_path from /usr/local/src/Search-OpenFTS-tcl-0.2/ to /usr/local/src/Search-OpenFTS-tcl-0.3.2/
Click
[root@localhost root]# restart-aolserver openacs-dev
Browse to http://yourserver/openfts
Click Administration.
Click
Rollback.�If anything goes wrong, roll back to the backup snapshot.
($Id$)View comments on this page at openacs.org Index: openacs-4/packages/acs-core-docs/www/xml/developers-guide/permissions-tediously-explained.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/developers-guide/permissions-tediously-explained.xml,v diff -u -r1.3 -r1.3.2.1 --- openacs-4/packages/acs-core-docs/www/xml/developers-guide/permissions-tediously-explained.xml 20 Aug 2003 16:20:18 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/xml/developers-guide/permissions-tediously-explained.xml 14 Nov 2003 09:43:47 -0000 1.3.2.1 @@ -10,6 +10,8 @@ by Vadim Nasardinov. Modified and converted to Docbook XML by Roberto Mello +The code has been modified since this document was written so it is now obsolete. See +this forum thread .+ Overview Index: openacs-4/packages/acs-core-docs/www/xml/install-guide/maintenance.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/install-guide/maintenance.xml,v diff -u -r1.5 -r1.5.2.1 --- openacs-4/packages/acs-core-docs/www/xml/install-guide/maintenance.xml 14 Oct 2003 10:03:23 -0000 1.5 +++ openacs-4/packages/acs-core-docs/www/xml/install-guide/maintenance.xml 14 Nov 2003 09:43:47 -0000 1.5.2.1 @@ -422,9 +422,12 @@+ -External uptime validation +The +OpenACS uptime site can monitor your site and send you an email whenever your site fails to respond. If you test the urlhttp:// , you should get back the stringyourserver.test /SYSTEM/dbtest.tclsuccess .Index: openacs-4/packages/acs-core-docs/www/xml/install-guide/openacs.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/install-guide/openacs.xml,v diff -u -r1.15 -r1.15.2.1 --- openacs-4/packages/acs-core-docs/www/xml/install-guide/openacs.xml 11 Nov 2003 10:28:29 -0000 1.15 +++ openacs-4/packages/acs-core-docs/www/xml/install-guide/openacs.xml 14 Nov 2003 09:43:47 -0000 1.15.2.1 @@ -326,13 +326,9 @@ ($Id$) PostGreSQL: Create a user in the database matching the service - name. With default PostGreSQL authentication the name of - the user of the process will be matched to this account - automatically. + 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@yourserver root]# su - postgres -[postgres@yourserver pgsql]$createuser -Shall the new user be allowed to create databases? (y/n)service0 y -Shall the new user be allowed to create more new users? (y/n)y +[postgres@yourserver pgsql]$createuser -a -d CREATE USER [postgres@yourserver pgsql]$service0 exit logout @@ -349,14 +345,15 @@ createdb -E UNICODEservice0 - Automate daily database Vacuuming. This is a process which cleans out discarded data from the database. A quick way to automate vacuuming is to edit the cron file for the database user. +Automate daily database Vacuuming. This is a process which cleans out discarded data from the database. A quick way to automate vacuuming is to edit the cron file for the database user. Recommended: VACUUM ANALYZE every hour andVACUUM FULL ANALYZE every day.Postgres Vacuuming [service0@yourserver service0]$ export EDITOR=emacs;crontab -e Add this line to the file. 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. -0 1 * * * /usr/local/pgsql/bin/vacuumdb --analyze +service0 0 1-23 * * * /usr/local/pgsql/bin/vacuumdb --full --analyze service0 +0 0 * * * /usr/local/pgsql/bin/vacuumdb --full --analyzeservice0 Add Full Text Search Support (OPTIONAL) @@ -702,6 +699,8 @@+ Test your backup and recovery procedure. Index: openacs-4/packages/acs-core-docs/www/xml/install-guide/other-software.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/install-guide/other-software.xml,v diff -u -r1.9 -r1.9.2.1 --- openacs-4/packages/acs-core-docs/www/xml/install-guide/other-software.xml 11 Nov 2003 10:28:29 -0000 1.9 +++ openacs-4/packages/acs-core-docs/www/xml/install-guide/other-software.xml 14 Nov 2003 09:43:47 -0000 1.9.2.1 @@ -73,6 +73,7 @@ [root@yourserver tmp]# Set up +. Debian users: + apt-get install psgml Note: The new nxml mode for emacs, when used in combination with psgml, provides a pretty good set of functionality that makes DocBook editing much less painless. In particular, nxml does syntax testing in real-time so that you can see syntax errors immediately instead of in the output of the xsltproc hours or days later. For debian, apt-get install nxml .