XIMS Web Content Management System
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?
- Public web pages
- Administration and project management
- News portal
- Online course and teacher evaluation
- Publication- and Staff Database
- Digital Library containing content on "Disability" and "Inclusive Education"
- Development and online publication of a textbook on civil law
Feature List
- Extensible recursive role and ACL system including the possibility to define
custom privileges.
- Multiple site hosting and delegation of administrative tasks; domain
specific parameters are inherited.
- WYISWYG XHTML content editing using one of htmlArea,
eWebeditPro, TinyMCE, Xinha, or
Bitflux editors.
- Separation of content from presentation logic using XML/XSLT both at the
content and (skinnable) user interface level.
- Extensability through easy creation of custom application modules. E.g.:
Discussion Boards, Questionnaires, Newsletters, Blogs, etc..
Feature List (cont.)
- Multilanguage user interface (currently available in English and German).
- Easy integration of full-text search engines. Currently, support for Oracle
Text is implemented.
- WebDAV interface.
- Command line tools for administration and batch management.
- Designed to flexibly integrate into existing infrastructures. E.g.
authenticate against an existing LDAP server or reuse a domain specific user
database.
Overview of the technical implementation
Prerequisites
-
Apache AxKit
- Oracle or PostgreSQL RDBMS
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
- CGI::XMLApplication - "An object oriented interface for CGI script
applications"
- XML::LibXML and XML::LibXSLT - Interfaces to the Gnome
libxml and libxslt libraries.
- DBIx::SQLEngine - Used for the database abstraction layer.
- XML::SAX::Generator::PerlData - Used for serializing the Perl data structure
into XML.
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 ) = @_;
5
6 return 0 if $self->SUPER::event_default( $ctxt );
7
8 print $self->header( -type => $ctxt->object->data_format->mime_type() );
9 print $ctxt->object->body();
10 $self->skipSerialization(1);
11
12 return 0;
13}
App-Class Code Snipplet (2)
1# This is XIMS::CGI::Document::edit()
2sub event_edit {
3 XIMS::Debug( 5, "called" );
4 my ( $self, $ctxt) = @_;
5
6 $ctxt->properties->content->escapebody( 1 );
7
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 );
11
12 # check if a WYSIWYG Editor is to be used based on cookie or config
13 my $ed = $self->_set_wysiwyg_editor( $ctxt );
14
15 # $ed will be '' if no WYSIWYG Editor is to be used
16 $ctxt->properties->application->style( "edit" . $ed );
17
18 return 0;
19}
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. ;-)
Thank you!
Questions?