Framework for WikiApplications


The WikiWorkbench standardizes writing, deploying and using wiki applications on Foswiki. It builds on the core concepts of standard Foswiki and establishes a unified terminology to leverage concepts and key benefits known from conventional programming towards wiki applications. These are:

  • separation of programming code from net data: clearly distinguish the roles of wiki application programmers and wiki authors
  • reusability: bundle functions into libraries to be used in multiple places
  • abstraction: establish a multi-level architecture of wiki applications, one built upon the other
  • standardize model, view and control: share common concepts defining DataForms, view and edit templates
  • typed content: establish a hierarchy of TopicTypes to let topics participate in specific wiki applications
  • documentation: auto-generate complete documentation for a wiki application ready to be printed out

While these concepts are nothing new for a normal programmer, they do have a clear equivalent using Foswiki as an application framework. Wiki applications still are written in TML using your browser on your Foswiki site. However, all bits are managed in a clean way to guarantee that you will still find them years later. People trained to write wiki applications the WikiWorkbench way will immediately know where to look and fix applications written by others, as they all share the same concepts. So by establishing a clear teminology and best practice, you will be able to maintain even large wiki apps consisting of hundrets of different components working together long term.

WikiWorkbench has been developed over the last 5 years working together with a series of companies in need of large scale wiki applications, custom tailored to their business needs, covering fields like

  • human resource management
  • skills management
  • project management
  • tour planning
  • book reviewing
  • public relations management
  • employee training
  • knowledge management
  • vacation planning
  • corporate blogging
  • enterprise search applications

Wiki applications can then be packaged and reused on different deployments like ordinary Foswiki plugins that extend your site. The main difference is that wiki applications are fully developed, documented and maintained using the browser. All parts of an application are a wiki page, so working on an application is done by interacting with the wiki directly.

Getting started

This chapter gives you a quick overview on how to start a new wiki application. We will create a first custom TopicType and deploy it into a user web. Finally we will create a new topic of that type by using the standard topic factory.

The new wiki application is a web that serves as the container and library for things that you are planning to build and which belong together as one. You might either consider creating one singular wiki application located in one subweb of its own, or separate it into several wiki applications that can be used individually without one another, or which other wiki applications build on top.

When installing the WikiWorkbenchContrib, you will get two new webs:

  • Applications: the core of the WikiWorkbench
  • _WikiApplicationTemplate: an application template to bootstrap a new wiki app

You won't need to change these as they make up the infrastructure. Take care not to mix up your own stuff with wiki applications coming from third parties. Instead, build up a separate wiki application that won't be harmed when you have to upgrade third party applications later.

Creating a new wiki application

The Applications web is the starting point accessing and creating all wiki applications. There's a button to create a new wiki application. And that's where we start.

  1. Click on the button "New WikiApplication".
  2. Enter the name of your new wiki application, e.g. MyCompanyApp (this must be a valid web name for Foswiki)
  3. Enter a short description what this application is about.
  4. Click "Submit".

This will create a new subweb under the Applications web, that is Applications.MyCompanyApp in our example. This newly created web is the container for all components part of this application. No part of the application is located outside of this web.

In this sense a "wiki application" is the sum of all components stored in the Applications subweb (Applications.MyCompanyApp). You will be able to write and maintain the wiki application by going to this web now.

When finishing or installing a wiki application, the additional features are made available in other areas of your wiki site by a dedicated deployment step. The WikiWorkbench infrastructure helps you in doing so. For example, each TopicType that you will create will have an Install button that lets you establish a link between the area where you'd like to deploy the feature back to the application itself.

Creating a new TopicType

Deploying a TopicType into a user web

The WikiWorkbench type hierarchy

The concept of "typed content" isn't new to Foswiki as a content management system. Many other CMSes out there have a concrete notion of different document types depending on the material that the site is going to host. If you are a programmer then types shouldn't be new to you. They most commonly come as a class hierarchy or set of structured data definitions. As we are dealing with topics, it is called TopicTypes in Foswiki.

TopicTypes make up a hierarchy with a kind of "IS A" relation between parent and child types. So any child type inherits all structural properties of its parents. Parent topics can either be abstract only to let your write wiki applications for sub types not yet in existence but will inherit from this abstract parent topic some time later.

For example: given there's a ContactsApp to model contact data for persons and organizations. There are TopicTypes "PersonTopic" and "OrganizationTopic". Both inherit from a "PartyTopic" as a common root in your application. So both - persons and organizations - are a "party" with regards to the rest of the wiki application.

Fragment of the type hierarchy:

  • WikiTopic
    • TaggedTopic, CategorizedTopic
      • ClassifiedTopic
        • PartyTopic
          • PersonTopic
          • OrganizationTopic

Furthermore, all PartyTopics should be tagged and categorized, a feature being implemented in a separate wiki application that comes with a ClassifiedTopic type. The ClassifiedTopic type itself is implementing two features: that of TaggedTopics and CategorizedTopics. (footnote: these TopicTypes are part of the ClassificationPlugin)

All topic types finally are some kind of a WikiTopic, which finally is the root of all content types as definied in the WikiWorkbench.

In Foswiki a TopicType establishes a label for a specific kind of DataForm to be used by one or more wiki applications.

A wiki application is made up of different components that are used when deploying it to one or more target webs...

Installation Instructions

You do not need to install anything in the browser to use this extension. The following instructions are for the administrator who installs the extension on the server.

Open configure, and open the "Extensions" section. "Extensions Operation and Maintenance" Tab -> "Install, Update or Remove extensions" Tab. Click the "Search for Extensions" button. Enter part of the extension name or description and press search. Select the desired extension(s) and click install. If an extension is already installed, it will not show up in the search results.

You can also install from the shell by running the extension installer as the web server user: (Be sure to run as the webserver user, not as root!)
cd /path/to/foswiki
perl tools/extension_installer <NameOfExtension> install

If you have any problems, or if the extension isn't available in configure, then you can still install manually from the command-line. See for more help.



Change History

02 May 2019 major improvements to the framework
23 Jan 2017 moved inline css and js into files auto-generated by AttachContentPlugin; improved rendering of inheritance graph using GraphvizPlugin; fixes and improvements to RenderRecentChanges, RenderImageSelector, RenderSimpleTopicCreator, RenderTopicInstaller, RenderTopicsOfType, RenderWikiTopicView; adding back text tab to TopicStubEditTemplate; improved formfield definitions for Editor and Template in TopicType; properly sort a WebLexicon by String by default; cut down WEBFORM to a bare minimum as NatSkin's new-topic feature doesn't rely on it anymore other than being set to a non-empty value; added WebLexiconTemplate
25 May 2016 replacing JQGridPlugin with JQDataTablesPlugin
21 Sep 2015 using Foswiki:Extensions/GraphvizPlugin now instead of DirectedGraphPlugin; support for Foswiki:Extensions/LikePlugin; RSS view template now uses OO-calling semantics to allow TopicTypes to override the defaul format of an entry in a feed; added support for AUTOINC in TopicType factory
17 Jul 2015 added support for multi-lingual wiki apps; display TopicType inheritance tree using Foswiki:Extensions/DirectedGraphPlugin; added editors and TopicTypes for all wiki app components
16 Dec 2014 added "Default" column to form definitions
29 Aug 2014 using new RENDERFORMDEF in FlexFormPlugin for DataForm definition insights
22 Apr 2014 improved rendering of revision info in WikiTopics; remove traces of NatSkin css classes
04 Apr 2014 fix wikiapp formfield to work on foswiki >= 1.2.0
18 Mar 2014 improved thumbnailing for topics; support jquery.validate in topic creator; added dependency on NatEditPlugin
01 Nov 2013 simplified application template; hide H1 button when editing a WikiTopic as a H1 is generated by the view template already; better support for NOAUTOLINK; display quality warnings on the view, not in the editor; add support for explicit thumbnail image attachments (those that have a "t" attribute);
05 May 2013 implemented full-text rss and atom renderer
18 Feb 2013 fixed topicinfo; removed legacy twb.js file breaking configure and/or the plugin installer
07 Jan 2013 first public release
30 Oct 2007 first version in svn
30 Apr 2007 initial version

PackageForm edit

Author Michael Daum
Version 5.00
Release 2 May 2019
Description Framework for WikiApplications
Copyright 2007-2019 Michael Daum
License GPL (GNU General Public License)
Home Foswiki:Extensions/WikiWorkbenchContrib
Support Foswiki:Support/WikiWorkbenchContrib
Topic revision: r1 - 02 May 2019, UnknownUser
This site is powered by FoswikiCopyright © by the contributing authors. All material on this site is the property of the contributing authors.
Ideas, requests, problems regarding DAMASK? Send feedback