External links are references to content pages on other web
sites. They provide the basis for maintaining a hierarchy of
"bookmarks" that may be managed in a manner analogous to other
content items. In particular, external links may be tagged with
keywords and related to the site's own content items.
Returns the label for the folder. This function is the default
-name method for the folder object.
-
+name method for the folder object.
Author:
Karl Goldstein
@@ -65,12 +62,10 @@
See Also:
acs_object_type.create_type, the docs for the name_method
parameter
-
-
-
-Function: content_folder.is_empty
-
Determine if the folder is empty
-
+
+
+Function: content_folder.is_empty
+
Determine if the folder is empty
Author:
Karl Goldstein
@@ -86,12 +81,10 @@
See Also:
content_folder.is_folder
-
-
-
-Function: content_folder.is_folder
-
Determine if the item is a folder
-
+
+
+Function: content_folder.is_folder
+
Determine if the item is a folder
Author:
Karl Goldstein
@@ -106,15 +99,12 @@
See Also:
content_folder.new, content_folder.is_sub_folder
-
-
-
-Function:
-content_folder.is_registered
+
+
+Function: content_folder.is_registered
change this to is_type_registered Determines if a content type
is registered to the folder Only items of the registered type(s)
-may be added to the folder.
Determine if the item target_folder_id is a subfolder
of the item folder_id
-
-
+
Author:
Karl Goldstein
@@ -170,12 +157,10 @@
See Also:
content_folder.is_folder
-
-
-
-Function: content_folder.new
-
Create a new folder
-
+
+
+Function: content_folder.new
+
Create a new folder
Author:
Karl Goldstein
@@ -220,15 +205,13 @@
See Also:
acs_object.new, content_item.new
-
-
-
-Procedure: content_folder.copy
+
+
+Procedure: content_folder.copy
Recursively copy the folder and all items in into a new
location. An error is thrown if either of the parameters is not a
folder. The root folder of the sitemap and the root folder of the
-templates cannot be copied
-
+templates cannot be copied
Author:
Karl Goldstein
Parameters:
@@ -246,13 +229,11 @@
See Also:
content_folder.new, content_folder.copy
-
-
-
-Procedure: content_folder.delete
+
+
+Procedure: content_folder.delete
Delete a folder. An error is thrown if the folder is not
-empty
-
+empty
Author:
Karl Goldstein
Parameters:
@@ -265,15 +246,13 @@
See Also:
acs_object.delete, content_item.delete
-
-
-
-Procedure: content_folder.move
+
+
+Procedure: content_folder.move
Recursively move the folder and all items in into a new
location. An error is thrown if either of the parameters is not a
folder. The root folder of the sitemap and the root folder of the
-templates cannot be moved.
-
+templates cannot be moved.
Author:
Karl Goldstein
Parameters:
@@ -291,15 +270,13 @@
See Also:
content_folder.new, content_folder.copy
-
-
-
+
+
Procedure:
-content_folder.register_content_type
+content_folder.register_content_type
Register a content type to the folder, if it is not already
registered. Only items of the registered type(s) may be added to
-the folder.
Unregister a content type from the folder, if it has been
registered. Only items of the registered type(s) may be added to
the folder. If the folder already contains items of the type to be
-unregistered, the items remain in the folder.
Takes in a path, such as "/tv/programs/star_trek/episode_203"
and returns the id of the item with this path. Note: URLs are
abstract (no extensions are allowed in content item names and
-extensions are stripped when looking up content items)
-
+extensions are stripped when looking up content items)
Author:
Karl Goldstein
@@ -93,14 +88,12 @@
See Also:
content_item.get_path
-
-
-
+
+
Function:
-content_item.get_latest_revision
+content_item.get_latest_revision
Retrieves the id of the latest revision for the item (as opposed
-to the live revision)
-
+to the live revision)
Author:
Karl Goldstein
@@ -116,17 +109,13 @@
See Also:
content_item.get_live_revision
-
-
-
-Function:
-content_item.get_live_revision
-
Retrieves the id of the live revision for the item
-
Note that this function does nothing else besides retrieving the
+
+
+Function: content_item.get_live_revision
+
Retrieves the id of the live revision for the item
Note that this function does nothing else besides retrieving the
value of the column cr_items.live_revision. It is thus
more efficient in many cases to join against cr_items
-and retrieve the value directly.
-
+and retrieve the value directly.
Returns:
The id of the live revision for this item, or null
if no live revision exists
function get_root_folder return cr_folders.folder_id%TYPE;
-
-
-
-Function: content_item.get_template
+
+
+Function: content_item.get_template
Retrieves the template which should be used to render this item.
If no template is registered to specifically render the item in the
given context, the default template for the item's type is
-returned.
Retrieves the title for the item, using either the latest or the
live revision. If the specified item is in fact a folder, return
the folder's label. In addition, this function will automatically
-resolve symlinks.
Determine if the item is an index page for the specified folder.
The item is an index page for the folder if it exists in the folder
-and its item name is "index".
-
+and its item name is "index".
Author:
Karl Goldstein
@@ -367,17 +334,14 @@
See Also:
content_folder.get_index_page
-
-
-
-Function:
-content_item.is_publishable
+
+
+Function: content_item.is_publishable
Determines if an item is publishable. Publishable items must
meet the following criteria: 1) for each child type, the item has n
children, min_n < n < max_n 2) for each relation type, the
item has n relations, min_n < n < max_n 3) any
-'publishing_wf' workflows are finished
-
+'publishing_wf' workflows are finished
Author:
Michael Pih
@@ -391,13 +355,11 @@
) return char;
-
-
-
-Function: content_item.is_subclass
+
+
+Function: content_item.is_subclass
Determines if one type is a subclass of another. A class is
-always a subclass of itself.
-
+always a subclass of itself.
Author:
Karl Goldstein
@@ -418,16 +380,13 @@
See Also:
acs_object_type.create_type
-
-
-
-Function:
-content_item.is_valid_child
+
+
+Function: content_item.is_valid_child
Determines if an item would be a valid child of another item by
checking if the parent allows children of the would-be child's
content type and if the parent already has n_max children of that
-content type.
-
+content type.
Author:
Michael Pih
@@ -446,14 +405,12 @@
) return char;
-
-
-
-Function: content_item.new
+
+
+Function: content_item.new
Creates a new content item. If the data, title
or text parameters are specified, also creates a revision
-for the item.
-
+for the item.
Author:
Karl Goldstein
@@ -539,10 +496,9 @@
See Also:
acs_object.new
-
-
-
-Function: content_item.relate
+
+
+Function: content_item.relate
Parameters:
Not yet documented
Declaration:
function relate (
@@ -554,15 +510,13 @@
) return cr_item_rels.rel_id%TYPE;
-
-
-
-Procedure: content_item.copy
+
+
+Procedure: content_item.copy
Copies the item to a new location, creating an identical item
with no revisions or associated workflow. If the target folder does
not exist, or if the folder already contains an item with the same
-name as the given item, an error will be thrown.
Deletes the specified content item, along with any revisions,
symlinks, workflows, and template relations for the item. Use with
-caution - this operation cannot be undone.
-
+caution - this operation cannot be undone.
Author:
Karl Goldstein
Parameters:
@@ -600,14 +552,12 @@
See Also:
acs_object.delete
-
-
-
-Procedure: content_item.move
+
+
+Procedure: content_item.move
Move the specified item to a different folder. If the target
folder does not exist, or if the folder already contains an item
-with the same name as the given item, an error will be thrown.
-
+with the same name as the given item, an error will be thrown.
Deletes the specified keyword, which must be a leaf. Unassigns
the keyword from all content items. Use with caution - this
-operation cannot be undone.
-
+operation cannot be undone.
Author:
Karl Goldstein
Parameters:
@@ -221,14 +207,11 @@
See Also:
acs_object.delete, content_keyword.item_unassign
-
-
-
-Procedure:
-content_keyword.item_assign
+
+
+Procedure: content_keyword.item_assign
Assigns this keyword to a content item, creating a relationship
-between them
-
+between them
Author:
Karl Goldstein
Parameters:
@@ -255,14 +238,11 @@
See Also:
acs_rel.new, content_keyword.item_unassign
-
-
-
-Procedure:
-content_keyword.item_unassign
+
+
+Procedure: content_keyword.item_unassign
Unassigns this keyword to a content item, removing a
-relationship between them
Determine if the user may grant a certain permission to another
user. The permission may only be granted if the user has the
permission himself and posesses the cm_perm access, or if the user
-posesses the cm_perm_admin access.
Determine if the user may take a certain permission away from
another user. The permission may only be revoked if the user has
the permission himself and posesses the cm_perm access, while the
other user does not, or if the user posesses the cm_perm_admin
-access.
Determine if the user has the specified permission on the
specified object. Does NOT check objects recursively: that is, if
the user has the permission on the parent object, he does not
-automatically gain the permission on all the child objects.
-
+automatically gain the permission on all the child objects.
Make the child object inherit all of the permissions of the
parent object. Typically, this function is called whenever a new
-object is created under a given parent
Deletes the specified template, and unregisters the template
from all content types and content items. Use with caution - this
-operation cannot be undone.
Create a view for the type which joins all attributes of the
type, including the inherited attributes. The view is named "
-
X" Called by create_attribute and create_type.
@@ -196,16 +183,14 @@
See Also:
content_type.create_type
-
-
-
+
+
Procedure:
-content_type.register_child_type
+content_type.register_child_type
Register a parent-child relationship between a content type and
another object type. This may then be used by the
content_item.is_valid_relation function to validate the
-relationship between an item and a potential child.
-
+relationship between an item and a potential child.
Register a relationship between a content type and another
object type. This may then be used by the
content_item.is_valid_relation function to validate any
-relationship between an item and another object.
-
+relationship between an item and another object.
Author:
Karl Goldstein
Parameters:
@@ -289,14 +271,12 @@
See Also:
content_type.unregister_relation_type
-
-
-
+
+
Procedure:
-content_type.register_template
+content_type.register_template
Register a template for the content type. This template may be
-used to render all items of that type.
Make the registered template a default template. The default
template will be used to render all items of the type for which no
-individual template is registered.
Register a parent-child relationship between a content type and
another object type. This may then be used by the
content_item.is_valid_relation function to validate the
-relationship between an item and a potential child.
-
+relationship between an item and a potential child.
Analog is a program with processes webserver access logs,
performs DNS lookup, and outputs HTML reports. Analog should
already be
installed. A modified configuration file is included in
Index: openacs-4/packages/acs-core-docs/www/aolserver.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/aolserver.html,v
diff -u -N -r1.52.2.5 -r1.52.2.6
--- openacs-4/packages/acs-core-docs/www/aolserver.html 1 Dec 2015 14:38:38 -0000 1.52.2.5
+++ openacs-4/packages/acs-core-docs/www/aolserver.html 9 Jun 2016 08:44:49 -0000 1.52.2.6
@@ -1,5 +1,5 @@
-
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
Introduction
The following is a requirements document for the OpenACS Package Manager
@@ -292,4 +292,4 @@
are set using the acs_attribute_values table. The automatic web interface for
setting package parameters should be one and the same with the interface for
setting acs object attribute values. Consequently, the implementation of
-these features should be quite straightforward.
Revision History
Document Revision #
Action Taken, Notes
When?
By Whom?
0.1
Creation
8/10/2000
Bryan Quinn, Todd Nightingale
Reviewed
8/11/2000
John Prevost, Mark Thomas, and Pete Su
0.2
Revised and updated
8/12/2000
Bryan Quinn
0.3
Reviewed, revised, and updated - conforms to requirements template.
The recommended backup strategy for a production sit is to use an automated script which first backs up the database to a file in /var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup and then backs up all of /var/lib/aolserver/$OPENACS_SERVICE_NAME to a single zip file, and then copies that zip file to another computer.
Make sure that the manual backup process described above works.
Customize the default backup script. Edit /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/backup.sh with your specific parameters.
The recommended backup strategy for a production sit is to use an automated script which first backs up the database to a file in /var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup and then backs up all of /var/lib/aolserver/$OPENACS_SERVICE_NAME to a single zip file, and then copies that zip file to another computer.
Make sure that the manual backup process described above works.
Customize the default backup script. Edit /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/backup.sh with your specific parameters.
Make sure the file is executable:
chmod +x backup.sh
Set this file to run automatically by adding a line to root's crontab. (Typically, with export EDITOR=emacs; crontab -e.) This example runs the backup script at 1:30 am every day.
30 1 * * * sh /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/backup.sh
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
Best practices in writing OpenACS automated tests
Special characters in Tcl.
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.6 -r1.1.2.7
--- openacs-4/packages/acs-core-docs/www/backup-recovery.adp 1 Dec 2015 14:38:38 -0000 1.1.2.6
+++ openacs-4/packages/acs-core-docs/www/backup-recovery.adp 9 Jun 2016 08:44:49 -0000 1.1.2.7
@@ -30,7 +30,7 @@
to set up, are far from the best solution).
There are three basic things which need to be backed up, the
database data, the server source tree, and the
acs-content-repository (which is in the server source tree).
-
Figure 8.1. Backup and
+
Figure 8.1. Backup and
Recovery Strategy
OpenACS docs are written by the named authors, and may be edited by
Index: openacs-4/packages/acs-core-docs/www/backup-recovery.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/backup-recovery.html,v
diff -u -N -r1.43.2.5 -r1.43.2.6
--- openacs-4/packages/acs-core-docs/www/backup-recovery.html 1 Dec 2015 14:38:39 -0000 1.43.2.5
+++ openacs-4/packages/acs-core-docs/www/backup-recovery.html 9 Jun 2016 08:44:49 -0000 1.43.2.6
@@ -1,12 +1,12 @@
-Chapter 8. Backup and Recovery
We will cover some basic backup and recovery strategies. These are intended to
be robust but simple enough to set up. For a large scale production site you would
probably need to create your own backup strategies (in particular full dumps from
oracle, while easy to set up, are far from the best solution).
There are three basic things which need to be backed up, the database data, the server
source tree, and the acs-content-repository (which is in the server source tree).
-
Figure 8.1. Backup and Recovery Strategy
+
Figure 8.1. Backup and Recovery Strategy
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
Index: openacs-4/packages/acs-core-docs/www/backups-with-cvs.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/backups-with-cvs.html,v
diff -u -N -r1.13 -r1.13.2.1
--- openacs-4/packages/acs-core-docs/www/backups-with-cvs.html 27 Oct 2014 16:39:16 -0000 1.13
+++ openacs-4/packages/acs-core-docs/www/backups-with-cvs.html 9 Jun 2016 08:44:49 -0000 1.13.2.1
@@ -1,5 +1,5 @@
-Using CVS for backup-recovery
CVS-only backup is often appropriate for development sites. If you are already using CVS and your data is not important, you probably don't
need to do anything to back up your files. Just make
sure that your current work is checked into the system.
You can then roll back based on date - note the
Index: openacs-4/packages/acs-core-docs/www/bootstrap-acs.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/bootstrap-acs.html,v
diff -u -N -r1.49.2.5 -r1.49.2.6
--- openacs-4/packages/acs-core-docs/www/bootstrap-acs.html 1 Dec 2015 14:38:39 -0000 1.49.2.5
+++ openacs-4/packages/acs-core-docs/www/bootstrap-acs.html 9 Jun 2016 08:44:49 -0000 1.49.2.6
@@ -1,5 +1,5 @@
-
Index: openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.adp,v
diff -u -N -r1.1.2.5 -r1.1.2.6
--- openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.adp 1 Dec 2015 14:38:39 -0000 1.1.2.5
+++ openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.adp 9 Jun 2016 08:44:49 -0000 1.1.2.6
@@ -17,7 +17,7 @@
OpenACS docs are written by the named authors, and may be edited by
OpenACS documentation staff.
-Configuring an OpenACS package
After you've installed and mounted your package, you can
+Configuring an OpenACS package
After you've installed and mounted your package, you can
configure each instance to act as you would like.
This is done from the Applications page. Log in, go to the Admin
or Control Panel, click on the subsite the application is in, and
click on Applications. If you click on the 'Parameters' link, you
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.5 -r1.10.2.6
--- openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.html 1 Dec 2015 14:38:39 -0000 1.10.2.5
+++ openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.html 9 Jun 2016 08:44:49 -0000 1.10.2.6
@@ -1,8 +1,8 @@
-
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
-
Configuring an OpenACS package
After you've installed and mounted your package, you can
+
Configuring an OpenACS package
After you've installed and mounted your package, you can
configure each instance to act as you would like.
This is done from the Applications page. Log in, go to the
Admin or Control Panel, click on the subsite the application is
in, and click on Applications. If you click on the 'Parameters'
Index: openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.adp,v
diff -u -N -r1.1.2.5 -r1.1.2.6
--- openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.adp 1 Dec 2015 14:38:39 -0000 1.1.2.5
+++ openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.adp 9 Jun 2016 08:44:49 -0000 1.1.2.6
@@ -17,7 +17,7 @@
OpenACS docs are written by the named authors, and may be edited by
OpenACS documentation staff.
-Setting Permission on an OpenACS
+Setting Permission on an OpenACS
package
After you've installed and mounted your package, you can
configure each instance to act as you would like.
This is done from the Applications page. Log in, go to the Admin
or Control Panel, click on the subsite the application is in, and
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.5 -r1.10.2.6
--- openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.html 1 Dec 2015 14:38:39 -0000 1.10.2.5
+++ openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.html 9 Jun 2016 08:44:49 -0000 1.10.2.6
@@ -1,8 +1,8 @@
-
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
-
Setting Permission on an OpenACS package
After you've installed and mounted your package, you can
+
Setting Permission on an OpenACS package
After you've installed and mounted your package, you can
configure each instance to act as you would like.
This is done from the Applications page. Log in, go to the
Admin or Control Panel, click on the subsite the application is
in, and click on Applications. If you click on the 'Permissions'
Index: openacs-4/packages/acs-core-docs/www/configuring-install-packages.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-install-packages.adp,v
diff -u -N -r1.1.2.6 -r1.1.2.7
--- openacs-4/packages/acs-core-docs/www/configuring-install-packages.adp 1 Dec 2015 14:38:39 -0000 1.1.2.6
+++ openacs-4/packages/acs-core-docs/www/configuring-install-packages.adp 9 Jun 2016 08:44:49 -0000 1.1.2.7
@@ -16,7 +16,7 @@
OpenACS docs are written by the named authors, and may be edited by
OpenACS documentation staff.
-Installing OpenACS packages
An OpenACS package extends your website and lets it do things it
+Installing OpenACS packages
An OpenACS package extends your website and lets it do things it
wasn't able to do before. You can have a weblog, a forums, a
calendar, or even do sophisticated project-management via your
website.
After you've installed OpenACS, you can congratulate yourself
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.5 -r1.10.2.6
--- openacs-4/packages/acs-core-docs/www/configuring-install-packages.html 1 Dec 2015 14:38:39 -0000 1.10.2.5
+++ openacs-4/packages/acs-core-docs/www/configuring-install-packages.html 9 Jun 2016 08:44:49 -0000 1.10.2.6
@@ -1,8 +1,8 @@
-
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
-
Installing OpenACS packages
An OpenACS package extends your website and lets it do
+
Installing OpenACS packages
An OpenACS package extends your website and lets it do
things it wasn't able to do before. You can have a weblog, a
forums, a calendar, or even do sophisticated project-management
via your website.
After you've installed OpenACS, you can congratulate
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.5 -r1.1.2.6
--- openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.adp 1 Dec 2015 14:38:39 -0000 1.1.2.5
+++ openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.adp 9 Jun 2016 08:44:49 -0000 1.1.2.6
@@ -16,7 +16,7 @@
OpenACS docs are written by the named authors, and may be edited by
OpenACS documentation staff.
-Mounting OpenACS packages
After you've installed your packages, you have to 'mount' them
+Mounting OpenACS packages
After you've installed your packages, you have to 'mount' them
in order to make them appear on your website.
Make sure you are logged in, and then click on the 'Admin' or
'Control Panel' link to get to the Site-Wide Administration page
(at /acs-admin). Click on the subsite you'd like the application to
Index: openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.html,v
diff -u -N -r1.10.2.5 -r1.10.2.6
--- openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.html 1 Dec 2015 14:38:39 -0000 1.10.2.5
+++ openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.html 9 Jun 2016 08:44:49 -0000 1.10.2.6
@@ -1,8 +1,8 @@
-
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
-
Mounting OpenACS packages
After you've installed your packages, you have to 'mount'
+
Mounting OpenACS packages
After you've installed your packages, you have to 'mount'
them in order to make them appear on your website.
Make sure you are logged in, and then click on the
'Admin' or 'Control Panel' link to get to the Site-Wide
Administration page (at /acs-admin). Click on the subsite you'd
Index: openacs-4/packages/acs-core-docs/www/configuring-new-site.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-new-site.html,v
diff -u -N -r1.15 -r1.15.2.1
--- openacs-4/packages/acs-core-docs/www/configuring-new-site.html 27 Oct 2014 16:39:17 -0000 1.15
+++ openacs-4/packages/acs-core-docs/www/configuring-new-site.html 9 Jun 2016 08:44:49 -0000 1.15.2.1
@@ -1,5 +1,5 @@
-
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
In this chapter, Configuring refers to making changes to a new OpenACS site through the web interface. In crude terms, these changes happen in the database, and are upgrade-safe. Customizing refers to changes that touch the file system, and require some planning if easy upgradability is to be maintained.
All OpenACS code is available anonymously. To get code
+Getting Started
All OpenACS code is available anonymously. To get code
anonymously, use the parameter -d:pserver:anonymous\@cvs.openacs.org:/cvsroot
immediately after cvs in a cvs
command to check out or export code.
If you are an OpenACS developer, you should check out code so
@@ -51,7 +51,7 @@
default. -q suppresses some
verbose output from commands. For example, it makes the output of
cvs up much easier to read.
-
Administrator Note: These are the steps to grant CVS commit
+
Administrator Note: These are the steps to grant CVS commit
rights to a user:
Create the user's account. On cvs.openacs.org:
sudo bash
@@ -68,7 +68,7 @@
-
Branimir suggests an additional level of abstraction. If you
+
Branimir suggests an additional level of abstraction. If you
put
If you are actively developing a non-core package, you should
+Checkout for Package Development
If you are actively developing a non-core package, you should
work from the latest core release branch. Currently this is
oacs-5-7. 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.
-Checkout for Core Development
If you are actively developing packages in the OpenACS Core,
+Checkout for Core Development
If you are actively developing packages in the OpenACS Core,
work from the HEAD branch. HEAD is used for active development of
the next version of core OpenACS. It may be very buggy; it may not
even install correctly. Do not use this branch for development of
@@ -107,7 +107,7 @@
developer account:
.LRN consists of a given version openacs core, plus a set of
+Checkout .LRN
.LRN consists of a given version openacs core, plus a set of
packages. These are collectively packages together to form a
distrubution of .LRN. F .LRN 2.0.0 sits on top of OpenACS 5.0.0.
.LRN also uses an OpenACS install.xml file during installation;
@@ -132,7 +132,7 @@
OpenACS CVS Concepts
-Modules
All OpenACS code resides within a single CVS module,
+Modules
All OpenACS code resides within a single CVS module,
openacs-4. (The openacs-4
directory contains code for all versions of OpenACS 4 and later,
and .LRN 1 and later.) Checking out this module retrieves all
@@ -169,7 +169,7 @@
module of the same name.
- Tags and Branches
Tags and Branches look similar in commands, but behave
+ Tags and Branches
Tags and Branches look similar in commands, but behave
differently. A tag is a fixed point on a branch. Check out a tag to
get a specific version of OpenACS. Check out a branch to get the
most current code for that major-minor version (e.g., 5.0.x or
@@ -412,7 +412,7 @@
- Informal Guidelines
Informal guidelines which may be obsolete in places and should
+ Informal Guidelines
Informal guidelines which may be obsolete in places and should
be reviewed:
By Joel Aufrecht with input from Jeff Davis, Branimir Dolicki, and Jade Rubick.
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
-
Using CVS with OpenACS
Getting Started
+
Using CVS with OpenACS
Getting Started
All OpenACS code is available anonymously. To get code
anonymously, use the parameter
-d:pserver:anonymous@cvs.openacs.org:/cvsroot immediately after cvs in a cvs command to check out or export code.
@@ -44,14 +44,14 @@
~/.cvsrc with the contents:
cvs -z6
cvs -q
-z6 speeds up cvs access over the network quite a bit by enabling compressed
- connection by default. -q suppresses some verbose output from commands. For example, it makes the output of cvs up much easier to read.
Administrator Note: These are the steps to grant CVS commit rights to a user:
Create the user's account. On cvs.openacs.org:
sudo bash
+ connection by default. -q suppresses some verbose output from commands. For example, it makes the output of cvs up much easier to read.
Administrator Note: These are the steps to grant CVS commit rights to a user:
Grant cvs access to the user account. On any machine, in a temporary directory:
cvs -d :ext:cvs.openacs.org:/cvsroot co CVSROOT
cd CVSROOT
-emacs avail
Add an avail line of the form:
avail|username|openacs-4
cvs commit -m "added commit on X for username" avail
Branimir suggests an additional level of abstraction. If you put
Host cvs-server
+emacs avail
Add an avail line of the form:
avail|username|openacs-4
cvs commit -m "added commit on X for username" avail
Branimir suggests an additional level of abstraction. If you put
Host cvs-server
HostName cvs.openacs.org
- User yournamehere
into your ~/.ssh/config file, then you can use -d :ext:cvs-server:/cvsroot instead of -d :ext:cvs.openacs.org:/cvsroot. You can then change the definition of cvs-server by changing one file instead of editing hundreds of CVSROOT/Repository files.
Checkout for Package Development
If you are actively developing a non-core package, you
+ User yournamehere
into your ~/.ssh/config file, then you can use -d :ext:cvs-server:/cvsroot instead of -d :ext:cvs.openacs.org:/cvsroot. You can then change the definition of cvs-server by changing one file instead of editing hundreds of CVSROOT/Repository files.
Checkout for Package Development
If you are actively developing a non-core package, you
should work from the latest core release branch. Currently this
is oacs-5-7. This ensures that you are working on top
of a stable OpenACS core, but still allows you to commit feature
@@ -66,13 +66,13 @@
Inventory and Package
maintainers and status for a list of available
packages and their current state.
-
Checkout for Core Development
If you are actively developing packages in the OpenACS
+
Checkout for Core Development
If you are actively developing packages in the OpenACS
Core, work from the HEAD branch. HEAD is used for active
development of the next version of core OpenACS. It may be very
buggy; it may not even install correctly. Do not use this branch for
development of non-core features unless your work depends on some
of the HEAD core work. To check out HEAD, omit the
- -r tag.
To check out HEAD for development, which requires an OpenACS developer account:
.LRN consists of a given version openacs core, plus a set of
packages. These are collectively packages together to form a
distrubution of .LRN. F .LRN 2.0.0 sits on top of OpenACS 5.0.0.
@@ -87,7 +87,7 @@
mv dotlrn/install.xml ..
Working with CVS
Once you have a checkout you can use some commands to track
what has changed since you checked out your copy. cvs -n update does not change any files, but reports which changes have been updated or locally modified, or are not present in CVS.
-
To update your files, use cvs update. This will merge changes from the repository with your local files. It has no effect on the cvs.openacs.org repository.
OpenACS CVS Concepts
Modules
+
To update your files, use cvs update. This will merge changes from the repository with your local files. It has no effect on the cvs.openacs.org repository.
OpenACS CVS Concepts
Modules
All OpenACS code resides within a single CVS module, openacs-4. (The openacs-4 directory contains code for all versions of OpenACS 4 and later, and .LRN 1 and later.) Checking out this module retrieves all openacs code of any type. For convenience, subsets of openacs-4 are repackaged as smaller modules.
acs-core contains only critical common
packages. It does not have any user applications, such as forums,
@@ -115,7 +115,7 @@
project-manager-all contains the packages required, in combination with acs-core, to run the project-manager package.
Each OpenACS package (i.e., directory in openacs-4/packages/) is also aliased as a module of the same name.
-
+
Tags and Branches
Tags and Branches look similar in commands, but behave differently. A tag is a fixed point on a branch. Check out
@@ -315,7 +315,7 @@
flag which defaults to no-effect wouldn't require a TIP. Added a
new mandatory flag to an existing function would require a
TIP.
-
+
Informal Guidelines
Informal guidelines which may be obsolete in places and should be reviewed:
Index: openacs-4/packages/acs-core-docs/www/cvs-tips.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/cvs-tips.adp,v
diff -u -N -r1.1.2.5 -r1.1.2.6
--- openacs-4/packages/acs-core-docs/www/cvs-tips.adp 1 Dec 2015 14:38:40 -0000 1.1.2.5
+++ openacs-4/packages/acs-core-docs/www/cvs-tips.adp 9 Jun 2016 08:44:49 -0000 1.1.2.6
@@ -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
+the Service to CVS - OPTIONAL. These steps
take an existing OpenACS directory and add it to a CVS
repository.
Index: openacs-4/packages/acs-core-docs/www/cvs-tips.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/cvs-tips.html,v
diff -u -N -r1.34.2.5 -r1.34.2.6
--- openacs-4/packages/acs-core-docs/www/cvs-tips.html 1 Dec 2015 14:38:40 -0000 1.34.2.5
+++ openacs-4/packages/acs-core-docs/www/cvs-tips.html 9 Jun 2016 08:44:49 -0000 1.34.2.6
@@ -1,8 +1,8 @@
-Appendix D. Using CVS with an OpenACS Site
Why bother with bind variables at all - why not just write the
Tcl statement above like this:
-db_dml presentation_delete {
- delete from wp_presentations where presentation_id = :some_presentation_id
-}
+db_dml presentation_delete "
+ delete from wp_presentations where presentation_id = $some_presentation_id
+"
(Note the use of double-quotes to allow the variable reference
to $some_presentation_id to be
@@ -498,7 +498,7 @@
insert photos(photo_id, image, thumbnail_image)
values(photo_id_seq.nextval, empty_blob(), empty_blob())
returning image, thumbnail_image into :1, :2
- } -blob_files [list "/var/tmp/the_photo" "/var/tmp/the_thumbnail"]
+ } -blob_files [list "/var/tmp/the_photo" "/var/tmp/the_thumbnail"]
This inserts a new row into the photos table, with the contents of the
files /var/tmp/the_photo and
@@ -541,12 +541,12 @@
proc replace_the_foo { col } {
db_transaction {
db_dml delete {delete from foo}
- db_dml insert {insert into foo(col) values(:col)}
+ db_dml insert {insert into foo(col) values($col)}
}
}
proc print_the_foo {} {
- doc_body_append "foo is [db_string get_foo {select col from foo}]<br>\n"
+ doc_body_append "foo is [db_string "select col from foo"]<br>\n"
}
replace_the_foo 8
@@ -699,8 +699,8 @@
script and should never be referenced directly by user code.
Returns the current rdbms type and version.
This inserts a new row into the photos table, with the contents
@@ -508,19 +508,17 @@
transactions. It is possible to specify an optional on_error
code block that will be executed if some code in code_block throws
an exception. The variable errmsg will be bound in that scope.
-If there is no on_error code, any
- errors will be propagated.
-
Example:
+If there is no on_error code, any errors will be propagated.
Example:
proc replace_the_foo { col } {
db_transaction {
db_dml delete {delete from foo}
- db_dml insert {insert into foo(col) values(:col)}
+ db_dml insert {insert into foo(col) values($col)}
}
}
proc print_the_foo {} {
- doc_body_append "foo is [db_string get_foo {select col from foo}]<br>\n"
+ doc_body_append "foo is [db_string "select col from foo"]<br>\n"
}
replace_the_foo 8
Index: openacs-4/packages/acs-core-docs/www/db-api.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/db-api.adp,v
diff -u -N -r1.1.2.4 -r1.1.2.5
--- openacs-4/packages/acs-core-docs/www/db-api.adp 2 Jan 2016 21:55:21 -0000 1.1.2.4
+++ openacs-4/packages/acs-core-docs/www/db-api.adp 9 Jun 2016 08:44:49 -0000 1.1.2.5
@@ -214,7 +214,7 @@
set bar ""
set baz ""
-db_dml foo_create {insert into foo(bar, baz) values(:bar, :baz)}
+db_dml foo_create "insert into foo(bar, baz) values(:bar, :baz)"
#
# the values of the "bar" and "baz" columns in the new row are both
# null, because Oracle has coerced the empty string (even for the
@@ -232,7 +232,7 @@
set bar [db_null]
set baz [db_null]
-db_dml foo_create {insert into foo(bar, baz) values(:bar, :baz)}
+db_dml foo_create "insert into foo(bar, baz) values(:bar, :baz)"
#
# sets the values for both the "bar" and "baz" columns to null
@@ -509,12 +509,12 @@
proc replace_the_foo { col } {
db_transaction {
db_dml delete {delete from foo}
- db_dml insert {insert into foo(col) values($col)}
+ db_dml insert {insert into foo(col) values(:col)}
}
}
proc print_the_foo {} {
- doc_body_append "foo is [db_string get_foo {select col from foo}]<br>\n"
+ doc_body_append "foo is [db_string "select col from foo"]<br>\n"
}
replace_the_foo 8
@@ -585,7 +585,7 @@
db_dml unused {delete from foo}
db_dml unused {insert into foo(baz) values(:baz)}
-set n_rows [db_string unused {select count(*) from foo where baz is null}]
+set n_rows [db_string unused "select count(*) from foo where baz is null"]
#
# $n_rows is 1; in effect, the "baz is null" criterion is matching
# the empty string we just inserted (because of Oracle's coercion
@@ -600,8 +600,8 @@
By Pete Su and Jon Salz. Modified by Roberto Mello.
Overview
One of OpenACS's great strengths is that code written for it is
@@ -526,11 +526,11 @@
insert. Only one of -blobs, -clobs,
-blob_files, and -clob_files may be provided.
This inserts a new row into the photos table, with the contents
@@ -573,7 +573,7 @@
}
proc print_the_foo {} {
- doc_body_append "foo is [db_string get_foo {select col from foo}]<br>\n"
+ doc_body_append "foo is [db_string "select col from foo"]<br>\n"
}
replace_the_foo 8
@@ -638,10 +638,9 @@
# Clean out the foo table
#
-db_dml unused "delete from foo"
+db_dml unused {delete from foo}
+db_dml unused {insert into foo(baz) values(:baz)}
-db_dml unused "insert into foo(baz) values('$baz')"
-
set n_rows [db_string unused "select count(*) from foo where baz is null"]
#
# $n_rows is 1; in effect, the "baz is null" criterion is matching
@@ -653,7 +652,7 @@
null by writing:
-db_dml foo_insert "insert into foo(baz) values(:1)" {[db_nullify_empty_string $baz]}
+db_dml foo_insert {insert into foo(baz) values(:1)} {[db_nullify_empty_string $baz]}
Index: openacs-4/packages/acs-core-docs/www/docbook-primer.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/docbook-primer.adp,v
diff -u -N -r1.1.2.6 -r1.1.2.7
--- openacs-4/packages/acs-core-docs/www/docbook-primer.adp 1 Dec 2015 14:38:40 -0000 1.1.2.6
+++ openacs-4/packages/acs-core-docs/www/docbook-primer.adp 9 Jun 2016 08:44:49 -0000 1.1.2.7
@@ -404,7 +404,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
@@ -445,7 +445,7 @@
of elements and use more exotic features in your documents. The
list is made up of SGML-elements but basically the same elements
are valid in the XML DTD as long as
-you remember to:
+you remember to:
Always close your tags with corresponding end-tags and to
not use other tag
@@ -486,7 +486,7 @@
Document Structure
The documentation for each package will make up a little "book"
-that is structured like this - examples are emphasized:
+that is structured like this - examples are emphasized:
book : Docs for one package - templating
|
@@ -511,11 +511,11 @@
Headlines, Sections
- Given that your job starts at the
+ Given that your job starts at the
sect1-level, all your documents
should open with a <sect1>-tag
and end with the corresponding </sect1>.
- You need to feed every <sect1> two attributes. The first
+ You need to feed every <sect1> two attributes. The first
attribute, id, is standard and
can be used with all elements. It comes in very handy when
interlinking between documents (more about this when talking about
@@ -524,7 +524,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:
@@ -535,7 +535,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
@@ -545,7 +545,7 @@
Code
- For displaying a snippet of code, a
+ For displaying a snippet of code, a
filename or anything else you just want to appear as a part of a
sentence, we use <computeroutput> and <code> tags. These
replace the HTML-tag <code> tag,
@@ -559,15 +559,15 @@
Links
- Linking falls into two different
+ Linking falls into two different
categories: inside the book you're making and outside:
1. Inside
linking, cross-referencing other parts of your
book
By having unique id's you
can cross-reference any part of your book with a simple tag,
regardless of where that part is.
-Check out how I link to a subsection of
+Check out how I link to a subsection of
the Developer's Guide:
Put this in your XML:
- Find information about creating a package in
<xref linkend="packages-making-a-package"></xref>.
@@ -590,7 +590,7 @@
2. Linking
outside the documentation
- If you're hyper-linking out of the
+ If you're hyper-linking out of the
documentation, it works almost the same way as HTML - the tag is
just a little different (<ulink>):
<ulink url="http://www.oracle.com/">Oracle Corporation</ulink>
@@ -609,7 +609,7 @@
Note: The graphics guidelines are
not written in stone. Use another valid approach if it works better
for you.
By Claus Rasmussen, with additions by Roberto Mello, Vinod Kurup, and the OpenACS Community
Overview of OpenACS Documentation
OpenACS™ is a powerful system with
@@ -578,7 +578,7 @@
DTD. The remaining discussion is about publishing using
Docbook.
-
+
is a publishing standard based on XML with
similar goals to the OpenACS Documentation project. Some specific reasons why we are using DocBook:
@@ -641,7 +641,7 @@
list of elements and use more exotic features in your
documents. The list is made up of SGML-elements but basically
the same elements are valid in the XML DTD as long as you remember to:
-
+
Always close your tags with corresponding end-tags and to
not use other tag minimization
@@ -690,7 +690,7 @@
The documentation for each package will make up a little "book" that is structured like this
- examples are emphasized:
-
+
book : Docs for one package - templating
@@ -714,20 +714,20 @@
sources of these DocBook documents
to get an idea of how they are tied together.
Headlines, Sections
-
+
Given that your job starts at the sect1-level, all your documents should open with a
<sect1>-tag and end
with the corresponding </sect1>.
-
+
You need to feed every <sect1> two attributes. The first attribute,
id, is standard and can be used with all elements. It comes in very
handy when interlinking between documents (more about this when talking about links in 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.
Code
-
+
For displaying a snippet of code, a filename or anything else you just want to appear as a part of
a sentence, we use
<computeroutput>
@@ -769,12 +769,12 @@
tag around text that has been wrapped by combinations of <computeroutput>
and <userinput>
Links
-
+
Linking falls into two different categories: inside the book you're making and outside:
1. Inside linking, cross-referencing other parts of your book
By having unique id's you can cross-reference any part of your book
with a simple tag, regardless of where that part is.
-
Check out how I link to a subsection of the Developer's Guide:
Put this in your XML:
+
Check out how I link to a subsection of the Developer's Guide:
Put this in your XML:
- Find information about creating a package in
<xref linkend="packages-making-a-package"></xref>.
And the output is:
@@ -798,7 +798,7 @@
packages-looks, the
parser will try its best to explain where the link takes you.
2. Linking outside the documentation
-
+
If you're hyper-linking out of the documentation, it works almost the same way as HTML - the tag is just
a little different
@@ -819,7 +819,7 @@
for you.
-
+
To insert a graphic we use the elements
<mediaobject>,
<imageobject>,
@@ -845,7 +845,7 @@
Put your graphics in a separate directory ("images") and link to them
only with relative paths.
Lists
-
+
Here's how you make the DocBook equivalent of the three usual HTML-lists:
1. How to make an <ul>
Making an unordered list is pretty much like doing the same thing in HTML - if you close your <li>, that is. The only differences are that each list item has to be wrapped in something more, such as
@@ -890,7 +890,7 @@
</variablelist>
Tables
-
+
DocBook supports several types of tables, but in most cases, the
<informaltable>
is enough:
@@ -922,12 +922,12 @@
</informaltable>
With our current XSL-style-sheet, the output of the markup above will be a simple HTML-table:
-
a1
b1
c1
a2
b2
c2
a3
b3
c3
+
a1
b1
c1
a2
b2
c2
a3
b3
c3
If you want cells to span more than one row or column, it gets a bit more complicated - check out
<table>
for an example.
Emphasis
-
+
Our documentation uses two flavors of emphasis - italics and bold type. DocBook uses one -
<emphasis>.
Index: openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.adp,v
diff -u -N -r1.1.2.3 -r1.1.2.4
--- openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.adp 28 Sep 2015 07:54:14 -0000 1.1.2.3
+++ openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.adp 9 Jun 2016 08:44:49 -0000 1.1.2.4
@@ -32,7 +32,7 @@
with the following abbreviations taken from Oracle Docs at
http://oradoc.photo.net/ora81/DOC/server.815/a67779/ch4e.htm#8953.
Note that we shortened all of the constraint abbrevations to two
-characters to save room.
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
The Big Picture
@@ -18,7 +18,7 @@
http://oradoc.photo.net/ora81/DOC/server.815/a67779/ch4e.htm#8953.
Note that we shortened all of the constraint abbrevations to
two characters to save room.
-
In reality, this won't be possible because of the character limitation on
Index: openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.html,v
diff -u -N -r1.48.2.5 -r1.48.2.6
--- openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.html 1 Dec 2015 14:38:41 -0000 1.48.2.5
+++ openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.html 9 Jun 2016 08:44:49 -0000 1.48.2.6
@@ -1,5 +1,5 @@
-
OpenACS docs are written by the named authors, and may be edited
Index: openacs-4/packages/acs-core-docs/www/eng-standards-versioning.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-versioning.html,v
diff -u -N -r1.51.2.5 -r1.51.2.6
--- openacs-4/packages/acs-core-docs/www/eng-standards-versioning.html 1 Dec 2015 14:38:41 -0000 1.51.2.5
+++ openacs-4/packages/acs-core-docs/www/eng-standards-versioning.html 9 Jun 2016 08:44:49 -0000 1.51.2.6
@@ -1,5 +1,5 @@
-Release Version Numbering
People have plenty of usernames and passwords already, we don't
+Vision
People have plenty of usernames and passwords already, we don't
want them to have yet another. We want people to be able to log in
to OpenACS with the same password they use to log in to any other
system.
Besides, administrators have better things to do than create
@@ -73,7 +73,7 @@
People have plenty of usernames and passwords already, we
don't want them to have yet another. We want people to be able to
log in to OpenACS with the same password they use to log in to any
other system.
Besides, administrators have better things to do than create
@@ -45,7 +45,7 @@
only one implementation of the authentication API, namly the one
included in OpenACS Core.
Authentication Driver API: The service contract which
authentication drivers implement.
Conceptual Pictures
Authentication:
-
Account Management (NO PICTURE YET)
Batch Synchronization (NO PICTURE YET)
Requirements
New API
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
Login
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)
Requirements
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
Login
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
@@ -368,12 +368,11 @@
in Python can be found in the
exUserFolder
module for Zope
-(documentation).
Feedback
We'd really appreciate feedback on this proposal. Please
-follow up at
+(documentation).
NOTE: Some of the sections of this template may not apply to your
package, e.g. there may be no user-visible UI elements for a component
of the OpenACS Core. Furthermore, it may be easier in some circumstances
@@ -136,4 +136,4 @@
System creator
System owner
Documentation author
Revision History
The revision history table below is for this template - modify it
as needed for your actual design document.
-
Document Revision #
Action Taken, Notes
When?
By Whom?
0.3
Edited further, incorporated feedback from Michael Yoon
Using Form Builder: building html forms dynamically
Overview
($Id$)
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
OpenACS has a form manager called ad_form. Ad_form has an
adaptable UI. Error handling includes inline error reporting, and is customizable.
However, ad_form can be tricky to use. In addition to this document,
the ad_form api
- documentation is helpful.
Multi-part Elements
Some elements have more than one choice, or can submit more than one value.
SELECT elements
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.
Multi-part Elements
Some elements have more than one choice, or can submit more than one value.
SELECT elements
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
}
Tips for form widgets
Here are some tips for dealing with some of the form widgets:
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
Introduction
Almost all database-backed websites have users, and need to model the
@@ -221,4 +221,4 @@
where clause, whatever mechanism is used to check membership in SQL
should be fairly small and simple.
Requirements: User Interface
The user interface is a set of HTML pages that are used to drive the
underlying API. The user interface may provide the following functions:
200.0 Create a party
210.0 View the attributes of a party
220.0 Update the attributes of a party
240.0 Delete a party
250.0 Add a party to a group
260.0 Remove a party from a group
270.0 Perform the membership and composition checks
- outlined in 130.x to 165.x
Revision History
Document Revision #
Action Taken, Notes
When?
By Whom?
0.1
Creation
08/16/2000
Rafael Schloming
0.2
Initial revision
08/19/2000
Mark Thomas
0.3
Edited and reviewed, conforms to requirements template
On the administration page, click Parameters link.
Change the parameter IndexRedirectUrl to be the URI of the
@@ -35,7 +35,7 @@
-How do I put custom functionality on front
+How do I put custom functionality on front
page of a new site?
Every page within an OpenACS site is part of a subsiteMore information). The home
page of the entire site is the front page is a special, default
instance of a subsite, served from /var/lib/aolserver/$OPENACS_SERVICE_NAME/www. If an
@@ -50,7 +50,7 @@
-How do I change the site-wide style?
Almost all pages on an OpenACS site use ACS Templating, and so
+How do I change the site-wide style?
Almost all pages on an OpenACS site use ACS Templating, and so
their appearance is driven by a layer of different files. Let's
examine how this works:
@@ -74,12 +74,12 @@
navigation "meta" elements such as Translator widgets and Admin
widgets.
-
Figure 4.1. Site
+
Figure 4.1. Site
Templates
-How do I diagnose a permissions
+How do I diagnose a permissions
problem?
@@ -123,12 +123,12 @@
To grant permissions on a package, start at the site map. Find the event
package and click "Set permissions".
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 weblogger/. Note the trailing slash.
How do I put custom functionality on front page of a new site?
Every page within an OpenACS site is part of a 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 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:
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 weblogger/. Note the trailing slash.
How do I put custom functionality on front page of a new site?
Every page within an OpenACS site is part of a 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 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:
Edit the new index.adp to change the text; you shouldn't need to edit index.tcl unless you are adding new functionality.
How do I change the site-wide style?
Almost all pages on an OpenACS site use ACS Templating, and so their appearance is driven by a layer of different files. Let's examine how this works:
A templated page uses an ADP/Tcl pair. The first line in the ADP file is usually:
<master>
If it appears exactly like this, without any arguments, the template processer uses default-master for that subsite. For pages in /var/lib/aolserver/$OPENACS_SERVICE_NAME/www, this is /var/lib/aolserver/$OPENACS_SERVICE_NAME/www/default-master.adp and the associated .tcl file.
-
The default-master is itself a normal ADP page. It draws the subsite navigation elements and invokes site-master (/var/lib/aolserver/$OPENACS_SERVICE_NAME/www/site-master.adp and .tcl)
The site-master draws site-wide navigation elements and invokes blank-master (/var/lib/aolserver/$OPENACS_SERVICE_NAME/www/blank-master.adp and .tcl).
Blank-master does HTML housekeeping and provides a framework for special sitewide navigation "meta" elements such as Translator widgets and Admin widgets.
Figure 4.1. Site Templates
How do I diagnose a permissions problem?
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.
Figure 4.1. Site Templates
How do I diagnose a permissions problem?
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
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".
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
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".
For multilingual websites we recommend using the UTF8
charset. In order for AOLserver to use utf8 you need to set
the config parameters OutputCharset and
@@ -72,7 +72,7 @@
test. If you don't provide the package_key argument then all
packages with catalog files will be checked.
The script will run its checks primarily on en_US xml catalog files.
-
Avoiding common i18n mistakes
Replace complicated keys with longer, simpler keys. When writing in one language, it is possible to create clever code to make correct text. In English, for example, you can put an if command at the end of a word which adds "s" if a count is anything but 1. This pluralizes nouns correctly based on the data. However, it is confusing to read and, when internationalized, may result in message keys that are both confusing and impossible to set correctly in some languages. While internationalizing, watch out that the automate converter does not create such keys. Also, refactor compound text as you encounter it.
The automated system can easily get confused by tags within message texts, so that it tries to create two or three message keys for one long string with a tag in the middle. In these cases, uncheck those keys during the conversion and then edit the files directly. For example, this code:
<p class="form-help-text"><b>Invitations</b> are sent,
+
Avoiding common i18n mistakes
Replace complicated keys with longer, simpler keys. When writing in one language, it is possible to create clever code to make correct text. In English, for example, you can put an if command at the end of a word which adds "s" if a count is anything but 1. This pluralizes nouns correctly based on the data. However, it is confusing to read and, when internationalized, may result in message keys that are both confusing and impossible to set correctly in some languages. While internationalizing, watch out that the automate converter does not create such keys. Also, refactor compound text as you encounter it.
The automated system can easily get confused by tags within message texts, so that it tries to create two or three message keys for one long string with a tag in the middle. In these cases, uncheck those keys during the conversion and then edit the files directly. For example, this code:
<p class="form-help-text"><b>Invitations</b> are sent,
when this wizard is completed and casting begins.</p>
has a bold tag which confuses the converter into thinking there are two message keys for the text beginning "Invitations ..." where there should be one:
Instead, we cancel those keys, edit the file manually, and put in a single temporary message tag:
<p class="form-help-text"> <#Invitations_are_sent <b>Invitations</b> are sent,
when this wizard is completed and casting begins.#>
</p>
Complex if statements may produce convoluted message keys that are very hard to localize. Rewrite these if statements. For example:
Select which case <if @simulation.casting_type@ eq "open">and
@@ -95,41 +95,41 @@
be automatically assigned to a case when the simulation
begins.
-</else>
Another example, where bugs are concatenated with a number:
<if @components.view_bugs_url@ not nil>
- <a href="@components.view_bugs_url@" title="View the @pretty_names.bugs@ for this component">
+</else>
Another example, where bugs are concatenated with a number:
<if @components.view_bugs_url@ not nil>
+ <a href="@components.view_bugs_url@" title="View the @pretty_names.bugs@ for this component">
</if>
- @components.num_bugs@
- <if @components.num_bugs@ eq 1>
- @pretty_names.bug@
+ @components.num_bugs@
+ <if @components.num_bugs@ eq 1>
+ @pretty_names.bug@
</if>
<else>
- @pretty_names.bugs@
+ @pretty_names.bugs@
</else>
- <if @components.view_bugs_url@ not nil>
+ <if @components.view_bugs_url@ not nil>
</a>
</if>
-<if @components.view_bugs_url@ not nil>
-<a href="@components.view_bugs_url@" title="#bug-tracker.View_the_bug_fo_component#">
+<if @components.view_bugs_url@ not nil>
+<a href="@components.view_bugs_url@" title="#bug-tracker.View_the_bug_fo_component#">
</if>
-@components.num_bugs@
-<if @components.num_bugs@ eq 1>
-@pretty_names.bug@
+@components.num_bugs@
+<if @components.num_bugs@ eq 1>
+@pretty_names.bug@
</if>
<else>
-@pretty_names.bugs@
+@pretty_names.bugs@
</else>
-<if @components.view_bugs_url@ not nil>
+<if @components.view_bugs_url@ not nil>
</a>
</if>
-
It would probably be better to do this as something like:
Don't combine keys in display text. Converting a phrase from one language to another is usually more complicated than simply replacing each word with an equivalent. When several keys are concatenated, the resulting word order will not be correct for every language. Different languages may use expressions or idioms that don't match the phrase key-for-key. Create complete, distinct keys instead of building text from several keys. For example:
Original code:
multirow append links "New [bug_tracker::conn Bug]"
Avoid unnecessary duplicate keys. When phrases are exactly the same in several places, use a single key.
For common words such as
Yes and No, you can use a library of keys at acs-kernel.
For example, instead of using
Index: openacs-4/packages/acs-core-docs/www/i18n-design.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-design.html,v
diff -u -N -r1.16 -r1.16.2.1
--- openacs-4/packages/acs-core-docs/www/i18n-design.html 27 Oct 2014 16:39:19 -0000 1.16
+++ openacs-4/packages/acs-core-docs/www/i18n-design.html 9 Jun 2016 08:44:49 -0000 1.16.2.1
@@ -1,3 +1,3 @@
-
User locale is a property of ad_conn, ad_conn locale. The request processor sets this by calling lang::conn::locale, which looks for the following in order of precedence:
Use user preference for this package (stored in ad_locale_user_prefs)
Use system preference for the package (stored in apm_packages)
Use user's general preference (stored in user_preferences)
Use Browser header (Accept-Language HTTP header)
Use system locale (an APM parameter for acs_lang)
default to en_US
For ADP pages, message key lookup occurs in the templating engine. For Tcl pages, message key lookup happens with the _ function. In both cases, if the requested locale is not found but a locale which is the default for the language which matches your locale's language is
+
User locale is a property of ad_conn, ad_conn locale. The request processor sets this by calling lang::conn::locale, which looks for the following in order of precedence:
Use user preference for this package (stored in ad_locale_user_prefs)
Use system preference for the package (stored in apm_packages)
Use user's general preference (stored in user_preferences)
Use Browser header (Accept-Language HTTP header)
Use system locale (an APM parameter for acs_lang)
default to en_US
For ADP pages, message key lookup occurs in the templating engine. For Tcl pages, message key lookup happens with the _ function. In both cases, if the requested locale is not found but a locale which is the default for the language which matches your locale's language is
found, then that locale is offered instead.
The advantage of the short syntax is that it's short. It's as
-simple as inserting the value of a variable. Example: #forum.title#
+simple as inserting the value of a variable. Example:
+<span>#</span>forum.title#
The verbose:
@@ -209,23 +210,25 @@
use message keys using the short notation above, i.e. #package_key.message_key#.
In order to avoid clashes with other uses of the hash character,
you need to tell the APM that the parameter value needs to be
localized when retrieving it. You do that by saying: parameter::get -localize.
Here are a couple of examples. Say we have the following two
-parameters, taken directly from the dotlrn package.
+parameters, taken directly from the dotlrn package.