Required Technologies
  • PHP 4
  • MySQL
  • Apache

  • Features
    I first wrote content management systems because I wanted to learn PHP and because there weren't any content management systems produced that did what I wanted them to do. This means that it now has a curious set of features, partially designed to be commercially useful, partially for my site.

    Categories
    One of the main features I wanted was a categorical system, which acted like a directory structure. I think that this works fine now. However, there's still some usability issues when creating pages, because it appears quite counter-intuitive to set up - once you understand how they work it's fine though.

    Search engine friendly
    The categorical system also lends itself well to working with the system that allows variables to be passed to scripts without using the query character '?'. Such as http://www.server.com/user/index.php/category/subcategory/categoricalname

    Code structure
    The entire thing is written in PHP 4, using OO where possible, such as a the database class to allow further extensibility to other SQL database systems if necessary. It's been coded excessively defensively to prevent attacks against the scripts.

    Integrated news system
    The news system is integrated and not modular as it previously was so that the news items can be displayed in sub-categories and can sometimes be inherited into the main news section. There's a commenting system that can be either restricted to registered users, or let unregistered people post with or without email activation of their comment.

    Dynamic Menus (and submenus)
    The menu for each page is dynamically generated and can include a submenu for the sub-category the page you're viewing is in. Unfortunately it's only a single level hierachy at the moment, as I wanted to ensure visual consistency to allow flexible page design.

    Multiple Templates
    The Object Oriented template system allows multiple templates that are stored in the SQL database to be served. Each template is hierachical, so sections of the template can be defined seperately. Some special template sections are required for news and dynamic menus too.

    Browser detection
    Facilitates detection of the browser from a set of POSIX compatible regular expressions and the browser's signature. This allows different templates to be allocated to different browsers.

    Module system
    User written or pre-written modules can be integrated with the code for templates or the pages a user writes. They get a seperate section in the control panel, as they are supposed to provide their own control panel user interfaces. I don't use any modules on this site currently, but the Union of Clare Students site uses two, one for dynamically adding their username into the web-mail form and the other performing the calendar functionality.

    User system
    The script uses custom SQL based sessions to manage user logins, and not the default file implementation PHP uses. This extends nicely into the capabilities system, where each usergroup (or individual user) can be given a set of capabilities over various types of operation. At the moment these include: page contribution, page writing, news contribution, news writing, general control panel options and user control panel options (which is highest level of permission). When the user doesn't have permission to do certain functions in the control panel the links to do them are hidden to make a simpler looking interface for them.

    Full control panel
    Usually it's been only myself using my previous content management systems, and despite this I've always had a full control panel system. With xix I've seen a departure from this solitary use with the Union of Clare Students site now running on xix. This has forced me to design the control panel with novice users in mind, rather than just me who knows how each page works and not just what it does. The control panel manages all the writing of the pages, the news items, the users and usergroups, the browser detection, the user-usable xixCodes, the categories, the menu and provides an interface for modules to provide their own mini control panels. Below are some screenshots of the control panel in action.
    xix login screenthe main xix page
    Section for editing pagesSection for editing templates

    Availability
    Currently there's no installation script for xix, so if anyone wants to run it they need me to install it, and probably even set the templates et cetera up. Time constraints from being on an intensive full-time degree mean that you either need to be a Cambridge society or willing to pay me before I'd even consider installing xix for you. Another thing to bear in mind, that I can't perform any installations for money during term-time due to JANET regulations on my internet connection.

    Name
    There really isn't actually anything to the name, it was just a word I made up at the time of writing xix that I though sounded and looked cool on paper. The way I pronounce it is like "zicks".






    Page created: 13:07 16 Mar 2004, Last modified: 20:36 21 Mar 2004
    © Copyright Alaric Nightingale, 2003. All rights reserved, offenders will be annihilated.
    Site generated by xix content management system version 0.2.0.

    Valid XHTML 1.1 Valid CSS! informationStorm.co.uk