0.00%
Search · Index

Weblog Page

Showing 151 - 160 of 230 Postings (summary)

Translator's Guide

Created by Gustaf Neumann, last modified by Gustaf Neumann 17 Feb 2008, at 07:08 AM

Most translators use the OpenACS Public Translation Server, because the process of getting new message keys onto the server and getting new translations back into the distribution are handled by the maintainers of that machine. You can also do translation work on your own OpenACS site; this makes your own translations more readily available to you but also means that your work will not be shared with other users unless you take extra steps (contacting an OpenACS core developer or submitting a patch) to get your work back to the OpenACS core.

The basic steps for translators:

  • Go to the Localization page and choose the locale that you are translating to. If the locale is not present you need to visit Administration of Localization and create the locale.

  • Translating with Translator Mode.To translate messages in the pages they appear, Toggle Translator Mode and then browse to the page you want to translate. Untranslated messages will have a yellow background and a red star that you click to translate the message. Translated messages have a green star next to them that is a hyperlink to editing your translation. There is a history mechanism that allows you to see previous translations in case you would want to revert a translation.

    While in Translator mode, a list of all message keys appears at the bottom of each page.

  • Batch translation.To translate many messages at once, go to Administration of Localization, click on the locale to translate, then click on a package, and then click Batch edit these messages.

When creating a new locale based on an existing one, such as creating the Guatamalan version of Spanish, you can copy the existing locale's catalog files using the script /packages/acs-core-docs/www/files/create-new-catalog.sh.

OpenACS Documentation Guide

Created by Gustaf Neumann, last modified by Gustaf Neumann 17 Feb 2008, at 07:08 AM

By Claus Rasmussen, with additions by Roberto Mello, Vinod Kurup, and the OpenACS Community

OpenACS is a powerful system with incredible possibilities and applications, but this power comes with some complexity and a steep learning curve that is only attenuated by good documentation. Our goal is to write superb documentation, so that users, developers and administrators of OpenACS installations can enjoy the system.

The history of OpenACS documentation: ..began by building on a good documentation base from ArsDigita's ACS in the late 1990's. Some sections of the documentation, however, lacked details and examples; others simply did not exist. The OpenACS community began meeting the challenge by identifying needs and writing documentation on an as needed basis.

By having documentation dependent on volunteers and code developers, documentation updates lagged behind the evolving system software. As significant development changes were made to the system, existing documentation became dated, and its value significantly reduced. The valiant efforts that were made to keep the documentation current proved too difficult as changes to the system sometimes had far-reaching affects to pages throughout the documentation. System integration and optimization quickly rendered documentation obsolete for developers. The code became the substitute and source for documentation.

With thousands of lines of code and few developers tracking changes, features and advances to the OpenACS system went unnoticed or were not well understood except by the code authors. Work was duplicated as a consequence of developers not realizing the significant work completed by others. New developers had to learn the system through experience with working with it and discussion in the forums. Informal sharing of experiential and tacit knowledge has become the OpenACS community's main method of sharing knowledge.

This document attempts to shape ongoing documentation efforts by using principles of continual improvement to re-engineer documentation production.

Documentation production shares many of the challenges of software development, such as managing contributions, revisions and the (editorial) release cycle. This is yet another experiment in improving documentation --this time by using principles of continual improvement to focus the on-going efforts. These processes are outlined as project management phases:

  1. Requirements phase is about setting goals and specifications, and includes exploration of scenarios, use cases etc. As an example, see the OpenACS Documentation Requirements Template which focuses on systems requirements for developers.

  2. Strategy phase is about creating an approach to doing work. It sets behavioral guidelines and boundaries that help keep perspective on how efforts are directed. OpenACS developers discuss strategy when coordinating efforts such as code revisioning and new features.

  3. Planning phase is about explicitly stating the way to implement the strategy as a set of methods. OpenACS system design requires planning. For example, see OpenACS documentation template planning relating to package design.

  4. Implementation phase is about performing the work according to the plan, where decisions on how to handle unforseen circumstances are guided by the strategy and requirements.

  5. Verification phase measures how well the plan was implemented. Success is measured by A) verifying if the project has met the established goals, and B) reviewing for ongoing problem areas etc. OpenACS follows verification through different means on different projects, but in all cases, the OpenACS community verifies the project as a success through feedback including bug reports, user and administrator comments, and code changes.

OpenACS forum discussions on documentation requirements and strategies are summarized in the following sections. Production phases are mainly organized and fulfilled by a designated documentation maintainer. Hopefully the following sections will help spur greater direct participation by the OpenACS community.

By the OpenACS Community. This section is a collection of documentation requirements that have been expressed in the OpenACS forums to 4th July 2003.

OpenACS documentation should meet the following requirements. No significance has been given to the order presented, topic breadth or depth here.

  • clarity in presentation. Life with qmail is a recommended example of "rated high" online documentation.

  • Avoid requirements that significantly increase the labor required to maintain documentation.

  • Use best practices learned from the print world, web, and other media, about use of gamma, space, writing style etc.

    • Consistency in publishing -Establishing and adhering to publishing standards

    • Use standardized language -Use international English (without slang or colloquial terms) for ESL (English as a second language) readers (and making translation easier for those interested in translating the documentation for internationalization efforts).

    • All jargon used in documentation needs to be defined. Use standardized terms when available, avoiding implicit understanding of specific OpenACS terms.

    • Document titles (for example on html pages) should include whole document title (as in book title): (chapter title) : (section), so that bookmarks etc. indicate location in a manner similar to pages in books (in print publishing world).

    • Organize document according to the needs of the reader (which may be different than the wishes of the writers).

    • Do not make informal exclamations about difficulty/ease for users to complete tasks or understand... for example, "Simply...". Readers come from many different backgrounds --remember that the greater audience is likely as varied as the readers on the internet--- If important, state pre-conditions or knowledge requirements etc. if different than the rest of the context of the document. For example, "requires basic competency with a text-based editor such as vi or emacs via telnet"

  • Show where to find current information instead of writing about current info that becomes obsolete. If the information is not found elsewhere, then create one place for it, where others can refer to it. This structure of information will significantly reduce obsolescence in writing and labor burden to maintain up-to-date documentation. In other words, state facts in appropriately focused, designated areas only, then refer to them by reference (with links).

    Note: Sometimes facts should be stated multiple ways, to accommodate different reading style preferences. The should still be in 1 area, using a common layout of perhaps summary, introduction and discussion requiring increasing expertise, complexity or specificity.

  • Consistency in link descriptions -When link urls refer to whole documents, make the link (anchor wrapped title) that points to a document with the same title and/or heading of the document.

  • Consider OpenACS documentation as a set of books (an encyclopedic set organized like an atlas) that contains volumes (books). Each book contains chapters and sections much like how DocBook examples are shown, where each chapter is a web page. This designation could help create an OpenACs book in print, and help new readers visualize how the documentation is organized.

  • The use licenses between OpenACS and Arsdigita's ACS are not compatible, thereby creating strict limits on how much OpenACS developers should have access to Arsdigita code and resources. The OpenACS documentation has a new legal requirement: to eliminate any dependency on learning about the system from Arsdigita ACS examples to minimize any inference of license noncompliance, while recognizing the important work accomplished by Philip Greenspun, Arsdigita, and the early ACS adopters.

  • Use a consistent general outline for each book.

    • Introduction (includes purpose/goal), Glossary of terms, Credits, License, Copyright, Revision History

    • Table of Contents (TOC)s for each book: the end-users, content and site administrators, marketing, developer tutorial, and developers.

    • Priorities of order and content vary based on each of the different readers mentioned. The developers guide should be organized to be most useful to the priorities of developers, while being consistent with the general documentation requirements including publishing strategy, style etc.

    • Use generic DocBook syntax to maximize reader familiarity with the documents.

                      <book><title><part label="Part 1"><etc...>
                    

By the OpenACS Community. This section is a collection of documentation requirements that have been expressed in the OpenACS forums to 4th July 2003.

OpenACS end-user documentation should meet the following requirements. No significance has been given to the order presented, topic breadth or depth here.

  • End-users should not have to read docs to use the system.

  • Include how to get help. How and where to find answers, contact others, what to do if one gets an AOLserver or other error when using the system. Include types of available support (open-source, private commercial etc.) including references.

  • Explain/foster understanding of the overall structure of the system. This would be an overview of the system components, how it works, and how to find out more or dig deeper... To promote the system by presenting the history of the system, and writing about some tacit knowledge re: OpenACS.org and the opensource culture.

  • Introduce and inspire readers about the uses, benefits, and the possibilities this system brings (think customer solution, customer cost, convenience, value). A comprehensive community communications system; How this system is valuable to users; Reasons others use OpenACS (with quotes in their own words) "...the most important thing that the ACS does is manage users, i.e. provide a way to group, view and manipulate members of the web community. -- Talli Somekh, September 19, 2001" using it to communicate, cooperate, collaborate... OpenACS offers directed content functionality with the OpenACS templating system. ... OpenACS is more than a data collection and presentation tool. OpenACS has management facilities that are absent in other portals. ...The beauty of OpenACS is the simplicity (and scalability) of the platform on which it is built and the library of tried and tested community building tools that are waiting to be added. It seems that most portals just add another layer of complexity to the cake. See Slides on OACS features...a set of slides on OACS features that can be used for beginners who want to know OACS is about and what they can do with it. Screen captures that highlight features. Example shows BBoard, calendar, news, file storage, wimpy point, ticket tracking. An OpenACS tour; an abbreviated, interactive set of demo pages.

  • From a marketing perspective,

    • differentiate "product" by highlighting features, performance quality, conformance to standards, durability (handling of technological obsolescence), reliability, repairability, style of use, design (strategy in design, specifications, integrated, well-matched systems etc).

    • differentiate "service" by highlighting software availability (licensing and completeness from mature to early adopters or development versions), community incident support, project collaborative opportunities, and contractor support availability

    • differentiate price (economic considerations of opensource and features)

    • Discussion and details should rely on meeting criteria of design, completeness of implementation, and related system strengths and weaknesses. Marketing should not rely on comparing to other technologies. Competitive analysis involves mapping out strengths, weaknesses, opportunities and threats when compared to other systems for a specific purpose, and thus is inappropriate (and becomes stale quickly) for general documentation.

    • When identifying subsystems, such as tcl, include links to their marketing material if available.

    • create an example/template comparison table that shows versions of OpenACS and other systems (commonly competing against OpenACS) versus a summary feature list and how well each meets the feature criteria. Each system should be marked with a date to indicate time information was gathered, since information is likely volatile.

  • To build awareness about OpenACS, consider product differentiation: form, features, performance quality, conformance quality (to standards and requirements), durability, reliability, repairability, style, design: the deliberate planning of these product attributes.

  • Include jargon definitions, glossary, FAQs, site map/index, including where to find Instructions for using the packages. FAQ should refer like answers to the same place for consistency, brevity and maintainability.

  • Explain/tutorial on how the UI works (links do more than go to places, they are active), Page flow, descriptions of form elements; browser/interface strengths and limitations (cookies, other)

  • Discuss criteria used to decide which features are important, and the quality of the implementation from a users perspective. Each project implementation places a different emphasis on the various criteria, which is why providing a framework to help decide is probably more useful than an actual comparison.

Package documentation requirements have additional requirements.

  • A list of all packages, their names, their purposes, what they can and cannot do (strengths, limitations), what differentiates them from similar packages, minimal description, current version, implementation status, author/maintainers, link(s) to more info. Current version available at the repository.

  • Include dependencies/requirements, known conflicts, and comments from the real world edited into a longer description to quickly learn if a package is appropriate for specific projects.

  • Create a long bulleted list of features. Feature list should go deeper than high-level feature lists and look at the quality of the implementations (from the user's perspective, not the programmer's). Example issues an end-user may have questions about: Ticket Tracker and Ticket Tracker Lite, why would I want one of them vs the other? And, before I specify to download and install it, what credit card gateways are supported by the current e-commerce module? There are some packages where the name is clear enough, but what are the limitations of the standard package?

  • End-user docs should not be duplicative. The package description information and almost everything about a package for administrators and developers is already described in the package itself through two basic development document templates: a Requirements Template and Detailed Design Document.

By the OpenACS Community. This section is a collection of documentation requirements that have been expressed in the OpenACS forums to 4th July 2003.

OpenACS administrators' documentation should meet the following requirements. No significance has been given to the order presented, topic breadth or depth here.

  • For each requirement below, include links to developer tutorials and other documentation for more detail.

  • Describe a structural overview of a working system and how the components work together. "The Layered Cake view" a general network view of system; a table showing system levels versus roles to help with understanding how the subsystems are interconnected.

  • Provide a comprehensive description of typical administrative processes for operating an OpenACS system responsibly, including reading logs and command line views that describe status of various active processes.

  • Create a list of administrative tools that are useful to administrating OpenACS, including developer support, schema-browser and api browser. Link to AOLserver's config file documentation.

  • Resources on high level subjects such as web services, security guidelines

  • Describe typical skill sets (and perhaps mapped to standardized job titles) for administrating an OpenACS system (human-resources style). For a subsite admin/moderator attributes might include trustworthy, sociable, familiarity with the applications and subsystems, work/group communication skills et cetera

  • Describe how to set up typical site moderation and administration including parameters, permissions, "Hello World" page

  • Show directory structure of a typical package, explanation of the various file types in a package (tcl,adp,xql) and how those relate to the previously described subsystems, when they get refreshed etc.

  • Ways to build a "Hello World" page

  • Show examples of how the OpenACS templating system is used, including portal sections of pages. For example, create a customised auto-refreshing startpage using lars-blogger, a photo gallery, and latest posts from a forum. This should rely heavily on documentation existing elsewhere to keep current. This would essentially be a heavily annotated list of links.

  • Show ways of modifying the look and feel across pages of an OpenACS website. Refer to the skins package tutorial.

  • Describe a methodology for diagnosing problems, finding error statements and interpreting them --for OpenACS and the underlying processes.

  • FAQs: Administration tasks commonly discussed on boards: admin page flow, how to change the looks of a subsite with a new master.adp, options on "user pages" , a quick introduction to the functions and processes. info about the user variables, file locations

By the OpenACS Community. This section is a collection of documentation requirements that have been expressed in the OpenACS forums to 4th July 2003.

OpenACS installation documentation should meet the following requirements. No significance has been given to the order presented, topic breadth or depth here.

  • state installation prerequisites. For example: "You should read through the installation process to familiarize yourself with the installation process, before beginning an installation."

  • list critical decisions (perhaps as questions) that need to be made before starting: which OS, which DB, which aolserver version, system name, dependencies et cetera. Maybe summarize options as tables or decision-trees. For example, "As you proceed throughout the installation, you will be acting on decisions that have an impact on how the remaining part of the system is installed. Here is a list of questions you should answer before beginning."

  • list pre-installation assumptions

  • Show chronological overview of the process of installing a system to full working status: Install operating system with supporting software, configure with preparations for OpenACS, RDBMS(s) install and configure, Webserver install and configure, OpenACS install and configure, post-install work

By the OpenACS Community. This section is a collection of documentation requirements that have been expressed in the OpenACS forums to 4th July 2003.

OpenACS developer tutorial documentation should meet the following requirements. No significance has been given to the order presented, topic breadth or depth here.

  • list learning prerequisites to customize, fix, and improve OACS modules, and create new ones. You are expected to have read and understand the information [minimum requirements similar to adept at Using OpenACS Administrating Guide] before reading this guide.

  • Refer to development documentation instead of duplicating here

  • List suggestions for installing and setting up a development environment; these can be annotated links to the installation documentation

  • Provide working examples that highlight the various subsystems, tcl environment, OpenACS protocols, aolserver template and ns_* commands, OpenACS templating, sql queries, db triggers, scheduling protocols, how to use the page contract, how to get the accessing user_id etc

  • Show how to construct basic SQL queries using the db API,

  • The life of an http request to a dynamic, templated page

  • General rules to follow for stability, scalability

  • Show the step by step customizing of an existing package that meets current recommended coding styles of OpenACS package development, by referring to developer resources.

  • Use the ArsDigita problem sets and "what Lars produced for ACS Java" as inspiration for a PostgreSQL equivalent tutorial about developing a new OpenACS package including discussion of the significance of the package documentation templates

  • Include a summary of important links used by developers

  • Note any deprecated tools and methods by linking to prior versions instead of describing them in current docs

By the OpenACS Community. This section is a collection of documentation requirements that have been expressed in the OpenACS forums to 4th July 2003.

OpenACS developer documentation should meet the following requirements. No significance has been given to the order presented, topic breadth or depth here.

  • list documentation assumptions, such as familiarity with modifying OpenACS packages. All kernel docs are here etc.

  • This documentation should be written for ongoing use by developers, not as a tutorial.

  • List of practical development and diagnostics tools and methodologies.

  • List of OpenACS development resources, api-doc, schema-browser, developer-support package etc.

  • Identify each OpenACS subsystem, explain why it is used (instead of other choices). In the case of subsystems that are developed outside of OpenACS such as tcl, include external references to development and reference areas.

  • Show current engineering standards and indicate where changes to the standards are in the works.

  • Sections should be dedicated to DotLRN standards as well, if they are not available elsewhere.

  • Add overview diagrams showing the core parts of the datamodel including an updated summary of Greenspun's Chapter 4: Data Models and the Object System

  • package design guidelines and development process templates including planning, core functions, testing, usability, and creating case studies

  • Standard package conventions, where to see "model" code, and guidelines (or where to find them) for:

    • programming tcl/sql

    • using the acs-api

    • ad_form

    • coding permissions

    • OpenACS objects

    • scheduled protocols

    • call backs

    • directory structure

    • user interface

    • widgets

    • package_name and type_extension_table

    • adding optional services, including search, general comments, attachments, notifications, workflow, CR and the new CR Tcl API

  • Document kernel coding requirements, strategy and guidelines to help code changers make decisions that meet kernel designers' criteria

OpenACS documentation development is subject to the constraints of the software project development and release methods and cycles (the section called “Using CVS with OpenACS”). Essentially, all phases of work may be active to accommodate the asynchronous nature of multiple subprojects evolving by the efforts of a global base of participants with culturally diverse time references and scheduling idiosyncrasies.

The documentation strategy is to use project methods to involve others by collaborating or obtaining guidance or feedback (peer review) to distribute the workload and increase the overall value of output for the OpenACS project.

OpenACS documentation is taking a dual approach to publishing. Documentation that is subject to rapid change and participation by the OpenACS community is managed through the OpenACS xowiki Documentation Project Formal documents that tend to remain static and require more expressive publishing tools will be marked up to conform to the DocBook XML DTD. The remaining discussion is about publishing using Docbook.

is a publishing standard based on XML with similar goals to the OpenACS Documentation project. Some specific reasons why we are using DocBook:

  • It is open-source.

  • A growing community surrounds DocBook (has mailing lists)

  • A number of free and commercial tools are available for editing and publishing DocBook documents.

  • It enables us to publish in a variety of formats.

  • XML separates content from presentation: It relieves each contributor of the burden of presentation, freeing each writer to focus on content and sharing knowledge.

  • It is well tested technology. It has been in development since the early 1990's).

Reasons why we are using Docbook XML instead of Docbook SGML:

  • Consistency and history. We started with a collection of DocBook XML files that ArsDigita wrote. Trying to re-write them to conform to the SGML DTD would be unnecessary work.

  • XML does not require extra effort. Writing in XML is almost identical to SGML, with a couple extra rules. More details in the LDP Author Guide.

  • The tool chain has matured. xsltproc and other XML based tools have improved to the point where they are about as good as the SGML tools. Both can output html and pdf formats.

Albeit, the road to using DocBook has had some trials. In 2002, Docbook still was not fully capable of representing online books as practiced by book publishers and expected from readers with regards to usability on the web. That meant DocBook did not entirely meet OpenACS publishing requirements at that time.

In 2004, Docbook released version 4.4, which complies with all the OpenACS publishing requirements. Producing a web friendly book hierarchy arguably remains DocBooks' weakest point. For example, a dynamically built document should be able to extract details of a specific reference from a bibliographic (table) and present a footnote at the point where referenced. DocBook 4.4 allows for this with bibliocoverage, bibliorelation, and bibliosource. DocBook: The Definitive Guide is a good start for learning how to represent paper-based books online.

The following DocBook primer walks you through the basics, and should cover the needs for 95 percent of the documentation we produce. You are welcome to explore DocBook's list of elements and use more exotic features in your documents. The list is made up of SGML-elements but basically the same elements are valid in the XML DTD as long as you remember to:

  • Always close your tags with corresponding end-tags and to not use other tag minimization

  • Write all elements and attributes in lowercase

  • Quote all attributes

You are going to need the following to work with the OpenACS Docbook XML documentation:

  • Docbook XML DTD - The document type definition for XML. You can find an RPM or DEB package or you can download a zip file from the site linked from here.

  • XSL Stylesheets (docbook-xsl) - The stylesheets to convert to HTML. We have been using a stylesheet based upon NWalsh's chunk.xsl.

  • xsltproc - The processor that will take an XML document and, given a xsl stylesheet, convert it to HTML. It needs libxml2 and libxslt (available in RPM and DEB formats or from xmlsoft.org.

  • Some editing tool. A popular one is Emacs with the psgml and nXML modes. The LDP Author Guide and DocBook Wiki list some alternates.

After you have the tools mentioned above, you need to define a title for your document. Then start thinking about the possible sections and subsections you will have in your document. Make sure you coordinate with the OpenACS Gatekeepers to make sure you are not writing something that someone else is already writing. Also, if you desire to use the OpenACS CVS repository, please e-mail the gatekeeper in charge of documentation.

You can look at some templates for documents (in Docbook XML) in the sources for acs-core-docs, especially the Detailed Design Documentation Template and the System/Application Requirements Template.

The documentation for each package will make up a little "book" that is structured like this - examples are emphasized:

    book                        : Docs for one package - templating
     |
     +--chapter                 : One section - for developers
         |
---------+------------------------------------------------------
         |
         +--sect1               : Single document - requirements
             |
             +--sect2           : Sections - functional requirements
                 |
                 +--sect3       : Subsections - Programmer's API
                     |
                    ...         : ...

The actual content is split up into documents that start at a sect1-level. These are then tied together in a top-level document that contains all the information above the line. This will be explained in more detail in a later document, and we will provide a set of templates for documenting an entire package.

For now you can take a look at the sources of these DocBook documents to get an idea of how they are tied together.

Given that your job starts at the sect1-level, all your documents should open with a <sect1>-tag and end with the corresponding </sect1>.

You need to feed every <sect1> two attributes. The first attribute, id, is standard and can be used with all elements. It comes in very handy when interlinking between documents (more about this when talking about links in the section called “Links”). The value of id has to be unique throughout the book you're making since the id's in your sect1's will turn into filenames when the book is parsed into HTML.

The other attribute is xreflabel. The value of this is the text that will appear as the link when referring to this sect1.

Right after the opening tag you put the title of the document - this is usually the same as xreflabel-attribute. E.g. the top level of the document you're reading right now looks like this:

<sect1 id="docbook-primer" xreflabel="DocBook Primer">
  <title>DocBook Primer</title>

...

</sect1>

Inside this container your document will be split up into <sect2>'s, each with the same requirements - id and xreflabel attributes, and a <title>-tag inside. Actually, the xreflabel is never required in sections, but it makes linking to that section a lot easier.

When it comes to naming your sect2's and below, prefix them with some abbreviation of the id in the sect1 such as requirements-overview.

For displaying a snippet of code, a filename or anything else you just want to appear as a part of a sentence, we use <computeroutput> and <code> tags. These replace the HTML-tag <code> tag, depending on whether the tag is describing computer output or computer code.

For bigger chunks of code such as SQL-blocks, the tag <programlisting> is used. Just wrap your code block in it; mono-spacing, indents and all that stuff is taken care of automatically.

For expressing user interaction via a terminal window, we wrap the <screen> tag around text that has been wrapped by combinations of <computeroutput> and <userinput>

Linking falls into two different categories: inside the book you're making and outside:

1. Inside linking, cross-referencing other parts of your book

By having unique id's you can cross-reference any part of your book with a simple tag, regardless of where that part is.

Check out how I link to a subsection of the Developer's Guide:

Put this in your XML:

- Find information about creating a package in
<xref linkend="packages-making-a-package"></xref>.

And the output is:

- Find information about creating a package in
Making a Package.

Note that even though this is an empty tag, you have to either:

  1. Provide the end-tag, </xref>, or

  2. Put a slash before the ending-bracket: <xref linkend="blahblah"/>

If the section you link to hasn't a specified xreflabel-attribute, the link is going to look like this:

Put this in your XML:

-Find information about what a package looks like in
<xref linkend="packages-looks"></xref>.

And the output is:

- Find information about what a package looks like in
the section called “What a Package Looks Like”.

Note that since I haven't provided an xreflabel for the subsection, packages-looks, the parser will try its best to explain where the link takes you.

2. Linking outside the documentation

If you're hyper-linking out of the documentation, it works almost the same way as HTML - the tag is just a little different (<ulink>):

<ulink url="http://www.oracle.com/">Oracle Corporation</ulink>

....will create a hyper-link to Oracle in the HTML-version of the documentation.

NOTE: Do NOT use ampersands in your hyperlinks. These are reserved for referencing entities. To create an ampersand, use the entity &amp;

Note: The graphics guidelines are not written in stone. Use another valid approach if it works better for you.

To insert a graphic we use the elements <mediaobject>, <imageobject>, <imagedata>, and <textobject>. Two versions of all graphics are required. One for the Web (usually a JPEG or GIF), and a brief text description. The description becomes the ALT text. You can also supply a version for print (EPS).

<mediaobject>
  <imageobject>
    <imagedata fileref="../images/rp-flow.gif" format="GIF" align="center"/>
  </imageobject>
  <imageobject>
    <imagedata fileref="../images/rp-flow.eps" format="EPS" align="center"/>
  </imageobject>
  <textobject>
    <phrase>This is an image of the flow in the Request Processor</phrase>
  </textobject>
</mediaobject>

Put your graphics in a separate directory ("images") and link to them only with relative paths.

Here's how you make the DocBook equivalent of the three usual HTML-lists:

1. How to make an <ul>

Making an unordered list is pretty much like doing the same thing in HTML - if you close your <li>, that is. The only differences are that each list item has to be wrapped in something more, such as <para>, and that the tags are called <itemizedlist> and <listitem>:

<itemizedlist>

  <listitem><para>Stuff goes here</para></listitem>
  <listitem><para>More stuff goes here</para></listitem>

</itemizedlist>
2. How to make an <ol>

The ordered list is like the preceding, except that you use <orderedlist> instead:

<orderedlist>

  <listitem><para>Stuff goes here</para></listitem>
  <listitem><para>More stuff goes here</para></listitem>

</orderedlist>
3. How to make a <dl>

This kind of list is called a variablelist and these are the tags you'll need to make it happen: <variablelist>, <varlistentry>, <term> and <listitem>:

<variablelist>

  <varlistentry>
    <term>Heading (<dt>) goes here</term>
    <listitem><para>And stuff (<dd>)goes here</para></listitem>
  </varlistentry>

  <varlistentry>
    <term>Another heading goes here</term>
    <listitem><para>And more stuff goes here</para></listitem>
  </varlistentry>

</variablelist>

DocBook supports several types of tables, but in most cases, the <informaltable> is enough:

<informaltable frame="all">
  <tgroup cols="3">
    <tbody>

      <row>
        <entry>a1</entry>
        <entry>b1</entry>
        <entry>c1</entry>
      </row>

      <row>
        <entry>a2</entry>
        <entry>b2</entry>
        <entry>c2</entry>
      </row>

      <row>
        <entry>a3</entry>
        <entry>b3</entry>
        <entry>c3</entry>
      </row>

    </tbody>
  </tgroup>
</informaltable>

With our current XSL-style-sheet, the output of the markup above will be a simple HTML-table:

a1 b1 c1
a2 b2 c2
a3 b3 c3

If you want cells to span more than one row or column, it gets a bit more complicated - check out <table> for an example.

Our documentation uses two flavors of emphasis - italics and bold type. DocBook uses one - <emphasis>.

The <emphasis> tag defaults to italics when parsed. If you're looking for emphasizing with bold type, use <emphasis role="strong">.

Words that are marked as index-words are referenced in an index in the final, parsed document.

Use <indexterm>, <primary> and <secondary> for this. See these links for an explanation.

Note

This section is quoted almost verbatim from the LDP Author Guide.

Once you have the Docbook Tools installed, you can convert your xml documents to HTML or other formats.

With the DocBook XSL stylesheets, generation of multiple files is controlled by the stylesheet. If you want to generate a single file, you call one stylesheet. If you want to generate multiple files, you call a different stylesheet.

To generate a single HTML file from your DocBook XML file, use the command:

bash$ xsltproc -o outputfilename.xml /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/html/html.xsl filename.xml

Note

This example uses Daniel Veillard's xsltproc command available as part of libxslt from http://www.xmlsoft.org/XSLT/. If you are using other XML processors such as Xalan or Saxon, you will need to change the command line appropriately.

To generate a set of linked HTML pages, with a separate page for each <chapter>, <sect1> or <appendix> tag, use the following command:

bash$ xsltproc /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/html/chunk.xsl filename.xml

You could also look at the acs-core-docs Makefile for examples of how these documents are generated.

  • Using Xinclude

  • The LDP Author Guide has a lot of good information, a table of docbook elements and their "look" in HTML and lots of good links for tools.

  • James Clark wrote nXML Mode, an alternative to PSGML Mode. nXML Mode can validate a file as it is edited.

  • David Lutterkort wrote an intro to the PSGML Mode in Emacs

  • James Clark's free Java parser XP. Note that this does not validate XML, only parses it.

  • DocBook Tool for Linux: Converts docbook documents to a number of formats. NOTE: I only got these to work with Docbook SGML, NOT with Docbook XML. If you are able to make it work with our XML, please let us know.

  • AptConvert from PIXware is a Java editor that will produce DocBook documents and let you transform them into HTML and PDF for a local preview before you submit.

  • In the process of transforming your HTML into XML, HTML tidy can be a handy tool to make your HTML "regexp'able". Brandoch Calef has made a Perl script with directions (now via archive.org) that gets you most of the way.

OpenACS CVS Concepts

Created by Gustaf Neumann, last modified by Gustaf Neumann 17 Feb 2008, at 07:08 AM

All OpenACS code resides within a single CVS module, openacs-4. (The openacs-4 directory contains code for all versions of OpenACS 4 and later, and .LRN 1 and later.) Checking out this module retrieves all openacs code of any type. For convenience, subsets of openacs-4 are repackaged as smaller modules.

acs-core contains only critical common packages. It does not have any user applications, such as forums, bug-tracker, calendar, or ecommerce. These can be added at any time.

The complete list of core packages is:

acs-admin
acs-api-browser
acs-authentication
acs-automated-testing
acs-bootstrap-installer
acs-content-repository
acs-core-docs
acs-kernel
acs-lang
acs-mail
acs-messaging
acs-reference
acs-service-contract
acs-subsite
acs-tcl
acs-templating
ref-timezones search

dotlrn-all contains the packages required, in combination with acs-core, to run the .LRN system.

project-manager-all contains the packages required, in combination with acs-core, to run the project-manager package.

Each OpenACS package (i.e., directory in openacs-4/packages/) is also aliased as a module of the same name.

Tags and Branches look similar in commands, but behave differently. A tag is a fixed point on a branch. Check out a tag to get a specific version of OpenACS. Check out a branch to get the most current code for that major-minor version (e.g., 5.0.x or 5.1.x). You can only commit to a branch, not a tag, so check out a branch if you will be working on the code.

  • openacs-x-y-z-final tags mark final releases of OpenACS. This tag is applied to the acs-core files for an OpenACS core release, and to the latest released versions of all other packages at the time of release. Example: openacs-5-0-4-final.

  • dotlrn-x-y-z-final tags mark final releases of .LRN. These tags apply only to .LRN packages. Example: dotlrn-2-0-1-final

  • packagename-x-y-z-final tags apply to releases of individual packages. For example, calendar-2-0-0-final is a tag that will retrieve only the files in the calendar 2.0.0 release. It applies only to the calendar package. All non-core, non-dotlrn packages should have a tag of this style, based on the package name. Many packages have not been re-released since the new naming convention was adopted and so don't have a tag of this type.

  • openacs-x-y-compat tags point to the most recent released version of OpenACS X.Y. It is similar to openacs-x-y-z-compat, except that it will always get the most recent dot-release of Core and the most recent compatible, released version of all other packages. All of the other tag styles should be static, but -compat tags may change over time. If you want version 5.0.4 exactly, use the openacs-5-0-4-final tag. If you want the best newest released code in the 5.0.x release series and you want to upgrade within 5.0.x later, use the compat tag.

    For example, if you check out the entire tree with -r openacs-5-0-compat, you might get version 5.0.4 of each OpenACS core package, version 2.0.1 of calendar, version 2.0.3 of each .LRN package, etc. If you update the checkout two months later, you might get version 5.0.5 of all OpenACS core packages and version 2.1 of calendar.

  • oacs-x-y is a branch, , not a tag. All core packages in the 5.0 release series (5.0.0, 5.0.1, 5.0.2, etc) are also on the oacs-5-0 branch. Similarly, OpenACS core packages for 5.1.0 are on the oacs-5-1 branch.

    These branches are used for two purposes. OpenACS Core packages on these branches are being tidied up for release. Only bug fixes, not new features, should be added to core packages on release branches. For all other packages, release branches are the recommended location for development. For example, if you are working on calendar, which is compatible with openacs 5.0 but not 5.1, work on the oacs-5-0 branch.

  • HEAD is a branch used for development of core packages.

Permissions Requirements

Created by Gustaf Neumann, last modified by Gustaf Neumann 17 Feb 2008, at 07:08 AM

By John McClary Prevost

OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

This document records requirements for the OpenACS 4 Permissions system, a component of the OpenACS 4 Kernel. The Permissions system is meant to unify and centralize the handling of access and control on a given OpenACS 4 system.

Any multi-user software system must address the general problem of permissions, or "who can do what, on what." On web services, which typically involve large numbers of users belonging to different groups, permissions handling is a critical need: access to content, services, and information generally must be controlled. The OpenACS 4 Permissions system is meant to serve as a consistent, unified interface for higher-level OpenACS applications to handle permissions. Consolidating access control in such a manner reduces both cost and risk: cost, in that less code has to be written and maintained for dealing with recurring permissions situations; risk, in that we need not rely on any single programmer's diligence to ensure access control is implemented and enforced correctly.

Historical Motivations

In earlier versions of the OpenACS, permissions and access control was handled on a module-by-module basis, often even on a page-by-page basis. For example, a typical module might allow any registered user to access its pages read-only, but only allow members of a certain group to make changes. The way this group was determined also varied greatly between modules. Some modules used "roles", while others did not. Other modules did all access control based simply on coded rules regarding who can act on a given database row based on the information in that row.

Problems resulting from this piecemeal approach to permissions and access control were many, the two major ones being inconsistency, and repeated/redundant code. Thus the drive in OpenACS 4 to provide a unified, consistent permissions system that both programmers and administrators can readily use.

The OpenACS 4 Permissions system has two main pieces: first, an API for developers to readily handle access control in their applications. The second piece of the system is a UI meant primarily for (subsite) administrators to grant and revoke permissions to system entities under their control.

Consistency is a key characteristic of the Permissions system - both for a common administrative interface, and easily deployed and maintained access control. The system must be flexible enough to support every access model required in OpenACS applications, but not so flexible that pieces will go unused or fall outside the common administrative interfaces.

Terminology

The primary question an access control system must answer is a three-way relation, like that between the parts of most simple sentences. A simple sentence generally has three parts, a subject, an object, and a verb - in the context of OpenACS Permissions, our simple sentence is, "Can this party perform this operation on this target?" Definitions:

The subject of the sentence is "party" - a distinguishable actor whose access may be controlled, this special word is used because one person may be represented by several parties, and one party may represent many users (or no users at all).

The object of the sentence is "target" - this is an entity, or object, that the party wishes to perform some action on. An entity/object here is anything that can be put under access control.

The verb of the sentence is "operation" - a behavior on the OpenACS system subject to control, this word is used to represent the fact that a single operation may be part of many larger actions the system wants to perform. If "foo" is an operation, than we sometimes refer to the foo "privilege" to mean that a user has the privilege to perform that operation.

Examples of the essential question addressed by the Permissions system: Can jane@attacker.com delete the web security forum? Can the Boston office (a party) within the VirtuaCorp intranet/website create its own news instance?

10.0 Granularity

The system must support access control down to the level of a single entity (this would imply down to the level of a row in the OpenACS Objects data model).

20.0 Operations

The system itself must be able to answer the essential permissions question as well as several derived questions.

20.10 Basic Access Check

The system must be able to answer the question, "May party P perform operation O on target T?"

20.20 Allowed Parties Check

The system must be able to answer the question, "Which parties may perform operation O on target T?"

20.30 Allowed Operations Check

The system must be able to answer the question, "Which operations may party P perform on target T?"

20.40 Allowed Targets Check

The system must be able to answer the question, "Upon which targets may party P perform operation O?"

40.0 Scale of Privileges

Privileges must be designed with appropriate scope for a given OpenACS package. Some privileges are of general utility (e.g. "read" and "write"). Others are of more limited use (e.g. "moderate" - applies mainly to a package like forum, where many users are contributing content simultaneously). A package defining its own privileges should do so with moderation, being careful not to overload a privilege like "read" to mean too many things.

50.0 Aggregation of Operations (Privileges)

For user interface purposes, it can be appropriate to group certain privileges under others. For example, anyone with the "admin" privilege may also automatically receive "read", "write", "delete", etc. privileges.

60.0 Aggregation of Parties (Groups)

The system must allow aggregation of parties. The exact method used for aggregation will probably be addressed by the OpenACS 4 "Groups" system. Regardless of the exact behavior of aggregate parties, if an aggregate party exists, then access which is granted to the aggregate party should be available to all members of that aggregate.

70.0 Scope of Access Control

70.10 Context

There must be a method for objects to receive default access control from some context. For example, if you do not have read access to a forum, you should not have read access to a message in that forum.

70.20 Overriding

It must be possible to override defaults provided by the context of an object (as in 70.10), in both a positive and negative manner.

70.20.10 Positive Overriding

It must be possible to allow a party more access to some target than they would get by default. (For example, a user does not have the right to edit any message on a forum. But a user does possibly have the right to edit their own messages.)

70.20.20 Negative Overriding

It must be possible to deny a party access to some target that their inherited privileges would have allowed. (For example, a subdirectory in the file-storage might normally have its parent directory as context. It should be possible, however, to make a subdirectory private to some group.)

100.0 Efficiency

At least the basic access check (20.10) and the allowed targets check (20.40) must be efficient enough for general use, i.e. scalable under fairly heavy website traffic. It can be expected that almost every page will contain at least one basic access check, and most pages will contain an allowed targets check (20.40).

In particular, constraining a SELECT to return only rows the current user has access to should not be much slower than the SELECT on its own.

120.0 Ease of Use

Since most SQL queries will contain an allowed target check in the where clause, whatever mechanism is used to make checks in SQL should be fairly small and simple.

In particular, constraining a SELECT to return only rows the current user has access to should not add more than one line to a query.

Document Revision # Action Taken, Notes When? By Whom?
0.1 Creation 8/17/2000 John Prevost
0.2 Revised, updated with new terminology 8/25/2000 John Prevost
0.3 Edited, reformatted to conform to requirements template, pending freeze. 8/26/2000 Kai Wu
0.4 Edited for ACS 4 Beta release. 10/03/2000 Kai Wu

API test

Created by Anett Szabo, last modified by Gustaf Neumann 17 Feb 2008, at 07:08 AM

Documentation Standards

Created by Gustaf Neumann, last modified by Gustaf Neumann 17 Feb 2008, at 07:08 AM

Basic infrastructure

Created by Anett Szabo, last modified by Anett Szabo 14 Aug 2007, at 05:12 PM

2.1. AOLserver


OpenACS is built atop the mighty AOLserver, the open source, multithreaded HTTP
server that powers http://www.aol.com. AOLserver provides a rich Tcl API, server-side
processing of custom tags via AOLserver Dynamic Pages (ADP), database connection
pooling and a cron-like service for running scheduled code in the background. For more
about AOLserver, please see the AOLserver home page (http://www.aolserver.com).


2.2. Templating system

 
OpenACS divides responsibility for serving most requests among two or three file types
having distinct purposes. The basic split is between a script file that sets up dynamic
variables and a markup file that renders them. The script file is a Tcl script having a .tcl
extension. The markup file has an .adp extension and looks much like standard HTML.
In fact, HTML is valid ADP, providing a gentle slope for programmers and designers
who are just getting started with the framework. Because they resemble HTML, ADP
files may be edited in standard tools such as Dreamweaver.
The OpenACS templating system supports the ability to work with page fragments via
the <include> tag. The same Tcl/ADP file pair idiom operates at this level. Hence if a
page contains a tag
<include src=”motd”>
the template system will search the current filesystem directory for motd.tcl to set up the
dynamic variables and motd.adp for the markup.
More interestingly, the OpenACS templating system supports a master/slave relationship
among page fragments. A page fragment that specifies a <master> will have its contents
embedded into the master template at a location designated by the <slave> tag in that
template. Master templates are typically used to standardize headers and footers across a
site. A nice property of the master/slave system is that the master template provides a
bird’s eye view of the entire page in a single file. And of course, the same Tcl/ADP file
pair idiom applies to master templates as well.
Before we get too far down the two-file path it’s worth pointing out a third type of file
that also participates in serving most requests: the query file. Query files have an .xql
extension and contain SQL that is specific to the template. The function of these files
will be explored further in the next section.


2.3. Database API


The OpenACS database API is designed to maximize Tcl integration with the database,
allowing data to pass back and forth as simply and naturally as possible. Let’s dive in
and consider a code example:

set title "Late Night With Conan O'Brien"
db_foreach get_matches {
select description, tvchannel, when_start, when_stop
from xmltv_programmes
where title = :title
} {
do_something_with $title $description $tvchannel
do_something_else_with $when_start $when_stop
}

This code block loops through a tv listings database looking for airings of Late Night
with Conan O’Brien. The db_foreach command runs a loop, just like Tcl’s
foreach command, but also fetches column variables for each row result, sets them in
the code block environment and finally executes the code block. Note the appearance of
:title in the SQL query, which is the second argument to db_foreach. The colon
(:) syntax serves to pass the value of the Tcl variable title to the database. This
mechanism automatically handles any quoting that may be necessary (in this case the
single quote in Conan O’Brien’s last name), an added security feature.
The first argument to db_foreach, get_matches, is a required query name. While
the above example specifices a SQL query for compactness, OpenACS scripts typically
specify their queries by name, leaving the SQL block empty. Query names are used to
look up SQL statements in special query files having an .xql extension. These sit in the
same directory next to the .tcl and .adp files, and themselves come in several flavors. For
the “motd” page fragment, standard SQL statements are places in motd.xql, Postgresspecific
statements are places in motd-postgresql.xql and Oracle-specific statements are
placed in motd-oracle.xql. This arrangement provides just enough database abstraction to
allow reuse of Tcl scripts with multiple RDBMSes, while stopping short of attempting
much larger and more difficult problems such as object-relational mapping.
The database API encompasses a number of commands that work similarly, including
db_string, db_1row, db_list, db_list_of_lists, db_multirow, etc., all
of them naturally mix with Tcl, dramatically simplifying the development of Webdatabase
applications.
The database API functions also accept an optional database name argument, to allow
applications to connect to multiple databases from the same Tcl script, if necessary.
More information: http://openacs.org/api-doc/procsearch?
query_string=db_&search_type=All+matches&name_weight=5&param_weight=3&doc_
weight=2

 


2.4. Declarative programming


Among other Web development frameworks, OpenACS is still unique, powerful and
simple, and that’s based on the programming advantages created within the OpenACS,
such as declarative programming, which is understood as the opposite of writing the
logic of the program using the normal procedural programming, instead use an special
declarative syntax to reflect how the program will act, based on a possible entry, but not
relied only on that. A positive effect of writing in a declarative syntax is that the
programs usually are more robust in its behavior and more readable by other developers,
since the declarative syntax is standard and always more ordered.


2.4.1. Form processing, ad_form

As an example, for web form management, OpenACS has ad_form. This procedure
implements a high-level, declarative syntax for the generation and handling of HTML
forms. It includes special syntax for the handling of forms tied to database entries,
including the automatic generation and handling of primary keys generated from
sequences. You can declare code blocks to be executed when the form is submitted, new
data is to be added, or existing data modified.

ad_form -name form_name -export {foo {bar none}} -form {

my_table_key:key(my_table_sequence)

{value:text(textarea) {label "Enter text"}

{html {rows 4 cols 50}}}

} -select_query {

select value from my_table where my_table_key = :my_table_key

} -validate {

{value

{[string length $value] >= 3}

"\"value\" must be a string containing three or more

characters"

}

} -new_data {

db_dml do_insert "

insert into my_table

(my_table_key, value)

values

(:key, :value)"

} -edit_data {

db_dml do_update "

update my_table

set value = :value

where my_table_key = :key"

} -after_submit {

ad_returnredirect "somewhere"

ad_script_abort

}

 


In this example, ad_form will first check to see if my_table_key was passed to the
script. If not, the database will be called to generate a new key value from
my_table_sequence. If defined, the query defined by -select_query will be
used to fill the form elements with existing data.
On submission, the validation block checks that the user has entered at least three
characters into the textarea. If the validation check fails the value element will be
tagged with the error message, which will be displayed in the form when it is rendered. If
the validation check returns true, one of the new_data or edit_data code blocks will
be executed depending on whether or not my_table_key was defined during the initial
request. my_table_key is passed as a hidden form variable and is signed and verified.
This example illustrates how to declare a form, define validation and define a set of
actions to be taken on standard events.
More information about ad_form can be found here: http://openacs.org/api-doc/procview?
proc=ad%5fform, from which part of this sub section has been taken.


2.4.2. List builder

The list-builder is used create sophisticated table-like reports with many popular
capabilities, here is an example.


template::list::create \
-name packages \
-multirow packages \
-elements {
instance_name {
label {Service}
}
www {
label "Pages"
link_url_col url
link_html { title "Visit service pages" }
display_template {<if @packages.url@ not nil>Pages</if>}
}
admin {
label "Administration"
link_url_col admin_url
link_html { title "Service administration" }
display_template {<if @packages.admin_url@ not
nil>Administration</if>}
}
sitewide_admin {
label "Site-Wide Admin"
link_url_col sitewide_admin_url
link_html { title "Service administration" }
display_template {<if @packages.sitewide_admin_url@ not
nil>Administration</if>}
hide_p {[ad_decode $swadmin_p 1 0 1]}
}
parameters {
label "Parameters"
link_url_col param_url
link_html { title "Service parameters" }
display_template {<if @packages.param_url@ not
nil>Parameters</if>}
}
}

(taken from packages/acs-admin/lib/service-parameters.tcl)

 


For this example you see first the -name of the list-builder. Then the declaration of the
-multirow name used for populating the report with data, which is usually extracted
from the database. Then the -elements (columns) to be displayed in the report. Each
element is defined as a name of the variable that is set at the multirow in the case
that the variable will be used as data to be displayed in that column, like
instance_name. Also the element name can be an arbitrary name in the case that
is used the parameter display_template, which is used to include HTML tags or
ADP logic when displaying data passed by the multirow. For each element you always
define label which is the title of the column, and more special parameters such as:
link_url_col that expect a variable name which must be set at the multirow that
contains a link for automatically display the data of that column as a link.
The list builder has many more important features like order by column, filters, bulk
actions, pagination, etc.
And this is the result seen in the browser produce by the list-builder example:


2.4.3. Upgrades

Since OpenACS is a modular system consisting on independent packages, each package
has its own version and can require upgrade scripts when updating the package in a given
OpenACS installation. This is a simple example of a declarative upgrade syntax:


ad_proc -public mypackage::apm::after_upgrade {
{-from_version_name:required}
{-to_version_name:required}
} {
apm_upgrade_logic \
-from_version_name $from_version_name \
-to_version_name $to_version_name \
-spec {
2.0.3 2.1.0 {
….upgrade code here….
}
2.1.0 2.1.1 {
…. More upgrade code here….
}
}
}


 

Setting Permissions on an OpenACS package

Created by Malte Sussdorff, last modified by Malte Sussdorff 07 Aug 2007, at 04:33 PM

by Jade Rubick

OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

After you've installed and mounted your package, you can configure each instance to act as you would like.

This is done from the Applications page. Log in, go to the Admin or Control Panel, click on the subsite the application is in, and click on Applications. If you click on the 'Permissions' link, you will see and be able to set the permissions for that application.

Each application may have different behavior for what Read Create Write and Admin permissions mean, but generally the permissions are straightforward. If you find the behavior is not what you expect after setting permissions, you can post a bug in the OpenACS bugtracker.

'The Public' refers to users to the website who are not logged in. 'Registered Users' are people who have registered for the site.

Configuring an OpenACS package

Created by Malte Sussdorff, last modified by Malte Sussdorff 07 Aug 2007, at 04:33 PM

by Jade Rubick

OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

After you've installed and mounted your package, you can configure each instance to act as you would like.

This is done from the Applications page. Log in, go to the Admin or Control Panel, click on the subsite the application is in, and click on Applications. If you click on the 'Parameters' link, you will see a list of parameters that you can change for this application.

Mounting OpenACS packages

Created by Malte Sussdorff, last modified by Malte Sussdorff 07 Aug 2007, at 04:33 PM

by Jade Rubick

OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

After you've installed your packages, you have to 'mount' them in order to make them appear on your website.

Make sure you are logged in, and then click on the 'Admin' or 'Control Panel' link to get to the Site-Wide Administration page (at /acs-admin). Click on the subsite you'd like the application to be available at.

Subsites are a way of dividing your website into logical chunks. Often they represent different groups of users, or parts of an organization.

Now click on 'Applications' (applications are the same thing as packages). You'll see a list of Applications and the URLs that each is located at. To mount a new application, you click on 'Add application', enter the Application, title (application name), and URL (URL folder name), and you're done.

Test it out now. The URL is based on a combination of the subsite URL and the application URL. So if you installed a package in the Main Subsite at the URL calendar, it will be available at http://www.yoursite.com/calendar. If you installed it at a subsite that has a URL intranet, then it would be located at http://www.yoursite.com/intranet/calendar.

Next Page