XIMS Web Content Management System

Michael Kröll

What is XIMS?

XIMS is a web-based Open Source Web content management system originally developed at the University of Innsbruck, Austria. This eXtensible Information Management System has been built to especially suit the needs of academic and educational infrastructures.

Who is using XIMS?

Among other institutions and projects, XIMS is being used by the following:

What is XIMS being used for?

Feature List

Feature List (cont.)

Overview of the technical implementation


Because Apache AxKit is limited to mod_perl 1.0, it is currently planned to use TomKit as an alternative for transforming published documents once Tomkit has reached production maturity.

Perl Module Prerequisites

Publishing architecture

Instances of “dynamic” object types, e.g. like Questionnaire, AnonDiscussionForum, or SQLReport, will be served directly by the XIMS application server after they have been published. “Static” object type objects, e.g. like Document, Folder, or XML will have its content copied to the filesystem of a presentational webserver.

Publishing architecture (cont.)

Application classes showcase

Putting OO in your CGI Application Logic


App-Class Code Snipplet (1)

 1# This is XIMS::CGI::File::event_default()
 2sub event_default {
 3  XIMS::Debug( 5, "called" );
 4  my ( $self, $ctxt ) = @_;
 6  return 0 if $self->SUPER::event_default( $ctxt );
 8  print $self->header( -type => $ctxt->object->data_format->mime_type() );
 9  print $ctxt->object->body();
10  $self->skipSerialization(1);
12  return 0;

App-Class Code Snipplet (2)

 1# This is XIMS::CGI::Document::edit()
 2sub event_edit {
 3  XIMS::Debug( 5, "called" );
 4  my ( $self, $ctxt) = @_;
 6  $ctxt->properties->content->escapebody( 1 );
 8  # event_edit in SUPER does things like checking for
 9  # edit privileges and setting a lock
10  return 0 if $self->SUPER::event_edit( $ctxt );
12  # check if a WYSIWYG Editor is to be used based on cookie or config
13  my $ed = $self->_set_wysiwyg_editor( $ctxt );
15  # $ed will be '' if no WYSIWYG Editor is to be used
16  $ctxt->properties->application->style( "edit" . $ed );
18  return 0;

Why not use Catalyst, Class::DBI
or other things from the Good Stuff®?

Historical reasons: Parts of the codebase date back to 2002; no time and no compelling reasons to do a big refactoring.

What’s the difference to other Perl OSCMS systems
like Bricolage or Krang?

Different focus: Bricolage and Krang are more news portal oriented, XIMS has a stronger framework character and a stronger ACL/role implementation. XIMS is XML based.

XIMS is harder to install. (An experimental Debian package exists as of this week. 😉

Further Ressources


Thank you!