Index: openacs-4/contrib/packages/bcms/www/doc/bcms_dev_doc.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/bcms/www/doc/bcms_dev_doc.html,v
diff -u
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ openacs-4/contrib/packages/bcms/www/doc/bcms_dev_doc.html	3 Dec 2003 16:39:45 -0000	1.1
@@ -0,0 +1,126 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE></TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 1.0.2  (Linux)">
+	<META NAME="CREATED" CONTENT="20030511;23273400">
+	<META NAME="CHANGED" CONTENT="20031123;15390800">
+	<STYLE>
+	<!--
+		@page { size: 21.59cm 27.94cm; margin-right: 3.18cm; margin-top: 2.54cm; margin-bottom: 2.54cm }
+		P { margin-bottom: 0.21cm; color: #000000; widows: 0; orphans: 0 }
+		P.western { font-family: "Nimbus Roman No9 L", serif; font-size: 12pt; so-language: en-US }
+		P.cjk { font-family: "HG Mincho Light J"; font-size: 12pt; so-language:  }
+		H1 { margin-bottom: 0.21cm; color: #000000; widows: 0; orphans: 0 }
+		H1.western { font-family: "Luxi Sans", sans-serif; font-size: 16pt; so-language: en-US }
+		H1.cjk { font-size: 16pt; so-language:  }
+		H1.ctl { font-family: "Arial Unicode MS"; font-size: 12pt; font-weight: medium }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="de-DE" TEXT="#000000">
+<H1 LANG="en-US" CLASS="western" STYLE="margin-top: 0cm">Overview of
+Basic Content Management System (BCMS) and Basic Content Delivery
+System (BCDS)</H1>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm"><BR>
+</P>
+<H1 LANG="en-US" CLASS="western">What is this document:</H1>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm">This
+document serves as a high-level overview why and how BCMS and BCDS is
+designed and implemented.  Though it is a developer document, it does
+not go into the details to lessen the chances of the document being
+irrelevant when implementation details are changed.  Detailed
+document can be seen in the api document.</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm"><BR>
+</P>
+<H1 LANG="en-US" CLASS="western">Rational behind BCMS and BCDS:</H1>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm">BCMS and
+BCDS goal is to help implement a CMS solution in a smaller time frame
+than building your own CMS solution.  Normally each organization will
+have a different way of looking at how they want to use their CMS. 
+Therefore CMS UI will vary from one organization to another, even
+though functionally they are similar.  So BCMS tries to help the
+developer to create varying UI.  OpenACS was chosen as its platform
+due to the fact that its Content Repository (a CMS core engine) is
+sound and additional none-CMS functionality can easily be added.</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm"><BR>
+</P>
+<H1 LANG="en-US" CLASS="western">Implementation Overview:</H1>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm">BCMS is
+made of 3 packages.</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm">Basic
+Content Management System (BCMS) -  core tcl api that just exposes
+Content Repository (CR) functions in Tcl. Makes CR more accessible.
+For example to upload a file, in CR you will call about 2-3 plsql and
+sql statements. Here you call one Tcl function. There is nothing
+revolutionary about it BCMS.</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm">BCMS uses
+standard set of naming get_X, create_X, set_X, delete_X, list_Xs,
+tree_Xs. See bcms standards document.</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm">BCMS does
+not discourage you to use the CR directly, it just gives you more
+help in the common operations in CR.</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm">BCMS-UI-*
+- this packages are the package that calls the BCMS Tcl procs. It a
+UI package. You set which folder you want to manage in CR, template
+folder in CR and context. It is possible to manipulate the same data
+in CR with 2 or more packages that has very different UI.  This
+package will contain forms, wizards, etc. that manages the content in
+CR with a great help of BCMS Tcl procs.</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm">BCDS - The
+package that gets content out and displays it.&nbsp;Just like
+BCMS-UI-* packages you tell the a BCDS package which folder in CR you
+would like to serve and at what context.  Caching of content items or
+making portals are done in this package.</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm">Its also
+possible that both BCMS-UI-* and BCDS be implemented in a single
+package.</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm"><BR>
+</P>
+<H1 LANG="en-US" CLASS="western">Sample Scenario:</H1>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm">Here is
+currently a picture of CR that is managed by 2 BCMS-UI packages and 2
+BCDS packages.  Bcms-ui-site-manager is the UI that manages the
+public site for Company X.  This is normally used by the marketing
+group.  Bcds-main-site is the package that renders the public site to
+visitors of Company X site.  Since the site is very heavy on graphics
+and has lots of presentation another BCDS package renders the site
+for the intranet.  Which normally does not need eye candy.  Also
+bcds-intranet may present or retrieve differently, for example
+Products and Services maybe displayed in a long functional table that
+has sortable columns as opposed to the categorized and much simple
+public site that is served by bcds-main-site.  In Company X the
+product management group works very differently from the marketing
+group which handles Company X Site.  The product management group
+uses their own UI by using bcms-ui-product-management package.  This
+package is not able to publish a content, but a workflow is created
+to be sent to a marketing group staff to publish a content to be seen
+by bcds-main-site.</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm"><BR>
+</P>
+<IMG SRC="bcms_overview.png" NAME="Graphic1" BORDER=0>
+</BODY>
+</HTML>
Index: openacs-4/contrib/packages/bcms/www/doc/bcms_overview.png
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/bcms/www/doc/bcms_overview.png,v
diff -u
Binary files differ
Index: openacs-4/contrib/packages/bcms/www/doc/bcms_standards.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/bcms/www/doc/bcms_standards.html,v
diff -u
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ openacs-4/contrib/packages/bcms/www/doc/bcms_standards.html	3 Dec 2003 16:39:45 -0000	1.1
@@ -0,0 +1,135 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE></TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 1.0.2  (Linux)">
+	<META NAME="CREATED" CONTENT="20030515;4800">
+	<META NAME="CHANGED" CONTENT="20031123;15563900">
+	<STYLE>
+	<!--
+		@page { size: 21.59cm 27.94cm; margin-right: 3.18cm; margin-top: 2.54cm; margin-bottom: 2.54cm }
+		P { margin-bottom: 0.21cm; color: #000000; widows: 0; orphans: 0 }
+		P.western { font-family: "Nimbus Roman No9 L", serif; font-size: 12pt; so-language: en-US }
+		P.cjk { font-family: "HG Mincho Light J"; font-size: 12pt; so-language:  }
+		H1 { margin-bottom: 0.21cm; color: #000000; widows: 0; orphans: 0 }
+		H1.western { font-family: "Luxi Sans", sans-serif; font-size: 16pt; so-language: en-US }
+		H1.cjk { font-size: 16pt; so-language:  }
+		H1.ctl { font-family: "Arial Unicode MS"; font-size: 12pt; font-weight: medium }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="de-DE" TEXT="#000000">
+<H1 LANG="en-US" CLASS="western" STYLE="margin-top: 0cm">Standards
+used in BCMS</H1>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm">This
+document gives a guideline what was used in bcms.  There maybe
+exceptions but more or less the following standards was followed.</P>
+<H1 LANG="en-US" CLASS="western">Tcl proc naming</H1>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm">As much as
+possible i used a standard set of names.</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm">create_X,
+get_X, set_X, delete_X, list_Xs, tree_Xs.</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm">For
+example: create_folder, get_folder, set_folder, delete_folder,
+list_folders, tree_folders.</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm">create_X –
+is to create an object (e.g. Item, revision, folder, etc.)</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm">get_X –
+is to get an object and its properties</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm">set_X –
+is to modify/edit an object and its properties</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm">delete_X –
+is to delete an object</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm">list_Xs –
+is to list all objects under a particular item item.  Like list all
+folders under CR root folder.</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm">tree_Xs –
+is similar to list_Xs but will list objects under sub folders too. 
+Normally there is a parameter to set how deep to traverse the
+folders.</P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm"><BR>
+</P>
+<H1 LANG="en-US" CLASS="western">ad_proc switches are used</H1>
+<P LANG="en-US" CLASS="western">ad_procs's switches are used to pass
+in parameters.  This means ad_procs are defined this way:</P>
+<P LANG="en-US" CLASS="western"><BR><BR>
+</P>
+<P LANG="en-US" CLASS="western"><FONT FACE="Courier, monospace">ad_proc
+mynamespace::myproc {</FONT></P>
+<P LANG="en-US" CLASS="western"><FONT FACE="Courier, monospace">	{-param1:required}</FONT></P>
+<P LANG="en-US" CLASS="western"><FONT FACE="Courier, monospace">	{-param2
+“default value”}</FONT></P>
+<P LANG="en-US" CLASS="western"><FONT FACE="Courier, monospace">	{-abooleanparam:boolean}</FONT></P>
+<P LANG="en-US" CLASS="western"><FONT FACE="Courier, monospace">} {</FONT></P>
+<P LANG="en-US" CLASS="western"><FONT FACE="Courier, monospace">	api
+doc goes here</FONT></P>
+<P LANG="en-US" CLASS="western"><FONT FACE="Courier, monospace">}</FONT></P>
+<P LANG="en-US" CLASS="western"><BR><BR>
+</P>
+<H1 LANG="en-US" CLASS="western">get_X returns an array</H1>
+<P LANG="en-US" CLASS="western">get_X is used to get an object and
+its properties.  An array is returned.  An example on using get_X is:</P>
+<P LANG="en-US" CLASS="western"><BR><BR>
+</P>
+<P LANG="en-US" CLASS="western"><FONT FACE="Courier, monospace">array
+set one_page [bcms::item::get_item -item_id $page_id -revision
+latest]</FONT></P>
+<P LANG="en-US" CLASS="western"><BR><BR>
+</P>
+<P LANG="en-US" CLASS="western">after this call you will now have
+$one_page(title), $one_page(name), etc.</P>
+<P LANG="en-US" CLASS="western"><BR><BR>
+</P>
+<H1 LANG="en-US" CLASS="western">create_X returns object id</H1>
+<P LANG="en-US" CLASS="western">When create_X is called the object id
+is normally returned. ex.</P>
+<P LANG="en-US" CLASS="western"><BR><BR>
+</P>
+<P LANG="en-US" CLASS="western"><FONT FACE="Courier, monospace">set
+revision_id [bcms::revision::add_revision -item_id $page_id \</FONT></P>
+<P LANG="en-US" CLASS="western"><FONT FACE="Courier, monospace">     
+         -title $title -content $content -description $description \</FONT></P>
+<P LANG="en-US" CLASS="western"><FONT FACE="Courier, monospace">     
+         -mime_type &quot;text/html&quot; \</FONT></P>
+<P LANG="en-US" CLASS="western"><FONT FACE="Courier, monospace">     
+         -creation_user_id $creation_user_id -creation_ip
+$creation_ip]</FONT></P>
+<P LANG="en-US" CLASS="western"><BR><BR>
+</P>
+<H1 LANG="en-US" CLASS="western">set_X and delete_X returns status
+results</H1>
+<P LANG="en-US" CLASS="western">Normally set_X and delete_X calls
+will return a status. ex.</P>
+<P LANG="en-US" CLASS="western"><BR><BR>
+</P>
+<P LANG="en-US" CLASS="western"><FONT FACE="Courier, monospace">   
+if [bcms::folder::delete_folder -folder_id $folder_id] {</FONT></P>
+<P LANG="en-US" CLASS="western"><FONT FACE="Courier, monospace">     
+  ad_returnredirect $return_url</FONT></P>
+<P LANG="en-US" CLASS="western"><FONT FACE="Courier, monospace">    }</FONT></P>
+<P LANG="en-US" CLASS="western"><BR><BR>
+</P>
+<H1 LANG="en-US" CLASS="western">list_X and tree_X either returns a
+multirow or list of ns sets</H1>
+<P LANG="en-US" CLASS="western">Using list_X and tree_X you have the
+option to return a multirow or a list of ns_sets.  By default it
+returns a multirow, if if a -multirow_name is not supplied it uses a
+default name.</P>
+<P LANG="en-US" CLASS="western">ex of multirow</P>
+<P LANG="en-US" CLASS="western"><FONT FACE="Courier, monospace">bcms::item::list_related_items
+-item_id $page_id -relation_tag $relation_tag -revision latest
+-multirow_name related_items</FONT></P>
+<P LANG="en-US" CLASS="western">ex of list of ns sets</P>
+<P LANG="en-US" CLASS="western"><FONT FACE="Courier, monospace">set
+folder_option_list [bcms::widget::option_tree -list_of_ns_sets \</FONT></P>
+<P LANG="en-US" CLASS="western"><FONT FACE="Courier, monospace">     
+       [bcms::folder::tree_folders -return_list] \</FONT></P>
+<P LANG="en-US" CLASS="western"><FONT FACE="Courier, monospace">     
+       -value_column folder_id -display_columns label]</FONT></P>
+<P LANG="en-US" CLASS="western" STYLE="margin-bottom: 0cm"><BR>
+</P>
+</BODY>
+</HTML>
\ No newline at end of file
Index: openacs-4/contrib/packages/bcms/www/doc/cr_overview.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/bcms/www/doc/cr_overview.html,v
diff -u
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ openacs-4/contrib/packages/bcms/www/doc/cr_overview.html	3 Dec 2003 16:39:45 -0000	1.1
@@ -0,0 +1,240 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE></TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 1.0.2  (Linux)">
+	<META NAME="CREATED" CONTENT="20031123;15572700">
+	<META NAME="CHANGED" CONTENT="20031204;73200">
+	<STYLE>
+	<!--
+		@page { size: 21.59cm 27.94cm; margin-left: 3.18cm; margin-right: 3.18cm; margin-top: 2.54cm; margin-bottom: 2.54cm }
+		P { margin-bottom: 0.21cm }
+		H1 { margin-bottom: 0.21cm }
+		H1.western { font-family: "Luxi Sans", sans-serif; font-size: 16pt }
+		H1.cjk { font-size: 16pt }
+		H1.ctl { font-size: 16pt }
+		H2 { margin-bottom: 0.21cm }
+		H2.western { font-family: "Luxi Sans", sans-serif; font-size: 14pt; font-style: italic }
+		H2.cjk { font-size: 14pt; font-style: italic }
+		H2.ctl { font-size: 14pt; font-style: italic }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en-US">
+<H1 CLASS="western" ALIGN=CENTER>Simple Overview of Content
+Repository</H1>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm">This document is to give an overview of
+the Content Repository so enough knowledge about it can be used to
+start developing on BCMS.  Things stated here may not be what is in
+real in fact on CR, but for simplicity sake and basic overview.</P>
+<H2 CLASS="western">What is the Content Repository?</H2>
+<P STYLE="margin-bottom: 0cm">Content Repository logically functions
+as a file system.  Content items can be stored in folders (Content
+Folders).  Content items are like files, and Content folders are
+like... well folders.  The difference between a file system and the
+CR is that content items may have 1 or more revisions.  For example
+text content item may have 3 versions.  A content item may also hold
+a property / state, which version is a live version.  Normally the
+live version is the one that we publish or display on the public web
+site.  Essentially its a central place where we can stuff different
+content, and since it the basic data model and functions are done. 
+Your content will inherit those abilities and properties, such as
+versioning, categorization, relations, etc.</P>
+<H2 CLASS="western">Simplified View of CR</H2>
+<P STYLE="margin-bottom: 0cm"><IMG SRC="cr_simplified.png" NAME="Graphic1" ALIGN=LEFT BORDER=0><BR CLEAR=LEFT><BR>
+</P>
+<H2 CLASS="western">Common db tables and columns used:</H2>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm">Note: omissions has been made on the
+columns to simplify.</P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm">cr_items</P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace">     
+Column      |          Type          </FONT>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace">------------------+------------------------</FONT></P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace">
+item_id          | integer                </FONT>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace">
+parent_id        | integer                </FONT>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace"> name  
+          | character varying(400) </FONT>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace">
+live_revision    | integer                </FONT>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace">
+latest_revision  | integer                </FONT>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace">
+publish_status   | character varying(40)  </FONT>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace">
+content_type     | character varying(100) </FONT>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace">
+storage_type     | character varying(10)  </FONT>
+</P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Nimbus Roman No9 L">item_id
+- is the unique id of an item on CR.  Its the acs object id.</FONT></P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Nimbus Roman No9 L">parent_id
+– normally this the item_id of the folder that stores the item.</FONT></P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Nimbus Roman No9 L">name –
+normally use as a url part.  Similar to filename on the file system.</FONT></P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Nimbus Roman No9 L">live_revision
+– if a particular item has a live version, this field stores the
+version id, which refers to cr_revisions table.</FONT></P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Nimbus Roman No9 L">latest_revision
+– this the version id of the latest version, this is kept
+automatically triggers.</FONT></P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Nimbus Roman No9 L">publish_status
+– values are production, ready, live and expired.</FONT></P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Nimbus Roman No9 L">content_type
+– can kind of type is this item</FONT></P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Nimbus Roman No9 L">storage_type
+– the values are text, file and lob.  If the value of the content
+is stored on cr_revisions.content then the value is “text”.  If
+the content is store on a file on
+acs_root/content-repository-content-files then the value is “file”.
+ The “lob” value is used if the content is stored in the db using
+lobs.</FONT></P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Nimbus Roman No9 L">cr_revisions</FONT></P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace">    
+Column     |           Type           </FONT>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace">----------------+--------------------------</FONT></P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace">
+revision_id    | integer                  </FONT>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace">
+item_id        | integer                  </FONT>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace"> title 
+        | character varying(1000)  </FONT>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace">
+description    | text                     </FONT>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace">
+publish_date   | timestamp with time zone </FONT>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace">
+mime_type      | character varying(200)   </FONT>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace">
+content        | text                     </FONT>
+</P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Nimbus Roman No9 L">revision_id
+– a unique id for a version</FONT></P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Nimbus Roman No9 L">item_id
+– which version does this revision belong to</FONT></P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Nimbus Roman No9 L">title –
+title of the version</FONT></P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Nimbus Roman No9 L">description
+– description of the content</FONT></P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Nimbus Roman No9 L">publish_date
+– if the version has been publish, the date is stored here</FONT></P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Nimbus Roman No9 L">mime_type
+– mime type of the content</FONT></P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Nimbus Roman No9 L">content
+– this is where content is stored if cr_items.storage_type is set
+to “text”</FONT></P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Nimbus Roman No9 L">cr_folders</FONT></P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace">      
+Column       |          Type           </FONT>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace">--------------------+-------------------------</FONT></P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace">
+folder_id          | integer                 </FONT>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace"> label 
+            | character varying(1000) </FONT>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Courier, monospace">
+description        | text                    </FONT>
+</P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Nimbus Roman No9 L">folder_id
+– a unique number for a folder, this is a foreign key for
+cr_items.item_id.  So a folder is a special type of content.</FONT></P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Nimbus Roman No9 L">label –
+friendly/pretty name of a folder.</FONT></P>
+<H2 CLASS="western">What are Content Types?</H2>
+<P STYLE="margin-bottom: 0cm">Content Types are similar to file type.
+ In a conventional file system a .doc and .xls file differs on both
+type and content.  One is for a word processor another one is for a
+spread sheet.  The same way CR can accommodate different content
+types.  Normally we need to define our content type since the very
+basic CR content types may not be enough.  For example if we would
+like to have a sub title field we need to create a custom content
+type.  This <A HREF="http://openacs.org/doc/acs-content-repository/object-model.html">CR
+object model diagram</A> where custom content types in the ACS Object
+model.</P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<H2 CLASS="western">How can I add Content?</H2>
+<P STYLE="margin-bottom: 0cm">Normally you can insert on a view or
+call a plsql calls to insert to CR.  With bcms you can do the
+following:</P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm">set my_new_item
+[bcms::item::create_item -item_name “testing” -parent_id
+$my_folder]</P>
+<P STYLE="margin-bottom: 0cm"># lets put our initial version</P>
+<P STYLE="margin-bottom: 0cm">bcms::revision::add_revision -item_id
+$my_new_item -title “this is a test page” -description “this
+page is to test adding content to CR” -content “blah....”</P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm">Although the following command above
+can be wrapped and just simply use one call, for example:</P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm">bcms::create_page -page_name “testing”
+-folder_id $my_folder -title “this is a test page” -description
+“this page is to test adding content to CR” -page_body “blah....”</P>
+<H2 CLASS="western">How can I get Content?</H2>
+<P STYLE="margin-bottom: 0cm">There should be different ways to get
+content.  Since its basically a database one can select the values. 
+Normally in bcms or create a bcds.  You do the following.</P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<OL>
+	<LI><P STYLE="margin-bottom: 0cm">On a index.vuh file, you get the
+	url</P>
+	<LI><P STYLE="margin-bottom: 0cm">Use the following call:</P>
+	<P STYLE="margin-bottom: 0cm">array set mycontent
+	[bcms::item::get_item_by_url -root_id $my_root_folder -url
+	$url_requested -revision live -resolve_index]</P>
+	<LI><P STYLE="margin-bottom: 0cm">on your adp file:<BR>&lt;html&gt;</P>
+	<P STYLE="margin-bottom: 0cm">&lt;title&gt;@mycontent.title@&lt;/title&gt;</P>
+	<P STYLE="margin-bottom: 0cm">&lt;body&gt;</P>
+	<P STYLE="margin-bottom: 0cm">&lt;h1&gt;@mycontent.title@&lt;/h1&gt;</P>
+	<P STYLE="margin-bottom: 0cm">&lt;h3&gt;@mycontent.description@&lt;/h3&gt;</P>
+	<P STYLE="margin-bottom: 0cm">@mycontent.content@<BR>&lt;/body&gt;&lt;/html&gt;</P>
+</OL>
+</BODY>
+</HTML>
Index: openacs-4/contrib/packages/bcms/www/doc/cr_simplified.png
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/bcms/www/doc/cr_simplified.png,v
diff -u
Binary files differ
Index: openacs-4/contrib/packages/bcms/www/doc/index.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/bcms/www/doc/index.html,v
diff -u
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ openacs-4/contrib/packages/bcms/www/doc/index.html	3 Dec 2003 16:39:45 -0000	1.1
@@ -0,0 +1,14 @@
+<html>
+<head>
+<title>BCMS Documentation</title>
+</head>
+<body>
+<h2>Some documentation to help understand BCMS</h2>
+<ul>
+<li><a href="cr_overview.html">Simple Overview of Content Repository</a></li>
+<li><a href="bcms_dev_doc.html">Overview of BCMS and BCDS</a></li>
+<li><a href="bcms_standards">Standards used in BCMS</a></li>
+<li><a href="/api-doc">For more documentation, go to the API doc</a></li>
+</ul>
+</body>
+</html>