Forum OpenACS Q&A: Content management systems

Collapse
Posted by Bob Powell on
Hello everyone:

Does anyone know if OpenACS has a content management system module?  If so, how would I find out more about it.  If not, does anyone have any suggestions on solutions for that.  Thanks in advance.

Collapse
Posted by tammy m on
Take a look at the current CMS update project and the CMS Forum for more info than you could want on this subject!

And yes there is a CMS package and a CR (Content Repository) package in the current OACS. Download 'em, and load 'em in your APM;) They don't have the easiest, best API yet but they do work. And there are some quite excellent docs on the CMS and on the Content Repository.

Collapse
Posted by tammy m on
And also the ETP package is probably the easiest to use, most functional use of the CMS in OACS to date.
Collapse
Posted by Jade Rubick on
But we're not recommending that people use the CMS, are we? Is there going to be an upgrade path from the CMS to Basic CMS (BCMS).

Or is this a mute point, because the new CMS will use the content repository?

Collapse
Posted by tammy m on
Good point. I use mostly CR procs and some that are in the CMS but should likely be moved to CR or BCMS later. But loading the CMS helps when writing CR stuff and testing and such because you can look at your documents in the current CMS UI at least so you can feel warm and fuzzy about creating them correctly and such!
Collapse
Posted by Jun Yamog on
Hi,

Just to clarify bcms != cms.  A UI package will be able to replace cms.  bcms is just a collection of api that I commonly use.  I haven't fully tested compatibility.  But bcms has 0 data model aside from none fully tested plsql patches and some content type and relationship definition.

Collapse
Posted by James Bennin on
It seems like you know quite a bit about content management in OpenACS.  I am trying to write a paper to evaluate all the different packages that deal with content management on OpenACS. So far I know about CMS, Content Repository and ETP (how do they all work?).  I need to find out what are all the packages that deal with content management, as well as their various functionalities.  Any lead or information that you have.  I am also trying to find out about to use them on my current instance of OpenACS.  I tried using the CMS but I always get error messages.  Thank you for help.
Collapse
Posted by tammy m on
Hmmm

What error messages do ya get from CMS? On install or during running it? What version of OACS are ya using? Anyway there is a lot of information on the CMS/CR in the CMS forum. The docs on the CMS also explain the underlying CR structure pretty well. ETP is easiest to understand if you load it and use it. It is pretty easy to get started using and a really useful app that uses the CR. Good luck:)

Collapse
Posted by James Bennin on
Thank you so much for your reply. The question I have is how do you use the Edit-This-Page package. Can you direct me around the user interface. How do I add a content, how do I name, categorize, etc. Also, when I got to site map, on the CMS page, and try to add a basic time (uploading a file or writting a text file) I get this error:
Query did not return any rows.
    while executing
"db_1row get_storage_type {select 
        storage_type, item_id 
        from 
        cr_items 
        where 
        item_id = (select 
           ..."
    (procedure "upload_content" line 15)
    invoked from within
"upload_content $revision_id $tmpfile $filename"
    invoked from within
"if { ![string equal $tmpfile {}] } {

            set revision_id [ns_set get $bind_vars revision_id]
            upload_content $revision_id $tmpfile..."
    ("uplevel" body line 5)
    invoked from within
"uplevel 1 $transaction_code "
    (procedure "db_transaction" line 1)
    invoked from within
"db_transaction {

        db_dml add_revision $statement -bind $bind_vars 

        if { ![string equal $tmpfile {}] } {

            set revision_id ..."
    (procedure "add_revision_dml" line 2)
    invoked from within
"add_revision_dml $insert_statement $bind_vars $tmpfile $filename"
    (procedure "add_revision" line 26)
    invoked from within
"add_revision $form_name $tmpfile $prefix [expr !$exists]"
    ("uplevel" body line 8)
    invoked from within
"uplevel 1 $transaction_code "
    (procedure "db_transaction" line 39)
    invoked from within
"db_transaction {
        if {!$exists} { 
            set item_id [db_exec_plsql get_item_id  "
                     begin 
                       :1 ..."
    (procedure "content::new_item" line 56)
    invoked from within
"content::new_item create_item $storage_type"
    invoked from within
"if { [form is_valid create_item] } {

    # check for duplicate name within same folder or parent item.
    if { ![content::validate_name create_item]..."
    ("uplevel" body line 67)
    invoked from within
"uplevel {
    	  # /create-2.tcl
# Get the folder where the item is being created

# Parameters:
#
#  parent_id      - create the item under this pare..."
    (procedure "code::tcl::/web/service0/packages/cms/www/modules/items/crea..." line 2)
    invoked from within
"code::tcl::$__adp_stub"
    invoked from within
"if { [file exists $__adp_stub.tcl] } {

      # ensure that data source preparation procedure exists and is up-to-date
      adp_init tcl $__adp_stub
..."
    ("uplevel" body line 3)
    invoked from within
"uplevel {

    if { [file exists $__adp_stub.tcl] } {

      # ensure that data source preparation procedure exists and is up-to-date
      adp_init t..."
    (procedure "adp_prepare" line 2)
    invoked from within
"adp_prepare "
    (procedure "template::adp_parse" line 30)
    invoked from within
"template::adp_parse [file root [ad_conn file]] {}"
    (procedure "adp_parse_ad_conn_file" line 7)
    invoked from within
"$handler"
    ("uplevel" body line 2)
    invoked from within
"uplevel $code"
    invoked from within
"ad_try {
	$handler
      } ad_script_abort val {
	# do nothing
      }"
    invoked from within
"rp_serve_concrete_file [ad_conn file]"
    (procedure "rp_serve_abstract_file" line 60)
    invoked from within
"rp_serve_abstract_file "$root/$path""
    ("uplevel" body line 2)
    invoked from within
"uplevel $code"
    invoked from within
"ad_try {
	rp_serve_abstract_file "$root/$path"
	set tcl_url2file([ad_conn url]) [ad_conn file]
	set tcl_url2path_info([ad_conn url]) [ad_conn path_inf..."
And then, when I attempt to perform a search, I get this error:
no value given for parameter "user_id" to "AcsSc.FtsEngineDriver.search.openfts-driver"
    while executing
"AcsSc.FtsEngineDriver.search.openfts-driver Edit 0 100"
    ("uplevel" body line 1)
    invoked from within
"uplevel $func_and_args"
    (procedure "apply" line 3)
    invoked from within
"apply $proc_name $arguments"
    (procedure "acs_sc_call" line 5)
    invoked from within
"acs_sc_call FtsEngineDriver search [list $q $offset $limit] $driver"
    (procedure "content_search__search_ids" line 5)
    invoked from within
"content_search__search_ids $keywords"
    invoked from within
"join [content_search__search_ids $keywords] ,"
    invoked from within
"subst -nobackslashes {

    select 
      i.item_id, content_item__get_path(i.item_id,null) as item_path,
      r.revision_id,
      t.pretty_name as ..."
    ("uplevel" body line 1)
    invoked from within
"uplevel 1 [list subst -nobackslashes $sql"
    (procedure "db_map" line 7)
    invoked from within
"db_map sql_query"
    invoked from within
"if { [form is_valid search] } {

  form get_values search content_type keywords mime_type which_revisions start_date end_date

  # Assemble the litera..."
    ("uplevel" body line 36)
    invoked from within
"uplevel {
    	  request create
request set_param id -datatype keyword -optional
request set_param mount_point -datatype keyword -optional -value sear..."
    (procedure "code::tcl::/web/service0/packages/cms/www/modules/search/ind..." line 2)
    invoked from within
"code::tcl::$__adp_stub"
    invoked from within
"if { [file exists $__adp_stub.tcl] } {

      # ensure that data source preparation procedure exists and is up-to-date
      adp_init tcl $__adp_stub
..."
    ("uplevel" body line 3)
    invoked from within
"uplevel {

    if { [file exists $__adp_stub.tcl] } {

      # ensure that data source preparation procedure exists and is up-to-date
      adp_init t..."
    (procedure "adp_prepare" line 2)
    invoked from within
"adp_prepare "
    (procedure "template::adp_parse" line 30)
    invoked from within
"template::adp_parse [file root [ad_conn file]] {}"
    (procedure "adp_parse_ad_conn_file" line 7)
    invoked from within
"$handler"
    ("uplevel" body line 2)
    invoked from within
"uplevel $code"
    invoked from within
"ad_try {
	$handler
      } ad_script_abort val {
	# do nothing
      }"
    invoked from within
"rp_serve_concrete_file [ad_conn file]"
    (procedure "rp_serve_abstract_file" line 60)
    invoked from within
"rp_serve_abstract_file "$root/$path""
    ("uplevel" body line 2)
    invoked from within
"uplevel $code"
    invoked from within
"ad_try {
	rp_serve_abstract_file "$root/$path"
	set tcl_url2file([ad_conn url]) [ad_conn file]
	set tcl_url2path_info([ad_conn url]) [ad_conn path_inf..."

Do you have any idea what those errors mean?
Collapse
Posted by tammy m on
Hi,

As for your CMS errors, I can only guess at what the errors mean. It looks like there is no storage type for your cr_item. How did you create the cr_item? Can you describe exactly the steps you are taking in the CMS interface to create an item? I don't use the CMS interface to create my documents (cr_items), I use my own package that I'm working on (not a CMS interface, just stores + manages its data in the CR) or I use ETP.

I think the CMS interface is pretty hard to use/understand. It seems to be basically a GUI that exercises just about every functionality that the CR (Content Repository) supports. It might be better looked at as an acceptance test of the CR! There is currently an effort going on to create a better, user-friendly, generic interface to the CR. So right now, some packages use the CR to store and manage their data but there isn't a "real world" usable CMS style interface.

That brings us to ETP. Edit This Page package is probably the closest to a generic, usable CMS interface that we have right now. The docs for ETP are pretty good once you understand the terminology.

If you install ETP out of the box, and mount an instance in the Site Map, you get a couple of default document styles (I think the docs call this an application). Basically how this works is each ETP "application" consists of an "index" page and subpages that contain content (your documents). You get a default document/application style set for you when the instance is mounted. You can use this default style or change to another of the styles that come with ETP for free (default, news or faq). Each of these application styles have a different sort of index page and the content pages (documents) contain different attributes/sections.

You change the application (type of documents and their index page) by choosing "Change ETP Application" under "Configuration of this document." After you change the type of application, your documents will have fields/attributes corresponding to that type. So news items have a "location" and a "release date," faq items have "question" and an "answer." The ETP UI will display the appropriate fields for the type of document you are creating when you choose "create new question" or "create new news item." You enter the fields (including document title etc) and preview what your document will look like. When you are happy with it, choose "commit changes" and your new document becomes the latest revision that is show on your website when that page is requested. You can also "preview changes" to see what your document will look like without committing to the changes and publishing them to your live website. When you go back to view your index page (the directory that you mounted ETP on in the Site Map), you will see a page that lists all your questions/answers for a faq or your current news item and a link to old news items for news.

You can also create your own application types for ETP. This lets you define custom fields for a specific type of document you wish to create. For instance, you could create a Recipe content type and have specific fields for ingredients, cooking time, etc. Once you create the content type/application for it, then ETP will present a UI to enter these fields for each document when you choose the Recipe application type. There is more on this in the ETP docs I mentioned earlier.

Once you've chosen an application, you will see an "Edit This Page" link at the bottom of any page you have permission to edit. This is how you get back to the ETP interface to edit the document or index page. This makes it nice and easy to find your content without having to go to a separate CMS interface and navigate a tree hierarchy to your page, you just go to the actual URL where the page resides within your website.

I hope this answers some of your questions. If you try to post more specific questions, you'll be likely to get more answers that will help you. Maybe jump in and try stuff and post yer questions one at a time as ya go... Good luck:)

Collapse
Posted by amy ohare on
All,

Just wanted to throw out a link to a site that does a good job discussion milestones of implementing an enterprise-wide cms at a company. Think it might help some of you with regard to your discussion. Check it out:

http://cms-beginners.blogspot.com/

Collapse
Posted by amy ohare on
Sorry, the above post should read:

"All,

Just wanted to throw out a link to a site that does a good job DISCUSSING milestones of implementing an enterprise-wide cms at a company. Think it might help some of you with regard to your discussion. Check it out:"

http://cms-beginners.blogspot.com/

Collapse
Posted by Mary Kate Smith on
Selecting and implementing a content management system (CMS) will be one of the largest IT projects tackled by many organisations. With costs running into the millions of dollars, it is vital that the right CMS package be selected.
After all a good CMS has the credibility to make your website perform excellently on the internet.
Collapse
Posted by Mary Kate Smith on
Selecting an enterprise-wide CMS is often a multi-million-dollar exercise. It is therefore critical that the new system meets your current and projected needs.
The single most important activity is to identify your business goals and requirements. This process must involve all relevant stakeholders.

Revitols.com <- SPAMMING BY THIS POST (link inactivated)