<html>
<!--AD_DND-->
<head>
<title>ArsDigita Community System Documentation</title>
</head>

<body bgcolor=#ffffff text=#000000>
<h2>ArsDigita Community System Documentation</h2>

by <a href="http://photo.net/philg/">Philip Greenspun</a>

<hr>

<h3>Documentation</h3>

<ul>

<li>/doc/index.html -- this document

<li><a href="arsdigita-faq.html">/doc/arsdigita-faq.html</a> -- ArsDigita Community System FAQ 

<li><a href="installation.html">/doc/installation.html</a> 

<li><a href="upgrading.html">/doc/upgrading.html</a> -- moving from one
ACS version to the next

<li><a href="developers.html">/doc/developers.html</a> -- including <a
href="procs.tcl">procedure-by-procedure documentation</a> (for programmers)

<li><a href="style.html">/doc/style.html</a> -- templates and
multi-lingual support

<li><a href="monitoring.html">/doc/monitoring.html</a>

<li><a href="mainframe-integration.html">/doc/mainframe-integration.html</a>

<li><a href="xml.html">working with XML</a>

<li><a href="help.html">/doc/help.html</a> -- building documentation for
the end-user

<li><a href="security-sessions.html">/doc/security-sessions.html</a> --
information on the security subsystem, and associating state with user
sessions and browsers

<li><a href="abstract-url.html">/doc/abstract-url.html</a> --
information on the system allowing use of abstract (extensionless) URLs

<li><a href="webmasters.html">/doc/webmasters.html</a> -- for the person
who makes publishing decisions

<li><a href="patches.html">/doc/patches.html</a> -- documentation of
patches/fixes to the ArsDigita Community System (ACS) on this site;
useful when you are upgrading and when we are building a new version
of the system

<li><a href="custom.html">/doc/custom.html</a> -- documentation of 
custom features that you've added to this site that will/can never
be rolled into the ACS.

<li><a href="/acs-examples/">/acs-examples/</a> -- source code that
shows how to use the rest of the software

<p>

<li><a href="standards">Development Standards</a>

<li><a href="version-history.html">Version History</a>

<p>

<li><a href="http://www.aolserver.com/">AOLserver documentation</a>, a
notably useful part of which is 
<a href="http://www.aolserver.com/server/docs/2.3/html/tcldev.htm">the
Tcl Developer's Guide</a>

<h4>Individual Modules</h4>

Each module is owned by at least one programmer.  The current list
is in <a href="module-owners.html">module-owners.html</a>; each
programmer
is responsible for maintaining the module and 
the relevant portion of <a
href="acceptance-test.html">acceptance-test.html</a>

<p>

<li><a href="address-book.html">/doc/address-book.html</a>
<li><a href="adserver.html">/doc/adserver.html</a>
<li><a href="bannerideas.html">/doc/bannerideas.html</a>
<li><a href="bboard.html">/doc/bboard.html</a> -- the discussion forum
system

<li><a href="bookmarks.html">/doc/bookmarks.html</a>


<li><a href="calendar.html">/doc/calendar.html</a>

<li><a href="chat.html">/doc/chat.html</a>
<li><a href="classifieds.html">/doc/classifieds.html</a>

<li><a href="clickthrough.html">/doc/clickthrough.html</a>

<li><a href="contact-manager.html">/doc/contact-manager.html</a> -- good
for sites with an extranet-y flavor 

<li><a href="content-sections.html">/doc/content-sections.html</a> -- lets
administrators add/manage different content sections of the site

<li><a href="contest.html">/doc/contest.html</a> -- run give-away contests

<li><a href="custom-sections.html">/doc/custom-sections.html</a> -- allows
group administrators add/manage custom sections of the site

<li><a href="curriculum.html">/doc/curriculum.html</a>

<li><a href="directory.html">/doc/directory.html</a> -- letting users
find each other

<li><a href="display.html">/doc/display.html</a> -- lets administrators
set display settings and upload logo of the site

<li><a href="download.html">/doc/download.html</a> -- offering versions
of software or other stuff to people

<li><a href="dw.html">/doc/dw.html</a> -- a toolkit for data
warehouse-style queries

<li><a href="ecommerce.html">/doc/ecommerce.html</a> 

<li><a href="education.html">/doc/education.html</a> 

<li><a href="events.html">/doc/events.html</a> -- facilitates online 
registration for events

<li><a href="faq.html">/doc/faq.html</a> 

<li><a href="file-storage.html">/doc/file-storage.html</a> -- users who
don't know HTML can collaboratively maintain a set of files on the server

<li><a href="glassroom.html">/doc/glassroom.html</a> -- the ArsDigita
Glass Room system, for coordinating people involved in keeping a Web
service up and running

<li><a href="glossary.html">/doc/glossary.html</a> -- the ArsDigita
Glossary, for creating an on-site dictionary of specialized terminology.

<li><a href="intranet.html">/doc/intranet.html</a> -- run your
organization from this toolkit

<li><a href="neighbor.html">/doc/neighbor.html</a> -- Neighbor to
Neighbor (hard to explain; see example at <a
href="http://photo.net/neighbor/">http://photo.net/neighbor/</a>)

<li><a href="news.html">/doc/news.html</a>

<li><a href="partner.html">/doc/partner.html</a> -- site-wide cobranding 

<li><a href="poll.html">/doc/poll.html</a> -- opinion polls

<li><a href="portals.html">/doc/portals.html</a> -- using only a Web
browser,
build some portals
for different groups within your organization (or the public)

<li><a href="press.html">/doc/press.html</a> -- show press coverage
about your site or company

<li><a href="pull-down-menus.html">/doc/pull-down-menus.html</a> -- create Macintosh style menu bars


<li><a href="spam.html">/doc/spam.html</a> -- send email to a group of users

<li><a href="static.html">/doc/static.html</a> -- support for collecting
comments, links, and download statistics for static .html files

<li><a href="survey-simple.html">/doc/survey-simple.html</a> -- ask the
users a series of questions

<li><a href="ticket.html">/doc/ticket.html</a> -- a project 
and bug tracking system


<li><a href="wp.html">/doc/wp.html</a> -- WimpyPoint, a replacement for desktop
bloatware like PowerPoint, allowing you to create and view presentations
in your Web browsers

<p>

<li><a href="user-session-tracking.html">User session tracking</a> --
getting a meaningful handle on usage

<li><a href="user-registration.html">User registration and access control</a> 


<li><a href="user-admin.html">User administration</a> -- how the
publisher can select a class of users and what can then be done with
that class

<li><a href="crm.html">Customer relationship management</a> -- tracking a customer relationship through its various states. 

<li><a href="user-groups.html">User groups</a> -- a general mechanism
for lumping users together in groups, e.g., all students in a particular
course 

<li><a href="member-value.html">Member value</a> -- a way of
accumulating charges for users and then billing them out at the end of
each month (commercial sites) or excluding them from the community if
the charges get too high (non-commercial)

<li><a href="redirect.html">Redirects</a> -- ensuring that legacy URLs
pointed to by bookmarks and search engines still work

<li><a href="robot-detection.html">Robot detection</a> -- making sure
that your entire site gets indexed

<h4>Two Related Modules</h4>


<li><a href="user-profiling.html">User profiling and content categorization</a> -- matching users
to content 

<li><a href="site-wide-search.html">Site-wide-search</a> -- a
system for indexing all of a site's content from one big table




<h4>Module Tools</h4>

<li><a href="audit.html">Audit</a> -- adding a change history to a table

<li><a href="calendar-widget.html">Calendar widget</a> -- displaying
calendars

<li><a href="content-tagging.html">Content tagging</a> -- useful for
finding/screening naughty words but with wider potential as well

<li><a href="email-handler.html">Email handler</a> -- queues incoming
email into an Oracle table; let's you do things like unified customer
support or email replies to tickets

<li><a href="graphing.html">Graphing</a> -- generating bar charts

<li><a href="new-stuff.html">New stuff</a> -- showing folks what is new site-wide

<li><a href="permissions.html">Permissions</a> -- a standardized way of 
answering: <i>"Is user x allowed to do y?"</i>

<li><a href="general-permissions.html">General permissions</a> -- a
way to answer the question "can a particular user, group, or role do
this on a particular row?", where this can be an arbitrary action
(e.g., read, comment, write, administer, etc.)

<li><a href="general-comments.html">General comments</a> -- allows you to collect user comments on any item

<li><a href="general-links.html">General links</a> -- allows you to collect user links on any item

<li><a href="prototype.html">Prototype builder</a> -- quickly build standard ACS pages via a user interface

<li><a href="tools.html">Tools</a> -- collections of scripts providing services to perform common tasks such as spell checking.

<li><a href="server-cluster.html">Server Clusters</a> -- a facility for keeping
state synchronized between a group of load-balance servers.

</ul>


<h4>The Glorious Future</h4>

Here we link to plans that are in the works; it is a collaboration area
for toolkit programmers to look at.

<ul>

<li><a href="bboard-revision.html">/bboard revision</a>

<li><a href="templating-etc.html">templating, navigation, forms, and other enhancements</a>

<li><a href="general-cleanup.html">general cleanup</a>



</ul>


<h3>Directories</h3>

<ul>

<h4>Not Under the Page Root</h4>

<li>/web/yourdomain/parameters/ -- stores definitions such as the
service name
<li>/web/yourdomain/tcl/ -- Tcl procedures used system-wide

<h4>Under the Page Root</h4>

<li>/doc/ -- this directory

<li>/doc/sql/ -- data model files

<li>/install/ -- files needed for installation only

<li>/global/ -- files served up by AOLserver when it gets unhappy (e.g.
file not found or too many threads), also for privacy statements, etc.

<li>/graphics/ -- for site-wide logos and other images that aren't
specific to content sections

<li>/ads/ -- banners ads to be served by /adserver scripts (below)

<li>/pvt/ -- material private to a particular member

<li>/shared/ -- material available to members but not private to a particular member

<li>/incoming/ -- material that authorized users need to FTP up to
you 

<li>/acs-examples/ -- scripts that show programmers how to use
various ACS features


<h4>Subsystems</h4>

Each module generally defines a top-level subdirectory with the same
name as itself; there are some exceptions with weird names below.

<p>

<li>/adserver/ -- banner ad server

<li>/comments/ -- comments on static pages

<li>/gc/ -- generic classified ad system

<li>/links/ -- Tcl scripts that show related links on the bottom of a page

<li>/ug/ --  viewing and creating user groups

</ul>

<h3>Magic Files</h3>

<ul>

<li><a href="/global/copyright.adp">/global/copyright.adp</a> explains the site's copyright policy

<li><a href="/global/server-busy.html">/global/server-busy.html</a> is served by AOLserver when the threads are
stacked up (presumably because the RDBMS is overwhelmed)

<li><a href="/global/file-not-found.html">/global/file-not-found.html</a> is served by AOLserver when the user
hits a non-existent URL; presumably this will contain some search tips

<li><a href="/global/unauthorized.html">/global/unauthorized.html</a> is served by AOLserver when the user hasn't
typed in a valid HTTP username/password (this shouldn't really ever be
part of the user experience since the ArsDigita Community System doesn't
use HTTP usernames/passwords)

<li><a href="/global/forbidden.html">/global/forbidden.html</a> is served by AOLserver when the nsperm system
isn't happy and refuses to say why (not sure why this should ever happen)

<li><a href="/global/error.html">/global/error.html</a> is served by AOLserver when it chokes on a Tcl
API program or CGI script 

<li><a href="/global/privacy.adp">/global/privacy.adp</a> is the site's privacy statement.

<li><a href="/global/legal.adp">/global/legal.adp</a> is the site's legal statement.

</ul>

<h3>Filters and Other Tricks</h3>

To be sure that you're getting them all on a particular server, do:

<blockquote><pre>
cd /web/yourservername/tcl/ 
grep 'ad_register_filter' *.tcl
</pre>
</blockquote>

<ul>

<li>service of all /*.html files follows the following sequence:
<ol>

<li>the ad_verify_identity filter from /tcl/ad-security.tcl may run to
abort service of the page, depending on which directories are specified
for protection in /tcl/ad-security.tcl

<li>ad_serve_html_page in /tcl/ad-html.tcl delivers the page, with
included comments and related links 

<li>ad_maintain_user_content_map from /tcl/ad-user-content-map.tcl runs
after the page has been served, to insert rows into the
<code>user_content_map</code> table

<li>ad_pics_filter from /tcl/ad-pics.tcl will add a PICS header saying
"I'm a naughty page" (or whatever else you've put in the ad.ini file) to
the directories and files specified in ad.ini

</ol>

<p>

<li>/tcl/ad-admin.tcl defines filters to restrict /admin pages to SSL
(when available) and to registered users in the site-wide administration
group

<p>

<li>/tcl/ad-last-visit.tcl defines a filter to maintain the last visit
cookie and database rows 

<p>

<li>/tcl/ad-referer.tcl defines a filter to update referral counters in
the database

<p>

<li>/tcl/ad-robot-defs.tcl may define a filter to look for robots
visiting particular directories

<p>

<li>/tcl/ad-user-content-map.tcl defines a trace filter to enter rows
into the <code>user_content_map</code>

<P>

<li>/tcl/curriculum.tcl defines a filter to maintain the curriculum
cookie 

</ul>


<a name=pools>
<h3>Database Pools</h3>

The community system depends on the existence of three database
pools:  main, subquery, and log.  They must be named as such.  The
default pool will be "main".

<h3>Substrate</h3>

If you want to have a reliable service, you should read and apply 
<a href="architecture-install.html">this installation guide</a> for the
<a href="http://photo.net/wtr/arsdigita-server-architecture.html"</a>ArsDigita Server
Architecture</a> (don't confuse this with the ACS intallation guide 
in <a href="installation.html">/doc/installation.html</a>).



<h3>Copyright and Legal Status of this Software</h3>

<p> This software is mostly Copyright 1995-99 Philip Greenspun and
licensed under <a href="license.text">the GNU General Public License,
version 2 (June 1991)</a>.</p>

<hr>
<a href="http://photo.net/philg/"><address>philg@mit.edu</address></a>
</body>
</html>