Commit 93f202e0 authored by Frank Bergmann's avatar Frank Bergmann

- OpenACS 5.9

parent 53766c96
......@@ -2,24 +2,24 @@
<!-- Generated by the OpenACS Package Manager -->
<package key="acs-core-docs" url="http://openacs.org/repository/apm/packages/acs-core-docs/" type="apm_service">
<package-name>Documentation</package-name>
<pretty-plural>Documentation</pretty-plural>
<package-name>ACS Core Documentation</package-name>
<pretty-plural>ACS Core Documentation</pretty-plural>
<initial-install-p>t</initial-install-p>
<singleton-p>t</singleton-p>
<version name="5.10.0d1" url="http://openacs.org/repository/download/apm/acs-core-docs-5.10.0d1.apm">
<version name="5.9.0" url="http://openacs.org/repository/download/apm/acs-core-docs-5.9.0.apm">
<owner url="mailto:docs@openacs.org">OpenACS Documentation Team</owner>
<summary>Documentation for the OpenACS Core.</summary>
<release-date>2013-09-08</release-date>
<release-date>2015-10-04</release-date>
<vendor url="http://openacs.org">OpenACS</vendor>
<license url="http://www.gnu.org/copyleft/gpl.html">GPL</license>
<maturity>3</maturity>
<description format="text/html">Static HTML documentation for the OpenACS core (includes the DocBook sources).
</description>
<provides url="acs-core-docs" version="5.10.0d1"/>
<requires url="acs-kernel" version="5.10.0d1"/>
<requires url="acs-tcl" version="5.10.0d1"/>
<provides url="acs-core-docs" version="5.9.0"/>
<requires url="acs-kernel" version="5.9.0"/>
<requires url="acs-tcl" version="5.9.0"/>
<callbacks>
</callbacks>
......
......@@ -44,3 +44,9 @@ ad_proc -public core_docs_uninstalled_packages {} {
} {
return [util_memoize core_docs_uninstalled_packages_internal]
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
This diff is collapsed.
......@@ -6,7 +6,7 @@
oracle, while easy to set up, are far from the best solution).
</p><p>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).</p><p>
</p><div class="figure"><a name="idp140717553999872"></a><p class="title"><b>Figure 8.1. Backup and Recovery Strategy</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/backup.png" align="middle" alt="Backup and Recovery Strategy"></div></div></div><p><br class="figure-break">
</p><div class="figure"><a name="idp140400238889792"></a><p class="title"><b>Figure 8.1. Backup and Recovery Strategy</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/backup.png" align="middle" alt="Backup and Recovery Strategy"></div></div></div><p><br class="figure-break">
</p>
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
......
......@@ -2,7 +2,7 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Configuring an OpenACS package</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="configuring-new-site.html" title="Chapter 4. Configuring a new OpenACS Site"><link rel="previous" href="configuring-mounting-packages.html" title="Mounting OpenACS packages"><link rel="next" href="configuring-configuring-permissions.html" title="Setting Permissions on an OpenACS package"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="configuring-mounting-packages.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Configuring a new OpenACS Site</th><td width="20%" align="right"> <a accesskey="n" href="configuring-configuring-permissions.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="configuring-configuring-packages"></a>Configuring an OpenACS package</h2></div></div></div><div class="authorblurb"><p>by <a class="ulink" href="mailto:jade@rubick.com" target="_top">Jade Rubick</a></p>
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
</div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140717552902256"></a>Configuring an OpenACS package</h3></div></div></div><p>After you've installed and mounted your package, you can
</div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140400237553440"></a>Configuring an OpenACS package</h3></div></div></div><p>After you've installed and mounted your package, you can
configure each instance to act as you would like. </p><p>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'
......
......@@ -2,7 +2,7 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Setting Permissions on an OpenACS package</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="configuring-new-site.html" title="Chapter 4. Configuring a new OpenACS Site"><link rel="previous" href="configuring-configuring-packages.html" title="Configuring an OpenACS package"><link rel="next" href="how-do-I.html" title="How Do I?"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="configuring-configuring-packages.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Configuring a new OpenACS Site</th><td width="20%" align="right"> <a accesskey="n" href="how-do-I.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="configuring-configuring-permissions"></a>Setting Permissions on an OpenACS package</h2></div></div></div><div class="authorblurb"><p>by <a class="ulink" href="mailto:jade@rubick.com" target="_top">Jade Rubick</a></p>
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
</div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140717552906272"></a>Setting Permission on an OpenACS package</h3></div></div></div><p>After you've installed and mounted your package, you can
</div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140400236096832"></a>Setting Permission on an OpenACS package</h3></div></div></div><p>After you've installed and mounted your package, you can
configure each instance to act as you would like. </p><p>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'
......
......@@ -2,7 +2,7 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Installing OpenACS packages</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="configuring-new-site.html" title="Chapter 4. Configuring a new OpenACS Site"><link rel="previous" href="configuring-new-site.html" title="Chapter 4. Configuring a new OpenACS Site"><link rel="next" href="configuring-mounting-packages.html" title="Mounting OpenACS packages"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="configuring-new-site.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Configuring a new OpenACS Site</th><td width="20%" align="right"> <a accesskey="n" href="configuring-mounting-packages.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="configuring-install-packages"></a>Installing OpenACS packages</h2></div></div></div><div class="authorblurb"><p>by <a class="ulink" href="mailto:jade@rubick.com" target="_top">Jade Rubick</a></p>
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
</div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140717553836480"></a>Installing OpenACS packages</h3></div></div></div><p>An OpenACS package extends your website and lets it do
</div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140400236636944"></a>Installing OpenACS packages</h3></div></div></div><p>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.</p><p>After you've installed OpenACS, you can congratulate
......
......@@ -2,7 +2,7 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Mounting OpenACS packages</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="configuring-new-site.html" title="Chapter 4. Configuring a new OpenACS Site"><link rel="previous" href="configuring-install-packages.html" title="Installing OpenACS packages"><link rel="next" href="configuring-configuring-packages.html" title="Configuring an OpenACS package"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="configuring-install-packages.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Configuring a new OpenACS Site</th><td width="20%" align="right"> <a accesskey="n" href="configuring-configuring-packages.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="configuring-mounting-packages"></a>Mounting OpenACS packages</h2></div></div></div><div class="authorblurb"><p>by <a class="ulink" href="mailto:jade@rubick.com" target="_top">Jade Rubick</a></p>
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
</div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140717555999056"></a>Mounting OpenACS packages</h3></div></div></div><p>After you've installed your packages, you have to 'mount'
</div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140400236054144"></a>Mounting OpenACS packages</h3></div></div></div><p>After you've installed your packages, you have to 'mount'
them in order to make them appear on your website.</p><p>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
......
......@@ -6,7 +6,7 @@
</p>
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
</div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="using-cvs-with-openacs"></a>Using CVS with OpenACS</h3></div></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140717577001040"></a>Getting Started</h4></div></div></div><p>
</div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="using-cvs-with-openacs"></a>Using CVS with OpenACS</h3></div></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140400239493344"></a>Getting Started</h4></div></div></div><p>
All OpenACS code is available anonymously. To get code
anonymously, use the parameter
<code class="computeroutput">-d:pserver:anonymous@cvs.openacs.org:/cvsroot</code> immediately after <code class="computeroutput">cvs</code> in a cvs command to check out or export code.
......@@ -51,7 +51,7 @@ cvs -q</span></span></pre><p><code class="computeroutput">-z6</code> speeds up c
cd CVSROOT
emacs avail</span></span></pre><p>Add an avail line of the form:</p><pre class="programlisting">avail|<span class="replaceable"><span class="replaceable">username</span></span>|openacs-4</pre><pre class="screen"><span class="action"><span class="action">cvs commit -m "added commit on X for username" avail</span></span></pre></li></ol></div></div><div class="sidebar"><div class="titlepage"></div><p>Branimir suggests an additional level of abstraction. If you put</p><pre class="programlisting">Host cvs-server
HostName cvs.openacs.org
User <span class="replaceable"><span class="replaceable">yournamehere</span></span></pre><p>into your <code class="computeroutput">~/.ssh/config</code> file, then you can use <code class="computeroutput">-d :ext:cvs-server:/cvsroot</code> instead of <code class="computeroutput">-d :ext:cvs.openacs.org:/cvsroot</code>. You can then change the definition of <code class="computeroutput">cvs-server</code> by changing one file instead of editing hundreds of <code class="computeroutput">CVSROOT/Repository</code> files.</p></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140717566685024"></a>Checkout for Package Development</h4></div></div></div><p>If you are actively developing a non-core package, you
User <span class="replaceable"><span class="replaceable">yournamehere</span></span></pre><p>into your <code class="computeroutput">~/.ssh/config</code> file, then you can use <code class="computeroutput">-d :ext:cvs-server:/cvsroot</code> instead of <code class="computeroutput">-d :ext:cvs.openacs.org:/cvsroot</code>. You can then change the definition of <code class="computeroutput">cvs-server</code> by changing one file instead of editing hundreds of <code class="computeroutput">CVSROOT/Repository</code> files.</p></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140400238527856"></a>Checkout for Package Development</h4></div></div></div><p>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 @@ cvs up -d <span class="replaceable"><span class="replaceable">packagename</span>
Inventory</a> and <a class="ulink" href="http://openacs.org/projects/openacs/packages/" target="_top">Package
maintainers and status</a> for a list of available
packages and their current state.
</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140717566682048"></a>Checkout for Core Development</h4></div></div></div><p>If you are actively developing packages in the OpenACS
</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140400232839328"></a>Checkout for Core Development</h4></div></div></div><p>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
<code class="computeroutput">-r</code> tag.</p><p></p><p>To check out HEAD for development, which requires an OpenACS developer account:</p><pre class="screen"><span class="action"><span class="action">cvs -d:ext:cvs.openacs.org:/cvsroot checkout acs-core</span></span></pre><p>To check out HEAD anonymously:</p><pre class="screen"><span class="action"><span class="action">cvs -d:pserver:anonymous@cvs.openacs.org:/cvsroot checkout acs-core</span></span></pre></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140717566672320"></a>Checkout .LRN</h4></div></div></div><p>
<code class="computeroutput">-r</code> tag.</p><p></p><p>To check out HEAD for development, which requires an OpenACS developer account:</p><pre class="screen"><span class="action"><span class="action">cvs -d:ext:cvs.openacs.org:/cvsroot checkout acs-core</span></span></pre><p>To check out HEAD anonymously:</p><pre class="screen"><span class="action"><span class="action">cvs -d:pserver:anonymous@cvs.openacs.org:/cvsroot checkout acs-core</span></span></pre></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140400256015792"></a>Checkout .LRN</h4></div></div></div><p>
.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 @@ cvs -d :pserver:anonymous@cvs.openacs.org:/cvsroot checkout -r oacs-5-7 dotlrn-a
mv dotlrn/install.xml ..</span></span></pre></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="working-with-cvs"></a>Working with CVS</h4></div></div></div><p>
Once you have a checkout you can use some commands to track
what has changed since you checked out your copy. <code class="computeroutput">cvs -n update</code> does not change any files, but reports which changes have been updated or locally modified, or are not present in CVS.
</p><p>To update your files, use <code class="computeroutput">cvs update</code>. This will merge changes from the repository with your local files. It has no effect on the cvs.openacs.org repository.</p></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="openacs-cvs-concepts"></a>OpenACS CVS Concepts</h3></div></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140717566667904"></a>Modules</h4></div></div></div><p>
</p><p>To update your files, use <code class="computeroutput">cvs update</code>. This will merge changes from the repository with your local files. It has no effect on the cvs.openacs.org repository.</p></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="openacs-cvs-concepts"></a>OpenACS CVS Concepts</h3></div></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140400233018368"></a>Modules</h4></div></div></div><p>
All OpenACS code resides within a single CVS module, <code class="computeroutput">openacs-4</code>. (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 <code class="computeroutput">openacs-4</code> are repackaged as smaller modules.</p><p>
<code class="computeroutput">acs-core</code> contains only critical common
packages. It does not have any user applications, such as forums,
......@@ -115,7 +115,7 @@ ref-timezones search</pre><p>
<code class="computeroutput">project-manager-all</code> contains the packages required, in combination with acs-core, to run the project-manager package.
</p><p>
Each OpenACS package (i.e., directory in <code class="computeroutput">openacs-4/packages/</code>) is also aliased as a module of the same name.
</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140717566655856"></a>
</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140400256395728"></a>
Tags and Branches
</h4></div></div></div><p>
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 @@ cvs tag -b <span class="replaceable"><span class="replaceable">oacs-5-1</span></
flag which defaults to no-effect wouldn't require a TIP. Added a
new mandatory flag to an existing function would require a
TIP.
</p></li></ol></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140717566549520"></a>
</p></li></ol></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140400238139536"></a>
Informal Guidelines
</h4></div></div></div><p>
Informal guidelines which may be obsolete in places and should be reviewed:
......
......@@ -2,7 +2,7 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Appendix D. Using CVS with an OpenACS Site</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-package-dev.html" title="Part III. For OpenACS Package Developers"><link rel="previous" href="i18n-translators.html" title="Translator's Guide"><link rel="next" href="acs-plat-dev.html" title="Part IV. For OpenACS Platform Developers"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="i18n-translators.html">Prev</a> </td><th width="60%" align="center">Part III. For OpenACS Package Developers</th><td width="20%" align="right"> <a accesskey="n" href="acs-plat-dev.html">Next</a></td></tr></table><hr></div><div class="appendix"><div class="titlepage"><div><div><h2 class="title"><a name="cvs-tips"></a>Appendix D. Using CVS with an OpenACS Site</h2></div></div></div><div class="authorblurb"><p> By <a class="ulink" href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
</div><p><a name="cvs-service-import"></a><b>Add the Service to CVS - OPTIONAL. </b><a class="indexterm" name="idp140717566077744"></a>These steps take an existing OpenACS directory and add
</div><p><a name="cvs-service-import"></a><b>Add the Service to CVS - OPTIONAL. </b><a class="indexterm" name="idp140400226929072"></a>These steps take an existing OpenACS directory and add
it to a <a class="link" href="install-cvs.html" title="Initialize CVS (OPTIONAL)">CVS
repository</a>.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Create and set permissions on a subdirectory in the local cvs repository.</p><pre class="screen">[root root]# <strong class="userinput"><code>mkdir /cvsroot/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
[root root]#<strong class="userinput"><code> chown <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME.$OPENACS_SERVICE_NAME</span></span> /cvsroot/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
......
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 'http://www.w3.org/TR/html4/loose.dtd"'>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter 11. Development Reference</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-package-dev.html" title="Part III. For OpenACS Package Developers"><link rel="previous" href="tutorial-future-topics.html" title="Future Topics"><link rel="next" href="packages.html" title="OpenACS Packages"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-future-topics.html">Prev</a> </td><th width="60%" align="center">Part III. For OpenACS Package Developers</th><td width="20%" align="right"> <a accesskey="n" href="packages.html">Next</a></td></tr></table><hr></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a name="dev-guide"></a>Chapter 11. Development Reference</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="sect1"><a href="packages.html">OpenACS Packages</a></span></dt><dt><span class="sect1"><a href="objects.html">OpenACS Data Models and the Object System</a></span></dt><dt><span class="sect1"><a href="request-processor.html">The Request Processor</a></span></dt><dt><span class="sect1"><a href="db-api.html">The OpenACS Database Access API</a></span></dt><dt><span class="sect1"><a href="templates.html">Using Templates in OpenACS</a></span></dt><dt><span class="sect1"><a href="permissions.html">Groups, Context, Permissions</a></span></dt><dt><span class="sect1"><a href="subsites.html">Writing OpenACS Application Pages</a></span></dt><dt><span class="sect1"><a href="parties.html">Parties in OpenACS</a></span></dt><dt><span class="sect1"><a href="permissions-tediously-explained.html">OpenACS Permissions Tediously Explained</a></span></dt><dt><span class="sect1"><a href="object-identity.html">Object Identity</a></span></dt><dt><span class="sect1"><a href="programming-with-aolserver.html">Programming with AOLserver</a></span></dt></dl></div>Section missing</div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-future-topics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="packages.html">Next</a></td></tr><tr><td width="40%" align="left">Future Topics </td><td width="20%" align="center"><a accesskey="u" href="acs-package-dev.html">Up</a></td><td width="40%" align="right"> OpenACS Packages</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/dev-guide.html#comments">View comments on this page at openacs.org</a></center></body></html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter 11. Development Reference</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-package-dev.html" title="Part III. For OpenACS Package Developers"><link rel="previous" href="tutorial-future-topics.html" title="Future Topics"><link rel="next" href="packages.html" title="OpenACS Packages"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-future-topics.html">Prev</a> </td><th width="60%" align="center">Part III. For OpenACS Package Developers</th><td width="20%" align="right"> <a accesskey="n" href="packages.html">Next</a></td></tr></table><hr></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a name="dev-guide"></a>Chapter 11. Development Reference</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="sect1"><a href="packages.html">OpenACS Packages</a></span></dt><dt><span class="sect1"><a href="objects.html">OpenACS Data Models and the Object System</a></span></dt><dt><span class="sect1"><a href="request-processor.html">The Request Processor</a></span></dt><dt><span class="sect1"><a href="db-api.html">The OpenACS Database Access API</a></span></dt><dt><span class="sect1"><a href="templates.html">Using Templates in OpenACS</a></span></dt><dt><span class="sect1"><a href="permissions.html">Groups, Context, Permissions</a></span></dt><dt><span class="sect1"><a href="subsites.html">Writing OpenACS Application Pages</a></span></dt><dt><span class="sect1"><a href="parties.html">Parties in OpenACS</a></span></dt><dt><span class="sect1"><a href="permissions-tediously-explained.html">OpenACS Permissions Tediously Explained</a></span></dt><dt><span class="sect1"><a href="object-identity.html">Object Identity</a></span></dt><dt><span class="sect1"><a href="programming-with-aolserver.html">Programming with AOLserver</a></span></dt><dt><span class="sect1"><a href="form-builder.html">Using Form Builder: building html forms dynamically</a></span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-future-topics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="packages.html">Next</a></td></tr><tr><td width="40%" align="left">Future Topics </td><td width="20%" align="center"><a accesskey="u" href="acs-package-dev.html">Up</a></td><td width="40%" align="right"> OpenACS Packages</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/dev-guide.html#comments">View comments on this page at openacs.org</a></center></body></html>
......@@ -578,7 +578,7 @@
DTD</a>. The remaining discussion is about publishing using
Docbook.
</p><p>
<a class="indexterm" name="idp140717564941744"></a>
<a class="indexterm" name="idp140400260213392"></a>
is a publishing standard based on XML with
similar goals to the OpenACS Documentation project. Some specific reasons why we are using DocBook:
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
......@@ -641,7 +641,7 @@
list of elements</a> 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 <span class="strong"><strong>as long as you remember to</strong></span>:
<a class="indexterm" name="idp140717564959584"></a>
<a class="indexterm" name="idp140400260652096"></a>
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
Always close your tags with corresponding end-tags and to
<span class="strong"><strong>not use other tag minimization</strong></span>
......@@ -690,7 +690,7 @@
The documentation for each package will make up a little "book" that is structured like this
- examples are <span class="emphasis"><em>emphasized</em></span>:
<a class="indexterm" name="idp140717564978896"></a>
<a class="indexterm" name="idp140400258247536"></a>
</p><pre class="programlisting">
book : <span class="strong"><strong>Docs for one package</strong></span> - <span class="emphasis"><em>templating</em></span>
......@@ -714,12 +714,12 @@
<a class="ulink" href="http://openacs.org/cvs/openacs-4/packages/acs-core-docs/www/xml/engineering-standards" target="_top">sources of these DocBook documents</a>
to get an idea of how they are tied together.
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-sections"></a>Headlines, Sections</h3></div></div></div><p>
<a class="indexterm" name="idp140717577531952"></a>
<a class="indexterm" name="idp140400258259152"></a>
Given that your job starts at the <code class="computeroutput">sect1</code>-level, all your documents should open with a
<a class="ulink" href="http://docbook.org/tdg/en/html/sect1.html" target="_top"><code class="computeroutput">&lt;sect1&gt;</code></a>-tag and end
with the corresponding <code class="computeroutput">&lt;/sect1&gt;</code>.
</p><p>
<a class="indexterm" name="idp140717577535568"></a>
<a class="indexterm" name="idp140400258262912"></a>
You need to feed every <code class="computeroutput">&lt;sect1&gt;</code> two attributes. The first attribute,
<code class="computeroutput">id</code>, 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 <a class="xref" href="docbook-primer.html#dbprimer-links" title="Links">the section called “Links”</a>).
......@@ -727,7 +727,7 @@
throughout the book you're making since the <code class="computeroutput">id</code>'s in your
<code class="computeroutput">sect1</code>'s will turn into filenames when the book is parsed into HTML.
</p><p>
<a class="indexterm" name="idp140717577540544"></a>
<a class="indexterm" name="idp140400258268032"></a>
The other attribute is <code class="computeroutput">xreflabel</code>. The value of this is the text that will appear
as the link when referring to this <code class="computeroutput">sect1</code>.
</p><p>
......@@ -742,7 +742,7 @@
&lt;/sect1&gt;
</pre><p>
<a class="indexterm" name="idp140717577544912"></a>
<a class="indexterm" name="idp140400258272432"></a>
Inside this container your document will be split up into
<a class="ulink" href="http://docbook.org/tdg/en/html/sect2.html" target="_top"><code class="computeroutput">&lt;sect2&gt;</code></a>'s,
each with the same requirements - <code class="computeroutput">id</code> and <code class="computeroutput">xreflabel</code>
......@@ -751,7 +751,7 @@
When it comes to naming your
<code class="computeroutput">sect2</code>'s and below, prefix them with some abbreviation of the <code class="computeroutput">id</code> in the <code class="computeroutput">sect1</code> such as <code class="computeroutput">requirements-overview</code>.
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-code"></a>Code</h3></div></div></div><p>
<a class="indexterm" name="idp140717577553472"></a>
<a class="indexterm" name="idp140400258281280"></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
<a class="ulink" href="http://docbook.org/tdg/en/html/computeroutput.html" target="_top"><code class="computeroutput">&lt;computeroutput&gt;</code></a>
......@@ -769,12 +769,12 @@
tag around text that has been wrapped by combinations of <a class="ulink" href="http://docbook.org/tdg/en/html/computeroutput.html" target="_top"><code class="computeroutput">&lt;computeroutput&gt;</code></a>
and <a class="ulink" href="http://docbook.org/tdg/en/html/userinput.html" target="_top"><strong class="userinput"><code>&lt;userinput&gt;</code></strong></a>
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-links"></a>Links</h3></div></div></div><p>
<a class="indexterm" name="idp140717577563344"></a>
<a class="indexterm" name="idp140400258291536"></a>
Linking falls into two different categories: inside the book you're making and outside:
</p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><span class="strong"><strong>1. Inside linking, cross-referencing other parts of your book</strong></span></span></dt><dd><p>
By having unique <code class="computeroutput">id</code>'s you can cross-reference any part of your book
with a simple tag, regardless of where that part is.
</p><p><a class="indexterm" name="idp140717577567008"></a>Check out how I link to a subsection of the Developer's Guide:</p><p>Put this in your XML:</p><pre class="programlisting">
</p><p><a class="indexterm" name="idp140400258295296"></a>Check out how I link to a subsection of the Developer's Guide:</p><p>Put this in your XML:</p><pre class="programlisting">
- Find information about creating a package in
&lt;xref linkend="packages-making-a-package"&gt;&lt;/xref&gt;.
</pre><p>And the output is:</p><pre class="programlisting">
......@@ -798,7 +798,7 @@
<code class="computeroutput">packages-looks</code>, the
parser will try its best to explain where the link takes you.
</p></dd><dt><span class="term"><span class="strong"><strong>2. Linking outside the documentation</strong></span></span></dt><dd><p>
<a class="indexterm" name="idp140717577581952"></a>
<a class="indexterm" name="idp140400258311424"></a>
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.
</em></span>
</p><p>
<a class="indexterm" name="idp140717577590192"></a>
<a class="indexterm" name="idp140400258320352"></a>
To insert a graphic we use the elements
<a class="ulink" href="http://docbook.org/tdg/en/html/mediaobject.html" target="_top"><code class="computeroutput">&lt;mediaobject&gt;</code></a>,
<a class="ulink" href="http://docbook.org/tdg/en/html/imageobject.html" target="_top"><code class="computeroutput">&lt;imageobject&gt;</code></a>,
......@@ -845,7 +845,7 @@
Put your graphics in a separate directory ("images") and link to them
only with relative paths.
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-lists"></a>Lists</h3></div></div></div><p>
<a class="indexterm" name="idp140717577598176"></a>
<a class="indexterm" name="idp140400258328960"></a>
Here's how you make the DocBook equivalent of the three usual HTML-lists:
</p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><span class="strong"><strong>1. How to make an &lt;ul&gt;</strong></span></span></dt><dd><p>
Making an unordered list is pretty much like doing the same thing in HTML - if you close your <code class="computeroutput">&lt;li&gt;</code>, that is. The only differences are that each list item has to be wrapped in something more, such as
......@@ -890,7 +890,7 @@
&lt;/variablelist&gt;
</pre></dd></dl></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-tables"></a>Tables</h3></div></div></div><p>
<a class="indexterm" name="idp140717577617600"></a>
<a class="indexterm" name="idp140400258349840"></a>
DocBook supports several types of tables, but in most cases, the
<a class="ulink" href="http://docbook.org/tdg/en/html/informaltable.html" target="_top"><code class="computeroutput">&lt;informaltable&gt;</code></a>
is enough:
......@@ -927,7 +927,7 @@
<a class="ulink" href="http://docbook.org/tdg/en/html/table.html" target="_top"><code class="computeroutput">&lt;table&gt;</code></a>
for an example.
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-emphasis"></a>Emphasis</h3></div></div></div><p>
<a class="indexterm" name="idp140717577630272"></a>
<a class="indexterm" name="idp140400258363600"></a>
Our documentation uses two flavors of emphasis - italics and bold type. DocBook uses one -
<a class="ulink" href="http://docbook.org/tdg/en/html/emphasis.html" target="_top"><code class="computeroutput">&lt;emphasis&gt;</code></a>.
</p><p>
......
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 'http://www.w3.org/TR/html4/loose.dtd"'>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter 12. Engineering Standards</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-package-dev.html" title="Part III. For OpenACS Package Developers"><link rel="previous" href="programming-with-aolserver.html" title="Programming with AOLserver"><link rel="next" href="style-guide.html" title="OpenACS Style Guide"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="programming-with-aolserver.html">Prev</a> </td><th width="60%" align="center">Part III. For OpenACS Package Developers</th><td width="20%" align="right"> <a accesskey="n" href="style-guide.html">Next</a></td></tr></table><hr></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a name="eng-standards"></a>Chapter 12. Engineering Standards</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="sect1"><a href="style-guide.html">OpenACS Style Guide</a></span></dt><dt><span class="sect1"><a href="cvs-guidelines.html">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter 12. Engineering Standards</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-package-dev.html" title="Part III. For OpenACS Package Developers"><link rel="previous" href="form-builder.html" title="Using Form Builder: building html forms dynamically"><link rel="next" href="style-guide.html" title="OpenACS Style Guide"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="form-builder.html">Prev</a> </td><th width="60%" align="center">Part III. For OpenACS Package Developers</th><td width="20%" align="right"> <a accesskey="n" href="style-guide.html">Next</a></td></tr></table><hr></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a name="eng-standards"></a>Chapter 12. Engineering Standards</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="sect1"><a href="style-guide.html">OpenACS Style Guide</a></span></dt><dt><span class="sect1"><a href="cvs-guidelines.html">
CVS Guidelines
</a></span></dt><dt><span class="sect1"><a href="eng-standards-versioning.html">Release Version Numbering</a></span></dt><dt><span class="sect1"><a href="eng-standards-constraint-naming.html">Constraint naming standard</a></span></dt><dt><span class="sect1"><a href="eng-standards-filenaming.html">ACS File Naming and Formatting Standards</a></span></dt><dt><span class="sect1"><a href="eng-standards-plsql.html">PL/SQL Standards</a></span></dt><dt><span class="sect1"><a href="variables.html">Variables</a></span></dt><dt><span class="sect1"><a href="automated-testing-best-practices.html">Automated Testing</a></span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="programming-with-aolserver.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="style-guide.html">Next</a></td></tr><tr><td width="40%" align="left">Programming with AOLserver </td><td width="20%" align="center"><a accesskey="u" href="acs-package-dev.html">Up</a></td><td width="40%" align="right"> OpenACS Style Guide</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/eng-standards.html#comments">View comments on this page at openacs.org</a></center></body></html>
</a></span></dt><dt><span class="sect1"><a href="eng-standards-versioning.html">Release Version Numbering</a></span></dt><dt><span class="sect1"><a href="eng-standards-constraint-naming.html">Constraint naming standard</a></span></dt><dt><span class="sect1"><a href="eng-standards-filenaming.html">ACS File Naming and Formatting Standards</a></span></dt><dt><span class="sect1"><a href="eng-standards-plsql.html">PL/SQL Standards</a></span></dt><dt><span class="sect1"><a href="variables.html">Variables</a></span></dt><dt><span class="sect1"><a href="automated-testing-best-practices.html">Automated Testing</a></span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="form-builder.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="style-guide.html">Next</a></td></tr><tr><td width="40%" align="left">Using Form Builder: building html forms dynamically </td><td width="20%" align="center"><a accesskey="u" href="acs-package-dev.html">Up</a></td><td width="40%" align="right"> OpenACS Style Guide</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/eng-standards.html#comments">View comments on this page at openacs.org</a></center></body></html>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 'http://www.w3.org/TR/html4/loose.dtd"'>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>External Authentication Requirements</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter 15. Kernel Documentation"><link rel="previous" href="bootstrap-acs.html" title="Bootstrapping OpenACS"><link rel="next" href="releasing-openacs.html" title="Chapter 16. Releasing OpenACS"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="bootstrap-acs.html">Prev</a> </td><th width="60%" align="center">Chapter 15. Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="releasing-openacs.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ext-auth-requirements"></a>External Authentication Requirements</h2></div></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140717566830256"></a>Vision</h3></div></div></div><p>People have plenty of usernames and passwords already, we
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>External Authentication Requirements</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter 15. Kernel Documentation"><link rel="previous" href="bootstrap-acs.html" title="Bootstrapping OpenACS"><link rel="next" href="releasing-openacs.html" title="Chapter 16. Releasing OpenACS"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="bootstrap-acs.html">Prev</a> </td><th width="60%" align="center">Chapter 15. Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="releasing-openacs.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ext-auth-requirements"></a>External Authentication Requirements</h2></div></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140400236056560"></a>Vision</h3></div></div></div><p>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.</p><p>Besides, administrators have better things to do than create
......@@ -45,7 +45,7 @@ parts. Each has a section below.</p></div><div class="sect2"><div class="titlepa
only one implementation of the authentication API, namly the one
included in OpenACS Core.</p></li><li class="listitem"><p>Authentication Driver API: The service contract which
authentication drivers implement.</p></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="Diagram"></a>Conceptual Pictures</h3></div></div></div><p>Authentication:</p><p><span class="inlinemediaobject"><img src="images/ext-auth.png"></span>
</p><p>Account Management (NO PICTURE YET)</p><p>Batch Synchronization (NO PICTURE YET)</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="Requirements"></a>Requirements</h3></div></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140717581054144"></a>New API</h4></div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>New API</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">EXT-AUTH-01</td><td class="seg">A</td><td class="seg">Extend Authentication/Acct Status API</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-03</td><td class="seg">A</td><td class="seg">Account Creation API</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-05</td><td class="seg">A</td><td class="seg">Password Management API</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-30</td><td class="seg">A</td><td class="seg">Authority Management API</td></tr></tbody></table></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="Login"></a>Login</h4></div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>Login</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">EXT-AUTH-04</td><td class="seg">A</td><td class="seg">Rewrite login, register, and admin pages to use APIs</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-38</td><td class="seg">A</td><td class="seg">ad_form complain feature</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-19</td><td class="seg">A</td><td class="seg">Rewrite password recovery to use API</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-21</td><td class="seg">A</td><td class="seg">Rewrite email verification with API</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-28</td><td class="seg">A</td><td class="seg">Username is email switch</td></tr></tbody></table></div><p>Users will log in using a username, a authority, and a
</p><p>Account Management (NO PICTURE YET)</p><p>Batch Synchronization (NO PICTURE YET)</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="Requirements"></a>Requirements</h3></div></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140400241533328"></a>New API</h4></div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>New API</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">EXT-AUTH-01</td><td class="seg">A</td><td class="seg">Extend Authentication/Acct Status API</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-03</td><td class="seg">A</td><td class="seg">Account Creation API</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-05</td><td class="seg">A</td><td class="seg">Password Management API</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-30</td><td class="seg">A</td><td class="seg">Authority Management API</td></tr></tbody></table></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="Login"></a>Login</h4></div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>Login</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">EXT-AUTH-04</td><td class="seg">A</td><td class="seg">Rewrite login, register, and admin pages to use APIs</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-38</td><td class="seg">A</td><td class="seg">ad_form complain feature</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-19</td><td class="seg">A</td><td class="seg">Rewrite password recovery to use API</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-21</td><td class="seg">A</td><td class="seg">Rewrite email verification with API</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-28</td><td class="seg">A</td><td class="seg">Username is email switch</td></tr></tbody></table></div><p>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. </p><p>Each user in OpenACS will belong to exactly one authority, which
can either be the "local" OpenACS users table, in which case the
......
......@@ -83,3 +83,9 @@ ad_proc -public mfp::note::delete {
select content_item__delete(:item_id)
}
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -6,4 +6,9 @@ ad_page_contract {
}
set page_title [ad_conn instance_name]
set context [list]
\ No newline at end of file
set context [list]
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -144,3 +144,9 @@ aa_register_case \
}
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -16,3 +16,9 @@ mfp::note::delete -item_id $item_id
ad_returnredirect "."
# stop running this code, since we're redirecting
abort
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -38,4 +38,9 @@ ad_form -name note -form {
} -after_submit {
ad_returnredirect "."
ad_script_abort
}
\ No newline at end of file
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -35,4 +35,9 @@ db_multirow \
} {
set edit_url [export_vars -base "note-edit" {item_id}]
set delete_url [export_vars -base "note-delete" {item_id}]
}
\ No newline at end of file
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -84,3 +84,9 @@ ad_proc -public mfp::note::delete {
select content_item__delete(:item_id)
}
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -6,7 +6,7 @@
adaptable UI. Error handling includes inline error reporting, and is customizable.
However, ad_form can be tricky to use. In addition to this document,
the ad_form <a class="ulink" href="http://openacs.org/api-doc/proc-view?proc=ad_form" target="_top">api
documentation</a> is helpful.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="multi-part-elements"></a>Multi-part Elements</h3></div></div></div><p>Some elements have more than one choice, or can submit more than one value.</p><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140726697765008"></a>SELECT elements</h4></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p><b>Creating the form element. </b>Populate a list of lists with values for the option list.</p><pre class="programlisting">set foo_options [db_list_of_lists foo_option_list "
documentation</a> is helpful.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="multi-part-elements"></a>Multi-part Elements</h3></div></div></div><p>Some elements have more than one choice, or can submit more than one value.</p><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140400226790112"></a>SELECT elements</h4></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p><b>Creating the form element. </b>Populate a list of lists with values for the option list.</p><pre class="programlisting">set foo_options [db_list_of_lists foo_option_list "
select foo,
foo_id
from foos
......@@ -31,7 +31,7 @@ adaptable UI. Error handling includes inline error reporting, and is customizabl
other form elements, and resubmit the form. If you then include a
block that extends the form, you'll have the opportunity to add in
subcategories:
</p><pre class="programlisting"> if {[exists_and_not_null pm_task_id]} {
</p><pre class="programlisting"> if {[info exists pm_task_id] &amp;&amp; $pm_task_id ne ""} {
db_1row get_task_values { }
ad_form -extend -name form_name -form { ... }
</pre><p>Note that you will get strange results when you try to set
......@@ -44,12 +44,12 @@ adaptable UI. Error handling includes inline error reporting, and is customizabl
Asher):</p><pre class="programlisting">
ns_log notice it's my page!
set mypage [ns_getform]
if {[string equal "" $mypage]} {
if {$mypage eq ""} {
ns_log notice no form was submitted on my page
} else {
ns_log notice the following form was submitted on my page
ns_set print $mypage
}
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="form-widgets"></a>Tips for form widgets</h3></div></div></div><p>Here are some tips for dealing with some of the form widgets:</p><p><a class="ulink" href="http://openacs.org/forums/message-view?message_id=106331" target="_top">Current widget</a></p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="errors"></a>Common Errors</h3></div></div></div><p>Here are some common errors and what to do when you
encounter them:</p><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140726698190768"></a>Error when selecting values</h4></div></div></div><p>This generally happens when there is an error in your
encounter them:</p><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140400255231312"></a>Error when selecting values</h4></div></div></div><p>This generally happens when there is an error in your
query.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="programming-with-aolserver.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="eng-standards.html">Next</a></td></tr><tr><td width="40%" align="left">Programming with AOLserver </td><td width="20%" align="center"><a accesskey="u" href="dev-guide.html">Up</a></td><td width="40%" align="right"> Chapter 12. Engineering Standards</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/form-builder.html#comments">View comments on this page at openacs.org</a></center></body></html>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 'http://www.w3.org/TR/html4/loose.dtd"'>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>High Availability/High Performance Configurations</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="maintenance-web.html" title="Chapter 6. Production Environments"><link rel="previous" href="install-next-add-server.html" title="Running multiple services on one machine"><link rel="next" href="maintenance-deploy.html" title="Staged Deployment for Production Networks"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-next-add-server.html">Prev</a> </td><th width="60%" align="center">Chapter 6. Production Environments</th><td width="20%" align="right"> <a accesskey="n" href="maintenance-deploy.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="high-avail"></a>High Availability/High Performance Configurations</h2></div></div></div><p>See also <a class="xref" href="remote-postgres.html" title="Running a PostgreSQL database on another server">the section called “Running a PostgreSQL database on another server”</a>.</p><div class="figure"><a name="idp140717558399040"></a><p class="title"><b>Figure 6.1. Multiple-server configuration</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/hpha.png" align="middle" alt="Multiple-server configuration"></div></div></div><br class="figure-break"></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-next-add-server.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="maintenance-deploy.html">Next</a></td></tr><tr><td width="40%" align="left">Running multiple services on one machine </td><td width="20%" align="center"><a accesskey="u" href="maintenance-web.html">Up</a></td><td width="40%" align="right"> Staged Deployment for Production Networks</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/high-avail.html#comments">View comments on this page at openacs.org</a></center></body></html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>High Availability/High Performance Configurations</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="maintenance-web.html" title="Chapter 6. Production Environments"><link rel="previous" href="install-next-add-server.html" title="Running multiple services on one machine"><link rel="next" href="maintenance-deploy.html" title="Staged Deployment for Production Networks"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-next-add-server.html">Prev</a> </td><th width="60%" align="center">Chapter 6. Production Environments</th><td width="20%" align="right"> <a accesskey="n" href="maintenance-deploy.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="high-avail"></a>High Availability/High Performance Configurations</h2></div></div></div><p>See also <a class="xref" href="remote-postgres.html" title="Running a PostgreSQL database on another server">the section called “Running a PostgreSQL database on another server”</a>.</p><div class="figure"><a name="idp140400237699664"></a><p class="title"><b>Figure 6.1. Multiple-server configuration</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/hpha.png" align="middle" alt="Multiple-server configuration"></div></div></div><br class="figure-break"></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-next-add-server.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="maintenance-deploy.html">Next</a></td></tr><tr><td width="40%" align="left">Running multiple services on one machine </td><td width="20%" align="center"><a accesskey="u" href="maintenance-web.html">Up</a></td><td width="40%" align="right"> Staged Deployment for Production Networks</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/high-avail.html#comments">View comments on this page at openacs.org</a></center></body></html>
This diff is collapsed.
......@@ -72,7 +72,7 @@ set foo_date_ansi [lc_time_system_to_conn $foo_date_ansi]</pre><p>When a datetim
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.
</p></li></ol></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140717578026800"></a>Avoiding common i18n mistakes</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><b>Replace complicated keys with longer, simpler keys. </b>When writing in one language, it is possible to create clever code to make correct text. In English, for example, you can put an <code class="computeroutput">if</code> 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.</p><p>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><pre class="programlisting"> &lt;p class="form-help-text"&gt;&lt;b&gt;Invitations&lt;/b&gt; are sent,
</p></li></ol></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140400244730944"></a>Avoiding common i18n mistakes</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><b>Replace complicated keys with longer, simpler keys. </b>When writing in one language, it is possible to create clever code to make correct text. In English, for example, you can put an <code class="computeroutput">if</code> 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.</p><p>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><pre class="programlisting"> &lt;p class="form-help-text"&gt;&lt;b&gt;Invitations&lt;/b&gt; are sent,
when this wizard is completed and casting begins.&lt;/p&gt;</pre><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:</p><div class="mediaobject" align="center"><img src="images/i18n-3.png" align="middle"></div><p>Instead, we cancel those keys, edit the file manually, and put in a single temporary message tag:</p><pre class="programlisting"> &lt;p class="form-help-text"&gt; &lt;#Invitations_are_sent &lt;b&gt;Invitations&lt;/b&gt; are sent,
when this wizard is completed and casting begins.#&gt;
&lt;/p&gt;</pre><p>Complex if statements may produce convoluted message keys that are very hard to localize. Rewrite these if statements. For example:</p><pre class="programlisting">Select which case &lt;if @simulation.casting_type@ eq "open"&gt;and
......
This diff is collapsed.
This diff is collapsed.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 'http://www.w3.org/TR/html4/loose.dtd"'>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Initialize CVS (OPTIONAL)</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix B. Install additional supporting software"><link rel="previous" href="openacs-unpack.html" title="Unpack the OpenACS tarball"><link rel="next" href="psgml-for-emacs.html" title="Add PSGML commands to emacs init file (OPTIONAL)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="openacs-unpack.html">Prev</a> </td><th width="60%" align="center">Appendix B. Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="psgml-for-emacs.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-cvs"></a>Initialize CVS (OPTIONAL)</h2></div></div></div><a class="indexterm" name="idp140717556754496"></a><p>CVS is a source control system. Create and initialize a
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Initialize CVS (OPTIONAL)</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix B. Install additional supporting software"><link rel="previous" href="openacs-unpack.html" title="Unpack the OpenACS tarball"><link rel="next" href="psgml-for-emacs.html" title="Add PSGML commands to emacs init file (OPTIONAL)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="openacs-unpack.html">Prev</a> </td><th width="60%" align="center">Appendix B. Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="psgml-for-emacs.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-cvs"></a>Initialize CVS (OPTIONAL)</h2></div></div></div><a class="indexterm" name="idp140400244971184"></a><p>CVS is a source control system. Create and initialize a
directory for a local cvs repository.</p><pre class="screen">[root tmp]# <strong class="userinput"><code>mkdir /cvsroot</code></strong>
[root tmp]#<strong class="userinput"><code> cvs -d /cvsroot init</code></strong>
[root tmp]#
......
......@@ -4,7 +4,7 @@
installed in /package. These commands install daemontools and
svgroup. svgroup is a script for granting permissions, to allow
users other than root to use daemontools for specific
services.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Install Daemontools</p><a class="indexterm" name="idp140717562702976"></a><p><a class="link" href="individual-programs.html#daemontools-download">download daemontools</a> and install it.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Red Hat 8</p><pre class="screen">[root root]# <strong class="userinput"><code>mkdir -p /package</code></strong>
services.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Install Daemontools</p><a class="indexterm" name="idp140400245018848"></a><p><a class="link" href="individual-programs.html#daemontools-download">download daemontools</a> and install it.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Red Hat 8</p><pre class="screen">[root root]# <strong class="userinput"><code>mkdir -p /package</code></strong>
[root root]# <strong class="userinput"><code>chmod 1755 /package/</code></strong>
[root root]# <strong class="userinput"><code>cd /package/</code></strong>
[root package]# <strong class="userinput"><code>tar xzf /tmp/daemontools-0.76.tar.gz</code></strong>
......
......@@ -6,7 +6,7 @@
Tsearch2. See
<a class="xref" href="install-full-text-search-tsearch2.html" title="Install Full Text Search using Tsearch2">Install Full Text Search using Tsearch2</a>. Tsearch2 is much easier to install, requiring only
compilation of one module from PostgreSQL contrib, with an
automated install process using the tsearch2-driver package.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="install-openfts"></a>Install OpenFTS module</h3></div></div></div><a class="indexterm" name="idp140717562186432"></a><p>If you want full text search, and you are running PostgreSQL, install this module to support FTS. Do this step after you have installed both PostgreSQL and
automated install process using the tsearch2-driver package.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="install-openfts"></a>Install OpenFTS module</h3></div></div></div><a class="indexterm" name="idp140400245241472"></a><p>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 <a class="link" href="individual-programs.html#openfts-download">openfts
tarball</a> in <code class="computeroutput">/tmp</code>.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Install Tsearch. This is a PostgreSQL module that
OpenFTS requires.</p><pre class="screen">[root root]# <strong class="userinput"><code>su - postgres</code></strong>
......@@ -81,7 +81,7 @@ cd /usr/local/src/postgresql-7.3.4/contrib/pgsql_contrib_openfts
make
su postgres
make install
exit</span></span></pre></li></ol></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="install-openfts-postgres"></a>Install OpenFTS prerequisites in PostgreSQL instance</h3></div></div></div><a class="indexterm" name="idp140717562809904"></a><p>If you are installing Full Text Search, add required
exit</span></span></pre></li></ol></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="install-openfts-postgres"></a>Install OpenFTS prerequisites in PostgreSQL instance</h3></div></div></div><a class="indexterm" name="idp140400245270848"></a><p>If you are installing Full Text Search, add required
packages to the new database. (In order for full text search
to work, you must also <a class="link" href="install-full-text-search-openfts.html#install-openfts" title="Install OpenFTS module">install</a> the PostgreSQL
OpenFTS module and prerequisites.)</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>/usr/local/pgsql/bin/psql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -f /usr/local/src/postgresql-7.3.4/contrib/tsearch/tsearch.sql</code></strong>
......
......@@ -6,7 +6,7 @@
V2 Introduction by Andrew J. Kopciuch</a></p>
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
</div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="install-tsearch2"></a>Install Tsearch2 module</h3></div></div></div><a class="indexterm" name="idp140717562494192"></a><p>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
</div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="install-tsearch2"></a>Install Tsearch2 module</h3></div></div></div><a class="indexterm" name="idp140400245157392"></a><p>If you want full text search, and you are running PostgreSQL, install this module to support FTS. Do this step after you have installed both PostgreSQL and
AOLserver. You will need the tseach2 module form PostgreSQL
contrib. This is included with the PostgreSQL full source
distribution. It is also available with the PostgreSQL contrib
......
......@@ -64,6 +64,6 @@ root 5582 0.0 0.2 3276 628 pts/0 S 11:55 0:00 grep nsd
Most of this information comes from Tom Jackson's <a class="ulink" href="http://zmbh.com/daemontools-aolserver/daemontools-aolserver.html" target="_top">AOLserver+Daemontools
Mini-HOWTO</a>.
</p></li></ol></div><div class="table"><a name="idp140717558342832"></a><p class="title"><b>Table 6.1. How it Works</b></p><div class="table-contents"><table summary="How it Works" cellspacing="0" border="1"><colgroup><col><col><col><col><col><col></colgroup><thead><tr><th align="center">Program</th><th align="center">Invoked by this program ...</th><th align="center">... using this file</th><th align="center">Where to find errors</th><th align="center">Log goes to</th><th align="center">Use these commands to control it</th></tr></thead><tbody><tr><td align="center">svscanboot
</p></li></ol></div><div class="table"><a name="idp140400237760704"></a><p class="title"><b>Table 6.1. How it Works</b></p><div class="table-contents"><table summary="How it Works" cellspacing="0" border="1"><colgroup><col><col><col><col><col><col></colgroup><thead><tr><th align="center">Program</th><th align="center">Invoked by this program ...</th><th align="center">... using this file</th><th align="center">Where to find errors</th><th align="center">Log goes to</th><th align="center">Use these commands to control it</th></tr></thead><tbody><tr><td align="center">svscanboot
</td><td align="center">init</td><td align="center">/etc/inittab</td><td align="center">ps -auxw | grep readproctitle</td><td align="center">n/a</td><td align="center"> </td></tr><tr><td align="center">aolserver</td><td align="center"><code class="computeroutput"></code>supervise
(a child of svscanboot)</td><td align="center">/service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/run</td><td align="center">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/log/error.log</td><td align="center">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/log/$OPENACS_SERVICE_NAME.log</td><td align="center">svc -k /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td align="center">postgresql</td><td align="center">Redhat init scripts during boot</td><td align="center">/etc/init.d/postgresql</td><td align="center">/usr/local/pgsql/data/server.log</td><td align="center"> </td><td align="center">service postgresql start (Red Hat), /etc/init.d/postgresql start (Debian)</td></tr></tbody></table></div></div><br class="table-break"></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="maintenance-web.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-openacs-inittab.html">Next</a></td></tr><tr><td width="40%" align="left">Chapter 6. Production Environments </td><td width="20%" align="center"><a accesskey="u" href="maintenance-web.html">Up</a></td><td width="40%" align="right"> AOLserver keepalive with inittab</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/install-openacs-keepalive.html#comments">View comments on this page at openacs.org</a></center></body></html>
......@@ -30,7 +30,7 @@ running the tcpserver program which is part of ucspi-tcp:</p><pre class="screen"
tcpserver: usage: tcpserver [ -1UXpPhHrRoOdDqQv ] [ -c limit ] [ -x rules.cdb ] [ -B banner ] [ -g gid ] [ -u uid
] [ -b backlog ] [ -l localname ] [ -t timeout ] host port program
[root ucspi-tcp-0.88]#
</pre><p><a class="indexterm" name="idp140717563462832"></a>
</pre><p><a class="indexterm" name="idp140400245078464"></a>
(I'm not sure if this next step is 100% necessary, but when I skip it
I get problems. If you get the error <code class="computeroutput">553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)</code> then you need to do this.) AOLserver sends outgoing mail via the ns_sendmail
command, which pipes a command to the sendmail executable. Or, in our
......@@ -44,7 +44,7 @@ set up an exception so that any mail sent from 127.0.0.1 is allowed to
send outgoing mail.</p><pre class="screen">[root ucspi-tcp-0.88]# <strong class="userinput"><code>cp /tmp/openacs-5.7.0/packages/acs-core-docs/www/files/tcp.smtp.txt /etc/tcp.smtp</code></strong>
[root ucspi-tcp-0.88]# <strong class="userinput"><code>tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp &lt; /etc/tcp.smtp</code></strong>
<span class="action"><span class="action">cp /tmp/openacs-5.7.0/packages/acs-core-docs/www/files/tcp.smtp.txt /etc/tcp.smtp
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp &lt; /etc/tcp.smtp </span></span></pre></li><li class="listitem"><p><b>Install Qmail. </b><a class="indexterm" name="idp140717563469296"></a></p><p><a class="link" href="individual-programs.html#ucspi-download" title="ucspi-tcp 0.88, OPTIONAL">Download qmail</a>,
tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp &lt; /etc/tcp.smtp </span></span></pre></li><li class="listitem"><p><b>Install Qmail. </b><a class="indexterm" name="idp140400245085072"></a></p><p><a class="link" href="individual-programs.html#ucspi-download" title="ucspi-tcp 0.88, OPTIONAL">Download qmail</a>,
set up the standard supporting users and build the binaries:</p><pre class="screen">[root root]# <strong class="userinput"><code>cd /usr/local/src</code></strong>
[root src]# <strong class="userinput"><code>wget http://www.qmail.org/netqmail-1.04.tar.gz</code></strong>
[root src]# <strong class="userinput"><code>tar xzf netqmail-1.04.tar.gz</code></strong>
......@@ -103,7 +103,7 @@ useradd -g qmail -d /var/qmail qmails
cd netqmail-1.04
./collate.sh
cd netqmail-1.04
make setup check</span></span></pre><p>Replace sendmail with qmail's wrapper.</p><a class="indexterm" name="idp140717563485504"></a><pre class="screen">[root qmail-1.03]# <strong class="userinput"><code>rm -f /usr/bin/sendmail /usr/sbin/sendmail</code></strong>
make setup check</span></span></pre><p>Replace sendmail with qmail's wrapper.</p><a class="indexterm" name="idp140400245101504"></a><pre class="screen">[root qmail-1.03]# <strong class="userinput"><code>rm -f /usr/bin/sendmail /usr/sbin/sendmail</code></strong>
[root qmail-1.03]# <strong class="userinput"><code>ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail</code></strong>
[root qmail-1.03]#
<span class="action"><span class="action">rm -f /usr/bin/sendmail /usr/sbin/sendmail
......@@ -125,7 +125,7 @@ Make sure to change rcpthosts if you add hosts to locals or virtualdomains!
<span class="action"><span class="action">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</span></span></pre><a class="indexterm" name="idp140717563498592"></a><p>Configure qmail to use the Maildir delivery format
chown -R alias.nofiles /var/qmail/alias/Maildir</span></span></pre><a class="indexterm" name="idp140400245115344"></a><p>Configure qmail to use the Maildir delivery format
(instead of mbox), and install a version of the qmail startup script modified to use Maildir.</p><pre class="screen">[root alias]# <strong class="userinput"><code>echo "./Maildir" &gt; /var/qmail/bin/.qmail</code></strong>
[root alias]# <strong class="userinput"><code>cp /tmp/openacs-5.7.0/packages/acs-core-docs/www/files/qmail.rc.txt /var/qmail/rc</code></strong>
[root alias]# <strong class="userinput"><code>chmod 755 /var/qmail/rc</code></strong>
......
This diff is collapsed.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 'http://www.w3.org/TR/html4/loose.dtd"'>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Basic Steps</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-overview.html" title="Chapter 2. Installation Overview"><link rel="previous" href="install-overview.html" title="Chapter 2. Installation Overview"><link rel="next" href="individual-programs.html" title="Prerequisite Software"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-overview.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Installation Overview</th><td width="20%" align="right"> <a accesskey="n" href="individual-programs.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-steps"></a>Basic Steps</h2></div></div></div><p>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Basic Steps</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-overview.html" title="Chapter 2. Installation Overview"><link rel="previous" href="install-overview.html" title="Chapter 2. Installation Overview"><link rel="next" href="individual-programs.html" title="Prerequisite Software"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-overview.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Installation Overview</th><td width="20%" align="right"> <a accesskey="n" href="individual-programs.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-steps"></a>Basic Steps</h2></div></div></div><p>Most of the documentation in this section is kept as a
reference. More up-to-date documentation is in the <a class="ulink" href="http://openacs.org/xowiki/openacs-system-install" target="_top">install
sections in the Wiki</a>.
</p><p>
The basic steps for installing OpenACS are:
</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Install an OS and supporting software (see <a class="xref" href="unix-installation.html" title="Install a Unix-like system and supporting software">Install a Unix-like OS</a> or <a class="xref" href="install-redhat.html" title="Appendix A. Install Red Hat 8/9">Appendix A, <i>Install Red Hat 8/9</i></a> for more details). See the <a class="xref" href="individual-programs.html#compatibility-matrix" title="Table 2.2. Version Compatibility Matrix">Table 2.2, “Version Compatibility Matrix”</a>.</p></li><li class="listitem"><p>Install a database (see <a class="xref" href="oracle.html" title="Install Oracle 8.1.7">the section called “Install Oracle 8.1.7”</a> or
<a class="xref" href="postgres.html" title="Install PostgreSQL">Install PostgreSQL</a>).</p></li><li class="listitem"><p> Install AOLserver (<a class="xref" href="aolserver4.html" title="Install AOLserver 4">Install AOLserver 4</a>) .</p></li><li class="listitem"><p>Create a unique database and system user.
......@@ -41,7 +44,7 @@ CREATE DATABASE
<span class="action"><span class="action">su - $OPENACS_SERVICE_NAME
svc -d /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
dropdb <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
createdb <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></span></span></pre><p><a name="cut-and-paste-name-var"></a><b>Setting a global shell variable for cut and paste. </b>In order to cut and paste the instructions into your shell, you must set the environment variable $OPENACS_SERVICE_NAME. In order to set it globally so that it works for any new users or special service users you may create, edit the file <code class="computeroutput">/etc/profile</code> ( <code class="computeroutput">/etc/share/skel/dot.profile</code> for FreeBSD) and add this line:</p><pre class="programlisting">export OPENACS_SERVICE_NAME=<span class="replaceable"><span class="replaceable">service0</span></span></pre></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140717556272272"></a>Paths and Users</h3></div></div></div><div class="table"><a name="idp140717556272912"></a><p class="title"><b>Table 2.1. Default directories for a standard install</b></p><div class="table-contents"><table summary="Default directories for a standard install" cellspacing="0" width="100%" border="1"><colgroup><col><col></colgroup><tbody><tr><td>Fully qualified domain name of your server</td><td><span class="replaceable"><span class="replaceable">yourserver.test</span></span></td></tr><tr><td>name of administrative access account</td><td>remadmin</td></tr><tr><td>OpenACS service</td><td><a class="indexterm" name="idp140717556277712"></a>
createdb <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></span></span></pre><p><a name="cut-and-paste-name-var"></a><b>Setting a global shell variable for cut and paste. </b>In order to cut and paste the instructions into your shell, you must set the environment variable $OPENACS_SERVICE_NAME. In order to set it globally so that it works for any new users or special service users you may create, edit the file <code class="computeroutput">/etc/profile</code> ( <code class="computeroutput">/etc/share/skel/dot.profile</code> for FreeBSD) and add this line:</p><pre class="programlisting">export OPENACS_SERVICE_NAME=<span class="replaceable"><span class="replaceable">service0</span></span></pre></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140400234971392"></a>Paths and Users</h3></div></div></div><div class="table"><a name="idp140400234972032"></a><p class="title"><b>Table 2.1. Default directories for a standard install</b></p><div class="table-contents"><table summary="Default directories for a standard install" cellspacing="0" width="100%" border="1"><colgroup><col><col></colgroup><tbody><tr><td>Fully qualified domain name of your server</td><td><span class="replaceable"><span class="replaceable">yourserver.test</span></span></td></tr><tr><td>name of administrative access account</td><td>remadmin</td></tr><tr><td>OpenACS service</td><td><a class="indexterm" name="idp140400234976640"></a>
<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> (set to service0 in default install)</td></tr><tr><td>OpenACS service account</td><td><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>OpenACS database name</td><td><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>Root of OpenACS service file tree (SERVERROOT)</td><td><span class="replaceable"><span class="replaceable">/var/lib/aolserver/$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>Location of source code tarballs for new software</td><td>/var/tmp</td></tr><tr><td>The OpenACS tarball contains some files which
are useful while setting up other software. Those
files are located at:</td><td>/var/tmp/openacs-5.7.0/packages/acs-core-docs/www/files</td></tr><tr><td>Database backup directory</td><td><span class="replaceable"><span class="replaceable">/var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup</span></span></td></tr><tr><td>Service config files</td><td><span class="replaceable"><span class="replaceable">/var/lib/aolserver/$OPENACS_SERVICE_NAME/etc</span></span></td></tr><tr><td>Service log files</td><td><span class="replaceable"><span class="replaceable">/var/lib/aolserver/$OPENACS_SERVICE_NAME/log</span></span></td></tr><tr><td>Compile directory</td><td>/usr/local/src</td></tr><tr><td>PostgreSQL directory</td><td>/usr/local/pgsql</td></tr><tr><td>AOLserver directory</td><td>/usr/local/aolserver</td></tr></tbody></table></div></div><br class="table-break"><p>
......
This diff is collapsed.
......@@ -2,7 +2,7 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Diagnosing Performance Problems</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="maintenance-web.html" title="Chapter 6. Production Environments"><link rel="previous" href="uptime.html" title="External uptime validation"><link rel="next" href="database-management.html" title="Chapter 7. Database Management"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="uptime.html">Prev</a> </td><th width="60%" align="center">Chapter 6. Production Environments</th><td width="20%" align="right"> <a accesskey="n" href="database-management.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="maint-performance"></a>Diagnosing Performance Problems</h2></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Did performance problems happen overnight, or did they sneak up on
you? Any clue what caused the performance problems (e.g. loading 20K
users into .LRN)</p></li><li class="listitem"><p>Is the file system out of space? Is the machine swapping to disk constantly?</p></li><li class="listitem"><p>Isolating and solving database problems.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>Without daily internal maintenance, most databases slowly degrade in performance. For PostGreSQL, see <a class="xref" href="install-next-nightly-vacuum.html" title="Vacuum Postgres nightly">the section called “Vacuum Postgres nightly”</a>. For Oracle, use <code class="computeroutput">exec dbms_stats.gather_schema_stats('SCHEMA_NAME')</code> (<a class="ulink" href="http://www.piskorski.com/docs/oracle.html" target="_top">Andrew Piskorski's Oracle notes</a>).</p></li><li class="listitem"><p>You can track the exact amount of time each database query on a page takes:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Go to <a class="ulink" href="/acs-admin/install" target="_top">Main Site : Site-Wide Administration : Install Software</a></p></li><li class="listitem"><p>Click on "Install New Application" in "Install from OpenACS Repository"</p></li><li class="listitem"><p>Choose "ACS Developer Support"&gt;</p></li><li class="listitem"><p>After install is complete, restart the server.</p></li><li class="listitem"><p>Browse to Developer Support, which is automatically mounted at <code class="computeroutput"><a class="ulink" href="/ds" target="_top">/ds</a></code>.
</p></li><li class="listitem"><p>Turn on Database statistics</p></li><li class="listitem"><p>Browse directly to a slow page and click "Request Information" at the bottom of the page.</p></li><li class="listitem"><p>This should return a list of database queries on the page, including the exact query (so it can be cut-paste into psql or oracle) and the time each query took.</p><div class="figure"><a name="idp140717558506400"></a><p class="title"><b>Figure 6.8. Query Analysis example</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/query-duration.png" alt="Query Analysis example"></div></div></div><br class="figure-break"></li></ol></div></li><li class="listitem"><p>Identify a runaway Oracle query: first, use <strong class="userinput"><code>ps aux</code></strong> or <strong class="userinput"><code>top</code></strong> to get the UNIX process ID of a runaway Oracle process.</p><p>Log in to SQL*Plus as the admin:</p><pre class="screen">[<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> ~]$ svrmgrl
</p></li><li class="listitem"><p>Turn on Database statistics</p></li><li class="listitem"><p>Browse directly to a slow page and click "Request Information" at the bottom of the page.</p></li><li class="listitem"><p>This should return a list of database queries on the page, including the exact query (so it can be cut-paste into psql or oracle) and the time each query took.</p><div class="figure"><a name="idp140400227094992"></a><p class="title"><b>Figure 6.8. Query Analysis example</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/query-duration.png" alt="Query Analysis example"></div></div></div><br class="figure-break"></li></ol></div></li><li class="listitem"><p>Identify a runaway Oracle query: first, use <strong class="userinput"><code>ps aux</code></strong> or <strong class="userinput"><code>top</code></strong> to get the UNIX process ID of a runaway Oracle process.</p><p>Log in to SQL*Plus as the admin:</p><pre class="screen">[<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> ~]$ svrmgrl
Oracle Server Manager Release 3.1.7.0.0 - Production
......@@ -59,7 +59,7 @@ openacs.org=&gt;</pre></li></ul></div></li></ul></div><div class="sect2"><div cl
</p><p>
To be able to get a overview of how Oracle executes a particular query,
install "autotrace". I usually follow the instructions here <a class="ulink" href="http://asktom.oracle.com/~tkyte/article1/autotrace.html" target="_top">http://asktom.oracle.com/~tkyte/article1/autotrace.html</a>.
</p><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140717558529440"></a>Make sure, that the Oracle CBO works with adequate statistics</h4></div></div></div><p>
</p><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140400227055392"></a>Make sure, that the Oracle CBO works with adequate statistics</h4></div></div></div><p>
The Oracle Cost Based optimizer is a piece of software that tries to find
the "optimal" execution plan for a given SQL statement. For that it
estimates the costs of running a SQL query in a particular way (by default
......
This diff is collapsed.
......@@ -79,7 +79,7 @@ system.
Fire up your text editor and open the
<code class="computeroutput">ROOT/packages/notes/sql/oracle/notes-create.sql</code> (<code class="computeroutput">ROOT/packages/notes/sql/postgresql/notes-create.sql</code> for the PG version) file created
when we <a class="link" href="packages.html" title="OpenACS Packages">created the package</a>. Then, do the following:
</p><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140717562637856"></a>Describe the new type to the type system</h4></div></div></div><p>
</p><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140400238313200"></a>Describe the new type to the type system</h4></div></div></div><p>
First, add an entry to the <code class="computeroutput">acs_object_types</code> table with the following PL/SQL call:
</p><pre class="programlisting">
begin
......@@ -139,7 +139,7 @@ and <code class="computeroutput">last_modified</code>, since the object type
because the new type <code class="computeroutput">note</code> is a subtype of
<code class="computeroutput">acs_object</code>, it will inherit these attributes, so there is
no need for us to define them.
</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140717559745456"></a>Define a table in which to store your objects</h4></div></div></div><p>
</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140400239028176"></a>Define a table in which to store your objects</h4></div></div></div><p>
The next thing we do is make a small modification to the data model to
reflect the fact that each row in the <code class="computeroutput">notes</code> table
represents something that is not only an object of type
......@@ -164,7 +164,7 @@ we model inheritance; it guarantees that any services that
use the <code class="computeroutput">acs_objects</code> table to find objects will
transparently find any objects that are instances of any subtype of
<code class="computeroutput">acs_objects</code>.
</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140717562490000"></a>Define a package for type specific procedures</h4></div></div></div><p>
</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140400236016048"></a>Define a package for type specific procedures</h4></div></div></div><p>
The next step is to define a PL/SQL package for your new type, and
write some basic procedures to create and delete objects. Here is a
package definition for our new type:
......@@ -212,7 +212,7 @@ example, if I had told you how to use the <a class="link" href="permissions.html
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.
</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140717558867552"></a>Define a package body for type specific procedures</h4></div></div></div><p>
</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp140400233278368"></a>Define a package body for type specific procedures</h4></div></div></div><p>
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
<code class="computeroutput">acs_object.new</code> to insert a row into
......
......@@ -238,7 +238,7 @@ logout
CREATE DATABASE
[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$
<span class="action"><span class="action">su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
/usr/local/pgsql/bin/createdb -E UNICODE <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></span></span></pre></li><li class="listitem"><p>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: <code class="computeroutput">VACUUM ANALYZE</code> every hour and <code class="computeroutput">VACUUM FULL ANALYZE</code> every day.</p><a class="indexterm" name="idp140717557652768"></a><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>export EDITOR=emacs;crontab -e</code></strong></pre><p>Add these lines to the file. The vacuum command cleans up temporary structures within a PostGreSQL database, and can improve performance. We vacuum gently every hour and completely every day. The numbers and stars at the beginning are cron columns that specify when the program should be run - in this case, whenever the minute is 0 and the hour is 1, i.e., 1:00 am every day, and every (*) day of month, month, and day of week. Type <code class="computeroutput">man 5 crontab</code> for more information.</p><pre class="programlisting">0 1-23 * * * /usr/local/pgsql/bin/vacuumdb --analyze <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
/usr/local/pgsql/bin/createdb -E UNICODE <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></span></span></pre></li><li class="listitem"><p>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: <code class="computeroutput">VACUUM ANALYZE</code> every hour and <code class="computeroutput">VACUUM FULL ANALYZE</code> every day.</p><a class="indexterm" name="idp140400236061248"></a><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>export EDITOR=emacs;crontab -e</code></strong></pre><p>Add these lines to the file. The vacuum command cleans up temporary structures within a PostGreSQL database, and can improve performance. We vacuum gently every hour and completely every day. The numbers and stars at the beginning are cron columns that specify when the program should be run - in this case, whenever the minute is 0 and the hour is 1, i.e., 1:00 am every day, and every (*) day of month, month, and day of week. Type <code class="computeroutput">man 5 crontab</code> for more information.</p><pre class="programlisting">0 1-23 * * * /usr/local/pgsql/bin/vacuumdb --analyze <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
0 0 * * * /usr/local/pgsql/bin/vacuumdb --full --analyze <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></pre><p>Depending on your distribution, you may receive
email when the crontab items are executed. If you
don't want to receive email for those crontab items,
......@@ -251,7 +251,7 @@ CREATE DATABASE
need to configure a virtual server. The Reference Platform
uses a configuration file included in the OpenACS tarball,
<code class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/config.tcl</code>.
Open it in an editor to adjust the parameters.</p><a class="indexterm" name="idp140717557665168"></a><pre class="screen">[root root]# <strong class="userinput"><code>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
Open it in an editor to adjust the parameters.</p><a class="indexterm" name="idp140400237461392"></a><pre class="screen">[root root]# <strong class="userinput"><code>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc</code></strong>
[$OPENACS_SERVICE_NAME etc]$ <strong class="userinput"><code>emacs config.tcl</code></strong>
</pre><p>
......
......@@ -13,7 +13,7 @@
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="server-file-layout"></a>Server file layout</h3></div></div></div><p>
Here is how an OpenACS 5 server is laid out
starting from the Server root (ROOT):
</p><div class="figure"><a name="idp140717560098832"></a><p class="title"><b>Figure 11.1. Server file layout diagram</b></p><div class="figure-contents"><pre class="programlisting">
</p><div class="figure"><a name="idp140400239317232"></a><p class="title"><b>Figure 11.1. Server file layout diagram</b></p><div class="figure-contents"><pre class="programlisting">
ROOT/
bin/
Various executables and scripts for server maintanence.
......@@ -51,7 +51,7 @@ ROOT/
<a class="indexterm" name="baby"></a>
To illustrate the general structure of a package, let's see what the
package for the "notes" application should look like.
</p><div class="figure"><a name="idp140717560263104"></a><p class="title"><b>Figure 11.2. Package file layout diagram</b></p><div class="figure-contents"><pre class="programlisting">
</p><div class="figure"><a name="idp140400255532528"></a><p class="title"><b>Figure 11.2. Package file layout diagram</b></p><div class="figure-contents"><pre class="programlisting">
ROOT/
+-- packages/ APM Root
|
......@@ -124,7 +124,7 @@ ROOT/
directories. This makes it suitable for storing icons, css
files, javascript, and other static content which can be treated
this way.
</p><div class="table"><a name="idp140717563054368"></a><p class="title"><b>Table 11.1. Package files</b></p><div class="table-contents"><table summary="Package files" cellspacing="0" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>File Type</th><th>Its Use</th><th>Naming Convention</th></tr></thead><tbody><tr><td>Package Specification File</td><td>The package specification file is an XML file generated and
</p><div class="table"><a name="idp140400239747488"></a><p class="title"><b>Table 11.1. Package files</b></p><div class="table-contents"><table summary="Package files" cellspacing="0" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>File Type</th><th>Its Use</th><th>Naming Convention</th></tr></thead><tbody><tr><td>Package Specification File</td><td>The package specification file is an XML file generated and
maintained by the OpenACS Package Manager (APM). It specifies
information about the package including its parameters and its
files.</td><td><code class="computeroutput">notes.info</code></td></tr><tr><td>Data Model Creation Script</td><td>
......
......@@ -105,7 +105,7 @@ create table <span class="bold"><strong>acs_objects</strong></span> (
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-tedious-context-hierarchy"></a>Context Hierarchy</h3></div></div></div><p>
Suppose objects <span class="emphasis"><em>A</em></span>, <span class="emphasis"><em>B</em></span>, ...,
and <span class="emphasis"><em>F</em></span> form the following hierarchy.
</p><div class="table"><a name="idp140717554704112"></a><p class="title"><b>Table 11.2. Context Hierarchy Example</b></p><div class="table-contents"><table summary="Context Hierarchy Example" cellspacing="0" border="1"><colgroup><col align="center" class="c1"><col align="center" class="c2"><col align="center" class="c3"></colgroup><tbody><tr><td colspan="3" align="center">
</p><div class="table"><a name="idp140400238400304"></a><p class="title"><b>Table 11.2. Context Hierarchy Example</b></p><div class="table-contents"><table summary="Context Hierarchy Example" cellspacing="0" border="1"><colgroup><col align="center" class="c1"><col align="center" class="c2"><col align="center" class="c3"></colgroup><tbody><tr><td colspan="3" align="center">
<span class="bold"><strong>A</strong></span>
<p>
<code class="computeroutput">object_id=10</code>
......@@ -139,7 +139,7 @@ create table <span class="bold"><strong>acs_objects</strong></span> (
This can be represented in the
<a class="xref" href="permissions-tediously-explained.html#acs_objects">acs_objects</a> table
by the following entries:
</p><div class="table"><a name="idp140717553040016"></a><p class="title"><b>Table 11.3. acs_objects example data</b></p><div class="table-contents"><table summary="acs_objects example data" cellspacing="0" border="1"><colgroup><col align="center" class="c1"><col align="center" class="c2"></colgroup><thead><tr><th align="center">object_id</th><th align="center">context_id</th></tr></thead><tbody><tr><td align="center">20</td><td align="center">10</td></tr><tr><td align="center">30</td><td align="center">10</td></tr><tr><td align="center">40</td><td align="center">20</td></tr><tr><td align="center">50</td><td align="center">20</td></tr><tr><td align="center">60</td><td align="center">30</td></tr></tbody></table></div></div><br class="table-break"><p>
</p><div class="table"><a name="idp140400238771344"></a><p class="title"><b>Table 11.3. acs_objects example data</b></p><div class="table-contents"><table summary="acs_objects example data" cellspacing="0" border="1"><colgroup><col align="center" class="c1"><col align="center" class="c2"></colgroup><thead><tr><th align="center">object_id</th><th align="center">context_id</th></tr></thead><tbody><tr><td align="center">20</td><td align="center">10</td></tr><tr><td align="center">30</td><td align="center">10</td></tr><tr><td align="center">40</td><td align="center">20</td></tr><tr><td align="center">50</td><td align="center">20</td></tr><tr><td align="center">60</td><td align="center">30</td></tr></tbody></table></div></div><br class="table-break"><p>
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 <a class="ulink" href="http://www.oradoc.com/ora817/server.817/a85397/expressi.htm#1023748" target="_top">CONNECT BY</a> query,
......
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 'http://www.w3.org/TR/html4/loose.dtd"'>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Programming with AOLserver</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter 11. Development Reference"><link rel="previous" href="object-identity.html" title="Object Identity"><link rel="next" href="eng-standards.html" title="Chapter 12. Engineering Standards"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="object-identity.html">Prev</a> </td><th width="60%" align="center">Chapter 11. Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="eng-standards.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="programming-with-aolserver"></a>Programming with AOLserver</h2></div></div></div><div class="authorblurb"><p>By Michael Yoon, Jon Salz and <a class="ulink" href="http://www.pinds.com/lars" target="_top">Lars Pind</a>.</p>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Programming with AOLserver</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter 11. Development Reference"><link rel="previous" href="object-identity.html" title="Object Identity"><link rel="next" href="form-builder.html" title="Using Form Builder: building html forms dynamically"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="object-identity.html">Prev</a> </td><th width="60%" align="center">Chapter 11. Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="form-builder.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="programming-with-aolserver"></a>Programming with AOLserver</h2></div></div></div><div class="authorblurb"><p>By Michael Yoon, Jon Salz and <a class="ulink" href="http://www.pinds.com/lars" target="_top">Lars Pind</a>.</p>
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
</div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="programming-aolserver-global"></a>The <code class="computeroutput">global</code> command</h3></div></div></div><p>
......@@ -210,4 +210,4 @@ should not be a problem. However, when using <code class="computeroutput">ns_set
perform lookup by name, they perform a linear lookup, whereas arrays use a
hash table, so <code class="computeroutput">ns_set</code>s are slower than arrays when the number of
entries is large.
</p><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="object-identity.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="eng-standards.html">Next</a></td></tr><tr><td width="40%" align="left">Object Identity </td><td width="20%" align="center"><a accesskey="u" href="dev-guide.html">Up</a></td><td width="40%" align="right"> Chapter 12. Engineering Standards</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/programming-with-aolserver.html#comments">View comments on this page at openacs.org</a></center></body></html>
</p><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="object-identity.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="form-builder.html">Next</a></td></tr><tr><td width="40%" align="left">Object Identity </td><td width="20%" align="center"><a accesskey="u" href="dev-guide.html">Up</a></td><td width="40%" align="right"> Using Form Builder: building html forms dynamically</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/programming-with-aolserver.html#comments">View comments on this page at openacs.org</a></center></body></html>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 'http://www.w3.org/TR/html4/loose.dtd"'>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Add PSGML commands to emacs init file (OPTIONAL)</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix B. Install additional supporting software"><link rel="previous" href="install-cvs.html" title="Initialize CVS (OPTIONAL)"><link rel="next" href="install-daemontools.html" title="Install Daemontools (OPTIONAL)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-cvs.html">Prev</a> </td><th width="60%" align="center">Appendix B. Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-daemontools.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="psgml-for-emacs"></a>Add PSGML commands to emacs init file (OPTIONAL)</h2></div></div></div><p><a class="indexterm" name="idp140717563151808"></a>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Add PSGML commands to emacs init file (OPTIONAL)</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix B. Install additional supporting software"><link rel="previous" href="install-cvs.html" title="Initialize CVS (OPTIONAL)"><link rel="next" href="install-daemontools.html" title="Install Daemontools (OPTIONAL)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-cvs.html">Prev</a> </td><th width="60%" align="center">Appendix B. Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-daemontools.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="psgml-for-emacs"></a>Add PSGML commands to emacs init file (OPTIONAL)</h2></div></div></div><p><a class="indexterm" name="idp140400244976480"></a>
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
......
This diff is collapsed.
......@@ -78,3 +78,9 @@ if {$db eq ""} {
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
# indent-tabs-mode: nil
# End:
......@@ -112,10 +112,10 @@ and insert this text:
</p><pre class="programlisting">
&lt;master src="master"&gt;
&lt;property name="title"&gt;@page_title@&lt;/property&gt;
&lt;property name="context_bar"&gt;@context_bar@&lt;/property&gt;
&lt;property name="title"&gt;@page_title;literal@&lt;/property&gt;
&lt;property name="context_bar"&gt;@context_bar;literal@&lt;/property&gt;
&lt;form action=@target@&gt;
&lt;form action="@target@"&gt;
&lt;p&gt;Title:
&lt;input type="text" name="title" value=""&gt;
&lt;/p&gt;
......@@ -124,7 +124,7 @@ and insert this text:
&lt;/p&gt;
&lt;p&gt;
&lt;center&gt;
&lt;input type=submit value="@submit_label@"&gt;
&lt;input type="submit" value="@submit_label@"&gt;
&lt;/center&gt;
&lt;/p&gt;
&lt;/form&gt;
......
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 'http://www.w3.org/TR/html4/loose.dtd"'>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter 10. Advanced Topics</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-package-dev.html" title="Part III. For OpenACS Package Developers"><link rel="previous" href="tutorial-pages.html" title="Creating Web Pages"><link rel="next" href="tutorial-specs.html" title="Write the Requirements and Design Specs"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-pages.html">Prev</a> </td><th width="60%" align="center">Part III. For OpenACS Package Developers</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-specs.html">Next</a></td></tr></table><hr></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a name="tutorial-advanced"></a>Chapter 10. Advanced Topics</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="sect1"><a href="tutorial-specs.html">Write the Requirements and Design Specs</a></span></dt><dt><span class="sect1"><a href="tutorial-cvs.html">Add the new package to CVS</a></span></dt><dt><span class="sect1"><a href="tutorial-etp-templates.html">OpenACS Edit This Page Templates</a></span></dt><dt><span class="sect1"><a href="tutorial-comments.html">Adding Comments</a></span></dt><dt><span class="sect1"><a href="tutorial-admin-pages.html">Admin Pages</a></span></dt><dt><span class="sect1"><a href="tutorial-categories.html">Categories</a></span></dt><dt><span class="sect1"><a href="profile-code.html">Profile your code</a></span></dt><dt><span class="sect1"><a href="tutorial-distribute.html">Prepare the package for distribution.</a></span></dt><dt><span class="sect1"><a href="tutorial-upgrades.html">Distributing upgrades of your package</a></span></dt><dt><span class="sect1"><a href="tutorial-notifications.html">Notifications</a></span></dt><dt><span class="sect1"><a href="tutorial-hierarchical.html">Hierarchical data</a></span></dt><dt><span class="sect1"><a href="tutorial-vuh.html">Using .vuh files for pretty urls</a></span></dt><dt><span class="sect1"><a href="tutorial-css-layout.html">Laying out a page with CSS instead of tables</a></span></dt><dt><span class="sect1"><a href="tutorial-html-email.html">Sending HTML email from your application</a></span></dt><dt><span class="sect1"><a href="tutorial-caching.html">Basic Caching</a></span></dt><dt><span class="sect1"><a href="tutorial-schedule-procs.html">Scheduled Procedures</a></span></dt><dt><span class="sect1"><a href="tutorial-wysiwyg-editor.html">Enabling WYSIWYG</a></span></dt><dt><span class="sect1"><a href="tutorial-parameters.html">Adding in parameters for your package</a></span></dt><dt><span class="sect1"><a href="tutorial-upgrade-scripts.html">Writing upgrade scripts</a></span></dt><dt><span class="sect1"><a href="tutorial-second-database.html">Connect to a second database</a></span></dt><dt><span class="sect1"><a href="tutorial-future-topics.html">Future Topics</a></span></dt></dl></div><div class="authorblurb"><p>by <a class="ulink" href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter 10. Advanced Topics</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-package-dev.html" title="Part III. For OpenACS Package Developers"><link rel="previous" href="tutorial-debug.html" title="Debugging and Automated Testing"><link rel="next" href="tutorial-specs.html" title="Write the Requirements and Design Specs"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-debug.html">Prev</a> </td><th width="60%" align="center">Part III. For OpenACS Package Developers</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-specs.html">Next</a></td></tr></table><hr></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a name="tutorial-advanced"></a>Chapter 10. Advanced Topics</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="sect1"><a href="tutorial-specs.html">Write the Requirements and Design Specs</a></span></dt><dt><span class="sect1"><a href="tutorial-cvs.html">Add the new package to CVS</a></span></dt><dt><span class="sect1"><a href="tutorial-etp-templates.html">OpenACS Edit This Page Templates</a></span></dt><dt><span class="sect1"><a href="tutorial-comments.html">Adding Comments</a></span></dt><dt><span class="sect1"><a href="tutorial-admin-pages.html">Admin Pages</a></span></dt><dt><span class="sect1"><a href="tutorial-categories.html">Categories</a></span></dt><dt><span class="sect1"><a href="profile-code.html">Profile your code</a></span></dt><dt><span class="sect1"><a href="tutorial-distribute.html">Prepare the package for distribution.</a></span></dt><dt><span class="sect1"><a href="tutorial-upgrades.html">Distributing upgrades of your package</a></span></dt><dt><span class="sect1"><a href="tutorial-notifications.html">Notifications</a></span></dt><dt><span class="sect1"><a href="tutorial-hierarchical.html">Hierarchical data</a></span></dt><dt><span class="sect1"><a href="tutorial-vuh.html">Using .vuh files for pretty urls</a></span></dt><dt><span class="sect1"><a href="tutorial-css-layout.html">Laying out a page with CSS instead of tables</a></span></dt><dt><span class="sect1"><a href="tutorial-html-email.html">Sending HTML email from your application</a></span></dt><dt><span class="sect1"><a href="tutorial-caching.html">Basic Caching</a></span></dt><dt><span class="sect1"><a href="tutorial-schedule-procs.html">Scheduled Procedures</a></span></dt><dt><span class="sect1"><a href="tutorial-wysiwyg-editor.html">Enabling WYSIWYG</a></span></dt><dt><span class="sect1"><a href="tutorial-parameters.html">Adding in parameters for your package</a></span></dt><dt><span class="sect1"><a href="tutorial-upgrade-scripts.html">Writing upgrade scripts</a></span></dt><dt><span class="sect1"><a href="tutorial-second-database.html">Connect to a second database</a></span></dt><dt><span class="sect1"><a href="tutorial-future-topics.html">Future Topics</a></span></dt></dl></div><div class="authorblurb"><p>by <a class="ulink" href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
</div><p>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.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-pages.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-specs.html">Next</a></td></tr><tr><td width="40%" align="left">Creating Web Pages </td><td width="20%" align="center"><a accesskey="u" href="acs-package-dev.html">Up</a></td><td width="40%" align="right"> Write the Requirements and Design Specs</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-advanced.html#comments">View comments on this page at openacs.org</a></center></body></html>
you've completed the basic tutorial.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-debug.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-specs.html">Next</a></td></tr><tr><td width="40%" align="left">Debugging and Automated Testing </td><td width="20%" align="center"><a accesskey="u" href="acs-package-dev.html">Up</a></td><td width="40%" align="right"> Write the Requirements and Design Specs</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-advanced.html#comments">View comments on this page at openacs.org</a></center></body></html>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 'http://www.w3.org/TR/html4/loose.dtd"'>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Laying out a page with CSS instead of tables</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter 10. Advanced Topics"><link rel="previous" href="tutorial-vuh.html" title="Using .vuh files for pretty urls"><link rel="next" href="tutorial-html-email.html" title="Sending HTML email from your application"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-vuh.html">Prev</a> </td><th width="60%" align="center">Chapter 10. Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-html-email.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-css-layout"></a>Laying out a page with CSS instead of tables</h2></div></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140717560322368"></a>.LRN home page with table-based layout</h3></div></div></div><div class="mediaobject" align="center"><img src="images/dotlrn-style-1.png" align="middle"></div><p>A sample of the HTML code (<a class="ulink" href="files/dotlrn-style-1.html" target="_top">full source</a>)</p><pre class="programlisting">&lt;table border="0" width="100%"&gt;
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Laying out a page with CSS instead of tables</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter 10. Advanced Topics"><link rel="previous" href="tutorial-vuh.html" title="Using .vuh files for pretty urls"><link rel="next" href="tutorial-html-email.html" title="Sending HTML email from your application"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-vuh.html">Prev</a> </td><th width="60%" align="center">Chapter 10. Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-html-email.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-css-layout"></a>Laying out a page with CSS instead of tables</h2></div></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140400202588432"></a>.LRN home page with table-based layout</h3></div></div></div><div class="mediaobject" align="center"><img src="images/dotlrn-style-1.png" align="middle"></div><p>A sample of the HTML code (<a class="ulink" href="files/dotlrn-style-1.html" target="_top">full source</a>)</p><pre class="programlisting">&lt;table border="0" width="100%"&gt;
&lt;tr&gt;
&lt;td valign="top" width="50%"&gt;
&lt;table class="element" border=0 cellpadding="0" cellspacing="0" width="100%"&gt;
......@@ -21,7 +21,7 @@
&lt;table border="0" bgcolor="white" cellpadding="0" cellspacing="0" width="100%"&gt;
&lt;tr&gt;
&lt;td class=element-text&gt;
MBA 101</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140717560327376"></a>.LRN Home with CSS-based layout</h3></div></div></div><div class="mediaobject" align="center"><img src="images/dotlrn-style-3.png" align="middle"></div><p>A sample of the HTML code (<a class="ulink" href="files/dotlrn-style-2.html" target="_top">full source</a>)</p><pre class="programlisting">&lt;div class="left"&gt;
MBA 101</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140400202575984"></a>.LRN Home with CSS-based layout</h3></div></div></div><div class="mediaobject" align="center"><img src="images/dotlrn-style-3.png" align="middle"></div><p>A sample of the HTML code (<a class="ulink" href="files/dotlrn-style-2.html" target="_top">full source</a>)</p><pre class="programlisting">&lt;div class="left"&gt;
&lt;div class="portlet-wrap-shadow"&gt;
&lt;div class="portlet-wrap-bl"&gt;
&lt;div class="portlet-wrap-tr"&gt;
......
......@@ -59,4 +59,4 @@ Checking in www/doc/admin-guide.html;
initial revision: 1.1
done
<span class="emphasis"><em>(many lines omitted)</em></span>
[$OPENACS_SERVICE_NAME myfirstpackage]$</pre><div class="figure"><a name="idp140717562296240"></a><p class="title"><b>Figure 10.1. Upgrading a local CVS repository</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/development-with-cvs.png" align="middle" alt="Upgrading a local CVS repository"></div></div></div><br class="figure-break"></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-specs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-etp-templates.html">Next</a></td></tr><tr><td width="40%" align="left">Write the Requirements and Design Specs </td><td width="20%" align="center"><a accesskey="u" href="tutorial-advanced.html">Up</a></td><td width="40%" align="right"> OpenACS Edit This Page Templates</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-cvs.html#comments">View comments on this page at openacs.org</a></center></body></html>
[$OPENACS_SERVICE_NAME myfirstpackage]$</pre><div class="figure"><a name="idp140400202543216"></a><p class="title"><b>Figure 10.1. Upgrading a local CVS repository</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/development-with-cvs.png" align="middle" alt="Upgrading a local CVS repository"></div></div></div><br class="figure-break"></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-specs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-etp-templates.html">Next</a></td></tr><tr><td width="40%" align="left">Write the Requirements and Design Specs </td><td width="20%" align="center"><a accesskey="u" href="tutorial-advanced.html">Up</a></td><td width="40%" align="right"> OpenACS Edit This Page Templates</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-cvs.html#comments">View comments on this page at openacs.org</a></center></body></html>
......@@ -2,7 +2,7 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Setting Up Database Objects</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial.html" title="Chapter 9. Development Tutorial"><link rel="previous" href="tutorial-newpackage.html" title="Creating an Application Package"><link rel="next" href="tutorial-pages.html" title="Creating Web Pages"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-newpackage.html">Prev</a> </td><th width="60%" align="center">Chapter 9. Development Tutorial</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-pages.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-database"></a>Setting Up Database Objects</h2></div></div></div><div class="authorblurb"><p>by <a class="ulink" href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
</div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140717553994400"></a>Code the data model</h3></div></div></div><p>We create all database objects with scripts in the
</div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140400238468672"></a>Code the data model</h3></div></div></div><p>We create all database objects with scripts in the
<code class="computeroutput">myfirstpackage/sql/</code> directory. All
database scripts are database-specific and are thus in either
the <code class="computeroutput">myfirstpackage/sql/oracle</code> or
......@@ -32,13 +32,13 @@
repository functions to simplify our database creation. (<a class="ulink" href="objects.html" target="_top">More
information about ACS Objects</a>. <a class="ulink" href="/doc/acs-content-repository" target="_top">More information about the
Content Repository</a>.)
</p><div class="figure"><a name="idp140717552745104"></a><p class="title"><b>Figure 9.2. Tutorial Data Model</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/tutorial-data-model.png" align="middle" alt="Tutorial Data Model"></div></div></div><br class="figure-break"><p>The top of each sql file has some
</p><div class="figure"><a name="idp140400235553088"></a><p class="title"><b>Figure 9.2. Tutorial Data Model</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/tutorial-data-model.png" align="middle" alt="Tutorial Data Model"></div></div></div><br class="figure-break"><p>The top of each sql file has some
standard comments, including doc tags such as
<code class="computeroutput">@author</code> which will be picked up
by the API browser. The string
<code class="computeroutput">$Id$</code> will automatically be
expanded when the file is checked in to cvs.</p><pre class="screen">[$OPENACS_SERVICE_NAME ~]$ <strong class="userinput"><code>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/sql/postgresql</code></strong>
[$OPENACS_SERVICE_NAME postgresql]$ <strong class="userinput"><code>emacs myfirstpackage-create.sql</code></strong></pre><p>Paste the text below into the file, save, and close.</p><div class="figure"><a name="idp140717555906896"></a><p class="title"><b>Figure 9.3. The Database Creation Script</b></p><div class="figure-contents"><pre class="programlisting">-- creation script
[$OPENACS_SERVICE_NAME postgresql]$ <strong class="userinput"><code>emacs myfirstpackage-create.sql</code></strong></pre><p>Paste the text below into the file, save, and close.</p><div class="figure"><a name="idp140400240736048"></a><p class="title"><b>Figure 9.3. The Database Creation Script</b></p><div class="figure-contents"><pre class="programlisting">-- creation script
--
-- @author joel@aufrecht.org
-- @cvs-id &amp;Id:$
......@@ -62,7 +62,7 @@ select content_folder__register_content_type(-100,'mfp_note','t');
object. Notice the use of "mfp." This is derived from "My
First Package" and ensures that our object is unlikely to conflict
with objects from other packages.</p><p>Create a database file to drop everything if the package is uninstalled.</p><pre class="screen">
[$OPENACS_SERVICE_NAME postgresql]$ <strong class="userinput"><code>emacs myfirstpackage-drop.sql</code></strong></pre><div class="figure"><a name="idp140717557395744"></a><p class="title"><b>Figure 9.4. Database Deletion Script</b></p><div class="figure-contents"><pre class="programlisting">-- drop script
[$OPENACS_SERVICE_NAME postgresql]$ <strong class="userinput"><code>emacs myfirstpackage-drop.sql</code></strong></pre><div class="figure"><a name="idp140400239144736"></a><p class="title"><b>Figure 9.4. Database Deletion Script</b></p><div class="figure-contents"><pre class="programlisting">-- drop script
--
-- @author joel@aufrecht.org
-- @cvs-id &amp;Id:$
......
This diff is collapsed.
......@@ -7,5 +7,5 @@
(<code class="computeroutput"><span class="guilabel"><span class="guilabel">37.1KB</span></span></code>)
after the label <code class="computeroutput"><span class="guilabel"><span class="guilabel">Distribution
File:</span></span></code> and save the file to
/var/tmp.</p><p><a class="indexterm" name="idp140717561802288"></a>
/var/tmp.</p><p><a class="indexterm" name="idp140400234622096"></a>
</p><p><a class="ulink" href="http://openacs.org/forums/message-view?message_id=192919" target="_top">Package development guidelines</a></p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="profile-code.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-upgrades.html">Next</a></td></tr><tr><td width="40%" align="left">Profile your code </td><td width="20%" align="center"><a accesskey="u" href="tutorial-advanced.html">Up</a></td><td width="40%" align="right"> Distributing upgrades of your package</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-distribute.html#comments">View comments on this page at openacs.org</a></center></body></html>
......@@ -13,5 +13,5 @@
cvs -d:pserver:anonymous@openacs.org:/cvsroot co edit-this-page</pre></li><li class="listitem"><p>Go to the package manager at http://yoursite/acs-admin/apm. And install the new package: edit-this-page.</p></li><li class="listitem"><p>Or use the "Add Application" form available on the Main site.</p></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="exercise3"></a>Change ETP Application</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Work out how to change the ETP application.</p></li><li class="listitem"><p>Investigate each of the available ETP templates:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>Default</p></li><li class="listitem"><p>News</p></li><li class="listitem"><p>FAQ</p></li></ul></div></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="exercise4"></a>Exercise 4: Create a New ETP Template</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Browse the files for each of the above ETP templates at:</p><pre class="screen">cd ~/openacs/packages/edit-this-page/templates</pre></li><li class="listitem"><p>Use the article template as the basis of our new col2 template.</p><pre class="screen">cp article-content.adp col2-content.adp
cp article-content.tcl col2-content.tcl
cp article-index.adp col2-index.adp
cp article-index.tcl col2-index.tcl</pre></li><li class="listitem"><p>The template should provide us with the following ETP layout:</p><div class="table"><a name="idp140717562326464"></a><p class="title"><b>Table 10.1. table showing ETP layout</b></p><div class="table-contents"><table summary="table showing ETP layout" cellspacing="0" border="1" width="250"><colgroup><col align="left" class="c1"><col width="2" align="left" class="c2"></colgroup><tbody><tr><td colspan="2" align="center">Header</td></tr><tr height="200"><td align="left">Sidebar</td><td align="left">Main Content Pane</td></tr></tbody></table></div></div><br class="table-break"></li><li class="listitem"><p>The "Main Content" pane should contain the editable content that ETP provides.</p></li><li class="listitem"><p>The "Header" should display the title of the page that you set in ETP.</p></li><li class="listitem"><p>The "Sidebar" should display the extlinks that you add as a content item in ETP.</p></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="exercise5"></a>Exercise 5: Register the col2 Template with ETP</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Need to register your template with ETP so that it appears in the drop-down menu that you would have seen in Exercise 3.</p><pre class="screen">cd ~/openacs/packages/edit-this-page/tcl
cp article-index.tcl col2-index.tcl</pre></li><li class="listitem"><p>The template should provide us with the following ETP layout:</p><div class="table"><a name="idp140400202467616"></a><p class="title"><b>Table 10.1. table showing ETP layout</b></p><div class="table-contents"><table summary="table showing ETP layout" cellspacing="0" border="1" width="250"><colgroup><col align="left" class="c1"><col width="2" align="left" class="c2"></colgroup><tbody><tr><td colspan="2" align="center">Header</td></tr><tr height="200"><td align="left">Sidebar</td><td align="left">Main Content Pane</td></tr></tbody></table></div></div><br class="table-break"></li><li class="listitem"><p>The "Main Content" pane should contain the editable content that ETP provides.</p></li><li class="listitem"><p>The "Header" should display the title of the page that you set in ETP.</p></li><li class="listitem"><p>The "Sidebar" should display the extlinks that you add as a content item in ETP.</p></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="exercise5"></a>Exercise 5: Register the col2 Template with ETP</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Need to register your template with ETP so that it appears in the drop-down menu that you would have seen in Exercise 3.</p><pre class="screen">cd ~/openacs/packages/edit-this-page/tcl
emacs etp-custom-init.tcl</pre></li><li class="listitem"><p>Use the function etp::define_application to register your template with ETP</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>Uncomment the "asc" definition</p></li><li class="listitem"><p>Set allow_extlinks to true, the rest should be false.</p></li></ul></div></li><li class="listitem"><p>Restart your server for the changes to take effect.</p></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="exercise6"></a>Exercise 6: Configure ETP to use the col2 Template</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Configure your ETP instance at /lab4/index to use the col2 template.</p></li><li class="listitem"><p>Create external links to link to other mounted ETP instances.</p></li><li class="listitem"><p>Check that your external links show up in the sidebar when you view your ETP application using the col2 template.</p></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="end"></a>Who Wrote This and When</h3></div></div></div><p>This problem set was originally written by <a class="ulink" href="http://www.weg.ee.usyd.edu.au/people/ncarroll" target="_top">Nick Carroll</a> in August 2004 for the <a class="ulink" href="http://www.usyd.edu.au" target="_top">University of Sydney</a> Course <a class="ulink" href="http://www.weg.ee.usyd.edu.au/courses/ebus5002" target="_top">EBUS5002</a>.</p><p>This material is copyright 2004 by Nick Carroll. It may be copied, reused, and modified, provided credit is given to the original author.</p><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-cvs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-comments.html">Next</a></td></tr><tr><td width="40%" align="left">Add the new package to CVS </td><td width="20%" align="center"><a accesskey="u" href="tutorial-advanced.html">Up</a></td><td width="40%" align="right"> Adding Comments</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-etp-templates.html#comments">View comments on this page at openacs.org</a></center></body></html>
......@@ -2,7 +2,7 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Creating an Application Package</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial.html" title="Chapter 9. Development Tutorial"><link rel="previous" href="tutorial.html" title="Chapter 9. Development Tutorial"><link rel="next" href="tutorial-database.html" title="Setting Up Database Objects"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial.html">Prev</a> </td><th width="60%" align="center">Chapter 9. Development Tutorial</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-database.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-newpackage"></a>Creating an Application Package</h2></div></div></div><div class="authorblurb"><p>by <a class="ulink" href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
</div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="tutorial-picture"></a>The intended page map</h3></div></div></div><div class="mediaobject"><img src="images/openacs-best-practice.png"></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140717560462480"></a>Overview</h3></div></div></div><p>To start developing new code in OpenACS, we build a new package. A package
</div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="tutorial-picture"></a>The intended page map</h3></div></div></div><div class="mediaobject"><img src="images/openacs-best-practice.png"></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140400232970112"></a>Overview</h3></div></div></div><p>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 <span class="strong"><strong>application</strong></span>;
a package which provides functions to other packages and has no direct interface, a
......@@ -18,11 +18,11 @@
right now. Code that is temporary hackage is clearly marked.
</p><p>In this tutorial, we will make an application package for
displaying a list of text notes.
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140717559727488"></a>Before you begin</h3></div></div></div><p>You will need:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>A computer with a working installation of
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140400237597328"></a>Before you begin</h3></div></div></div><p>You will need:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>A computer with a working installation of
OpenACS. If you don't have this, see <a class="xref" href="install-overview.html" title="Chapter 2. Installation Overview">Chapter 2, <i>Installation Overview</i></a>.
</p></li><li class="listitem"><p>Example files, which are included in the
standard OpenACS 5.7.0 distribution.
</p></li></ul></div><div class="figure"><a name="idp140717559847248"></a><p class="title"><b>Figure 9.1. Assumptions in this section</b></p><div class="figure-contents"><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col></colgroup><tbody><tr><td>Fully qualified domain name of your server</td><td><span class="replaceable"><span class="replaceable">yourserver.test</span></span></td></tr><tr><td>URL of your server</td><td><span class="replaceable"><span class="replaceable">http://yourserver.test:8000</span></span></td></tr><tr><td>Name of development account</td><td><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>New Package key</td><td><span class="replaceable"><span class="replaceable">myfirstpackage</span></span></td></tr></tbody></table></div></div></div><br class="figure-break"></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140717560661520"></a>Use the APM to initialize a new package</h3></div></div></div><p>We use the <a class="ulink" href="packages.html" target="_top">ACS Package Manager</a> (APM) to add, remove, and
</p></li></ul></div><div class="figure"><a name="idp140400236177696"></a><p class="title"><b>Figure 9.1. Assumptions in this section</b></p><div class="figure-contents"><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col></colgroup><tbody><tr><td>Fully qualified domain name of your server</td><td><span class="replaceable"><span class="replaceable">yourserver.test</span></span></td></tr><tr><td>URL of your server</td><td><span class="replaceable"><span class="replaceable">http://yourserver.test:8000</span></span></td></tr><tr><td>Name of development account</td><td><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>New Package key</td><td><span class="replaceable"><span class="replaceable">myfirstpackage</span></span></td></tr></tbody></table></div></div></div><br class="figure-break"></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140400240049952"></a>Use the APM to initialize a new package</h3></div></div></div><p>We use the <a class="ulink" href="packages.html" target="_top">ACS Package Manager</a> (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 @@ standard OpenACS 5.7.0 distribution.
<code class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/<span class="replaceable"><span class="replaceable">myfirstpackage</span></span></code>.
This is the "home directory" of our new package, and all
files in the package will be within this directory. <a class="ulink" href="packages.html" target="_top">More on the structure of
packages</a>). </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140717560681936"></a>Add an Application Instance to the Server</h3></div></div></div><p>In order to see your work in progress, you must create a
packages</a>). </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140400230890528"></a>Add an Application Instance to the Server</h3></div></div></div><p>In order to see your work in progress, you must create a
map between the URL space of incoming requests and the package application instance.
You do this by adding the application in the main site administration). This
creates a link between the incoming URL requests and an
......@@ -66,7 +66,7 @@ standard OpenACS 5.7.0 distribution.
in this tutorial.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Browse to
<code class="computeroutput"><span class="replaceable"><span class="replaceable">http://yourserver.test:8000</span></span><a class="ulink" href="/admin/applications/application-add" target="_top">/admin/applications/application-add/</a></code>.</p></li><li class="listitem"><p>Choose "My First Package" from the list and click OK (the other fields are optional).</p></li></ol></div><p>By mounting the package, we've caused all requests to
<code class="computeroutput">http://yourserver.test:8000/myfirstpackage</code>
to be satisfied from the files at <code class="computeroutput">/var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www</code>.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140717563036880"></a>Quick start</h3></div></div></div><p>The remainder of the tutorial walks you through each file one at a time as you create the package. You can skip all this, and get a working package, by doing the following:</p><pre class="screen">cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/acs-core-docs/www/files/tutorial
to be satisfied from the files at <code class="computeroutput">/var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www</code>.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140400239580720"></a>Quick start</h3></div></div></div><p>The remainder of the tutorial walks you through each file one at a time as you create the package. You can skip all this, and get a working package, by doing the following:</p><pre class="screen">cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/acs-core-docs/www/files/tutorial
psql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -f myfirstpackage-create.sql
cp note-edit.* note-delete.tcl index.* ../../../../myfirstpackage/www/
mkdir ../../../../myfirstpackage/lib
......
This diff is collapsed.
......@@ -2,7 +2,7 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Enabling WYSIWYG</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter 10. Advanced Topics"><link rel="previous" href="tutorial-schedule-procs.html" title="Scheduled Procedures"><link rel="next" href="tutorial-parameters.html" title="Adding in parameters for your package"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-schedule-procs.html">Prev</a> </td><th width="60%" align="center">Chapter 10. Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-parameters.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-wysiwyg-editor"></a>Enabling WYSIWYG</h2></div></div></div><div class="authorblurb"><p>by <a class="ulink" href="mailto:nima.mazloumi@gmx.de" target="_top">Nima Mazloumi</a></p>
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
</div><p>Most of the forms in OpenACS are created using the form builder, see <a class="xref" href="">???</a>. For detailed information on the
</div><p>Most of the forms in OpenACS are created using the form builder, see <a class="xref" href="form-builder.html" title="Using Form Builder: building html forms dynamically">the section called “Using Form Builder: building html forms dynamically”</a>. For detailed information on the
API take a look <a class="ulink" href="/api-doc/proc-view?proc=ad_form" target="_top">here</a>.</p><p>The following section shows how you can modify your form to allow WYSIWYG functionalities.</p><p>Convert your page to use <code class="code">ad_form</code> (some changes but worth it)</p><p>Here an examples. From:</p><pre class="programlisting">
template::form create my_form
template::element create my_form my_form_id -label "The ID" -datatype integer -widget hidden
......
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 'http://www.w3.org/TR/html4/loose.dtd"'>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter 9. Development Tutorial</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-package-dev.html" title="Part III. For OpenACS Package Developers"><link rel="previous" href="acs-package-dev.html" title="Part III. For OpenACS Package Developers"><link rel="next" href="tutorial-newpackage.html" title="Creating an Application Package"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="acs-package-dev.html">Prev</a> </td><th width="60%" align="center">Part III. For OpenACS Package Developers</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-newpackage.html">Next</a></td></tr></table><hr></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a name="tutorial"></a>Chapter 9. Development Tutorial</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="sect1"><a href="tutorial-newpackage.html">Creating an Application Package</a></span></dt><dt><span class="sect1"><a href="tutorial-database.html">Setting Up Database Objects</a></span></dt><dt><span class="sect1"><a href="tutorial-pages.html">Creating Web Pages</a></span></dt></dl></div>Section missing</div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="acs-package-dev.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-newpackage.html">Next</a></td></tr><tr><td width="40%" align="left">Part III. For OpenACS Package Developers </td><td width="20%" align="center"><a accesskey="u" href="acs-package-dev.html">Up</a></td><td width="40%" align="right"> Creating an Application Package</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial.html#comments">View comments on this page at openacs.org</a></center></body></html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter 9. Development Tutorial</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-package-dev.html" title="Part III. For OpenACS Package Developers"><link rel="previous" href="acs-package-dev.html" title="Part III. For OpenACS Package Developers"><link rel="next" href="tutorial-newpackage.html" title="Creating an Application Package"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="acs-package-dev.html">Prev</a> </td><th width="60%" align="center">Part III. For OpenACS Package Developers</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-newpackage.html">Next</a></td></tr></table><hr></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a name="tutorial"></a>Chapter 9. Development Tutorial</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="sect1"><a href="tutorial-newpackage.html">Creating an Application Package</a></span></dt><dt><span class="sect1"><a href="tutorial-database.html">Setting Up Database Objects</a></span></dt><dt><span class="sect1"><a href="tutorial-pages.html">Creating Web Pages</a></span></dt><dt><span class="sect1"><a href="tutorial-debug.html">Debugging and Automated Testing</a></span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="acs-package-dev.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-newpackage.html">Next</a></td></tr><tr><td width="40%" align="left">Part III. For OpenACS Package Developers </td><td width="20%" align="center"><a accesskey="u" href="acs-package-dev.html">Up</a></td><td width="40%" align="right"> Creating an Application Package</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial.html#comments">View comments on this page at openacs.org</a></center></body></html>
......@@ -2,7 +2,10 @@
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Install a Unix-like system and supporting software</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="complete-install.html" title="Chapter 3. Complete Installation"><link rel="previous" href="complete-install.html" title="Chapter 3. Complete Installation"><link rel="next" href="oracle.html" title="Install Oracle 8.1.7"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="complete-install.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Complete Installation</th><td width="20%" align="right"> <a accesskey="n" href="oracle.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="unix-installation"></a>Install a Unix-like system and supporting software</h2></div></div></div><div class="authorblurb"><p>by <a class="ulink" href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
</div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="unix-install"></a>a Unix-like system</h3></div></div></div><p>You will need a computer running a unix-like system with the following software installed:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>tdom</p></li><li class="listitem"><p>tcl --if you plan to use the OpenACS installation script</p></li><li class="listitem"><p>gmake and the compile and build environment.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">BSD Note</h3><p>BSD users: in most places in these instructions, gmake will work better than make. (<a class="ulink" href="http://openacs.org/forums/message-view?message_id=136910" target="_top">more
</div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="unix-install"></a>a Unix-like system</h3></div></div></div><p>Most of the documentation in this section is kept as a
reference. More up-to-date documentation is in the <a class="ulink" href="http://openacs.org/xowiki/openacs-system-install" target="_top">install
sections in the Wiki</a>.
</p><p>You will need a computer running a unix-like system with the following software installed:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>tdom</p></li><li class="listitem"><p>tcl --if you plan to use the OpenACS installation script</p></li><li class="listitem"><p>gmake and the compile and build environment.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">BSD Note</h3><p>BSD users: in most places in these instructions, gmake will work better than make. (<a class="ulink" href="http://openacs.org/forums/message-view?message_id=136910" target="_top">more
information on FreeBSD installation</a>). Also, fetch is a native replacement for wget.</p></div></li></ul></div><p>Note: Instructions for installing tDOM and threaded tcl are included with the AOLserver4 installation instructions,
if these are not yet installed.</p><p>The following programs may be useful or required for some configurations. They are included in most distributions:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>emacs</p></li><li class="listitem"><p>cvs (and <a class="link" href="install-cvs.html" title="Initialize CVS (OPTIONAL)">initialize</a> it)</p></li><li class="listitem"><p>ImageMagick (used by some packages for server side image manipulation)</p></li><li class="listitem"><p>Aspell (<a class="ulink" href="http://openacs.org/forums/message-view?message_id=130549" target="_top">more information on spell-checking</a>)</p></li><li class="listitem"><p>DocBook and supporting software (and <a class="link" href="psgml-for-emacs.html" title="Add PSGML commands to emacs init file (OPTIONAL)">install</a> emacs keybindings for DocBook SGML)</p></li><li class="listitem"><p>daemontools (<a class="link" href="install-daemontools.html" title="Install Daemontools (OPTIONAL)">install from source</a>)</p></li><li class="listitem"><p>a Mail Transport Agent, such as exim or sendmail (or <a class="link" href="install-qmail.html" title="Install qmail (OPTIONAL)">install qmail from source</a>)</p></li></ul></div><p>In order to cut and paste the example code into your shell, you must first do <a class="xref" href="install-steps.html#cut-and-paste-name-var" title="Setting a global shell variable for cut and paste">Setting a global shell variable for cut and paste</a>.</p><p>To install a machine to the specifications of the Reference Platform, do the
<a class="link" href="install-redhat.html" title="Appendix A. Install Red Hat 8/9">walkthrough of the Red Hat 8.0 Install for OpenACS</a>.</p><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="complete-install.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="oracle.html">Next</a></td></tr><tr><td width="40%" align="left">Chapter 3. Complete Installation </td><td width="20%" align="center"><a accesskey="u" href="complete-install.html">Up</a></td><td width="40%" align="right"> Install Oracle 8.1.7</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/unix-installation.html#comments">View comments on this page at openacs.org</a></center></body></html>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 'http://www.w3.org/TR/html4/loose.dtd"'>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Upgrading 4.5 or higher to 4.6.3</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="upgrade.html" title="Chapter 5. Upgrading"><link rel="previous" href="upgrade-overview.html" title="Overview"><link rel="next" href="upgrade-4.6.3-to-5.html" title="Upgrading OpenACS 4.6.3 to 5.0"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="upgrade-overview.html">Prev</a> </td><th width="60%" align="center">Chapter 5. Upgrading</th><td width="20%" align="right"> <a accesskey="n" href="upgrade-4.6.3-to-5.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="upgrade-4.5-to-4.6"></a>Upgrading 4.5 or higher to 4.6.3</h2></div></div></div><a class="indexterm" name="idp140717558016720"></a><p>The required platform for OpenACS 4.6 is the same as
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Upgrading 4.5 or higher to 4.6.3</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="upgrade.html" title="Chapter 5. Upgrading"><link rel="previous" href="upgrade-overview.html" title="Overview"><link rel="next" href="upgrade-4.6.3-to-5.html" title="Upgrading OpenACS 4.6.3 to 5.0"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="upgrade-overview.html">Prev</a> </td><th width="60%" align="center">Chapter 5. Upgrading</th><td width="20%" align="right"> <a accesskey="n" href="upgrade-4.6.3-to-5.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="upgrade-4.5-to-4.6"></a>Upgrading 4.5 or higher to 4.6.3</h2></div></div></div><a class="indexterm" name="idp140400239378048"></a><p>The required platform for OpenACS 4.6 is the same as
4.5, with the exception of OpenFTS. OpenACS 4.6 and later require OpenFTS 0.3.2 for full text search on PostGreSQL. If you have OpenFTS 0.2, you'll need to upgrade. </p><p>If upgrading from 4.4, you need to manually run acs-kernel/sql/postgres/upgrade-4.4-4.5.sql. See <a class="ulink" href="http://openacs.org/bugtracker/openacs/bug?bug_number=632" target="_top">Bug #632</a></p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem" style="list-style-type: circle"><p>A computer with OpenACS 4.5.</p></li><li class="listitem" style="list-style-type: circle"><p><a class="ulink" href="http://openacs.org/projects/openacs/download/" target="_top">OpenACS 4.6 tarball</a> or CVS checkout/export.</p></li><li class="listitem" style="list-style-type: circle"><p>Required for Full Text Search on PostgreSQL: <a class="ulink" href="http://openfts.sourceforge.net" target="_top">OpenFTS 0.3.2</a></p></li></ul></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p><b>Make a Backup. </b>Back up the database and file system (see <a class="xref" href="snapshot-backup.html" title="Manual backup and recovery">the section called “Manual backup and recovery”</a>).</p></li><li class="listitem"><p><b>OPTIONAL: Upgrade OpenFTS. </b><a class="xref" href="upgrade-supporting.html#upgrade-openfts-0.2-to-0.3.2" title="Upgrading OpenFTS from 0.2 to 0.3.2">the section called “Upgrading OpenFTS from 0.2 to 0.3.2”</a></p></li><li class="listitem"><p>
Stop the server
</p><pre class="screen">[root root]# <strong class="userinput"><code>svc -d /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong></pre></li><li class="listitem"><p><b>Upgrade the file system. </b><a class="xref" href="upgrade-openacs-files.html" title="Upgrading the OpenACS files">the section called “Upgrading the OpenACS files”</a></p></li><li class="listitem"><p>
......
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 'http://www.w3.org/TR/html4/loose.dtd"'>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Upgrading the OpenACS files</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="upgrade.html" title="Chapter 5. Upgrading"><link rel="previous" href="upgrade-5-0-dot.html" title="Upgrading an OpenACS 5.0.0 or greater installation"><link rel="next" href="upgrade-supporting.html" title="Upgrading Platform components"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="upgrade-5-0-dot.html">Prev</a> </td><th width="60%" align="center">Chapter 5. Upgrading</th><td width="20%" align="right"> <a accesskey="n" href="upgrade-supporting.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="upgrade-openacs-files"></a>Upgrading the OpenACS files</h2></div></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140717558104768"></a>Chosing a Method to Upgrade your Files</h3></div></div></div><p>OpenACS is distributed in many different ways:
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Upgrading the OpenACS files</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="upgrade.html" title="Chapter 5. Upgrading"><link rel="previous" href="upgrade-5-0-dot.html" title="Upgrading an OpenACS 5.0.0 or greater installation"><link rel="next" href="upgrade-supporting.html" title="Upgrading Platform components"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="border:0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="upgrade-5-0-dot.html">Prev</a> </td><th width="60%" align="center">Chapter 5. Upgrading</th><td width="20%" align="right"> <a accesskey="n" href="upgrade-supporting.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="upgrade-openacs-files"></a>Upgrading the OpenACS files</h2></div></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140400233089888"></a>Chosing a Method to Upgrade your Files</h3></div></div></div><p>OpenACS is distributed in many different ways:
</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>as a collection of files</p></li><li class="listitem"><p> as one big tarball</p></li><li class="listitem"><p> via CVS</p></li><li class="listitem"><p> via automatic download from within the APM
(package manager)</p></li></ul></div><p>
</p><p>Upgrades work by first changing the file system (via any
......@@ -11,7 +11,7 @@
describes whether or not you need to be upgrading using this
page or not:
<a class="xref" href="upgrade-5-0-dot.html" title="Upgrading an OpenACS 5.0.0 or greater installation">the section called “Upgrading an OpenACS 5.0.0 or greater installation”</a>
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140717558109856"></a>Methods of upgrading OpenACS files</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><b>Upgrading files for a site which is not in a CVS repository. </b>Unpack the tarball into a new directory and copy its
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140400233175360"></a>Methods of upgrading OpenACS files</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><b>Upgrading files for a site which is not in a CVS repository. </b>Unpack the tarball into a new directory and copy its
contents on top of your working directory. Or just 'install
software', select remote repository, and upgrade your files
from there.</p><pre class="screen">[root root]# <strong class="userinput"><code>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
......@@ -32,7 +32,7 @@ exit</span></span></pre></li><li class="listitem"><p>
with the latest OpenACS version, without overriding your own
local customizations. </p><p>This diagram explains the basic idea. However, the
labels are incorrect. Step 1(a) has been removed, and Step
1(b) should be labelled Step 1.</p><div class="figure"><a name="idp140717558119968"></a><p class="title"><b>Figure 5.2. Upgrading a local CVS repository</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/upgrade-cvs.png" align="middle" alt="Upgrading a local CVS repository"></div></div></div><br class="figure-break"><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p><b>Step 0: Set up a working CVS checkout. </b>To get your OpenACS code into your local CVS
1(b) should be labelled Step 1.</p><div class="figure"><a name="idp140400239823520"></a><p class="title"><b>Figure 5.2. Upgrading a local CVS repository</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/upgrade-cvs.png" align="middle" alt="Upgrading a local CVS repository"></div></div></div><br class="figure-break"><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p><b>Step 0: Set up a working CVS checkout. </b>To get your OpenACS code into your local CVS
repository, you will set up a working CVS checkout of
OpenACS. When you want to update your site, you'll
update the working CVS checkout, import those changes
......@@ -97,7 +97,7 @@ exit</span></span></pre></li><li class="listitem"><p>
</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><pre class="screen">[$OPENACS_SERVICE_NAME ~]$ <strong class="userinput"><code>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>cvs up -Pd</code></strong>
(CVS feedback)
[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$</pre></li></ol></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140717558177104"></a>Upgrading a Production Site Safely</h3></div></div></div><p>If you are upgrading a production OpenACS site which is on a private CVS tree, this process lets you do the upgrade without risking extended downtime or an unusable site:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Declare a freeze on new cvs updates - ie, you cannot run cvs update
[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$</pre></li></ol></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp140400239758016"></a>Upgrading a Production Site Safely</h3></div></div></div><p>If you are upgrading a production OpenACS site which is on a private CVS tree, this process lets you do the upgrade without risking extended downtime or an unusable site:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Declare a freeze on new cvs updates - ie, you cannot run cvs update
on the production site</p></li><li class="listitem"><p>
Make a manual backup of the production site in addition to the
automated backups</p></li><li class="listitem"><p>Import the new code (for example, OpenACS 5.0.4, openacs-5-0-compat versions of
......
......@@ -4,4 +4,4 @@
or better, you should always be able to upgrade all of your core
packages automatically. If you haven't changed anything, no
manual intervention should be required. If you are running
OpenACS prior to 4.5, upgrading will require manual effort.</p><p>If all of these conditions are true:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Your OpenACS Core is 5.0.0 or later</p></li><li class="listitem"><p>You do not keep your OpenACS site in a local CVS repository</p></li><li class="listitem"><p>You do not have any custom code</p></li></ul></div><p>then you can upgrade automatically using the automated installer in the OpenACS Package Manager (APM), and you can probably skip the rest of this chapter. To upgrade directly from the OpenACS repository using the APM:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Browse to the <a class="ulink" href="/acs-admin/install/" target="_top">Installer</a>.</p></li><li class="listitem"><p>Click install or upgrade under "Install from OpenACS Repository" and select the packages to install or upgrade.</p></li><li class="listitem"><p>The APM will download the requested packages from OpenACS.org, install the files on your hard drive, run any appropriate database upgrade scripts, and prompt you to restart the server. After restarting the server again, the upgrade is complete.</p></li></ol></div><div class="figure"><a name="idp140717556838416"></a><p class="title"><b>Figure 5.1. Upgrading with the APM</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/upgrade-apm.png" align="middle" alt="Upgrading with the APM"></div></div></div><br class="figure-break"><p>It's always a good idea to precede an upgrade attempt with a <a class="link" href="snapshot-backup.html" title="Manual backup and recovery">snapshot backup</a>.</p><div class="table"><a name="idp140717558009040"></a><p class="title"><b>Table 5.1. Assumptions in this section</b></p><div class="table-contents"><table summary="Assumptions in this section" cellspacing="0" border="1"><colgroup><col><col></colgroup><tbody><tr><td>name of OpenACS user</td><td><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>OpenACS server name</td><td><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>Root of OpenACS file tree</td><td><span class="replaceable"><span class="replaceable">/var/lib/aolserver/$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>Database backup directory</td><td><span class="replaceable"><span class="replaceable">/var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup</span></span></td></tr></tbody></table></div></div><br class="table-break"></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="upgrade.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="upgrade-4.5-to-4.6.html">Next</a></td></tr><tr><td width="40%" align="left">Chapter 5. Upgrading </td><td width="20%" align="center"><a accesskey="u" href="upgrade.html">Up</a></td><td width="40%" align="right"> Upgrading 4.5 or higher to 4.6.3</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/upgrade-overview.html#comments">View comments on this page at openacs.org</a></center></body></html>
OpenACS prior to 4.5, upgrading will require manual effort.</p><p>If all of these conditions are true:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Your OpenACS Core is 5.0.0 or later</p></li><li class="listitem"><p>You do not keep your OpenACS site in a local CVS repository</p></li><li class="listitem"><p>You do not have any custom code</p></li></ul></div><p>then you can upgrade automatically using the automated installer in the OpenACS Package Manager (APM), and you can probably skip the rest of this chapter. To upgrade directly from the OpenACS repository using the APM:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Browse to the <a class="ulink" href="/acs-admin/install/" target="_top">Installer</a>.</p></li><li class="listitem"><p>Click install or upgrade under "Install from OpenACS Repository" and select the packages to install or upgrade.</p></li><li class="listitem"><p>The APM will download the requested packages from OpenACS.org, install the files on your hard drive, run any appropriate database upgrade scripts, and prompt you to restart the server. After restarting the server again, the upgrade is complete.</p></li></ol></div><div class="figure"><a name="idp140400240428672"></a><p class="title"><b>Figure 5.1. Upgrading with the APM</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/upgrade-apm.png" align="middle" alt="Upgrading with the APM"></div></div></div><br class="figure-break"><p>It's always a good idea to precede an upgrade attempt with a <a class="link" href="snapshot-backup.html" title="Manual backup and recovery">snapshot backup</a>.</p><div class="table"><a name="idp140400239370176"></a><p class="title"><b>Table 5.1. Assumptions in this section</b></p><div class="table-contents"><table summary="Assumptions in this section" cellspacing="0" border="1"><colgroup><col><col></colgroup><tbody><tr><td>name of OpenACS user</td><td><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>OpenACS server name</td><td><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>Root of OpenACS file tree</td><td><span class="replaceable"><span class="replaceable">/var/lib/aolserver/$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>Database backup directory</td><td><span class="replaceable"><span class="replaceable">/var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup</span></span></td></tr></tbody></table></div></div><br class="table-break"></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="upgrade.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="upgrade-4.5-to-4.6.html">Next</a></td></tr><tr><td width="40%" align="left">Chapter 5. Upgrading </td><td width="20%" align="center"><a accesskey="u" href="upgrade.html">Up</a></td><td width="40%" align="right"> Upgrading 4.5 or higher to 4.6.3</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/upgrade-overview.html#comments">View comments on this page at openacs.org</a></center></body></html>
......@@ -4,7 +4,7 @@
by OpenACS documentation staff.
</div><p>Starting with OpenACS 5.0 and the introduction of acs-lang,
we recommend retrieving date/time information from the database in
ANSI format and then using <a class="ulink" href="/api-doc/proc-view?proc=lc%5ftime%5ffmt" target="_top">lc_time_fmt</a> to format it for display.</p><div class="example"><a name="idp140717563967264"></a><p class="title"><b>Example 12.1. Getting datetime from the database ANSI-style</b></p><div class="example-contents"><pre class="programlisting">db_multirow -extend { mydate_pretty } {
ANSI format and then using <a class="ulink" href="/api-doc/proc-view?proc=lc%5ftime%5ffmt" target="_top">lc_time_fmt</a> to format it for display.</p><div class="example"><a name="idp140400257293040"></a><p class="title"><b>Example 12.1. Getting datetime from the database ANSI-style</b></p><div class="example-contents"><pre class="programlisting">db_multirow -extend { mydate_pretty } {
select to_char(mydate, 'YYYY-MM-DD HH24:MI:SS') as mydate_ansi,
...
...
......
......@@ -76,7 +76,7 @@ adaptable UI. Error handling includes inline error reporting, and is customizabl
block that extends the form, you'll have the opportunity to add in
subcategories:
</para>
<programlisting> if {[info exists pm_task_id] && $pm_task_id ne ""} {
<programlisting> if {[info exists pm_task_id] &amp;&amp; $pm_task_id ne ""} {
db_1row get_task_values { }
ad_form -extend -name form_name -form { ... }
</programlisting>
......
......@@ -146,7 +146,7 @@ goes inside <computeroutput>-test_code {}</computeroutput>. We want to implemen
<programlisting>
set name [ad_generate_random_string]
set new_id [mfp::note::add -title $name]
aa_true "Note add succeeded" ([info exists new_id] && $new_id ne "")</programlisting>
aa_true "Note add succeeded" ([info exists new_id] &amp;&amp; $new_id ne "")</programlisting>
<para>To test our simple case, we must load the test file into the system (just as with the /tcl file in the basic tutorial, since the file didn't exist when the system started, the system doesn't know about it.) To make this file take effect, go to the <ulink url="/acs-admin/apm">APM</ulink> and choose "Reload changed" for "MyFirstPackage". Since we'll be changing it frequently, select "watch this file" on the next page. This will cause the system to check this file every time any page is requested, which is bad for production systems but convenient for developing. We can also add some aa_register_case flags to make it easier to run the test. The <computeroutput>-procs</computeroutput> flag, which indicates which procs are tested by this test case, makes it easier to find procs in your package that aren't tested at all. The <computeroutput>-cats</computeroutput> flag, setting categories, makes it easier to control which tests to run. The <computeroutput>smoke</computeroutput> test setting means that this is a basic test case that can and should be run any time you are doing any test. (<ulink url="http://www.nedbatchelder.com/blog/20030408T062805.html">a definition of "smoke test"</ulink>)</para>
<para>Once the file is loaded, go to <ulink url="/test">ACS Automated Testing</ulink> and click on myfirstpackage. You should see your test case. Run it and examine the results.</para>
<sect3>
......
......@@ -39,6 +39,276 @@ linkend="changelog-latest"></xref>) since the last release and in the
entire &majorversion;.&minorversion; release sequence <xref linkend="changelog"></xref>.</para>
-->
<sect2 id="release-notes-5-9-0">
<title>Release 5.9.0</title>
<itemizedlist>
<listitem><para>
The release of OpenACS 5.9.0 contains the 78 packages of the oacs-5-9 branch.
These packages include the OpenACS core packages, the major
application packages (e.g. most the ones used on OpenACS.org), and
DotLRN 2.9.0.
</para></listitem>
<listitem><para>
Summary of changes:
<itemizedlist>
<listitem><para>SQL:
<itemizedlist>
<listitem><para>
Improved performance of acs-object deletion.
</para></listitem>
<listitem><para>
Replaced many manual referential integrity calls by
built-in handing in PostgreSQL.
</para></listitem>
<listitem><para>
Removed various manual bookkeeping and deletion operations
in the content repository by built-in handing in PostgreSQL.
</para></listitem>
<listitem><para>
Removed tree_sortkey on acs-objects to reduce its size and
to speedup operations, where the context-id is changed
(could take on large installation several minutes in
earlier versions)
</para></listitem>
<listitem><para>
Removed several uncalled / redundant SQL statements and functions.
</para></listitem>
<listitem><para> Cleanup of .xql files in acs-subsite:
<itemizedlist spacing='compact' mark='opencircle'>
<listitem><para> Some cleanup of .xql files: removed
misleading sql-statements from db_* calls, which were
ignored due .xql files
</para></listitem>
<listitem><para> Removed bug where same query-name was
used in different branches of an if-statement for
different sql statements, but the query-name lead to the
wrong result.
</para></listitem>
<listitem><para> Removed multiple entries of same query
name from .xql files (e.g. the entry
"package_create_attribute_list.select_type_info" was
7 (!) times in a single .xql file)
</para></listitem>
</itemizedlist>
</para></listitem>
</itemizedlist>
</para></listitem>
<listitem><para>Web Interface:
<itemizedlist>
<listitem><para>
Improve Performance of WebSites created with OpenACS:
e.g. move core.js to a body requests, provide kernel
parameter ResourcesExpireInterval to specify expiration
times for resources.
</para></listitem>
<listitem><para>
Much better protection against XSS attacks.
</para></listitem>
<listitem><para>
Improved HTML validity (especially for admin pages)
</para></listitem>
<listitem><para>
Improved admin interface:
<itemizedlist spacing='compact' mark='opencircle'>
<listitem><para>
Placed all installation options to a single page.
</para></listitem>
<listitem><para>
Added pagination to /admin/applications (was unusable
for large sites)
</para></listitem>
<listitem><para>
New admin pages for subsites linked from
site-wide-admin package (/acs-admin).
</para></listitem>
<listitem><para>
Added explanatory text to several admin pages.
</para></listitem>
</itemizedlist>
</para></listitem>
<listitem><para> Add lightweight support for ckeditor4 for
templating::richtext widget (configurable via package
parameter "RichTextEditor" of acs-templating. ckeditor4
supports mobile devices (such as iPad, ...)
</para></listitem>
</itemizedlist>
</para></listitem>
<listitem><para>Templating:
<itemizedlist>
<listitem><para>
Improved theme-ability: Moved more information into theme
packages in order to create responsive designs, reduce
hard-coding of paths, HTML etc.
</para></listitem>
<listitem><para>
Improved include-handling: All includes are now
theme-able, interfaces of includes can be defined with
"ad_include_contract" (similar to ad_page_contract).
</para></listitem>
<listitem><para>
Improved them-ability for display_templates. One can now
provide a display_template_name (similar to the sql
statement name) to refer to display templates. This
enables reusability and is theme-able.
</para></listitem>
<listitem><para> Dimensional slider reform (ad_dimensional):
Removed hard-coded table layout from dimensional slider. Add
backwards compatible templates Move hard-coded styles into
theme styling </para></listitem>
<listitem><para>
Notification chunks are now theme-able as well (using ad_include_contrat)
</para></listitem>
<listitem><para>
Complete template variable suffixes (adding noi18n,
addressing bug #2692, full list is now: noquote, noi18n, literal)
</para></listitem>
<listitem><para>
Added timeout and configurable secrets for signed url
parameters to export_vars/page_contracts.
This can be used to secure sensitive operations
such as granting permissions since a link can be set to
timeout after e.g. 60 seconds; after that, the link is
invalid. A secret (password) can be set in section
ns/server/$server/acs parameter "parametersecret".
For example, one can use now "user_id:sign(max_age=60)" in
export_vars to let the exported variable expire after 60 seconds.
</para></listitem>
</itemizedlist>
</para></listitem>
<listitem><para>Misc:
<itemizedlist>
<listitem><para>
Added ability to show ns_log statements of current request
to developer support output when developer support is
activated (controlled via package parameter "TclTraceLogServerities"
in the acs-tcl package parameters)
</para></listitem>
<listitem><para>
Added ability to save data sent by
ns_return in files on the file system. This can be used to
validate HTML content also for password protected pages
(controlled via package parameter "TclTraceSaveNsReturn" in
the acs-tcl package parameters)
</para></listitem>
<listitem><para>
New api function "ad_log" having the same interface as
ns_log, but which logs the calling information (like URL
and call-stack) to ease tracking of errors.
</para></listitem>
<listitem><para> Use per-thread caching to reduce number of
mutex lock operations and lock contention on various caches
(util-memoize, xo_site_nodes, xotcl_object_types) and nsvs
(e.g ds_properties) </para></listitem>
<listitem><para>
Improved templating of OpenACS core documentation
</para></listitem>
<listitem><para>
Improved Russian Internationalization
</para></listitem>
<listitem><para>
Make pretty-names of acs-core packages more consistent
</para></listitem>
<listitem><para>
Mark unused functions of acs-tcl/tcl/table-display-procs.tcl as deprecated
</para></listitem>
<listitem><para>
Many more bug fixes (from bug tracker and extra) and
performance improvements.
</para></listitem>
<listitem><para>
Version numbers:
<itemizedlist spacing='compact' mark='opencircle'>
<listitem><para>
Require PG 9.0 (End Of Life of PostgreSQL 8.4 was July 2014)
</para></listitem>
<listitem><para>
Require XOTcl 2.0 (presented at the Tcl conference in 2011).
</para></listitem>
</itemizedlist>
</para></listitem>
</itemizedlist>
</para></listitem>
<listitem><para>Changes in application packages:
<itemizedlist>
<listitem><para>
Various bug
fixes and improvements for e.g. file-storage, forums, news,
notifications, xowiki.
</para></listitem>
</itemizedlist>
</para></listitem>
</itemizedlist>
</para> </listitem>
</itemizedlist>
<para> Altogether, OpenACS 5.9.0 differs from OpenACS 5.8.1 by the
following statistics
<programlisting>
3658 files changed, 120800 insertions(+), 97617 deletions(-)
</programlisting>
contributed by 4 committers (Michael Aram, Victor Guerra, Gustaf Neumann, Antonio Pisano) and
patch/bugfix providers (Frank Bergmann, Andrew Helsley, Felix
Mödritscher, Marcos Moser, Franz Penz, Thomas Renner).
These are significantly more changes as the differences
in the last releases. All packages of the release were tested with
PostgreSQL 9.4.* and Tcl 8.5.*.
For more
details, consult the
<ulink
href="http://fisheye.openacs.org/browse/~br=oacs-5-9/OpenACS/openacs-4/ChangeLog?hb=true">
raw ChangeLog</ulink>.
</para>
</sect2>
<sect2 id="release-notes-5-8-1">
<title>Release 5.8.1</title>
<itemizedlist>
......@@ -134,7 +404,7 @@ entire &majorversion;.&minorversion; release sequence <xref linkend="changelog">
</para></listitem>
<listitem><para>
Packages can be equipped with configuration files
Packages can be equipped with xml-based configuration files
(e.g. changing parameters for style packages)
</para></listitem>
......@@ -328,7 +598,7 @@ entire &majorversion;.&minorversion; release sequence <xref linkend="changelog">
<para>
Notifications now calls lang::util::localize on the message subject and body
before sending the message out, using the recipient locale if set, the
site-wide one if not. This will cause message keys (entered as #....# strings)
site-wide one if not. This will cause message keys (entered as <span>#</span>....# strings)
to be replaced with the language text for the chosen locale.
</para>
</listitem>
......
......@@ -11,6 +11,11 @@
</authorblurb>
<sect2 id="unix-install">
<title>a Unix-like system</title>
<para>Most of the documentation in this section is kept as a
reference. More up-to-date documentation is in the <ulink
url="http://openacs.org/xowiki/openacs-system-install">install
sections in the Wiki</ulink>.
</para>
<para>You will need a computer running a unix-like system with the following software installed:</para>
<itemizedlist>
<listitem><para>tdom</para></listitem>
......
......@@ -8,6 +8,13 @@
<sect1 id="install-steps">
<title>Basic Steps</title>
<para>Most of the documentation in this section is kept as a
reference. More up-to-date documentation is in the <ulink
url="http://openacs.org/xowiki/openacs-system-install">install
sections in the Wiki</ulink>.
</para>
<para>
The basic steps for installing OpenACS are:
</para>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment