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. 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 "text/html" \</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><html></P> + <P STYLE="margin-bottom: 0cm"><title>@mycontent.title@</title></P> + <P STYLE="margin-bottom: 0cm"><body></P> + <P STYLE="margin-bottom: 0cm"><h1>@mycontent.title@</h1></P> + <P STYLE="margin-bottom: 0cm"><h3>@mycontent.description@</h3></P> + <P STYLE="margin-bottom: 0cm">@mycontent.content@<BR></body></html></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>