September 20, 2006

DIY document management system with Simple Groupware

Author: Dmitri Popov

For most people, document management systems are overkill for keeping track of their documents. Usually, you don't need software that allows you to define elaborate document workflows or detailed version tracking. What you might need is a simple system that you can use to access and edit your documents on multiple machines, and then sync them with a file repository on a remote server. Simple Groupware allows you to do just that, and it has a couple more clever tricks as well.

Like many groupware packages, Simple Groupware requires the Apache, PHP, and MySQL stack. Installing the software is as easy as pointing your browser to the Simple Groupware folder on the server and following the instructions. The Simple Groupware manual provides a more detailed overview of the installation procedure as well as system and software requirements.

The default installation of Simple Groupware includes a wide range of ready-to-use modules. These modules, or applications if you will, provide all the functionality you would expect from any decent groupware software, and much more. In fact, Simple Groupware features more than 30 modules, including calendar, address book, tasks, notes, email, projects, gallery, forum, news, bookmarks, and many more. Simple Groupware even features its own spreadsheet module, which is arguably on a par with the similar application from Google. There are also administrative tools that help to keep Simple Groupware running smoothly, including statistics, user administration, rights management, and backup. On the security front, Simple Groupware features integrated denial of service protection, user authentication, and protection against SQL injections, among other things.

But what sets Simple Groupware apart from similar applications, is its own XML-based language called sgsML, which allows you to customize the existing modules and create new ones even if you don't have any prior programming experience. For example, the default file manager is fine as it is, but you can also turn it into a simple document management system using the tools provided by sgsML.

To do this, you have to edit the files.xml file stored in the sgs/bin/modules/schema folder (assuming that Simple Groupware is installed in the sgs folder). If you take a quick look at the contents of the file, you'll notice that sgsML looks a lot like good old HTML, and it's easy to figure out what the code does. The <table> markup specifies the name of the database that the module uses, as well as default view, sort order, and access privileges:

<table modulename="Files" default_view="display" orderby="filename" order="asc" limit="20" enable_new="true" enable_edit="true" enable_delete="true" enable_empty="true">

The <field> tag is used to add fields to the application. For example, the following code adds a field that allows you to upload files:

<field name="filedata" displayname="File" simple_type="files" simple_size="1" required="true"></field>

Using sgsML, you can also create relations and add linked fields, which allow you to build advanced applications. In the Files module, the following code specifies a value list, which besides the predefined values (confirmed, checked, etc.) can pull values from another database:

<field name="status" displayname="Status" simple_type="select" simple_size="1"><data values="confirmed|checked|unconfirmed|to be checked|canceled"/>
<data function="dbselect|simple_statuses|statusname,statusname|stattype='files'|statusname asc|10"/>

Let's say you want to add a new field to the Files module, where you enter a description of the given file. Simply add the following line where you want the Description field to appear in the module:

<field name="description" displayname="Description" simple_type="htmlarea" simple_size="4" />

This adds a four-line HTML area field to the module. In a similar manner, you can add a value list that pulls the name from the simple_contacts database allowing you to assign the file to a person in the Contacts module:

<field name="contactid" displayname="Assigned to" simple_type="select" simple_size="1" required="true" is_linked="simple_contacts|details|contactid"> <data function="dbselect|simple_contacts|contactid,concat(lastname;' ';firstname)||lastname asc|10"/> </field>

For more information on sgsML, take a look at the sgsML manual.

Unlike other groupware applications, Simple Groupware treats every module as a folder, which can be either a container or an application. This may sound a bit unusual, but this approach provides virtually unlimited flexibility. You can create as many folders as you like, each containing different sets of applications. For example, if you're a freelance writer who works for several publishers, you can create a folder for each publisher containing separate file repositories -- for example, Ideas, Active documents, Archived documents, Miscellanea, etc.

How would you make this work? Let's say that you work for the Big Books publisher. First of all, you have to create a Big Books folder to act as a container. In Simple Groupware, select the Workplace folder (or whatever folder you want to add the Big Books container to) and click on the Options item. In the New folder section, enter "Big Books" in the Name field, select "portal" from the Module drop-down list, and press OK. To add the Active documents file repository, make sure that the Big Books folder is selected, click on the Options item, enter "Active documents" in the Name field in the New folder section, select "files" from the Module drop-down list, and press OK. This adds the Active documents repository under the Big Books folder. Repeat these steps to add other repositories. Once you've done that, you can start adding files to each repository.

Keeping it in sync

Besides sgsML, Simple Groupware features another clever bit: multi-platform desktop client software. This tool allows you to do two simple yet useful things: access your documents and keep them in sync.

Here is how it works. Download the latest release of the client from Simple Groupware's Web site, unpack it, and launch it using the appropriate launch script ( on Linux, sgsClient_win32.bat on Windows). In the login windows, enter the URL of your Simple Groupware server; it should look something like, where is the IP address of your Simple Groupware server. Enter your user name and password in the proper fields and press Login. You should see the list of folders in the left pane. Next, you have to specify one or several folders that the client should keep in sync. To do this, press Set Sync button and tick the desired folders.

To edit a document stored in Simple Groupware, locate it in its folder, select it (you should see its preview in the lower pane) and click the @ sign. This opens the document in the associated application for editing. When you close the document, the client automatically syncs it with the server. Alternatively, you can perform the sync manually by pressing the Sync button.

When using the client, you don't have to stay online. Once you've opened a document, you can go into the offline mode by pressing the Offline button and continue to work. Next time you connect the client to the server, it syncs the changes. This feature can also come in handy if you lose your connection to the server while working on a document.

A word of caution, however -- while the Simple Groupware client offers a convenient way of working with documents, it doesn't have any conflict management mechanisms. In other words, two people could work on a document at the same time unawares, and the client software overwrites the documents on the server without any warning. To prevent situations where several users edit the same document and subsequently overwrite each other's changes, you can work directly off the Simple Groupware server, which does include a conflict warning feature.

Dmitri Popov is a freelance writer whose articles have appeared in Russian, British, German, and Danish computer magazines.


  • Enterprise Applications
Click Here!