Index: openacs-4/packages/acs-events/www/doc/design.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-events/www/doc/design.adp,v
diff -u -r1.2.2.3 -r1.2.2.4
--- openacs-4/packages/acs-events/www/doc/design.adp	9 Jun 2016 13:03:12 -0000	1.2.2.3
+++ openacs-4/packages/acs-events/www/doc/design.adp	22 Jun 2016 08:19:32 -0000	1.2.2.4
@@ -21,13 +21,13 @@
 <em>activity</em>, and an arbitrary number of <em>parties</em>. An
 activity can be associated with an arbitrary number of ACS
 <em>objects</em>.</p>
-<p>The package doesn't provide for any interpretation of events,
-leaving that up to the applications that use the service. In
-particular, the package assumes that permissioning, and the related
-concept of approval, will be handled by the application. Similarly,
-notification is also the responsibility of the application (but
-probably via another service package.) Likewise, the package
-provides no UI support.</p>
+<p>The package doesn't provide for any interpretation of
+events, leaving that up to the applications that use the service.
+In particular, the package assumes that permissioning, and the
+related concept of approval, will be handled by the application.
+Similarly, notification is also the responsibility of the
+application (but probably via another service package.) Likewise,
+the package provides no UI support.</p>
 <p>Possible application domains include include calendaring, room
 reservation, scheduling, project management, and event
 registration.</p>
@@ -36,32 +36,32 @@
 meets the requirements for each of these areas in the following
 ways:</p>
 <p>
-<strong>Events:</strong> The service creates a new subtype of acs_object:
-acs_event. It creates an auxiliary table for mapping events to
-parties. It provides an API for manipulating and querying events
-and their associated time interval sets, activities, recurrences,
-and parties.</p>
+<strong>Events:</strong> The service creates a new subtype of
+acs_object: acs_event. It creates an auxiliary table for mapping
+events to parties. It provides an API for manipulating and querying
+events and their associated time interval sets, activities,
+recurrences, and parties.</p>
 <p>
-<strong>Time Intervals:</strong> The service creates tables for storing
-time intervals and sets of time intervals. It provides an API for
-manipulating and querying time intervals and time interval
+<strong>Time Intervals:</strong> The service creates tables for
+storing time intervals and sets of time intervals. It provides an
+API for manipulating and querying time intervals and time interval
 sets.</p>
 <p>
-<strong>Activities:</strong> The service creates a new subtype of
-acs_object: acs_activity. It creates an auxiliary table for mapping
-activities to objects. It provides an API for manipulating
+<strong>Activities:</strong> The service creates a new subtype
+of acs_object: acs_activity. It creates an auxiliary table for
+mapping activities to objects. It provides an API for manipulating
 activities, their properties, and their associated objects.</p>
 <p>
-<strong>Recurrences:</strong> The service creates a table for storing
-information on how an event recurs, including how the event recurs
-and when it stops recurring. It provides an API for manipulating
-recurrence information and recurring events. This includes a
-function to insert event recurrences in such a way as to reasonably
-limit the amount of information stored in the DB for a particular
-event. This is done by only partially populating the recurrences
-for certain events. The service also provides a view which
-simplifies querying to find partially populated recurring events
-that need recurrences added to the DB.</p>
+<strong>Recurrences:</strong> The service creates a table for
+storing information on how an event recurs, including how the event
+recurs and when it stops recurring. It provides an API for
+manipulating recurrence information and recurring events. This
+includes a function to insert event recurrences in such a way as to
+reasonably limit the amount of information stored in the DB for a
+particular event. This is done by only partially populating the
+recurrences for certain events. The service also provides a view
+which simplifies querying to find partially populated recurring
+events that need recurrences added to the DB.</p>
 <h3>III. Historical Considerations</h3>
 <p>There are number of historical considerations surrounding the
 design of recurring events. Much of the current design can be
@@ -90,8 +90,8 @@
 advantage of the index on the start_date column to optimize the
 query. With the stored proc, it would be necessary to iterate over
 each day (up to 42 in the month view), calling the check repeat
-proc for each base repeating item who's repeat_until date was still
-relevant, and then effectively constructing the item to be
+proc for each base repeating item who's repeat_until date was
+still relevant, and then effectively constructing the item to be
 displayed.</p>
 <p>Another reason is that the first approach, to insert only a
 single row, seems to require a significantly more complex design.
@@ -100,9 +100,9 @@
 Now you need to maintain a separate table of exceptions and it
 becomes necessary to check through the exceptions table every time
 the check repeat proc is called. It the worst case, every
-recurrence is an exception, so you're essentially back to 1 row per
-recurrence, plus all the added complexity of using the check repeat
-proc.</p>
+recurrence is an exception, so you're essentially back to 1 row
+per recurrence, plus all the added complexity of using the check
+repeat proc.</p>
 <p>This is not an unreasonable possibility and is in fact how Sloan
 operates. Each class is represented as a recurring item and it is
 very common for each instance to have a different set of files
@@ -120,20 +120,20 @@
 systems seem to have arbitrary, implementation driven limits. Yahoo
 and Excite have arbitrary limits between about 1970 and 2030. Palm
 seems to have no lower limit, but an upper limit of 2031.</p>
-<p>The 4.0 ACS Events service doesn't enforce a particular policy
-to prevent problems, but it does provide mechanisms that a
+<p>The 4.0 ACS Events service doesn't enforce a particular
+policy to prevent problems, but it does provide mechanisms that a
 well-designed application can use. The keys are the
 <strong>event_recurrence.insert_events</strong> procedure and the
 <strong>partially_populated_events</strong> view.</p>
 <p>
-<strong>insert_events</strong> takes either an event_id or a recurrence_id
-and a cutoff date. It either uses the recurrence_id, or gets it
-from the event_id, to retrieve the information needed to generate
-the dates of the recurrences. When inserting a recurring event for
-the first time, the application will need to call
-<strong>insert_events</strong> with a reasonable populate_until date. For
-calendar, for example, this could be sysdate + the lookahead
-limit.</p>
+<strong>insert_events</strong> takes either an event_id or a
+recurrence_id and a cutoff date. It either uses the recurrence_id,
+or gets it from the event_id, to retrieve the information needed to
+generate the dates of the recurrences. When inserting a recurring
+event for the first time, the application will need to call
+<strong>insert_events</strong> with a reasonable populate_until
+date. For calendar, for example, this could be sysdate + the
+lookahead limit.</p>
 <p>It is the application's responsibility to determine if
 additional events need to be inserted into the DB to support the
 date being used in a query to view events. The application can do
@@ -152,22 +152,23 @@
 inclusive (covering both Yahoo Calendar and Excite Planner) though
 it didn't capture some of the more esoteric cases covered by
 Outlook or (particuarly) Lotus Notes. The Events service maintains
-the original choices, but adds an additional choice, 'custom',
-which, when combined with the custom_func column, allows an
-application to generate an arbitrary recurrence function. The
-function must take a date and a number of intervals as arguments
-and return a new date greater than the given date. The number of
-intervals is guaranteed to be a positive integer.</p>
+the original choices, but adds an additional choice,
+'custom', which, when combined with the custom_func column,
+allows an application to generate an arbitrary recurrence function.
+The function must take a date and a number of intervals as
+arguments and return a new date greater than the given date. The
+number of intervals is guaranteed to be a positive integer.</p>
 <p>For the days_of_week column, the representation chosen, a
 space-delimited list of integers, has a number of advantages.
 First, it is easy and reasonably efficient to generate the set of
-dates corresponding to the recurrences. <strong>insert_events</strong> takes
-each number in the list in turn and adds it to the date of the
-beginning of the week. Second, the Tcl and Oracle representations
-are equivalent and the translations to and from UI are
-straightforward. In particular, the set of checkboxes corresponding
-to days of the week are converted directly into a Tcl list which
-can be stored directly into the DB.</p>
+dates corresponding to the recurrences.
+<strong>insert_events</strong> takes each number in the list in
+turn and adds it to the date of the beginning of the week. Second,
+the Tcl and Oracle representations are equivalent and the
+translations to and from UI are straightforward. In particular, the
+set of checkboxes corresponding to days of the week are converted
+directly into a Tcl list which can be stored directly into the
+DB.</p>
 <h3>IV. Competitive Analysis</h3>
 <p>Since this is a low level service package, there is no direct
 competition.</p>
@@ -210,37 +211,38 @@
 Tcl API, but if desired one could be added consisting primarily of
 wrappers around PL/SQL functions and procedures.</p>
 <h4>Events</h4>
-<p>This is the main abstraction in the package. <tt>acs_event</tt>
-is a subtype of <tt>acs_object</tt>. In addition to the
-<tt>acs_events</tt> table, there is an <tt>acs_event_party_map</tt>
-table which maps between parties and events. The <tt>acs_event</tt>
-package defines <tt>new</tt>, <tt>delete</tt>, various procedures
-to set attributes and <tt>recurs_p</tt> indicating whether or not a
-particular event recurs.</p>
+<p>This is the main abstraction in the package.
+<kbd>acs_event</kbd> is a subtype of <kbd>acs_object</kbd>. In
+addition to the <kbd>acs_events</kbd> table, there is an
+<kbd>acs_event_party_map</kbd> table which maps between parties and
+events. The <kbd>acs_event</kbd> package defines <kbd>new</kbd>,
+<kbd>delete</kbd>, various procedures to set attributes and
+<kbd>recurs_p</kbd> indicating whether or not a particular event
+recurs.</p>
 <h4>Time Interval Sets</h4>
 <p>Because time interval sets are so simple, there is no need to
-make them a subtype of <tt>acs_object</tt>. Interval sets are
+make them a subtype of <kbd>acs_object</kbd>. Interval sets are
 represented with one table to represent time intervals, and a
 second table which groups intervals into sets, with corresponding
-PL/SQL packages defining <tt>new</tt>, <tt>delete</tt>, and
+PL/SQL packages defining <kbd>new</kbd>, <kbd>delete</kbd>, and
 additional manipulation functions.</p>
 <h4>Activities</h4>
 <p>This is the secondary abstraction in the package.
-<tt>acs_activity</tt> is a subtype of <tt>acs_object</tt>. In
-addition to the <tt>acs_activities</tt> table, there is an
-<tt>acs_activity_object_map</tt> table which maps between objects
-and activities. The <tt>acs_activity</tt> package defines
-<tt>new</tt>, <tt>delete</tt>, and various procedures to set
+<kbd>acs_activity</kbd> is a subtype of <kbd>acs_object</kbd>. In
+addition to the <kbd>acs_activities</kbd> table, there is an
+<kbd>acs_activity_object_map</kbd> table which maps between objects
+and activities. The <kbd>acs_activity</kbd> package defines
+<kbd>new</kbd>, <kbd>delete</kbd>, and various procedures to set
 attributes and mappings.</p>
 <h4>Recurrences</h4>
 <p>Since recurrences are always associated with events, there
 seemed to be no need to make them objects. The information that
 determines how an event recurs is stored in the
-<tt>event_recurrences</tt> table.</p>
-<p>The <tt>event_recurrence</tt> package defines <tt>new</tt>,
-<tt>delete</tt>, and other procedures related to recurrences. The
-key procedure is <tt>insert_events</tt>.</p>
-<p>A view, <tt>partially_populated_events</tt>, is created which
+<kbd>event_recurrences</kbd> table.</p>
+<p>The <kbd>event_recurrence</kbd> package defines <kbd>new</kbd>,
+<kbd>delete</kbd>, and other procedures related to recurrences. The
+key procedure is <kbd>insert_events</kbd>.</p>
+<p>A view, <kbd>partially_populated_events</kbd>, is created which
 hides some of the details of retrieving recurrences that need to
 populated further.</p>
 <!--
@@ -298,8 +300,8 @@
 details here. You could also comment on non-functional improvements
 to the package, such as usability.</p>
 <p>Note that a careful treatment of the earlier "competitive
-analysis" section can greatly facilitate the documenting of this
-section.</p>
+analysis" section can greatly facilitate the documenting of
+this section.</p>
 <h3>XI. Authors</h3>
 <ul>
 <li>System owner: <a href="mailto:smeeks\@arsdigita.com">W. Scott
Index: openacs-4/packages/acs-events/www/doc/design.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-events/www/doc/design.html,v
diff -u -r1.1.1.1 -r1.1.1.1.28.1
--- openacs-4/packages/acs-events/www/doc/design.html	12 Jun 2001 03:56:20 -0000	1.1.1.1
+++ openacs-4/packages/acs-events/www/doc/design.html	22 Jun 2016 08:19:32 -0000	1.1.1.1.28.1
@@ -15,7 +15,7 @@
 <ul>
     <li> Tcl script directory (link to the API browser page for the package)  </li>
     <li> PL/SQL file (link to the API browser page for the package)  </li>
-    <li> Data model: <a href="/doc/sql/display-sql?url=acs-events-create.sql&package_key=acs-events">acs-events-create.sql</a> </li>
+    <li> Data model: <a href="/doc/sql/display-sql?url=acs-events-create.sql&amp;package_key=acs-events">acs-events-create.sql</a> </li>
     <p>
     <li> <a href="requirements.html">Requirements document</a> </li>
     <li> ER diagram </li>
@@ -29,10 +29,10 @@
 The ACS events service is primarily intended for use by writers of
 application packages and other service packages. The service allows
 developers to specify and manipulate relationships (possibly
-recurring) between a <i>set of intervals in time</i>, an
-<i>activity</i>, and an arbitrary number of <i>parties</i>. An
+recurring) between a <em>set of intervals in time</em>, an
+<em>activity</em>, and an arbitrary number of <em>parties</em>. An
 activity can be associated with an arbitrary number of ACS
-<i>objects</i>.  
+<em>objects</em>.  
 </p>
 <p>
 The package doesn't provide for any interpretation of events, leaving
@@ -52,24 +52,24 @@
 requirements for each of these areas in the following ways:
 </p>
 <p>
-<b>Events:</b> The service creates a new subtype of acs_object:
+<strong>Events:</strong> The service creates a new subtype of acs_object:
 acs_event.  It creates an auxiliary table for mapping events to
 parties.  It provides an API for manipulating and querying events and their
 associated time interval sets, activities, recurrences, and parties.
 </p>
 <p>
-<b>Time Intervals:</b> The service creates tables for storing time
+<strong>Time Intervals:</strong> The service creates tables for storing time
 intervals and sets of time intervals.  It provides an API for
 manipulating and querying time intervals and time interval sets.
 </p>
 <p>
-<b>Activities:</b> The service creates a new subtype of acs_object:
+<strong>Activities:</strong> The service creates a new subtype of acs_object:
 acs_activity.  It creates an auxiliary table for mapping activities to
 objects.  It provides an API for manipulating activities, their
 properties, and their associated objects.
 </p>
 <p>
-<b>Recurrences:</b> The service creates a table for storing
+<strong>Recurrences:</strong> The service creates a table for storing
 information on how an event recurs, including how the event recurs and
 when it stops recurring. It provides an API for manipulating
 recurrence information and recurring events.  This includes a function
@@ -157,15 +157,15 @@
 <p>
 The 4.0 ACS Events service doesn't enforce a particular policy to
 prevent problems, but it does provide mechanisms that a well-designed
-application can use.  The keys are the <b>event_recurrence.insert_events</b>
-procedure and the <b>partially_populated_events</b> view.
+application can use.  The keys are the <strong>event_recurrence.insert_events</strong>
+procedure and the <strong>partially_populated_events</strong> view.
 </p>
 <p>
-<b>insert_events</b> takes either an event_id or a recurrence_id and a
+<strong>insert_events</strong> takes either an event_id or a recurrence_id and a
 cutoff date.  It either uses the recurrence_id, or gets it from the
 event_id, to retrieve the information needed to generate the dates of
 the recurrences.  When inserting a recurring event for the first time,
-the application will need to call <b>insert_events</b> with a
+the application will need to call <strong>insert_events</strong> with a
 reasonable populate_until date.  For calendar, for example, this could
 be sysdate + the lookahead limit.
 </p>
@@ -200,7 +200,7 @@
 For the days_of_week column, the representation chosen, a
 space-delimited list of integers, has a number of advantages.  First,
 it is easy and reasonably efficient to generate the set of dates
-corresponding to the recurrences.  <b>insert_events</b> takes each
+corresponding to the recurrences.  <strong>insert_events</strong> takes each
 number in the list in turn and adds it to the date of the beginning of
 the week.  Second, the Tcl and Oracle representations are equivalent
 and the translations to and from UI are straightforward.  In
@@ -275,33 +275,33 @@
 <h4>Events</h4>
 
 <p>
-This is the main abstraction in the package.  <tt>acs_event</tt> is a
-subtype of <tt>acs_object</tt>.  In addition to the
-<tt>acs_events</tt> table, there is an <tt>acs_event_party_map</tt>
-table which maps between parties and events.  The <tt>acs_event</tt>
-package defines <tt>new</tt>, <tt>delete</tt>, various procedures to
-set attributes and <tt>recurs_p</tt> indicating whether or not a
+This is the main abstraction in the package.  <kbd>acs_event</kbd> is a
+subtype of <kbd>acs_object</kbd>.  In addition to the
+<kbd>acs_events</kbd> table, there is an <kbd>acs_event_party_map</kbd>
+table which maps between parties and events.  The <kbd>acs_event</kbd>
+package defines <kbd>new</kbd>, <kbd>delete</kbd>, various procedures to
+set attributes and <kbd>recurs_p</kbd> indicating whether or not a
 particular event recurs.
 </p>
 
 <h4>Time Interval Sets</h4>
 
 <p>
 Because time interval sets are so simple, there is no need to make
-them a subtype of <tt>acs_object</tt>.  Interval sets are represented
+them a subtype of <kbd>acs_object</kbd>.  Interval sets are represented
 with one table to represent time intervals, and a second table which
 groups intervals into sets, with corresponding PL/SQL packages
-defining <tt>new</tt>, <tt>delete</tt>, and additional manipulation functions.
+defining <kbd>new</kbd>, <kbd>delete</kbd>, and additional manipulation functions.
 </p>
 
 <h4>Activities</h4>
 
 <p>
-This is the secondary abstraction in the package.  <tt>acs_activity</tt> is a
-subtype of <tt>acs_object</tt>.  In addition to the
-<tt>acs_activities</tt> table, there is an <tt>acs_activity_object_map</tt>
-table which maps between objects and activities.  The <tt>acs_activity</tt>
-package defines <tt>new</tt>, <tt>delete</tt>, and various procedures to
+This is the secondary abstraction in the package.  <kbd>acs_activity</kbd> is a
+subtype of <kbd>acs_object</kbd>.  In addition to the
+<kbd>acs_activities</kbd> table, there is an <kbd>acs_activity_object_map</kbd>
+table which maps between objects and activities.  The <kbd>acs_activity</kbd>
+package defines <kbd>new</kbd>, <kbd>delete</kbd>, and various procedures to
 set attributes and mappings.
 </p>
 
@@ -310,15 +310,15 @@
 <p>
 Since recurrences are always associated with events, there seemed to
 be no need to make them objects.  The information that determines how
-an event recurs is stored in the <tt>event_recurrences</tt> table.
+an event recurs is stored in the <kbd>event_recurrences</kbd> table.
 </p>
 <p>
-The <tt>event_recurrence</tt> package defines <tt>new</tt>,
-<tt>delete</tt>, and other procedures related to recurrences.  The key
-procedure is <tt>insert_events</tt>.
+The <kbd>event_recurrence</kbd> package defines <kbd>new</kbd>,
+<kbd>delete</kbd>, and other procedures related to recurrences.  The key
+procedure is <kbd>insert_events</kbd>.
 </p>
 <p>
-A view, <tt>partially_populated_events</tt>, is created which hides
+A view, <kbd>partially_populated_events</kbd>, is created which hides
 some of the details of retrieving recurrences that need to populated further.
 </p>
 
@@ -412,10 +412,10 @@
 
 <h3>XII.  Revision History</h3>
 
-<table cellpadding=2 cellspacing=2 width=90% bgcolor=#efefef>
-<tr bgcolor=#e0e0e0>
-    <th width=10%>Document Revision #</th>
-    <th width=50%>Action Taken, Notes</th>
+<table cellpadding="2" cellspacing="2" width="90%" bgcolor="#efefef">
+<tr bgcolor="#e0e0e0">
+    <th width="10%">Document Revision #</th>
+    <th width="50%">Action Taken, Notes</th>
     <th>When?</th>
     <th>By Whom?</th>
 </tr>
Index: openacs-4/packages/acs-events/www/doc/index.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-events/www/doc/index.html,v
diff -u -r1.3.22.1 -r1.3.22.2
--- openacs-4/packages/acs-events/www/doc/index.html	21 Aug 2015 10:28:44 -0000	1.3.22.1
+++ openacs-4/packages/acs-events/www/doc/index.html	22 Jun 2016 08:19:32 -0000	1.3.22.2
@@ -1,9 +1,9 @@
 <html>
 <head><title>ACS Events Documentation</title></head>
-<body bgcolor=#ffffff>
+<body bgcolor="#ffffff">
 <h1>ACS Events Documentation</h1>
 
-by <a href=mailto:wsmeeks@arsdigita.com>wsmeeks@arsdigita.com</a>
+by <a href="mailto:wsmeeks@arsdigita.com">wsmeeks@arsdigita.com</a>
 <hr>
 <h2>Engineering Docs</h2>
 <ul>
Index: openacs-4/packages/acs-events/www/doc/requirements.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-events/www/doc/requirements.adp,v
diff -u -r1.2.2.13 -r1.2.2.14
--- openacs-4/packages/acs-events/www/doc/requirements.adp	11 Jun 2016 08:44:02 -0000	1.2.2.13
+++ openacs-4/packages/acs-events/www/doc/requirements.adp	22 Jun 2016 08:19:32 -0000	1.2.2.14
@@ -29,36 +29,37 @@
 of business advantages:</p>
 <ul>
 <li>It saves work and increases quality; applications that deal
-with time don't have to "re-invent the wheel" but instead can use a
-common, tested code base.</li><li>It improves consistency; the same API will be used in different
+with time don't have to "re-invent the wheel" but
+instead can use a common, tested code base.</li><li>It improves consistency; the same API will be used in different
 applications.</li><li>It simplifies integration; since a common data model is used to
 represent events, different applications can more easily share
 related information.</li>
 </ul>
 <p>For example, the events service could support a room reservation
 application that is integrated with an application which maintains
-users's personal and group calendars. Suppose Stephanie uses the
-room reservation application to reserve the Boston 1st floor
+users's personal and group calendars. Suppose Stephanie uses
+the room reservation application to reserve the Boston 1st floor
 conference room on 11/11 from 1pm to 2pm for Ern, Allen, and Alan.
 The events service will add a new event for this time slot, add a
 mapping to Ern, Allen, and Alan, and an activity for the meeting.
 This activity will map to the conference room. Now to get a
-calendar item to appear on Ern, Allen, and Alan's calendars, the
-reservation application can simply pass the event to the calendar
-application which adds a mapping between the activity and a new
-calendar item.</p>
+calendar item to appear on Ern, Allen, and Alan's calendars,
+the reservation application can simply pass the event to the
+calendar application which adds a mapping between the activity and
+a new calendar item.</p>
 <h3>III. ACS Events Package Overview</h3>
 <p>There are four main areas of functionality in the events
 package: events, time intervals, activities, and recurrences. The
 service depends upon the ACS object and parties systems.</p>
 <h4>III.A Events</h4>
-<p>An <strong>event</strong> is an activity associated with a temporal
-interval or several such intervals. Events may have additional
-attributes as well. Examples of events include: "hitchhiking from
-4pm to 5pm", "attending the InSync concert from 11pm to 1am at the
-Enormodome", et cetera. Events are represented by designating the
-associated activity together with a set of time intervals
-indicating when that activity is to occur.</p>
+<p>An <strong>event</strong> is an activity associated with a
+temporal interval or several such intervals. Events may have
+additional attributes as well. Examples of events include:
+"hitchhiking from 4pm to 5pm", "attending the InSync
+concert from 11pm to 1am at the Enormodome", et cetera. Events
+are represented by designating the associated activity together
+with a set of time intervals indicating when that activity is to
+occur.</p>
 <p>An event can optionally be mapped to a set of parties
 representing groups or individuals that have some connection to the
 event.</p>
@@ -73,34 +74,34 @@
 activity or event.</p>
 <h4>III.B Time Interval Sets</h4>
 <p>A time interval set is a range of moments at which an event can
-occur. A single time interval is of the form "from 3:00pm to 3:17pm
-on 11/20/2000". A time interval set is of the form "from 3:00pm to
-3:17pm and from 4:30pm to 4:45pm on 11/20/2000". A set of time
-intervals has two advantages: (i) it allows for the representation
-of temporally gappy events such as conferences, which end one day
-and pick up again the next, and (ii) if implemented properly, it
-allows a simplification of the above account of events, as now an
-event can be identified with a pair of an activity together with a
-time interval set.</p>
+occur. A single time interval is of the form "from 3:00pm to
+3:17pm on 11/20/2000". A time interval set is of the form
+"from 3:00pm to 3:17pm and from 4:30pm to 4:45pm on
+11/20/2000". A set of time intervals has two advantages: (i)
+it allows for the representation of temporally gappy events such as
+conferences, which end one day and pick up again the next, and (ii)
+if implemented properly, it allows a simplification of the above
+account of events, as now an event can be identified with a pair of
+an activity together with a time interval set.</p>
 <p>The service provides an API for manipulating time interval
 sets.</p>
 <h4>III.C Activities</h4>
-<p>An <strong>activity</strong> is a thing that a person or people do,
-usually represented by a gerundic phrase, such as "biking",
-"reserving a room", "travelling to Bhutan to achieve
-enlightenment", et cetera. Activities are represented via a name
-and a description. An activity can optionally be mapped to a set of
-ACS objects.</p>
+<p>An <strong>activity</strong> is a thing that a person or people
+do, usually represented by a gerundic phrase, such as
+"biking", "reserving a room", "travelling
+to Bhutan to achieve enlightenment", et cetera. Activities are
+represented via a name and a description. An activity can
+optionally be mapped to a set of ACS objects.</p>
 
 The service provides an API for manipulating activities.
 <h4>III.D Recurring Events</h4>
 <p>Consider an event, say, an activity A performed on day D at time
 T. The ACS Events service allows applications to generate new
 events which are the same activity A performed on different days in
 the future, but at the same time of day T; such events are said to
-be <strong>recurrences</strong> of the primary event. Recurrences can happen
-on a daily, weekly, monthly, yearly or custom basis. The start and
-end dates of recurrences can be uniformly offset.</p>
+be <strong>recurrences</strong> of the primary event. Recurrences
+can happen on a daily, weekly, monthly, yearly or custom basis. The
+start and end dates of recurrences can be uniformly offset.</p>
 <h4>III.E Dependencies</h4>
 <p>The service depends on the ACS object model and on our parties
 system. Event is a subtype of acs_object. The ACS Events service
@@ -121,143 +122,150 @@
 <h3>VI.A Data Model Requirements</h3>
 <p><strong>10.10 Events</strong></p>
 <p>
-<strong>10.10.10</strong> The data model represents activities associated
-with sets of time intervals.</p>
+<strong>10.10.10</strong> The data model represents activities
+associated with sets of time intervals.</p>
 <p>
-<strong>10.10.20</strong> Events can optionally be associated with
-parties.</p>
+<strong>10.10.20</strong> Events can optionally be associated
+with parties.</p>
 <p>
 <strong>10.10.30&gt;</strong> Events can optionally recur.</p>
 <p><strong>10.20 Time Interval Sets</strong></p>
 <p>
-<strong>10.20.10</strong> A time interval consists of a start time and an
-end time.</p>
+<strong>10.20.10</strong> A time interval consists of a start
+time and an end time.</p>
 <p>
-<strong>10.20.20</strong> A time interval set consists of a set of
-associated time intervals.</p>
+<strong>10.20.20</strong> A time interval set consists of a set
+of associated time intervals.</p>
 <p>
-<strong>10.20.30</strong> Individual time intervals can be open ended.
-That is, the beginning time, ending time, or both may be null. The
-exact meaning of a null time is application dependent. However, as
-a suggestion, null end time could indicate events such as holidays
-or birthdays that have no particular start time associated with
-them. Null start time could indicate a due date. Both times null
-could indicate some item that needs to be scheduled in the future
-but does not yet have a set time.</p>
+<strong>10.20.30</strong> Individual time intervals can be open
+ended. That is, the beginning time, ending time, or both may be
+null. The exact meaning of a null time is application dependent.
+However, as a suggestion, null end time could indicate events such
+as holidays or birthdays that have no particular start time
+associated with them. Null start time could indicate a due date.
+Both times null could indicate some item that needs to be scheduled
+in the future but does not yet have a set time.</p>
 <p><strong>10.30 Activities</strong></p>
 <p>
-<strong>10.30.10</strong> An activity has a name and a description.</p>
+<strong>10.30.10</strong> An activity has a name and a
+description.</p>
 <p>
-<strong>10.30.20</strong> An activity can be associated with a set of ACS
-objects.</p>
+<strong>10.30.20</strong> An activity can be associated with a
+set of ACS objects.</p>
 <p>
-<strong>10.30.30</strong> An event object can be a valid target for an
-activity. This could indicate time dependencies, e.g. for workflow
-or project management.</p>
+<strong>10.30.30</strong> An event object can be a valid target
+for an activity. This could indicate time dependencies, e.g. for
+workflow or project management.</p>
 <p><strong>10.50 Recurring Events</strong></p>
 <p>
-<strong>10.50.10</strong> The data model provides a table which describes
-how to generate recurrences from a base event.</p>
+<strong>10.50.10</strong> The data model provides a table which
+describes how to generate recurrences from a base event.</p>
 <strong>10.50.20</strong>
- Recurring on a daily basis should be supported.
+ Recurring on a daily basis should be
+supported.
 <p>
-<strong>10.50.30</strong> Recurring on a weekly basis should be supported.
-For weekly recurrences, it should be possible to specify exactly
-which days of the week.</p>
+<strong>10.50.30</strong> Recurring on a weekly basis should be
+supported. For weekly recurrences, it should be possible to specify
+exactly which days of the week.</p>
 <p>
-<strong>10.50.40</strong> Recurring every month on a particular date
-should be supported.</p>
+<strong>10.50.40</strong> Recurring every month on a particular
+date should be supported.</p>
 <p>
-<strong>10.50.50</strong> Recurring every month on a particular day of a
-particular week should be supported.</p>
+<strong>10.50.50</strong> Recurring every month on a particular
+day of a particular week should be supported.</p>
 <p>
-<strong>10.50.60</strong> If a date in the 4th or 5th week of a month has
-been selected, then an option should be presented allowing an item
-to recur on a particular day of the last week of a month.</p>
+<strong>10.50.60</strong> If a date in the 4th or 5th week of a
+month has been selected, then an option should be presented
+allowing an item to recur on a particular day of the last week of a
+month.</p>
 <p>
-<strong>10.50.70</strong> Recurring yearly on a particular date should be
-supported.</p>
+<strong>10.50.70</strong> Recurring yearly on a particular date
+should be supported.</p>
 <p>
-<strong>10.50.80</strong> The data model should allow an application to
-provide a custom recurrence function.</p>
+<strong>10.50.80</strong> The data model should allow an
+application to provide a custom recurrence function.</p>
 <p>
-<strong>10.50.90</strong> It should be possible to specify an end date for
-recurrences.</p>
+<strong>10.50.90</strong> It should be possible to specify an
+end date for recurrences.</p>
 <p>
-<strong>10.50.100</strong> It should be possible to specify no end date
-for recurrences.</p>
+<strong>10.50.100</strong> It should be possible to specify no
+end date for recurrences.</p>
 <p>
-<strong>10.50.110</strong> The service should enforce reasonable limits on
-the amount of data used to represent recurring events. In other
-words, it should not be possible to fill the DB with thousands of
-rows representing a single recurring event, even if it recurs
-indefinitely.</p>
+<strong>10.50.110</strong> The service should enforce reasonable
+limits on the amount of data used to represent recurring events. In
+other words, it should not be possible to fill the DB with
+thousands of rows representing a single recurring event, even if it
+recurs indefinitely.</p>
 <p>
-<strong>10.50.120</strong> The service should provide a view for querying
-on those recurrences that aren't fully populated in the DB.</p>
+<strong>10.50.120</strong> The service should provide a view for
+querying on those recurrences that aren't fully populated in
+the DB.</p>
 <h3>VI.B API Requirements</h3>
 <p><strong>20.10 Event API</strong></p>
 <p>
-<strong>20.10.10</strong> The service supports adding an event.</p>
+<strong>20.10.10</strong> The service supports adding an
+event.</p>
 <p>
-<strong>20.10.15</strong> The service supports setting the time interval
-set of an event.</p>
+<strong>20.10.15</strong> The service supports setting the time
+interval set of an event.</p>
 <p>
-<strong>20.10.20</strong> The service supports setting the activity of an
-event.</p>
+<strong>20.10.20</strong> The service supports setting the
+activity of an event.</p>
 <p>
-<strong>20.10.30</strong> The service supports adding or deleting a party
-mapping to an event.</p>
+<strong>20.10.30</strong> The service supports adding or
+deleting a party mapping to an event.</p>
 <p>
-<strong>20.10.40</strong> The service supports deleting a complete
-event.</p>
+<strong>20.10.40</strong> The service supports deleting a
+complete event.</p>
 <p><strong>20.20 Time Interval Set API</strong></p>
 <p>
-<strong>20.20.10</strong> The service supports adding a time interval
-set.</p>
+<strong>20.20.10</strong> The service supports adding a time
+interval set.</p>
 <p>
-<strong>20.20.20</strong> The service supports adding a time interval to a
-set.</p>
+<strong>20.20.20</strong> The service supports adding a time
+interval to a set.</p>
 <p>
-<strong>20.20.30</strong> The service supports updating the start or end
-dates of a time interval.</p>
+<strong>20.20.30</strong> The service supports updating the
+start or end dates of a time interval.</p>
 <p>
-<strong>20.20.40</strong> The service supports deleting a time interval
-from a set.</p>
+<strong>20.20.40</strong> The service supports deleting a time
+interval from a set.</p>
 <p>
-<strong>20.20.50</strong> The service supports counting the number of time
-intervals in a set.</p>
+<strong>20.20.50</strong> The service supports counting the
+number of time intervals in a set.</p>
 <p>
-<strong>20.20.60</strong> The service supports determining if a given
-interval overlaps a particular time interval set.</p>
+<strong>20.20.60</strong> The service supports determining if a
+given interval overlaps a particular time interval set.</p>
 <p><strong>20.30 Activity API</strong></p>
 <p>
-<strong>20.30.10</strong> The service supports creating an activity.</p>
+<strong>20.30.10</strong> The service supports creating an
+activity.</p>
 <p>
-<strong>20.30.20</strong> The service supports deleting an activity.</p>
-<p>
-<strong>20.30.30</strong> The service supports updating the name of an
+<strong>20.30.20</strong> The service supports deleting an
 activity.</p>
 <p>
-<strong>20.30.40</strong> The service supports updating the description of
-an activity.</p>
+<strong>20.30.30</strong> The service supports updating the name
+of an activity.</p>
 <p>
-<strong>20.30.50</strong> The service supports adding or deleting an
-object mapping to an event.</p>
+<strong>20.30.40</strong> The service supports updating the
+description of an activity.</p>
+<p>
+<strong>20.30.50</strong> The service supports adding or
+deleting an object mapping to an event.</p>
 <p><strong>20.50 Recurrence API</strong></p>
 <p>
-<strong>20.50.10</strong> The service supports adding recurrences of an
-event.</p>
+<strong>20.50.10</strong> The service supports adding
+recurrences of an event.</p>
 <p>
-<strong>20.50.20</strong> The service supports deleting recurrences of an
-event.</p>
+<strong>20.50.20</strong> The service supports deleting
+recurrences of an event.</p>
 <p>
-<strong>20.50.30</strong> The service supports uniformly offsetting the
-start or end times of time intervals of recurrences of an
-event.</p>
+<strong>20.50.30</strong> The service supports uniformly
+offsetting the start or end times of time intervals of recurrences
+of an event.</p>
 <p>
-<strong>20.50.40</strong> The service supports determining if an event
-recurs.</p>
+<strong>20.50.40</strong> The service supports determining if an
+event recurs.</p>
 <h3>VII. Design and Implementation Notes</h3>
 <h4>VII.A 3.4 Calendar Package</h4>
 <p>The <a href="http://www.arsdigita.com/doc/calendar/">3.4
@@ -325,14 +333,14 @@
 </tr><tr>
 <td>0.2</td><td>Revision, remove timezones, add multiple timespans</td><td>11/14/2000</td><td>W. Scott Meeks</td>
 </tr><tr>
-<td>0.3</td><td>Rename "scheduling" to "event handling". Add activities.
-Renaming and updating requirements.</td><td>11/15/2000</td><td>W. Scott Meeks</td>
+<td>0.3</td><td>Rename "scheduling" to "event handling".
+Add activities. Renaming and updating requirements.</td><td>11/15/2000</td><td>W. Scott Meeks</td>
 </tr><tr>
 <td>0.4</td><td>Remove approval in favor of requiring applications to use
 acs-workflow.</td><td>11/17/2000</td><td>W. Scott Meeks</td>
 </tr><tr>
-<td>0.5</td><td>Name of package changes from "Event Handling" to "ACS
-Events".</td><td>11/17/2000</td><td>W. Scott Meeks</td>
+<td>0.5</td><td>Name of package changes from "Event Handling" to
+"ACS Events".</td><td>11/17/2000</td><td>W. Scott Meeks</td>
 </tr><tr>
 <td>0.6</td><td>Clean up, clarification, rewording</td><td>12/08/2000</td><td>Joshua Finkler</td>
 </tr>
Index: openacs-4/packages/acs-events/www/doc/requirements.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-events/www/doc/requirements.html,v
diff -u -r1.1.1.1 -r1.1.1.1.28.1
--- openacs-4/packages/acs-events/www/doc/requirements.html	12 Jun 2001 03:56:20 -0000	1.1.1.1
+++ openacs-4/packages/acs-events/www/doc/requirements.html	22 Jun 2016 08:19:32 -0000	1.1.1.1.28.1
@@ -77,7 +77,7 @@
 <h4>III.A Events</h4>
 
 <p>
-An <b>event</b> is an activity associated with a temporal interval or
+An <strong>event</strong> is an activity associated with a temporal interval or
 several such intervals. Events may have additional attributes as
 well. Examples of events include: "hitchhiking from 4pm to 5pm",
 "attending the InSync concert from 11pm to 1am at the Enormodome", et
@@ -123,7 +123,7 @@
 <h4>III.C Activities</h4>
 
 <p>
-An <b>activity</b> is a thing that a person or people do, usually represented
+An <strong>activity</strong> is a thing that a person or people do, usually represented
 by a gerundic phrase, such as "biking", "reserving a room",
 "travelling to Bhutan to achieve enlightenment", et cetera. Activities
 are represented via a name and a description.  An activity can
@@ -135,7 +135,7 @@
 <h4>III.D Recurring Events</h4>
 
 <p>
-Consider an event, say, an activity A performed on day D at time T.   The ACS Events service allows applications to generate new events which are the same activity A performed on different days in the future, but at the same time of day T; such events are said to be <b>recurrences</b> of the primary event.  Recurrences can happen on a daily,
+Consider an event, say, an activity A performed on day D at time T.   The ACS Events service allows applications to generate new events which are the same activity A performed on different days in the future, but at the same time of day T; such events are said to be <strong>recurrences</strong> of the primary event.  Recurrences can happen on a daily,
 weekly, monthly, yearly or custom basis.  The start and end dates of
 recurrences can be uniformly offset.
 <p>
@@ -151,10 +151,10 @@
 <h3>IV. Use-cases and User-scenarios</h3>
 
 <p>
-<i>Determine the types or classes of users who would use the
+<em>Determine the types or classes of users who would use the
 system, and what their experience would be like at a high-level.
 Sketch what their experience would be like and what actions they would
-take, and how the system would support them.</i>  
+take, and how the system would support them.</em>  
 </p>
 
 
@@ -179,30 +179,30 @@
 <h3>VI.A Data Model Requirements</h3>
 
 <p>
-<b>10.10 Events</b>
+<strong>10.10 Events</strong>
 </p>
 <p>
-<b>10.10.10</b> The data model represents activities associated with sets
+<strong>10.10.10</strong> The data model represents activities associated with sets
 of time intervals.  
 </p>
 <p>
-<b>10.10.20</b> Events can optionally be associated with parties.
+<strong>10.10.20</strong> Events can optionally be associated with parties.
 </p>
 <p>
-<b>10.10.30></b> Events can optionally recur.
+<strong>10.10.30></strong> Events can optionally recur.
 </p>
 <p>
-<b>10.20 Time Interval Sets</b>
+<strong>10.20 Time Interval Sets</strong>
 </p>
 <p>
-<b>10.20.10</b> A time interval consists of a start time and an end time.
+<strong>10.20.10</strong> A time interval consists of a start time and an end time.
 </p>
 <p>
-<b>10.20.20</b> A time interval set consists of a set of associated time
+<strong>10.20.20</strong> A time interval set consists of a set of associated time
 intervals.
 </p>
 <p>
-<b>10.20.30</b> Individual time intervals can be open ended.  That is, the
+<strong>10.20.30</strong> Individual time intervals can be open ended.  That is, the
 beginning time, ending time, or both may be null.  The exact meaning
 of a null time is application dependent.  However, as a suggestion,
 null end time could indicate events such as holidays or birthdays that
@@ -212,150 +212,150 @@
 time.
 </p>
 <p>
-<b>10.30 Activities</b>
+<strong>10.30 Activities</strong>
 </p>
 <p>
-<b>10.30.10</b> An activity has a name and a description.
+<strong>10.30.10</strong> An activity has a name and a description.
 </p>
 <p>
-<b>10.30.20</b> An activity can be associated with a set of ACS objects.
+<strong>10.30.20</strong> An activity can be associated with a set of ACS objects.
 </p>
 <p>
-<b>10.30.30</b> An event object can be a valid target for an activity.
+<strong>10.30.30</strong> An event object can be a valid target for an activity.
 This could indicate time dependencies, e.g. for workflow or project
 management.
 </p>
 <p>
-<b>10.50 Recurring Events</b> 
+<strong>10.50 Recurring Events</strong> 
 </p>
 <p>
-<b>10.50.10</b> The data model provides a table which describes how to generate
+<strong>10.50.10</strong> The data model provides a table which describes how to generate
 recurrences from a base event.
 </p>
 
-<b>10.50.20</b>  Recurring on a daily basis should be supported.<p>
+<strong>10.50.20</strong>  Recurring on a daily basis should be supported.<p>
 
-<b>10.50.30</b>  Recurring on a weekly basis should be supported.  For
+<strong>10.50.30</strong>  Recurring on a weekly basis should be supported.  For
 weekly recurrences, it should be possible to specify exactly which
 days of the week.<p>
 
-<b>10.50.40</b>  Recurring every month on a particular date should be
+<strong>10.50.40</strong>  Recurring every month on a particular date should be
 supported.<p>
 
-<b>10.50.50</b>  Recurring every month on a particular day of a
+<strong>10.50.50</strong>  Recurring every month on a particular day of a
 particular week should be supported.<p>
 
-<b>10.50.60</b>  If a date in the 4th or 5th week of a month has been
+<strong>10.50.60</strong>  If a date in the 4th or 5th week of a month has been
 selected, then an option should be presented allowing an item to recur
 on a particular day of the last week of a month.<p>
 
-<b>10.50.70</b>  Recurring yearly on a particular date should be supported.<p>
+<strong>10.50.70</strong>  Recurring yearly on a particular date should be supported.<p>
 <p>
-<b>10.50.80</b> The data model should allow an application to provide a
+<strong>10.50.80</strong> The data model should allow an application to provide a
 custom recurrence function.
 <p>
-<b>10.50.90</b> It should be possible to specify an end date for
+<strong>10.50.90</strong> It should be possible to specify an end date for
 recurrences.
 </p>
 <p>
-<b>10.50.100</b> It should be possible to specify no end date for recurrences.
+<strong>10.50.100</strong> It should be possible to specify no end date for recurrences.
 </p>
 <p>
-<b>10.50.110</b> The service should enforce reasonable limits on the
+<strong>10.50.110</strong> The service should enforce reasonable limits on the
 amount of data used to represent recurring events.  In other words,
 it should not be possible to fill the DB with thousands of rows
 representing a single recurring event, even if it recurs
 indefinitely.
 </p>
 <p>
-<b>10.50.120</b> The service should provide a view for querying on
+<strong>10.50.120</strong> The service should provide a view for querying on
 those recurrences that aren't fully populated in the DB.
 </p>
 
 <h3>VI.B API Requirements</h3>
 
 <p>
-<b>20.10 Event API</b>
+<strong>20.10 Event API</strong>
 </p>
 <p>
-<b>20.10.10</b> The service supports adding an event.
+<strong>20.10.10</strong> The service supports adding an event.
 </p>
 <p>
-<b>20.10.15</b> The service supports setting the time interval set of
+<strong>20.10.15</strong> The service supports setting the time interval set of
 an event.
 </p>
 <p>
-<b>20.10.20</b> The service supports setting the activity of an event.
+<strong>20.10.20</strong> The service supports setting the activity of an event.
 </p>
 <p>
-<b>20.10.30</b> The service supports adding or deleting a party
+<strong>20.10.30</strong> The service supports adding or deleting a party
 mapping to an event.
 </p>
 <p>
-<b>20.10.40</b> The service supports deleting a complete event.
+<strong>20.10.40</strong> The service supports deleting a complete event.
 </p>
 
 <p>
-<b>20.20 Time Interval Set API</b>
+<strong>20.20 Time Interval Set API</strong>
 </p>
 <p>
-<b>20.20.10</b> The service supports adding a time interval set.
+<strong>20.20.10</strong> The service supports adding a time interval set.
 </p>
 <p>
-<b>20.20.20</b> The service supports adding a time interval to a set.
+<strong>20.20.20</strong> The service supports adding a time interval to a set.
 </p>
 <p>
-<b>20.20.30</b> The service supports updating the start or end dates
+<strong>20.20.30</strong> The service supports updating the start or end dates
 of a time interval.
 </p>
 <p>
-<b>20.20.40</b> The service supports deleting a time interval from a
+<strong>20.20.40</strong> The service supports deleting a time interval from a
 set.
 </p>
 <p>
-<b>20.20.50</b> The service supports counting the number of time
+<strong>20.20.50</strong> The service supports counting the number of time
 intervals in a set.
 </p>
 <p>
-<b>20.20.60</b> The service supports determining if a given interval
+<strong>20.20.60</strong> The service supports determining if a given interval
 overlaps a particular time interval set.
 </p>
 
 <p>
-<b>20.30 Activity API</b>
+<strong>20.30 Activity API</strong>
 </p>
 <p>
-<b>20.30.10</b> The service supports creating an activity.
+<strong>20.30.10</strong> The service supports creating an activity.
 </p>
 <p>
-<b>20.30.20</b> The service supports deleting an activity.
+<strong>20.30.20</strong> The service supports deleting an activity.
 </p>
 <p>
-<b>20.30.30</b> The service supports updating the name of an activity.
+<strong>20.30.30</strong> The service supports updating the name of an activity.
 </p>
 <p>
-<b>20.30.40</b> The service supports updating the description of an activity.
+<strong>20.30.40</strong> The service supports updating the description of an activity.
 </p>
 <p>
-<b>20.30.50</b> The service supports adding or deleting an object
+<strong>20.30.50</strong> The service supports adding or deleting an object
 mapping to an event.
 </p>
 
 <p>
-<b>20.50 Recurrence API</b>
+<strong>20.50 Recurrence API</strong>
 </p>
 <p>
-<b>20.50.10</b> The service supports adding recurrences of an event.
+<strong>20.50.10</strong> The service supports adding recurrences of an event.
 </p>
 <p>
-<b>20.50.20</b> The service supports deleting recurrences of an event.
+<strong>20.50.20</strong> The service supports deleting recurrences of an event.
 </p>
 <p>
-<b>20.50.30</b> The service supports uniformly offsetting the start or
+<strong>20.50.30</strong> The service supports uniformly offsetting the start or
 end times of time intervals of recurrences of an event.
 </p>
 <p>
-<b>20.50.40</b> The service supports determining if an event recurs.
+<strong>20.50.40</strong> The service supports determining if an event recurs.
 </p>
 
 <h3>VII. Design and Implementation Notes</h3>
@@ -441,10 +441,10 @@
 
 <h3>VIII. Revision History</h3>
 
-<table cellpadding=2 cellspacing=2 width=90% bgcolor=#efefef>
-<tr bgcolor=#e0e0e0>
-    <th width=10%>Document Revision #</th>
-    <th width=50%>Action Taken, Notes</th>
+<table cellpadding="2" cellspacing="2" width="90%" bgcolor="#efefef">
+<tr bgcolor="#e0e0e0">
+    <th width="10%">Document Revision #</th>
+    <th width="50%">Action Taken, Notes</th>
     <th>When?</th>
     <th>By Whom?</th>
 </tr>
Index: openacs-4/packages/dotlrn/lib/toolbar.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/lib/toolbar.adp,v
diff -u -r1.9 -r1.9.6.1
--- openacs-4/packages/dotlrn/lib/toolbar.adp	9 Nov 2008 23:29:23 -0000	1.9
+++ openacs-4/packages/dotlrn/lib/toolbar.adp	22 Jun 2016 08:25:00 -0000	1.9.6.1
@@ -50,11 +50,11 @@
 	<tr>
 	  <td colspan="4" class="general-info">
 	    <ul>
-	      <li><i>my user_id:</i> <span> @user_id@ </span> </li>
-	      <li><i>context_id:</i> <span> @package_id@ </span></li>
-	      <li><i>community_id:</i> <span> @community_id@  </span> </li>
-	      <li><i>portal_id:</i> <span> @portal_id@ </span> </li>
-          <li><i>package_id:</i> <span>@package_id@</span> </li>
+	      <li><em>my user_id:</em> <span> @user_id@ </span> </li>
+	      <li><em>context_id:</em> <span> @package_id@ </span></li>
+	      <li><em>community_id:</em> <span> @community_id@  </span> </li>
+	      <li><em>portal_id:</em> <span> @portal_id@ </span> </li>
+          <li><em>package_id:</em> <span>@package_id@</span> </li>
 	    </ul>
 	  </td>
 	</tr>
Index: openacs-4/packages/dotlrn/www/clone.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/clone.adp,v
diff -u -r1.7 -r1.7.2.1
--- openacs-4/packages/dotlrn/www/clone.adp	3 Jul 2015 10:43:55 -0000	1.7
+++ openacs-4/packages/dotlrn/www/clone.adp	22 Jun 2016 08:25:00 -0000	1.7.2.1
@@ -21,7 +21,7 @@
 <master>
 <property name="doc(title)">@title;literal@</property>
 
-<i><strong>#dotlrn.Note#</strong> #dotlrn.lt_this_may_take_some_time#</i>
+<em><strong>#dotlrn.Note#</strong> #dotlrn.lt_this_may_take_some_time#</em>
 <formtemplate id="clone_form"></formtemplate>
 
 
Index: openacs-4/packages/dotlrn/www/deregister-confirm.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/deregister-confirm.adp,v
diff -u -r1.6 -r1.6.2.1
--- openacs-4/packages/dotlrn/www/deregister-confirm.adp	3 Jul 2015 10:43:55 -0000	1.6
+++ openacs-4/packages/dotlrn/www/deregister-confirm.adp	22 Jun 2016 08:25:00 -0000	1.6.2.1
@@ -41,7 +41,7 @@
 </else>
 </p>
 <form method="post" action="deregister" class="form-inline">
-<input type=hidden name=referer value="@referer@">
+<input type="hidden" name="referer" value="@referer@">
 @hidden_user_ids;noquote@
 <ul>
 <if @num_users@ lt 99>
@@ -53,7 +53,7 @@
 	<input type="submit" value="#dotlrn.Yes#">
 </form>
 <form method="post" class="form-inline" action="@referer@" style="margin-top: 0px;">
-	<input type=submit value="#dotlrn.No#">
+	<input type="submit" value="#dotlrn.No#">
 </form>
 
 <p>
Index: openacs-4/packages/dotlrn/www/dotlrn-group-admin-faq.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/dotlrn-group-admin-faq.adp,v
diff -u -r1.6 -r1.6.2.1
--- openacs-4/packages/dotlrn/www/dotlrn-group-admin-faq.adp	3 Jul 2015 10:43:55 -0000	1.6
+++ openacs-4/packages/dotlrn/www/dotlrn-group-admin-faq.adp	22 Jun 2016 08:25:00 -0000	1.6.2.1
@@ -28,15 +28,15 @@
 <p> 
     (For user information, please read the Help page in your Control Panel) 
 <p>This FAQ contains these sections: 
-<p><a href="../Members"><b>Dealing with Members</b></a><br>
-  <a href="../Content"><b>Managing Content</b></a><br>
-  <b><a href="../Next%20Term">Preparing for Next Term </a></b> 
+<p><a href="../Members"><strong>Dealing with Members</strong></a><br>
+  <a href="../Content"><strong>Managing Content</strong></a><br>
+  <strong><a href="../Next%20Term">Preparing for Next Term </a></strong> 
 <p>
 If your question is not answered, please email your site administrator.
 
 <H2><a name="Members">Dealing with Members</a></H2>
 <p>
-<b>Q. Who will have access to my dotlearn class?</b><br>
+<strong>Q. Who will have access to my dotlearn class?</strong><br>
 A. The default enrollment policy setting for new classes is "open" and any registered 
 user can join the class.  If you are concerned about who 
 is accessing your class, you have a couple of options: 1) "close" your enrollment 
@@ -45,8 +45,8 @@
 You can then approve or deny access through the Manage Membership page (off the 
 Control Panel). All class administrators will also receive an email notification 
 every time a user requests to join the class.<br>
-<p> <b> Q: I am a TA and there are several cross-registered students in my class. 
-  How can they get access to the materials in dotlearn? </b><br>
+<p> <strong> Q: I am a TA and there are several cross-registered students in my class. 
+  How can they get access to the materials in dotlearn? </strong><br>
   A: Non-institution students cannot have full access to dotlearn, but they can 
   have access to the class materials. However, non-Sloan students should not self-register 
   for an account. You can create Limited Access user accounts for cross-registered 
@@ -55,19 +55,19 @@
   that they are already in the system when you try to create an account for them. 
   In that case, add them to the class or community through the "Manage Membership" 
   page link.<br>
-<p> <b>Q. How do institution students get access to dotlearn?</b><br>
+<p> <strong>Q. How do institution students get access to dotlearn?</strong><br>
   A. Any current institution member can self-register for an account. Please tell your students 
   to register at the login page by entering their current email address and a password 
   of their choice. After they submit the login and complete the registration page, 
   their account will be approved within one business day. <br>
-<p> <b>Q: How can I keep unregistered students or non-members from getting in 
-  the class or community?</b> <br>
+<p> <strong>Q: How can I keep unregistered students or non-members from getting in 
+  the class or community?</strong> <br>
   A: Go to the Control Panel page for the class or community and change the Enrollment 
   Policy to "closed" or "needs approval." Closed makes the group invisible to 
   all but its members -- it will no longer be listed on the Join a Group page. 
   "Needs Approval" means that users can request membership from the Join a Group 
   page. You will receive an email from the user asking for approval. <br>
-<p> <b>Q: How do students and members join if the group enrollment is closed?</b> 
+<p> <strong>Q: How do students and members join if the group enrollment is closed?</strong> 
   <br>
   A: The only way to add users to a closed group is to add their names one at 
   a time. Go to the group's Control Panel page and go to the Manage Membership 
@@ -77,25 +77,25 @@
   they register, but if they are cross-registered students or non-MIT people, 
   you should create Limited Access users accounts for them (through the Control 
   Panel).<br>
-<p> <b>Q: How can I let non-institution people have access to my community? </b><br>
+<p> <strong>Q: How can I let non-institution people have access to my community? </strong><br>
   A: You can add them as Limited Access users or guests. Limited Access users 
   have full access to the group, but cannot join other dotlearn groups; Limited 
   Access Guests have limited access to your group (they do not see other users' 
   personal information) and cannot join other groups. Assign non-institution students 
   Limited Access accounts and non-institution people (speakers, guest lecturers, 
   colleagues) Limited Access Guest accounts. <br>
-<p> <b>Q. I am managing a community and some of our members are from outside my institution, 
+<p> <strong>Q. I am managing a community and some of our members are from outside my institution, 
 so they cannot see information about other members, or participate in forums 
   or surveys. We want them to have full access to just our community. What can 
-  we do?</b><br>
+  we do?</strong><br>
   A. This is happening because the default privacy setting for groups does not 
   allow Guests to see information about other students. If you need this setting 
   changed for your group, send email to your site administrator. Include 
   the name of your community and ask that your Guests be allowed to read personal 
   information. Also, please let us know if you have any subgroups that also need 
   to be set up this way. Each time a new subgroup is created, you will (unfortunately) 
   need to email us to change the default privacy setting.<br>
-<p> <b>Q: How do users change their passwords? </b><br>
+<p> <strong>Q: How do users change their passwords? </strong><br>
   A: Full access users (current students, faculty, staff and alumni) can 
   change their passwords through their Control Panel page in their personal portal. 
   Limited Access users and Limited Access Guests (cross-registered students and 
@@ -104,28 +104,28 @@
 
 <H2><a name="Members">Managing Content</a></H2>
 <p>
-<b>Q. Do all the administrators of the class have the same privileges?</b> <br>
+<strong>Q. Do all the administrators of the class have the same privileges?</strong> <br>
 A. Yes, all administrator roles have full control over the content and membership 
 of the community.<br>
-<p> <b>Q. I don't see survey listed on the Control Panel? What do I do?</b> <br>
+<p> <strong>Q. I don't see survey listed on the Control Panel? What do I do?</strong> <br>
   A. Survey is not added by default to classes, communities and subgroups. Go 
   to the Control Panel page, and on the left hand column, click on "Manage Applets" 
   and Add the survey package. Then, return to the Control Panel and you will see 
   Survey Administration > New Survey listed as an option.<br>
-<p> <b>Q. I created a subgroup, but no one can see it. What do I do?</b> <br>
+<p> <strong>Q. I created a subgroup, but no one can see it. What do I do?</strong> <br>
   A. It may be that the subgroup has a closed enrollment policy, so you can either 
   add the members yourself or open the enrollment policy and allow members of 
   the "parent" group to self-join.<br>
-<p> <b>Q. How do I delete a subgroup? </b><br>
+<p> <strong>Q. How do I delete a subgroup? </strong><br>
   A. Subgroups cannot be deleted, but you can "hide"them by closing the enrollment 
   policy and removing any existing members. You can archive the subgroup, but 
   if you do, it cannot be unarchived.<br>
-<p> <b>Q: I created a forum and it sends email alerts to all group members. How 
-  do I shut this off? How can an individual user shut them off?</b> <br>
+<p> <strong>Q: I created a forum and it sends email alerts to all group members. How 
+  do I shut this off? How can an individual user shut them off?</strong> <br>
   A: Each user must manage forum alerts through the "Edit My Notifications" page 
   on the user Control Panel. Users can also subscribe to/unsubscribe from forum 
   alerts at the top level page of an individual forum.<br>
-<p> <b>Q: Note about Forums and email away messages. </b><br>
+<p> <strong>Q: Note about Forums and email away messages. </strong><br>
   A: If a user activates an automated vacation/away message, all their forums 
   will get caught in a loop of emails. To prevent this, advise students to cancel 
   all their forum email alerts before going away. If this happens while they are 
@@ -134,15 +134,15 @@
 
 <H2><a name="Next Term">Preparing for Next Term</a></H2>
 <p>
-  <b>Q. What happens to my class at the end of the semester?</b><br>
+  <strong>Q. What happens to my class at the end of the semester?</strong><br>
   A. At the end of the semester, all classes are closed to further enrollment, 
   but the student and administrator members are left in place. Because you are 
   not removed from the class, you will see it listed in your Groups portlet (on 
   your My Space page), but it is closed and cannot be accessed by non-members. 
   If you wish to have all student members removed, please request this by sending 
   an email to your site administrator. <br>
   <p>
-  <b>Q. How do I request a class site for next term?</b><br>
+  <strong>Q. How do I request a class site for next term?</strong><br>
   A. In preparing for next term, there are two choices: 1) to copy a class from 
   a previous term or 2) start with an empty class shell. Copying carries over 
   customization - portlets and layout - and file storage content, and removes 
@@ -151,14 +151,14 @@
   specify the term of the previous class. Also, please include the names and emails 
   of the class administrators, so that they can be added to the new class. <br>
   <p>
-  <b>Q. How do I request a new community?</b> <br>
+  <strong>Q. How do I request a new community?</strong> <br>
   A. Send email to your site administrator. Please include the name of the 
   community and the names and emails of administrators. </p>
-<p><b>Q: Is there any documentation for class and community administrators? </b><br>
+<p><strong>Q: Is there any documentation for class and community administrators? </strong><br>
   A: Please contact your site administrators for access to documentation and 
   other training materials and for information about training sessions. <br>
   <p>
-  <b>Q: How do I use the "Add to Outlook" feature for a calendar event?</b> 
+  <strong>Q: How do I use the "Add to Outlook" feature for a calendar event?</strong> 
   <br>
   A: Both one-time and recurring events can be added to a user's Outlook calendar. 
   On each event description is a link to "synch with Outlook: single event". 
Index: openacs-4/packages/dotlrn/www/dotlrn-user-faq.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/dotlrn-user-faq.adp,v
diff -u -r1.5 -r1.5.2.1
--- openacs-4/packages/dotlrn/www/dotlrn-user-faq.adp	3 Jul 2015 10:43:56 -0000	1.5
+++ openacs-4/packages/dotlrn/www/dotlrn-user-faq.adp	22 Jun 2016 08:25:00 -0000	1.5.2.1
@@ -23,15 +23,15 @@
 
 <H1>dotlrn User FAQ</H1>
 <p>
-<b>Q: How do I change my password? </b><br>
+<strong>Q: How do I change my password? </strong><br>
 A: Go to your Control Panel page or to the Help icon in the page banner. Select 
 "Change Password."<br>
 <p>
-<b>Q: What if I forget my password?</b> <br>
+<strong>Q: What if I forget my password?</strong> <br>
 A: If you forget your password, you can reset it from the login page using the 
 "Forget Your Password?" link.
 <p>
-<b>Q: How do I join classes and communities?</b> <br>
+<strong>Q: How do I join classes and communities?</strong> <br>
 A: To join any open class or community, login to your personal portal (My Space 
 page). On your MySpace page is a portlet called "Groups." Select the 
 link to "Join/Add a Class or Community Group" in that portlet. The page 
@@ -40,31 +40,31 @@
 membership in the group requires approval, the link will read "Request." 
 
 <p>
-<b>Q: What if a class or community is not listed on the Join/Add a Class or Community 
-Group page?</b> <br>
+<strong>Q: What if a class or community is not listed on the Join/Add a Class or Community 
+Group page?</strong> <br>
 A: There would be two reasons for this. One, the group has a closed enrollment 
 so you cannot join it. Two, the group does not have a site in <%=[ad_system_name]%>. To find 
 out which of these is true or to be added to a closed group, contact the Faculty 
 member, TA or program office about getting added or getting the class or community 
 in <%=[ad_system_name]%>. 
 <p>
-<b>Q: How do I drop a class or community?</b> <br>
+<strong>Q: How do I drop a class or community?</strong> <br>
 A: There are two ways to drop any group: 1) From the MySpace page, Groups portlet, 
 click on "Join/Drop a Class or Community Group" and select the Drop 
 icon for any of your current groups or 2) go to the Control Panel page and click 
 the Drop icon next to the group you want to drop. 
 <p>
-<b>Q: If I drop my membership in a closed class or community, can I rejoin?</b> <br>
+<strong>Q: If I drop my membership in a closed class or community, can I rejoin?</strong> <br>
 A: No, you cannot. You will need to contact the TA or community administrator 
 to have them add you back in as a member.
 <p>
-<b>Q: How do I keep from receiving emails from forums?</b> <br>
+<strong>Q: How do I keep from receiving emails from forums?</strong> <br>
 A: You have control over whether and how you receive emails from forums and surveys. 
 Login to <%=[ad_system_name]%>, go to the Control Panel page (or click on the Help icon). 
 Then, click on "Edit My Notifications" and cancel or modify alerts 
 individually. 
 <p>
-<b>Q: How do I use the "Add to Outlook" feature for a calendar event?</b> <br>
+<strong>Q: How do I use the "Add to Outlook" feature for a calendar event?</strong> <br>
 A: Both one-time and recurring events can be added to a user's Outlook calendar. 
 On each event description is a link to "synch with Outlook." 
 If it is a recurring event, there will also be a second link, "All events." 
Index: openacs-4/packages/dotlrn/www/members-chunk-table.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/members-chunk-table.adp,v
diff -u -r1.21 -r1.21.2.1
--- openacs-4/packages/dotlrn/www/members-chunk-table.adp	16 Jun 2015 20:57:01 -0000	1.21
+++ openacs-4/packages/dotlrn/www/members-chunk-table.adp	22 Jun 2016 08:25:00 -0000	1.21.2.1
@@ -55,7 +55,7 @@
 </else>
   <td>
    <if @admin_p@ eq 1>
-	<input type=checkbox name=user_id value=@current_members.user_id@>
+	<input type="checkbox" name="user_id" value="@current_members.user_id@">
    </if>
  </td>
   <td>
@@ -93,8 +93,8 @@
 <p>
 
 <if @admin_p@ eq 1>
-<input type=hidden name=referer value="@referer@">
-<input type=submit value="#dotlrn.Drop_selected_members#">
+<input type="hidden" name="referer" value="@referer@">
+<input type="submit" value="#dotlrn.Drop_selected_members#">
 </form>
 </if>
 
@@ -127,7 +127,7 @@
     <%= [acs_community_member_link -user_id $pending_users(user_id) -label "$pending_users(first_names) $pending_users(last_name)"] %>
     (<a href="mailto:@pending_users.email@">@pending_users.email@</a>)
     &nbsp;
-    <i>@pending_users.role@</i>
+    <em>@pending_users.role@</em>
     &nbsp;
     [<small>
       <include src="approve-link" url="approve?user_id=@pending_users.user_id@&amp;referer=@referer@">
Index: openacs-4/packages/dotlrn/www/members-chunk.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/members-chunk.adp,v
diff -u -r1.25 -r1.25.2.1
--- openacs-4/packages/dotlrn/www/members-chunk.adp	16 Jun 2015 20:57:01 -0000	1.25
+++ openacs-4/packages/dotlrn/www/members-chunk.adp	22 Jun 2016 08:25:00 -0000	1.25.2.1
@@ -28,7 +28,7 @@
       (<a href="mailto:@users.email@">@users.email@</a>)
     </if>
     &nbsp;
-    <i>@users.role@</i>
+    <em>@users.role@</em>
     <if @admin_p@ eq 1 or @user_id@ eq @users.user_id@>
       &nbsp;
       [<small>
@@ -76,7 +76,7 @@
     (<a href="mailto:@pending_users.email@">@pending_users.email@</a>)
 </if>
     &nbsp;
-    <i>@pending_users.role@</i>
+    <em>@pending_users.role@</em>
     &nbsp;
     [<small>
       <include src="approve-link" url="approve?user_id=@pending_users.user_id@&amp;referer=@referer@">
Index: openacs-4/packages/dotlrn/www/admin/class.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/admin/class.adp,v
diff -u -r1.36 -r1.36.2.1
--- openacs-4/packages/dotlrn/www/admin/class.adp	3 Jul 2015 10:43:57 -0000	1.36
+++ openacs-4/packages/dotlrn/www/admin/class.adp	22 Jun 2016 08:25:00 -0000	1.36.2.1
@@ -71,7 +71,7 @@
 	  <table>
 	    <tr bgcolor="#eeeeee">
 	      <td align="left" colspan="4">
-		<i>#dotlrn.no_class_instances#</i>
+		<em>#dotlrn.no_class_instances#</em>
 	      </td>
 	    </tr>
 	  </table>
Index: openacs-4/packages/dotlrn/www/admin/classes-chunk.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/admin/classes-chunk.adp,v
diff -u -r1.23 -r1.23.6.1
--- openacs-4/packages/dotlrn/www/admin/classes-chunk.adp	9 Nov 2008 23:29:23 -0000	1.23
+++ openacs-4/packages/dotlrn/www/admin/classes-chunk.adp	22 Jun 2016 08:25:00 -0000	1.23.6.1
@@ -52,7 +52,7 @@
 	<table>
 	  <tr bgcolor="#eeeeee">
 	    <td align="left" colspan="4">
-	      <i>#dotlrn.no_classes#</i>
+	      <em>#dotlrn.no_classes#</em>
 	    </td>
 	  </tr>
 	</table>
Index: openacs-4/packages/dotlrn/www/admin/clubs.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/admin/clubs.adp,v
diff -u -r1.28 -r1.28.2.1
--- openacs-4/packages/dotlrn/www/admin/clubs.adp	3 Jul 2015 10:43:57 -0000	1.28
+++ openacs-4/packages/dotlrn/www/admin/clubs.adp	22 Jun 2016 08:25:00 -0000	1.28.2.1
@@ -38,7 +38,7 @@
  <table>
   <tr bgcolor="#eeeeee">
     <td align="left" colspan="4">
-      <i>#dotlrn.no_communities#</i>
+      <em>#dotlrn.no_communities#</em>
     </td>
   </tr>
  </table>
Index: openacs-4/packages/dotlrn/www/admin/cockpit.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/admin/cockpit.adp,v
diff -u -r1.4 -r1.4.4.1
Binary files differ
Index: openacs-4/packages/dotlrn/www/admin/need-term-note.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/admin/need-term-note.adp,v
diff -u -r1.8 -r1.8.20.1
--- openacs-4/packages/dotlrn/www/admin/need-term-note.adp	11 Dec 2002 13:53:51 -0000	1.8
+++ openacs-4/packages/dotlrn/www/admin/need-term-note.adp	22 Jun 2016 08:25:00 -0000	1.8.20.1
@@ -18,6 +18,6 @@
 
 %>
 
-<i>
+<em>
   #dotlrn.you_need_to_create_terms_to_create_classes#
-</i>
+</em>
Index: openacs-4/packages/dotlrn/www/admin/term.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/admin/term.adp,v
diff -u -r1.28 -r1.28.2.1
--- openacs-4/packages/dotlrn/www/admin/term.adp	3 Jul 2015 10:43:58 -0000	1.28
+++ openacs-4/packages/dotlrn/www/admin/term.adp	22 Jun 2016 08:25:00 -0000	1.28.2.1
@@ -94,7 +94,7 @@
 	  <table>
 	    <tr bgcolor="#eeeeee">
 	      <td>
-		<i>#dotlrn.no_class_instances#</i>
+		<em>#dotlrn.no_class_instances#</em>
 	      </td>
 	    </tr>
 	  </table>
Index: openacs-4/packages/dotlrn/www/admin/terms.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/admin/terms.adp,v
diff -u -r1.21 -r1.21.2.1
--- openacs-4/packages/dotlrn/www/admin/terms.adp	3 Jul 2015 10:43:58 -0000	1.21
+++ openacs-4/packages/dotlrn/www/admin/terms.adp	22 Jun 2016 08:25:00 -0000	1.21.2.1
@@ -35,7 +35,7 @@
 <table>
   <tr bgcolor="#eeeeee">
     <td align="left" colspan="4">
-      <i>#dotlrn.No_Terms#</i>
+      <em>#dotlrn.No_Terms#</em>
     </td>
   </tr>
 </table>
Index: openacs-4/packages/dotlrn/www/admin/user-nuke.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/admin/user-nuke.adp,v
diff -u -r1.4 -r1.4.2.1
--- openacs-4/packages/dotlrn/www/admin/user-nuke.adp	3 Jul 2015 10:43:58 -0000	1.4
+++ openacs-4/packages/dotlrn/www/admin/user-nuke.adp	22 Jun 2016 08:25:00 -0000	1.4.2.1
@@ -12,8 +12,8 @@
 
 <p>
 
-#dotlrn.Last_Visit# <b><if @last_visit@ eq "">#dotlrn.Never_visited#</if><else>@pretty_last_visit@</else></b><br>
-#dotlrn.Number_of_db_objects#: <b>@n_objects@</b>
+#dotlrn.Last_Visit# <strong><if @last_visit@ eq "">#dotlrn.Never_visited#</if><else>@pretty_last_visit@</else></strong><br>
+#dotlrn.Number_of_db_objects#: <strong>@n_objects@</strong>
 
 </p>
 
Index: openacs-4/packages/dotlrn/www/admin/users-bulk-upload.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/admin/users-bulk-upload.adp,v
diff -u -r1.15 -r1.15.2.1
--- openacs-4/packages/dotlrn/www/admin/users-bulk-upload.adp	3 Jul 2015 10:43:58 -0000	1.15
+++ openacs-4/packages/dotlrn/www/admin/users-bulk-upload.adp	22 Jun 2016 08:25:00 -0000	1.15.2.1
@@ -50,25 +50,25 @@
 </p>
   
   <ul>
-    <li><tt>first_names</tt> - <em>#dotlrn.required#</em></li>
-    <li><tt>last_name</tt> - <em>#dotlrn.required#</em></li>
-    <li><tt>email</tt> - <em>#dotlrn.required#</em></li>
-    <li><tt>username</tt> - <em>#dotlrn.optional_defaults_to# email</em></li>
-    <li><tt>password</tt> - <em>#dotlrn.optional_defaults_to# random value</em></li>
-    <li><tt>type</tt> - <em>#dotlrn.required#</em> #dotlrn.must_have_values# 
+    <li><kbd>first_names</kbd> - <em>#dotlrn.required#</em></li>
+    <li><kbd>last_name</kbd> - <em>#dotlrn.required#</em></li>
+    <li><kbd>email</kbd> - <em>#dotlrn.required#</em></li>
+    <li><kbd>username</kbd> - <em>#dotlrn.optional_defaults_to# email</em></li>
+    <li><kbd>password</kbd> - <em>#dotlrn.optional_defaults_to# random value</em></li>
+    <li><kbd>type</kbd> - <em>#dotlrn.required#</em> #dotlrn.must_have_values# 
       <ul>
         <li>professor</li>
         <li>student</li>
         <li>admin</li>
         <li>external</li>
       </ul>
     </li>
-    <li><tt>access_level</tt> - <em>#dotlrn.optional_defaults_to# full</em> - 
-        <em>#dotlrn.must_have_values#</em> <tt>full</tt>, <tt>limited</tt></li>
-    <li><tt>guest</tt> - <em>#dotlrn.optional_defaults_to# f</em> -
-        <em>#dotlrn.must_have_values#</em> <tt>t</tt>, <tt>f</tt></li>
-    <li><tt>notify</tt> - <em>#dotlrn.optional_defaults_to# f</em>    
-        <em>#dotlrn.must_have_values#</em> <tt>t</tt>, <tt>f</tt></li>
+    <li><kbd>access_level</kbd> - <em>#dotlrn.optional_defaults_to# full</em> - 
+        <em>#dotlrn.must_have_values#</em> <kbd>full</kbd>, <kbd>limited</kbd></li>
+    <li><kbd>guest</kbd> - <em>#dotlrn.optional_defaults_to# f</em> -
+        <em>#dotlrn.must_have_values#</em> <kbd>t</kbd>, <kbd>f</kbd></li>
+    <li><kbd>notify</kbd> - <em>#dotlrn.optional_defaults_to# f</em>    
+        <em>#dotlrn.must_have_values#</em> <kbd>t</kbd>, <kbd>f</kbd></li>
   </ul>
   
 
Index: openacs-4/packages/dotlrn/www/admin/users-chunk.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/admin/users-chunk.adp,v
diff -u -r1.27 -r1.27.8.1
--- openacs-4/packages/dotlrn/www/admin/users-chunk.adp	15 May 2007 20:14:25 -0000	1.27
+++ openacs-4/packages/dotlrn/www/admin/users-chunk.adp	22 Jun 2016 08:25:00 -0000	1.27.8.1
@@ -96,10 +96,10 @@
  <td align="center">
   <if @user_id@ ne @users.user_id@>
     <if @users.site_wide_admin_p@ true>
-      <b>#dotlrn.Yes#</b> | <a href="@users.swa_revoke_url@" title="#dotlrn.Revoke_site_wide_admin#">#dotlrn.No#</a>
+      <strong>#dotlrn.Yes#</strong> | <a href="@users.swa_revoke_url@" title="#dotlrn.Revoke_site_wide_admin#">#dotlrn.No#</a>
     </if>
     <else>
-      <a href="@users.swa_grant_url@" title="#dotlrn.Grant_site_wide_admin#">#dotlrn.Yes#</a> | <b>#dotlrn.No#</b>
+      <a href="@users.swa_grant_url@" title="#dotlrn.Grant_site_wide_admin#">#dotlrn.Yes#</a> | <strong>#dotlrn.No#</strong>
     </else>
   </if>
       <else>#dotlrn.Yes#</else>
@@ -112,7 +112,7 @@
 </if>
 <else>
   <tr bgcolor="#eeeeee">
-    <td align="left" colspan="4"><i>#dotlrn.No_Users#</i></td>
+    <td align="left" colspan="4"><em>#dotlrn.No_Users#</em></td>
   </tr>
 </else>
 
Index: openacs-4/packages/dotlrn/www/doc/architecture-overview.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/doc/architecture-overview.adp,v
diff -u -r1.3 -r1.3.2.1
--- openacs-4/packages/dotlrn/www/doc/architecture-overview.adp	3 Jul 2015 10:43:58 -0000	1.3
+++ openacs-4/packages/dotlrn/www/doc/architecture-overview.adp	22 Jun 2016 08:25:00 -0000	1.3.2.1
@@ -30,23 +30,23 @@
 and roles within the learning community.
 <li> <strong>a site node</strong>: this serves to define a
 consistent URL for the learning community, and to segment away each
-communities from one another. An example is <tt>/dotlrn/alumni-1998</tt>.
+communities from one another. An example is <kbd>/dotlrn/alumni-1998</kbd>.
 <li> <strong>an instance of the dotLRN Community Manager
 package</strong>: this serves to display community-specific data
 in a way that is clearly segmented away from the other learning
-communities using the <i>acs-subsite</i> constructs.
+communities using the <em>acs-subsite</em> constructs.
 </ul>
 
 <h3>OpenACS Group</h3>
 
-The core dotLRN group type is <tt>dotlrn_community</tt>. This group
+The core dotLRN group type is <kbd>dotlrn_community</kbd>. This group
 type defines some basic attributes that all communities have:
 <ul>
-<li> <b>a short name</b>: a simple name with no spaces, no special
+<li> <strong>a short name</strong>: a simple name with no spaces, no special
 characters, usually all lowercase. e.g. finance-101
-<li> <b>a pretty name</b>: a name that is used in pretty
+<li> <strong>a pretty name</strong>: a name that is used in pretty
 presentation. e.g. Finance 101
-<li> <b>start and end dates</b>: for communities that have certain
+<li> <strong>start and end dates</strong>: for communities that have certain
 validity periods, a start date and end date.
 </ul>
 
@@ -62,76 +62,76 @@
 future, if communities end up being multi-mounted, there will have to
 remain a canonical location for the community in order to ensure
 maximal modularity - specifically the ability to point to a
-community's URL using only the <tt>community_id</tt> as a starting
+community's URL using only the <kbd>community_id</kbd> as a starting
 point.
 
 <h3>Instance of dotLRN Community Manager</h3>
 
-The core dotLRN OpenACS package is called <tt>dotlrn</tt>
+The core dotLRN OpenACS package is called <kbd>dotlrn</kbd>
 (surprisingly enough). This package is meant to be remounted to handle
-community types and specific communities. A <tt>package_id</tt>
+community types and specific communities. A <kbd>package_id</kbd>
 corresponds to each community.
 
 <p>
 
 The group types for these two dotLRN Community Types are
-<tt>dotlrn_class_instance</tt> and <tt>dotlrn_club</tt>.
+<kbd>dotlrn_class_instance</kbd> and <kbd>dotlrn_club</kbd>.
 
 <h2>Use of NPA</h2>
 
-dotLRN makes heavy use of the <b>New Portal Architecture</b>.
+dotLRN makes heavy use of the <strong>New Portal Architecture</strong>.
 
 <p>
 
 Each full-access user has a personal portal where all data from all
-communities is centralized in one place. This is called the <b>dotLRN
-User Portal</b>.
+communities is centralized in one place. This is called the <strong>dotLRN
+User Portal</strong>.
 
 <p>
 
 Each community has a non-member portal which displays information
 to those browsing the system and wanting to find out more about a
-community before joining it. This is called the <b>dotLRN Community
-Non-Member Portal</b>.
+community before joining it. This is called the <strong>dotLRN Community
+Non-Member Portal</strong>.
 
 <p>
 
 Each community also has an administrative portal which centralizes all
 administrative functionality for that community. This is called the
-<b>dotLRN Community Admin Portal</b>.
+<strong>dotLRN Community Admin Portal</strong>.
 
 <p>
 
-Finally, each community member has her own <b>dotlrn Community Member
-Portal</b>. The important distinction here is that there is a
+Finally, each community member has her own <strong>dotlrn Community Member
+Portal</strong>. The important distinction here is that there is a
 different portal for each member of this community. Thus, if a
 community has 100 members, there are 100 individually managed
-portals. These portals are initially created from the <b>dotLRN
-Community Portal Template</b> that administrators of the community control.
+portals. These portals are initially created from the <strong>dotLRN
+Community Portal Template</strong> that administrators of the community control.
 
 <h2>dotLRN Applets</h2>
 
 dotLRN Communities have various packages of functionality. These
-packages (<b>dotLRN applets</b>) are much like existing OpenACS 4
+packages (<strong>dotLRN applets</strong>) are much like existing OpenACS 4
 packages, but with added specifications, special callback interfaces,
 and predictable APIs that not every OpenACS 4 package will have.
 
 <p>
 
-Thus, a <strong>dotLRN Applet</strong> is composed of <b>three</b>
+Thus, a <strong>dotLRN Applet</strong> is composed of <strong>three</strong>
 pieces that may each be a separate OpenACS package:
 
 <ul>
-<li> <b>OpenACS raw functionality</b>, to provide discussion
+<li> <strong>OpenACS raw functionality</strong>, to provide discussion
 forum functionality. As much as possible, this shouldn't depend on
 other dotLRN components. (e.g. bboard)
 
-<li> <b>OpenACS portlet</b>, using the New Portal Architecture (NPA),
+<li> <strong>OpenACS portlet</strong>, using the New Portal Architecture (NPA),
 to provide the ability to display the raw functionality in a portal
 interface. This obviously depends on the the NPA, but should otherwise
 be as independent as possible from dotLRN. (e.g. bboard-portlet)
 
-<li> <b>dotLRN functionality hooks</b>, to link the raw functionality
+<li> <strong>dotLRN functionality hooks</strong>, to link the raw functionality
 into the appropriate dotLRN structure. This obviously depends on
 dotLRN, but should be as thin a layer as possible on top of the the
 previous two components. (e.g. dotlrn-bboard).
@@ -150,33 +150,33 @@
 
 The relationship between dotLRN and the specific dotLRN-dependent
 packages (dotlrn-bboard, dotlrn-faq, etc...) is defined using
-<b>ACS Service Contract</b>. ACS Service Contract defines a standard
+<strong>ACS Service Contract</strong>. ACS Service Contract defines a standard
 provider/consumer interface with special contract APIs. The dotLRN
-system defines the <b>dotLRN Applet Contract</b>, which includes the
+system defines the <strong>dotLRN Applet Contract</strong>, which includes the
 following operations:
 <ul>
-<li> <b>GetPrettyName</b>: Obtain a pretty, presentable name for the
+<li> <strong>GetPrettyName</strong>: Obtain a pretty, presentable name for the
 applet in question.
-<li> <b>AddAppletToCommunity</b>: Add the applet to a
+<li> <strong>AddAppletToCommunity</strong>: Add the applet to a
 new community. This will most probably entail instantiating a new package for
 this functionality, mounted below the community's main mount point. It
 will also involve setting up applet-specific data structures (e.g. a
 new forum inside bboard).
-<li> <b>RemoveAppletFromCommunity</b>: Remove the applet from the
+<li> <strong>RemoveAppletFromCommunity</strong>: Remove the applet from the
 community. This will entail cleaning up any applet-specific data
 structures, removing the mount point and package instance.
-<li> <b>AddUser</b>: add a user to dotLRN in general. This user has
+<li> <strong>AddUser</strong>: add a user to dotLRN in general. This user has
 not yet joined any community, but may need user-specific functionality
 enabled (a private folder for files, a personal calendar, etc..)
-<li> <b>RemoveUser</b>: remove a user from dotLRN in general. This
+<li> <strong>RemoveUser</strong>: remove a user from dotLRN in general. This
 cleans up the AddUser operation.
-<li> <b>AddUserToCommunity</b>: add a user to the community, and perform any
+<li> <strong>AddUserToCommunity</strong>: add a user to the community, and perform any
 applet-specific related actions. For applets that are represented via
 a portlet (which is often, but not always, the case), this will add
 the right portlet to the user's portal page for that community. It
 will also add the generic portlet to the user's main, cross-community
 workspace.
-<li> <b>RemoveUserFromCommunity</b>: remove a user from a community,
+<li> <strong>RemoveUserFromCommunity</strong>: remove a user from a community,
 and thus clean up the actions of AddUserToCommunity.
 </ul>
 
Index: openacs-4/packages/dotlrn/www/doc/dotlrn-faq.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/doc/dotlrn-faq.adp,v
diff -u -r1.4 -r1.4.2.1
--- openacs-4/packages/dotlrn/www/doc/dotlrn-faq.adp	3 Jul 2015 10:43:58 -0000	1.4
+++ openacs-4/packages/dotlrn/www/doc/dotlrn-faq.adp	22 Jun 2016 08:25:00 -0000	1.4.2.1
@@ -85,9 +85,9 @@
     
     <p class="question">Q: How is dotLRN spelled and pronounced?</p>
     <p class="answer">
-	  It's sometimes written as <tt>.LRN</tt>, but the spelling and
-	  capitalization <tt>dotLRN</tt> is preferred. hackers who type a
-	  lot usually write <tt>dotlrn</tt>. <tt>dotLRN</tt> is pronounced
+	  It's sometimes written as <kbd>.LRN</kbd>, but the spelling and
+	  capitalization <kbd>dotLRN</kbd> is preferred. hackers who type a
+	  lot usually write <kbd>dotlrn</kbd>. <kbd>dotLRN</kbd> is pronounced
 	  &quot;daught-learn&quot; We are currently accepting voice
 	  applications for the dotLRN MP3 pronounciation file.
     </p>
Index: openacs-4/packages/dotlrn/www/doc/dotlrn-install.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/doc/dotlrn-install.adp,v
diff -u -r1.4 -r1.4.2.1
--- openacs-4/packages/dotlrn/www/doc/dotlrn-install.adp	3 Jul 2015 10:43:58 -0000	1.4
+++ openacs-4/packages/dotlrn/www/doc/dotlrn-install.adp	22 Jun 2016 08:25:00 -0000	1.4.2.1
@@ -56,7 +56,7 @@
 
     <p>
       dotLRN requires some more modules that are not in
-      <tt>acs-core</tt>, but not all of the packages in the OpenACS
+      <kbd>acs-core</kbd>, but not all of the packages in the OpenACS
       source tree. Next are the commands to get these modules.
 	</p>
 
@@ -68,15 +68,15 @@
       </pre>
 	</p>
     <p>
-       <em>Installation timesaver: In the <tt>/packages/ref-timezones/sql/common/</tt>
-       directory, cut down the files to a few <tt>insert</tt> statements apiece.
+       <em>Installation timesaver: In the <kbd>/packages/ref-timezones/sql/common/</kbd>
+       directory, cut down the files to a few <kbd>insert</kbd> statements apiece.
        This is fine for test system, and will save you a lot of time in the
        installation process.</em>
 	</p>
     <p>
-      You will now have an <tt>/openacs-4</tt> directory with all of
+      You will now have an <kbd>/openacs-4</kbd> directory with all of
       OpenACS required by dotLRN. To double check, your
-      <tt>/openacs-4/packages</tt> directory should look similar to this:
+      <kbd>/openacs-4/packages</kbd> directory should look similar to this:
 	</p>
     <pre>
 	  $ ls
@@ -103,9 +103,9 @@
 
 
     <p>
-      Next, copy the <tt>/openacs-4</tt> directory to where ever you
+      Next, copy the <kbd>/openacs-4</kbd> directory to where ever you
       prefer your webserver root to be, traditionally
-      <tt>/web</tt>. Now you can continue with the OACS <a
+      <kbd>/web</kbd>. Now you can continue with the OACS <a
       href="http://openacs.org/doc/openacs-5-2/openacs.html">installation
       document</a> at the third point "Prepare the database" of the 2nd section 
 	  "Installation option 2". Continue with the
Index: openacs-4/packages/dotlrn/www/doc/nomenclature.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/doc/nomenclature.adp,v
diff -u -r1.3 -r1.3.2.1
--- openacs-4/packages/dotlrn/www/doc/nomenclature.adp	3 Jul 2015 10:43:59 -0000	1.3
+++ openacs-4/packages/dotlrn/www/doc/nomenclature.adp	22 Jun 2016 08:25:00 -0000	1.3.2.1
@@ -3,7 +3,7 @@
 
 <h1>dotLRN Nomenclature: a dotLRN Primer</h1>
 by <a href="mailto:ben@openforce.net">Ben Adida</a>, part of <a
-href="./">dotLRN Documentation</a>. (last updated: <i>28 February 2002</i>)
+href="./">dotLRN Documentation</a>. (last updated: <em>28 February 2002</em>)
 <hr><P>
 
 dotLRN is a <strong>Learning Community Management System</strong>
@@ -15,7 +15,7 @@
 
 <p>
 <h2>1. dotLRN Communities</h2>
-The core concept within dotLRN is the <b>dotLRN User Community</b>.
+The core concept within dotLRN is the <strong>dotLRN User Community</strong>.
 
 <h3>Community</h3> 
 
@@ -28,16 +28,16 @@
 
 <h3>Class</h3>
 
-A <b>class</b> is a topic of instruction, such as "Finance 101." A
-class is <b><i>not</i></b> a community (this will become clearer
+A <strong>class</strong> is a topic of instruction, such as "Finance 101." A
+class is <strong><em>not</em></strong> a community (this will become clearer
 soon).
 
 <p>
 
 <h3>Class Instances and Clubs</h3>
 
 Two basic types of communities implemented in core dotLRN are
-<b>Class Instances</b> and <b>Clubs</b>. Class Instances are
+<strong>Class Instances</strong> and <strong>Clubs</strong>. Class Instances are
 for structured groups of students, while Clubs are for unstructured
 student activities. A Class Instance, as its name indicates, is a
 specific instance of a Class. "Finance 101 - Spring 2002" is an
@@ -50,38 +50,38 @@
 
 <h3>Open, Wait, Closed Communities</h3>
 
-Communities can have one of three <b>Join Policies</b>. A join policy
+Communities can have one of three <strong>Join Policies</strong>. A join policy
 defines the process by which a dotLRN User can become a member of the
-community. For now, we will consider only <b>dotLRN Full Access
-Users</b> (see below for more information on other types of dotLRN
+community. For now, we will consider only <strong>dotLRN Full Access
+Users</strong> (see below for more information on other types of dotLRN
 users).
 
 <p>
 
-A  community with <b>open join policy</b> is visible in read-only
+A  community with <strong>open join policy</strong> is visible in read-only
 state to non-members. Any full-access user can join the community at
 will, without the intervention of any other user.
 
 <p>
 
-A community with <b>wait join policy</b> is visible in read-only state
+A community with <strong>wait join policy</strong> is visible in read-only state
 to non-members. A full-access user can apply to join the
 community. The application must be approved by an administrator of the
 community.
 
 <p>
 
-A communty with <b>closed join policy</b> is not visible to
+A communty with <strong>closed join policy</strong> is not visible to
 non-members. Users become members only when explicitly added by the
 community administrator.
 
 <p>
 
-<h3><i>in MIT SloanSpace</i>: Class Instances and Communities</h3>
+<h3><em>in MIT SloanSpace</em>: Class Instances and Communities</h3>
 
-In MIT SloanSpace, dotLRN Communities are referred to as <b>SloanSpace
-Groups</b>, while dotLRN Clubs are referred to as <b>SloanSpace
-Communities</b>.
+In MIT SloanSpace, dotLRN Communities are referred to as <strong>SloanSpace
+Groups</strong>, while dotLRN Clubs are referred to as <strong>SloanSpace
+Communities</strong>.
 
 <p>
 
@@ -98,18 +98,18 @@
 
 <h2>2. dotLRN Users</h2>
 
-A <b>dotLRN User</b> is an individual with an email address username and a
+A <strong>dotLRN User</strong> is an individual with an email address username and a
 password to the dotLRN system. Each user is uniquely identified by
 email address.
 
 <h3>Access Level: Limited or Full</h3>
 
-dotLRN users can have either <b>Limited Access</b> or <b>Full
-Access</b>.
+dotLRN users can have either <strong>Limited Access</strong> or <strong>Full
+Access</strong>.
 
 <p>
 
-A <b>limited-access user</b> is one who has access only to class instances
+A <strong>limited-access user</strong> is one who has access only to class instances
 and communities she is registered for and has no ability to
 browse any other section of the dotLRN application. This applies even
 to open communities: if a limited-access user is not a member of a
@@ -118,7 +118,7 @@
 
 <p>
 
-A <b>full-access user</b> is one who has access to all browsing
+A <strong>full-access user</strong> is one who has access to all browsing
 sections of the dotLRN application. A full-access user can surf around
 and register for open communities, apply to be accepted into wait
 communities, etc... A full-access user also has the ability to store
@@ -128,7 +128,7 @@
 
 <h3>Access to Private Information</h3>
 
-Certain users of the system may be <b>dotLRN Guests</b>, meaning that
+Certain users of the system may be <strong>dotLRN Guests</strong>, meaning that
 they do not belong to the parent organization that runs the dotLRN
 instance. These guests may participate in the community as
 full-fledged members but, for certain legal or privacy reasons, may
@@ -143,7 +143,7 @@
 
 dotLRN users have system-wide profile information. For example, in the
 context of a Course Management System like MIT SloanSpace, they may be
-<b>Professors</b>, <b>Students</b>, or <b>Administrative Staff</b>.
+<strong>Professors</strong>, <strong>Students</strong>, or <strong>Administrative Staff</strong>.
 These system-wide roles define the user's specific profile in the
 system as a whole, without regards to community-specific roles.
 
@@ -152,21 +152,21 @@
 <h3>Community-Specific Roles</h3>
 
 dotLRN users have specific roles within the communities they belong
-to. These roles are classified in two main categories: <b>dotLRN
-Community Members</b> and <b>dotLRN Community Admins</b>.
+to. These roles are classified in two main categories: <strong>dotLRN
+Community Members</strong> and <strong>dotLRN Community Admins</strong>.
 
 <p>
 
-<b>dotLRN Community Members</b> of a given community have normal
+<strong>dotLRN Community Members</strong> of a given community have normal
 read/write access to a community. They cannot perform administrative
 functions, like create a new forum, add group calendar events, create
 a new survey, etc... However, they can contribute to existing
 discussion forums, view calendar events, and respond to surveys.
 
 <p>
 
-<b>dotLRN Community Admins</b> have all the privileges of normal
-community members <i>plus</i> complete administrative rights over all
+<strong>dotLRN Community Admins</strong> have all the privileges of normal
+community members <em>plus</em> complete administrative rights over all
 components of the community. dotLRN Community Admins completely
 control a community: they need no further help from any other users to
 add data, applications, or users to their workspace.
@@ -175,28 +175,28 @@
 <h2>3. dotLRN Applets</h2>
 
 A dotLRN community is mostly a container of users and applets. A
-<b>dotLRN Applet</b> (nothing to do with a Java applet) is a small
+<strong>dotLRN Applet</strong> (nothing to do with a Java applet) is a small
 application that can be added to the community to enable new
 functionality.
 
 <p>
 
 Examples of existing applets include: Discussion Forums, Surveys,
-FAQs, News, Calendaring. These applets are <b>scoped</b> in order to
+FAQs, News, Calendaring. These applets are <strong>scoped</strong> in order to
 correctly segment communities from one another. Data that belongs to
 one community is not viewable by another: it is as if it doesn't exist
 unless you are in the appropriate community.
 
 <p>
 
-Certain applets are <b>community-centric</b> in that they offer
+Certain applets are <strong>community-centric</strong> in that they offer
 functionality that makes sense only in the context of a given
 community. Discussion Forums is one solid example of this: a
 discussion forum must pertain to a given community.
 
 <p>
 
-Other applets are <b>user-centric</b> in that they also manage data
+Other applets are <strong>user-centric</strong> in that they also manage data
 that is user-related, not linked to any given community. Calendaring
 is one such applet: although there are community events, there are
 also personal events.
@@ -205,17 +205,17 @@
 
 <h2>4. Portals</h2>
 
-The entire dotLRN architecture is based on the <b>New Portal
-Architecture</b>. The design and specifics of this architecture are
+The entire dotLRN architecture is based on the <strong>New Portal
+Architecture</strong>. The design and specifics of this architecture are
 described in another document, but the basic terminology and concepts
 are as follows.
 
 <p>
 
 <h3>Portal Page</h3>
 
-A <b>Portal Page</b> is a single page display of portal boxes. A
-portal page has a <b>Portal Layout</b> that defines how the boxes are
+A <strong>Portal Page</strong> is a single page display of portal boxes. A
+portal page has a <strong>Portal Layout</strong> that defines how the boxes are
 arranged on the page. Common layout schemes include 2-column,
 3-column, 3-column-with-header. New portal layouts can be implemented
 at will.
@@ -227,23 +227,23 @@
 
 <h3>Portal</h3>
 
-A <b>Portal</b> is a set of portal pages that are tied together so
+A <strong>Portal</strong> is a set of portal pages that are tied together so
 that a browser may navigate easily between the various portal
 pages. This is particularly useful when portal boxes need to be
 organized by functionality theme.
 
 <h3>Portlet or Portal Datasource</h3>
 
-A <b>Portlet</b> or <b>Portal Datasource</b> is a set of functionality
+A <strong>Portlet</strong> or <strong>Portal Datasource</strong> is a set of functionality
 that is presented in the form of a portal box. A bboard portlet, for
 example, is functionality that displays discussion forums inside a
 portal box.
 
 <h3>Portal Element</h3>
 
-A <b>Portal Element</b> is a single box on a given portal page. A box
+A <strong>Portal Element</strong> is a single box on a given portal page. A box
 that display discussion forum information on Jane Doe's personal
-portal page #2 is <b><i>one</i></b> portal element that corresponds to
+portal page #2 is <strong><em>one</em></strong> portal element that corresponds to
 the instantiation of portlet within a portal page.
 
 <p>
@@ -258,24 +258,24 @@
 
 <h3>Portal Themes</h3>
 
-A portal page can be rendered in a given <b>Portal Theme</b> that
-determines the look-and-feel of each box. The layout is <b>NOT</b>
+A portal page can be rendered in a given <strong>Portal Theme</strong> that
+determines the look-and-feel of each box. The layout is <strong>NOT</strong>
 determined here, only the specific look-and-feel of portal element
 borders, buttons, and internals.
 
 <h3>Portlet Parameters; Portal Element Parameter Values</h3>
 
-For each portlet, there is a set of <b>Portlet Parameters</b>. For
-example, the calendar portlet has a <tt>calendar_view</tt> parameter
+For each portlet, there is a set of <strong>Portlet Parameters</strong>. For
+example, the calendar portlet has a <kbd>calendar_view</kbd> parameter
 that indicates whether the portlet should display data in the form of
 a list, day-, week-, or month- view.
 
 <p>
 
-Each Portal Element has <b>Portal Element Parameter Values</b> for
+Each Portal Element has <strong>Portal Element Parameter Values</strong> for
 each parameter of the portlet it instantiates. For example, the
 calendar portal element on Jane Doe's personal portal may have a value
-of "day" for the <tt>calendar_view</tt> parameter.
+of "day" for the <kbd>calendar_view</kbd> parameter.
 
 <p>
 
Index: openacs-4/packages/dotlrn/www/doc/permission-api.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/doc/permission-api.adp,v
diff -u -r1.3 -r1.3.2.1
--- openacs-4/packages/dotlrn/www/doc/permission-api.adp	3 Jul 2015 10:43:59 -0000	1.3
+++ openacs-4/packages/dotlrn/www/doc/permission-api.adp	22 Jun 2016 08:25:00 -0000	1.3.2.1
@@ -23,7 +23,7 @@
 <p>
 
 For this to work, the actual privileges used throughout dotLRN and all
-of its modules must be <b>consistent</b>. Since permissions follow an
+of its modules must be <strong>consistent</strong>. Since permissions follow an
 inheritance path, we must make sure everything bootstraps off the
 basic read, write, create, delete, admin privileges.
 
@@ -32,19 +32,19 @@
 To better explain the situation, we want the following to happen:
 <ul>
 <li> Hal is a member of "Intro to Computer Science Spring 2002" group, with relationship
-type <tt>dotlrn_instructor_rel</tt> to that group.
+type <kbd>dotlrn_instructor_rel</kbd> to that group.
 <li> An FAQ about the Computer Science Program is created for "Intro
-to Computer Science Spring 2002", with <tt>context_id</tt> pointing to
+to Computer Science Spring 2002", with <kbd>context_id</kbd> pointing to
 the course.
 <li> A relational segment "Intro to CS Spring 2002 Instructors" is
 created on the "Intro to CS Spring 2002" group and
-<tt>dotlrn_instructor_rel</tt> relationship type.
-<li> The privilege <tt>faq_admin</tt> exists, inheriting from
-the core OpenACS <tt>admin</tt> privilege.
+<kbd>dotlrn_instructor_rel</kbd> relationship type.
+<li> The privilege <kbd>faq_admin</kbd> exists, inheriting from
+the core OpenACS <kbd>admin</kbd> privilege.
 <li> A permission is granted: "Intro to CS Spring 2002 Instructors"
-are given the <tt>admin</tt> privilege on the course "Intro to
+are given the <kbd>admin</kbd> privilege on the course "Intro to
 CS Spring 2002".
-<li> <b>Thus</b>, automatically, Hal has the right to admin the FAQ,
+<li> <strong>Thus</strong>, automatically, Hal has the right to admin the FAQ,
 because the admin privilege translates to the faq_admin privilege by
 inheritance, Hal is part of the relational segment in question, and
 the FAQ in question has a context_id pointing to the course. It's BEAUTIFUL!
@@ -54,36 +54,36 @@
 
 These are fairly straight-forward:
 <ul>
-<li> <tt>dotlrn::user_add user_id</tt>
-<li> <tt>dotlrn::user_remove user_id</tt>
+<li> <kbd>dotlrn::user_add user_id</kbd>
+<li> <kbd>dotlrn::user_remove user_id</kbd>
 <p>
-<li> <tt>dotlrn::guest_add community_id user_id</tt>
-<li> <tt>dotlrn::guest_remove community_id user_id</tt>
+<li> <kbd>dotlrn::guest_add community_id user_id</kbd>
+<li> <kbd>dotlrn::guest_remove community_id user_id</kbd>
 </ul>
 
 <h3>Access Control API</h3>
 
 <ul>
-<li> <tt>dotlrn::user_can_browse_p ?user_id?</tt>
-<li> <tt>dotlrn::require_user_browse ?user_id?</tt>
+<li> <kbd>dotlrn::user_can_browse_p ?user_id?</kbd>
+<li> <kbd>dotlrn::require_user_browse ?user_id?</kbd>
 <p>
-<li> <tt>dotlrn::user_can_read_sensitive_data ?user_id?</tt>
-<li> <tt>dotlrn::require_user_read_sensitive_data ?user_id?</tt>
+<li> <kbd>dotlrn::user_can_read_sensitive_data ?user_id?</kbd>
+<li> <kbd>dotlrn::require_user_read_sensitive_data ?user_id?</kbd>
 <p>
-<li> <tt>dotlrn::user_can_read_community_type_p community_type ?user_id?</tt>
-<li> <tt>dotlrn::require_user_read_community_type community_type
-?user_id?</tt>
+<li> <kbd>dotlrn::user_can_read_community_type_p community_type ?user_id?</kbd>
+<li> <kbd>dotlrn::require_user_read_community_type community_type
+?user_id?</kbd>
 <p>
-<li> <tt>dotlrn::user_can_read_community_p community_id ?user_id?</tt>
-<li> <tt>dotlrn::require_user_read_community community_id
-?user_id?</tt>
+<li> <kbd>dotlrn::user_can_read_community_p community_id ?user_id?</kbd>
+<li> <kbd>dotlrn::require_user_read_community community_id
+?user_id?</kbd>
 <p>
-<li> <tt>dotlrn::user_community_member_p community_id ?user_id?</tt>
-<li> <tt>dotlrn::require_user_community_member community_id
-?user_id?</tt>
+<li> <kbd>dotlrn::user_community_member_p community_id ?user_id?</kbd>
+<li> <kbd>dotlrn::require_user_community_member community_id
+?user_id?</kbd>
 <p>
-<li> <tt>dotlrn::user_can_admin_community_p community_id
-?user_id?</tt>
-<li> <tt>dotlrn::require_user_admin_community community_id ?user_id?</tt>
+<li> <kbd>dotlrn::user_can_admin_community_p community_id
+?user_id?</kbd>
+<li> <kbd>dotlrn::require_user_admin_community community_id ?user_id?</kbd>
 
 </ul>
Index: openacs-4/packages/dotlrn/www/doc/permission-overview.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/doc/permission-overview.adp,v
diff -u -r1.3 -r1.3.2.1
--- openacs-4/packages/dotlrn/www/doc/permission-overview.adp	3 Jul 2015 10:43:59 -0000	1.3
+++ openacs-4/packages/dotlrn/www/doc/permission-overview.adp	22 Jun 2016 08:25:00 -0000	1.3.2.1
@@ -109,7 +109,7 @@
 <h4>Permissions</h4>
 <ul>
 <li> All registered dotLRN users can access this section
-<li> All guests of <b>that</b> class can access this section
+<li> All guests of <strong>that</strong> class can access this section
 <li> Registered users associated with a class instance of this class
 will see specific links to the proper class instances
 </ul>
Index: openacs-4/packages/dotlrn/www/doc/writing-a-dotlrn-package.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn/www/doc/writing-a-dotlrn-package.adp,v
diff -u -r1.3 -r1.3.2.1
--- openacs-4/packages/dotlrn/www/doc/writing-a-dotlrn-package.adp	3 Jul 2015 10:43:59 -0000	1.3
+++ openacs-4/packages/dotlrn/www/doc/writing-a-dotlrn-package.adp	22 Jun 2016 08:25:00 -0000	1.3.2.1
@@ -19,7 +19,7 @@
 As far as dotLRN is concerned, a dotLRN package is an
 <strong>applet</strong> (literally a "small application," nothing to
 do with Java applets) that must provide a simple
-API under the <tt>acs-service-contract</tt> mechanism. This API allows
+API under the <kbd>acs-service-contract</kbd> mechanism. This API allows
 the dotLRN core to generically dispatch calls to each dotLRN applet
 when certain events happen.
 
@@ -44,8 +44,8 @@
 it's very possible that some won't). To do so, the dotLRN core will
 use the New Portal Architecture of OpenACS 4. A dotLRN applet can
 simply add itself to the appropriate portal pages by providing an
-<strong>NPA portlet</strong>. <i>Note that the architecture of this
-portlet is dotLRN-independent!</i> The contents of the portlet may
+<strong>NPA portlet</strong>. <em>Note that the architecture of this
+portlet is dotLRN-independent!</em> The contents of the portlet may
 rely on dotLRN functionality, but the means by which the portlet is
 added to portal pages does not!
 
@@ -80,7 +80,7 @@
 Architecture. We want to strongly discourage developers from making
 this portlet package dependent on dotLRN functionality: portlets will
 be able to query parameter information from the NPA (such as the
-<tt>package_id</tt>), independently of any dotLRN functionality.
+<kbd>package_id</kbd>), independently of any dotLRN functionality.
 
 <p>