<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>