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.
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
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.
- Click on the button "New WikiApplication".
- Enter the name of your new wiki application, e.g. MyCompanyApp (this must be a valid web name for Foswiki)
- Enter a short description what this application is about.
- 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
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 Topic
Types 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:
- TaggedTopic, CategorizedTopic
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
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
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!)
perl tools/extension_installer <NameOfExtension> install
If you have any problems, or if the extension isn't available in
, then you can still install manually from the command-line. See https://foswiki.org/Support/ManuallyInstallingExtensions
for more help.
| 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