Index: openacs-4/packages/acs-core-docs/www/subsites-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/subsites-design.html,v diff -u -r1.33 -r1.33.2.1 --- openacs-4/packages/acs-core-docs/www/subsites-design.html 11 Dec 2010 23:36:32 -0000 1.33 +++ openacs-4/packages/acs-core-docs/www/subsites-design.html 12 Jun 2011 20:03:48 -0000 1.33.2.1 @@ -1,10 +1,10 @@ - -Subsites Design Document

Subsites Design Document

By Rafael H. Schloming

+ +Subsites Design Document

Subsites Design Document

By Rafael H. Schloming

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

*Note* This document has not gone through the any of the required QA process yet. It is being tagged as stable due to high -demand.

Introduction

An OpenACS 4 subsite is a managed suite of applications that work together for +demand.

Introduction

An OpenACS 4 subsite is a managed suite of applications that work together for a particular user community. This definition covers a very broad range of requirements: from a Geocities style homepage where a user can install whatever available application he wants (e.g. a single user could have their @@ -17,35 +17,35 @@ the Request Processor. Since the design and implementation directly associated with subsites is actually minimal, a discussion of subsites design is, in fact, a discussion of how core OpenACS 4 components implicitly support -subsites as a whole.

Historical Considerations

The subsites problem actually has several quite diverse origins. It was +subsites as a whole.

Historical Considerations

The subsites problem actually has several quite diverse origins. It was originally recognized as a toolkit feature in the form of -"scoping". The basic concept behind scoping was to allow one scoped +"scoping". The basic concept behind scoping was to allow one scoped OpenACS installation to behave as multiple unscoped OpenACS installations so that one OpenACS install could serve multiple communities. Each piece of application data -was tagged with a "scope" consisting of the (user_id, group_id, +was tagged with a "scope" consisting of the (user_id, group_id, scope) triple. In practice the highly denormalized data models that this method uses produced large amounts of very redundant code and in general made -it an extremely cumbersome process to "scopify" a module.

Before the advent of scoping there were several cases of client projects +it an extremely cumbersome process to "scopify" a module.

Before the advent of scoping there were several cases of client projects implementing their own version of scoping in special cases. One example being the wineaccess multi-retailer ecommerce. (Remember the other examples and get details. Archnet?, iluvcamp?)

The requirements of all these different projects vary greatly, but the one consistent theme among all of them is the concept that various areas of the web site have their own private version of a module. Because this theme is so dominant, this is the primary problem that the OpenACS4 implementation of -subsites addresses.

Competitive Analysis

...

Design Tradeoffs

The current implementation of package instances and subsites allows +subsites addresses.

Competitive Analysis

...

Design Tradeoffs

The current implementation of package instances and subsites allows extremely flexible URL configurations. This has the benefit of allowing multiple instances of the same package to be installed in one subsite, but can potentially complicate the process of integrating packages with each other since it is likely people will want packages that live at non standard URLs to operate together. This requirement would cause some packages to have more configuration options than normal since hard-coding the URLs would not -be feasible anymore.

API

This section will cover all the APIs relevant to subsites, and so will -consist of portions of the APIs of several systems.

Packages

The following package is provided for instantiation of packages. The +be feasible anymore.

API

This section will cover all the APIs relevant to subsites, and so will +consist of portions of the APIs of several systems.

Packages

The following package is provided for instantiation of packages. The apm_package.new function can be used to create a package of any type known to the system. The apm_package_types table can be queried for a list of installed packages. (See APM docs for more detail XXX: insert link here)

 
-create or replace package apm_package
+create or replace package apm_package
 as
 
   function new (
@@ -98,9 +98,9 @@
 end apm_package;
 /
 show errors
-
+
 
-

Site Nodes

This data model keeps track of what packages are being served from what +

Site Nodes

This data model keeps track of what packages are being served from what URLs. You can think of this as a kind of rp_register_directory_map on drugs. This table represents a fully hierarchical site map. The directory_p column indicates whether or not the node is a leaf node. The pattern_p column @@ -110,7 +110,7 @@ node URL. The object_id column contains the object mounted on the URL represented by the node. In most cases this will be a package instance.

 
-create table site_nodes (
+create table site_nodes (
     node_id     constraint site_nodes_node_id_fk
             references acs_objects (object_id)
             constraint site_nodes_node_id_pk
@@ -134,11 +134,11 @@
     object_id   constraint site_nodes_object_id_fk
             references acs_objects (object_id)
 );
-
+
 
 

The following package is provided for creating nodes.

 
-create or replace package site_node
+create or replace package site_node
 as
 
   -- Create a new site node. If you set directory_p to be 'f' then you
@@ -179,36 +179,36 @@
 end;
 /
 show errors
-
+
 
-

Request Processor

Once the above APIs are used to create packages and mount them on a +

Request Processor

Once the above APIs are used to create packages and mount them on a specific site node, the following request processor APIs can be used to allow the package to serve content appropriate to the package instance.

 
-[ad_conn node_id]
+[ad_conn node_id]
 [ad_conn package_id]
 [ad_conn package_url]
 [ad_conn subsite_id]
 [ad_conn subsite_url]
-
+
 
-

Data Model Discussion

The subsites implementation doesn't really have it's own data +

Data Model Discussion

The subsites implementation doesn't really have it's own data model, although it depends heavily on the site-nodes data model, and the APM -data model.

User Interface

The primary elements of the subsite user interface consist of the subsite +data model.

User Interface

The primary elements of the subsite user interface consist of the subsite admin pages. These pages are divided up into two areas: Group administration, and the site map. The group administration pages allow a subsite administrator to create and modify groups. The site map pages allow a subsite administrator to install, remove, configure, and control access to packages. The site map interface is the primary point of entry for most of the things a -subsite administrator would want to do.

Configuration/Parameters

...

Future Improvements/Areas of Likely Change

The current subsites implementation addresses the most basic functionality +subsite administrator would want to do.

Configuration/Parameters

...

Future Improvements/Areas of Likely Change

The current subsites implementation addresses the most basic functionality required for subsites. It is likely that as developers begin to use the subsites system for more sophisticated projects, it will become necessary to develop tools to help build tightly integrated packages. The general area -this falls under is "inter-package communication". An actual +this falls under is "inter-package communication". An actual implementation of this could be anything from clever use of configuration parameters to lots of package level introspection. Another area that is -currently underdeveloped is the ability to "tar up" and distribute +currently underdeveloped is the ability to "tar up" and distribute a particular configuration of site nodes/packages. As we build more fundamental applications that can be applied in more general areas, this feature will become more and more in demand since more problems will be -solvable by configuration instead of coding.

View comments on this page at openacs.org
+solvable by configuration instead of coding.

View comments on this page at openacs.org