Begin main content
Search · Index

XoWiki FAQ


A Installation

A.2 Where can I find the documentation of XoWiki?


I have problems finding the documentation of XoWiki 


The documentation of the released version is on http://media.wu-wien.ac.at/download/xowiki-doc/ 

The work-in-progress documentation can be found at http://alice.wu-wien.ac.at:8000/xowiki-doc/ 

B Installation Errors

Errors during installation of XoWiki.

B.1 What means "::xowiki::Package unknown"?


I have installed XoWiki the first time. Installation of the package went fine, but when i browse /xowiki, i get the following error:

invalid command name "::xowiki::Package"
while executing
"::xowiki::Package initialize -ad_doc {


When you install xowiki, some pre-requirements might not be met. For example, it might ge the case that no xotcl classes can be defined on your system. This might be the case, if you have for example no XOTcl installed on your system. In such cases, the first reference to an XOTcl class will fail, which is in your case ::xowiki::Package.

Check, if you have xotcl and xotcl-core installed on your system.

B.2 Problem with ns_cache


I have installed XoWiki on my system. Each time, I update a page, I get the following error message in my error.log file:

wrong # args: should be "ns_cache names cache"

while executing

"ns_cache names xowiki_cache link-*-$folder_id"

What is wrong?


You have installed an old version of the aolserver module "ns_cache" on your system,  which does not support the "names" option. Get a more recent version of ns_cache, e.g. via

cvs -z3 -d:pserver:anonymous@aolserver.cvs.sourceforge.net:/cvsroot/aolserver co nscache

recompile it and install it for the aolserver.

B.3 What means "::xowiki::Object unknown"?


I have installed XoWiki on my system, the installation process went well. When i browse the first time to /xowiki, i see the following error message. What does this mean?

invalid command name "::xowiki::Object"
while executing
"::xowiki::Object fetch_object -object ::$folder_id -item_id $item_id"


When you install XoWiki an existing installation, some infrastructural pre-requirements might not be met. In such cases, XOTcl classes can be defined in general, but the oo interface to the OpenACS content repository might not work. In such cases, content repository classes cannot be created. When XoWiki is accessed to first time, it tries to create a few objects, which trigger erros, when the content repository classes (such as ::xowiki::Object) are not yet defined.

In such cases, check the error log files of the aolserver. You might see the following message during startup

no such cache: xotcl_object_cache 

This indicates that the bootstrap order might not be correct. Get an updated version of


and restart the server. This should address this problem.

B.4 ::xo::db::sql::acs_* not found


I have just installed XoWiki 0.70. Installation went fine, but when i start it up I see in the error-log file the following message:

invalid command name "::xo::db::sql::acs_object_type" 

What's missing?


xotcl-core has since version 0.70 stronger dependencies on correct (and fairly complete) setting of define_function_args(), which are used in OpenACS to manage the acs_function_args table.

The required define_function_args() are fixed in CVS head  of OpenACS (since 2007-09-15,  acs-kernel 5.4.0d2). In case, you are using an older version, run the following psql script against your database (it can be run multiple times without harm).

-- acs-kernel: acs-metadata-create.sql

select define_function_args('acs_object_type__create_type','object_type,pretty_name,pretty_plural,supertype,table_name;null,id_column;null,package_name;null,abstract_p;f,type_extension_table;null,name_method;null');

select define_function_args('acs_object_type__drop_type','object_type,cascade_p;f');

select define_function_args('acs_attribute__create_attribute','object_type,attribute_name,datatype,pretty_name,pretty_plural;null,table_name;null,column_name;null,default_value;null,min_n_values;1,max_n_values;1,sort_order;null,storage;type_specific,static_p;f');

select define_function_args('acs_attribute__add_description','object_type,attribute_name,description_key,description');

select define_function_args('acs_attribute__drop_description','object_type,attribute_name,description_key');

-- acs-kernel: acs-objects-create.sql

select define_function_args('acs_object__new','object_id;null,object_type;acs_object,creation_date;now(),creation_user;null,creation_ip;null,context_id;null,security_inherit_p;t,title;null,package_id;null');

select define_function_args('acs_object__delete','object_id');

-- acs-content-respository: content-type.sql ... incorrectly defined twice, fix redefinition

select define_function_args('content_type__drop_type','content_type,drop_children_p;f,drop_table_p;f,drop_objects_p;f');

This definitions will help as well for other situations, where the function args are missing, like e.g.

invalid command name "::xo::db::sql::acs_attribute"

C Page Order

C.1 What is a page order (field name Section)?


I am seeing the field Section in newer XoWiki versions. What is this exactly?


The Section field is a way for ordering pages. Page Orders were introduced into xowiki in version 0.42. Page orders can be understood as hierarchical section numbers like e.g. 1, 1.1, 1.2, 1.2.1, 1.2.2, 1.3, etc.

  • Usage of page order via template file
    • The template file view-book.{adp,tcl} presents a table of content on left side and the "book" pages on right side.
    • The table of content is rendered with YUI treeview (needs ajaxhelper to be installed on the file-system).
    • view-book provides a progress bar with a next and previous button to click through the content.
    • The template file view-book is activated via the package parameter template_file
    • See the screenshot of the xowiki documentation based on the book includelet: http://media.wu-wien.ac.at/download/xowiki-doc/xowiki-book-template.png
  • Usage of page order via includelet
    • The prototype page book.page can be used to present the whole book content in one large page with a table of contents on the left side.
    • According to the access control rights, every section has a small edit button to edit it separately.
    • With the appropriate security policy settings, different authors may only edit different sections.
    • One can use this prototype page conveniantly by setting the package parameter index_page to "book".
    • See the screenshot of the xowiki documentation based on the book includelet: http://media.wu-wien.ac.at/download/xowiki-doc/xowiki-book.png

C.2 How can I install everything needed for page orders on my system?


What is needed to install everything required for using page orders?


Page orders are currently implemented via the PostgreSQL module ltree. 
ltree is an optional postgres package (like tsearch2) under a BSD license and provides efficient access to hierarchical data (for details, see: http://www.sai.msu.su/~megera/postgres/gist/ltree/). Ltree is part of the standard postgres source tree (like tsearch2).

In order to install ltree, it has to be compiled, typically by commands like:

  make install

loaded into the PostgreSQL database

   psql ... -f  /usr/local/postgres/share/postgresql/contrib/ltree.sql   

C.3 How do i add the page_order attribute to my tables?


I have installed ltree for my PostgresSQL instance. What should i do to add the page_order attribute to my existing installation?


The page ordering mechanism is based on an additional attribute in the database called page_order, which is only added when ltree is available. Since page_orders were introduced with XoWiki 0.42, one might have passed the upgrade without ltree at that time. In general, one can distinguish between the following situations:

  • New installs: When XoWiki is installed newly on a database with ltree, page ordering is available without more actions.

  • Upgrade from earlier versions: When XoWiki is installed in a version prior to 0.42 and upgraded to 0.42, the upgrade script cares about all details

  • Later upgrades: When someone has a newer version installed on a database without  ltree, and wants to use ltree, it is necessary
    1. to install and load ltree
    2. call after a restart of openacs from /ds/shell
      to add the page order attribute to all tables and views.

C.4 How do i get the book mode working?


What should I do next to use it like e.g. on http://www.openacs.org/test-doc ? If i call "book" in my instance, the table of contents stays empty.


"book" is a  prototype page, which is instantiated automatically. It contains a table of contents "toc" and all the aggregated pages.

In general, only entries with non-empty page_order fields (called Section) are included in the book.

The table of contents are rendered with the YUI widgets. xowiki uses the YUI widgets form the ajaxhelper package. Therefore, the openacs package ajaxhelper must be installed on the filesystem (get it e.g. from the cvs repository). The table of contents will be empty if the YUI widgets are not available.  

Alternatively to the book page, your might consider using the template-file view-book. This template-file presents the table of contents in a left column and displays always only one page displayed on the right. If pages are changed,  fade-in and -out effects can be used (configured by default). In order to use the view-book template-file, configure this via admin page -> parameters -> page_template. This is the configuration is used e.g. on http://www.openacs.org/test-doc 

D Policies

D.1 What is a policy?


What is a policy and why should I care about this?


Policies define what rights are required to invoke certain methods (object specific functions) on what kind of objects via URLs. For every method, one can define predefined properties like "none" (no checks) or "swa" (side wide admins) or openacs privileges, checked on the specified attributes of the object (for example "id create" means, that the object has an attribute named "id" and that the actual user needs to have "create" permissions on the value of the id).

The required privileges can be guarded with predicates (functions, which are true or false) to check when the rights are not to be checked for all objects of the class. The guards are evaluated from left to right until a guard is true, or an unguarded privilege is found. 

See also: book

D.2 How can I define a policy allowing only side wide admins (swa) to create instances of ::xowiki::Object and ::xowiki::PageTemplate?


We have a special requirement in our environment: we want that only side wide admins are allowed to create pages of type ::xowiki::PageTemplate or ::xowiki::Object. In the standard configuration i see that creation of pages of type ::xowiki::Object are restricted to package admins. How can I define the more restricted and more specific access rights for my instance?


When new objects are created over the web interface, the operation edit-new is invoked on the package instance. Since we do not want to restrict all edit-new methods, but only these taht will create instances of ::xowiki::Object or ::Xowiki::PageTemplate, we can define a guarded permission using the predefined predicate has_class.

Below, we define a new policy named ::xowiki::policy_local (e.g. in xowiki/tcl/package-procs.tcl), which can be activated by setting it in the package parameter of the xowiki instances that want to use this policy

Policy create ::xowiki::policy_local -contains {
   Class Package -array set require_permission {
     reindex swa
     rss none
     google-sitemap none
     google-sitemapindex none
     delete {{id admin}}
     edit-new {{{has_class ::xowiki::Object} swa} {{has_class ::xowiki::PageTemplate} swa} {id create}}

D.3 How can I define access rights on a page level?


I have seen in the documentation that one can define access rights on a per page granularity. How can i get this working?


Set policy3 via package parameter. Currently, the policy with page specific access rights has to be called policy3 (this naming requirement will change in the future). When an admin chooses policy3 as policy rule, the admin pages will get an additional column to manage the access rights on the page level.

Note that when page-level access rights are used, the caching efficiency for permissions will be much less compared with access rights on the package level. For every user, for every page and for every privilege, a cache entry will be needed. When package level permissions are used, the likelihood for using the same permission based on the package_id again during a session is much higher, which leads to a better cache efficiency.

E Syndication

E.1 Why is my RSS feed not working?


I have installed XoWiki on my system without errors, and everything seems to work except syndication. The rss obtained from every XoWiki instance is always empty. What might be the problem?


XoWiki uses RSS, based on the search service contracts of OpenACS and the related syndication table. In order to get RSS (or google-sitemaps or search) working, one has to activate the following items

  1. Install the package tsearch2-driver (PostgreSQL). This requires tsearch2 to be configured for the PostgresSQL. Oracle users can user the intermedia-driver.
  2. Install AND mount the search package.
  3. Configure for search (from the sitemap, parameter for search) and set Syndicate to 1, check, whether FtsEngineDriver has the correct value.

Finally, restart the server. You might want to reindex all entries of an XoWiki instance by using .../xowiki/?reindex

The entries, which are available via RSS (and which are indexed) are marked in xowiki/admin/list with a 1.

E.2 How can i provide a nice title for my RSS feed?


My RSS feed has a title of the form ::<somenumber>. How can i provide here something nicer?  


XoWiki uses for the title of the RSS feed the the title of the folder object. XoWiki ueses as well the description of the folder object as description of the RSS channel. Please, provide the according information by editing the folder object.

For more details, see: http://alice.wu-wien.ac.at:8000/xowiki-doc/#rss 

F What are the Prerequirements for installing XoWiki?


I want to install XoWiki. What are the exact pre-requirements?


XoWiki requires at least OpenACS 5.3. It requires as well XOTcl at least in version 1.5 (version 1.6.6 is recommended)

G From where can i get a stable version of XoWiki?


What's the latest stable release of XoWiki? A CVS download string would be perfect!


The "stable version" is in the oacs-5-3 branch

cvs -d:pserver:anonymous@cvs.openacs.org:/cvsroot checkout -r oacs-5-3 openacs-4/packages/xotcl-core
cvs -d:pserver:anonymous@cvs.openacs.org:/cvsroot checkout -r oacs-5-3 openacs-4/packages/xowiki

You should get these versions as well from "install/update from repository" from /acs-admin/install/ when you have OpenACS 5.3 installed

To get the best version of XOTcl (the Tcl extension), check out http://www.xotcl.org

Valid HTML 4.01 Transitional Valid CSS!