Description

The WikiWorkbench is a standardized way to write and deploy WikiApplications. It is WikiApplication to write WikiApplications. At its core it establishes a certain terminology (such as TopicTypes and TopicFunctions) that are common in non-web applications. A WikiWorkbench implements a standard set of means to ease the administration of even large-scale WikiApplication. WikiApplications, i.e. its TopicFunctions ease the extraction of application documentation. Merging a set of applications obeying this framework into the same web grants a higher level of compatibility and re-usability.

Documentation

TopicType

ApplicationLicense

License for WikiApplications
Every WikiApplication comes with an ApplicationLicense. A topic of this type must have a notice section that will be displayed on components that make use of this license. The notice section contains a short summary of the ApplicationLicense. ... read more

ApplicationTopic

A topic that is part of an application
An ApplicationTopic is a topic that belongs to a WikiApplication. TopicTypes, TopicFunctions, TopicViews etc are all ApplicationTopics as they belong to some WikiApplication. Based on this information all parts of an application are gathered to create documentation and use it for packaging purposes.

... read more

DataForm

DataForm definitions
DataForms add structured information to wiki topics.

See also: RenderApplicationDocumentationTemplate?, WebPreferences, DataFormAttributes, DataForms ... read more

DataFormAttribute

Value definitions for formfields in a DataForm
A DataFormAttribute, also called form field or form attribute, is a part of a DataForm. It may be used as an entity that defining all values a form field can take by using listing them in a FoswikiTable

See also: RenderApplicationDocumentationTemplate? ... read more

DocuTopic

Topics that contain pure documentation.
This is a pure "marker" type that is attached to topics that contain documentation. DocuTopics have a "documentation" section marked using
STARTSECTION{"documentation"}
...
ENDSECTION{"documentation"}
These sections can be extracted dynamically using RenderApplicationDocumentation. In general documentation should be as "near" to the application component as possible, that is it should be embedded into the topic the component represents.

For example all TopicFunctions should be DocuTopics too. The documentation of TopicFunctions are then aggregated on a master DocuTopic that contains calls to RenderApplicationDocumentation for a set of components that are a kind of group, e.g. all types, forms, views and templates implementing a certain model.

WikiApplications can contain documentation too. But if the documentation reaches a certain complexity it should be moved to separate DocuTopics that the WikiApplication topic links to.

DocuTopics, as all TopicTypes belong to a certain WikiApplication and can thus be grouped and distinguished. ... read more

TopicFunction

Function library
See also: RenderApplicationDocumentationTemplate? ... read more

TopicStub

A placeholder or redirect topic
This is a type of topics that has no own net data but includes all data from another topic. Thereby content from another web can be integrated into this web without reduplication. Every TopicStub has a rather rigid structure and varies only in its target topic (see TopicStub).

This TopicType is similar to TopicFunctions but does not compute a specific function. Moreover it is useful to reduce redundancy of pure content, whereas TopicFunctions are part of a WikiWorkbench library and thus reduce redundancy in WikiApplications.

See also: RenderApplicationDocumentationTemplate? ... read more

TopicTemplate

Blueprints for wiki topics
A TopicTemplate is used to create new topics and serves as a kind of blueprint of its content. For example, the simple topic creator takes a TopicTemplate and a DataForm definition to initialize the new topic with the given properties by using the TopicTemplate for the content, and attaching the given DataForm.

... read more

TopicType

TopicType of all TopicTypes
The TopicType is the root of the type system of the WikiWorbench. Every WikiTopic has got one or more TopicTypes. TopicTypes often correlate with DataForms, where a type indicates the properties and use of the form being attached to a topic. However, there are also TopicTypes that only serve more as an additional marker to a generic DataForm being used in different applications.

TopicTypes are able overcome Foswiki's limitation to only allow one form to be attached to a topic. If you'd like to attach a second form to a topic, create a new DataForm that mixes two others and indicate this by merging the resulting TopicType properties. This procedure is the recommended way to derive new TopicTypes from existing ones building on top of them, e.g. by augmenting a CategorizedTopic with additional formfields.

TopicTypes have a special property that you might use to indicate a special way of derivation by means of inheritance. There is no real inheritance in Foswiki but the way of thinking when dealing with objects and types can be clarified this way.

When you start writing a WikiApplication, first think of the data objects you will need and create TopicTypes for each. You can double-mark a TopicType being a DataForm implementation in many cases, but you can also create a separate DataForm topic being distinct from the TopicType topic.

The TopicType topic is the factory to create new TopicTypes as well.

... read more

TopicView

Views and editors
A TopicView defines a view for a topic. By default WikiTopics are displayed using the installed skin and the templates (don't confuse with TopicTemplate being a content blueprint for newly created topics). The view (compare with the 'view' term from the Model-View-Control school) computes the appearance of a WikiTopic and its form data. A new view is assigned to a topic by setting the VIEW_TEMPLATE variable.

For example the following will set th view to use the HiddenFormViewTemplate to hide the form table that is normally displayed below the wiki content.
   * Set VIEW_TEMPLATE = HiddenFormView
Note, that the ...Template string is appended automatically by the Foswiki engine.

Note also, that we use the TopicView type to mark even those views that are used during editting a wiki topic and is assigned using something like
   * Set EDIT_TEMPLATE = FormEdit
As such the FormEditTemplate is not used during Foswiki's view operation but during edit. The template is then used to render the view on the editor to be used. Edit templates either augment the normal Foswiki editor, or even implement a full substitute for its form data. ... read more

WebTool

TopicType for topics on the administrative level
Note, that there is no creator to build a topic of this kind as it is a pure "marker type", that is topics are created with another creator tool and then in addition marked to be an WebTool. Topics of this type are ApplicationTopics too and take associated DataForm. ... read more

WikiApplication

TopicType of a WikiApplication
Normally there's only one WikiApplication topic in a wiki application as created using the WikiWorkbench. This will be used to capture the CompleteDocumentation, including version and license information.

See also: WikiApplicationTemplate ... read more

WikiTopic

A normal topic for Foswiki
The WikiTopic form can be used for a wide range of TopicTypes that only need to be marked as being of a given TopicType. If you need more structure then you have to define a specific form that extends the attributes of the WikiTopic form. That is, the attributes defined here are a minimal set of attributes that all DataForms should share.

Every TopicType is used in combination with one DataForm, that is associated with it, either this generic WikiTopic form or a more specific one. Multiple TopicTypes can share the same form. In this case such a form must allow to select from a set of TopicTypes to mark it properly. A common case is where one TopicType uses one specific DataForm. Note, that a topic can be of several TopicTypes which indicates that it fullfills several duties at once. So by marking a topic of being of types Ta and type Tb you indicate that the attached form contains all form attributes that are in form Fa and from Fb, given that type Ta comes with form Fa and Tb with Fb.

See also: WebTopicEditTemplate ... read more

DataForm

ApplicationTopic

A topic that is part of an application
An ApplicationTopic is a topic that belongs to a WikiApplication. TopicTypes, TopicFunctions, TopicViews etc are all ApplicationTopics as they belong to some WikiApplication. Based on this information all parts of an application are gathered to create documentation and use it for packaging purposes.

... read more

TopicStub

A placeholder or redirect topic
This is a type of topics that has no own net data but includes all data from another topic. Thereby content from another web can be integrated into this web without reduplication. Every TopicStub has a rather rigid structure and varies only in its target topic (see TopicStub).

This TopicType is similar to TopicFunctions but does not compute a specific function. Moreover it is useful to reduce redundancy of pure content, whereas TopicFunctions are part of a WikiWorkbench library and thus reduce redundancy in WikiApplications.

See also: RenderApplicationDocumentationTemplate? ... read more

TopicType

TopicType of all TopicTypes
The TopicType is the root of the type system of the WikiWorbench. Every WikiTopic has got one or more TopicTypes. TopicTypes often correlate with DataForms, where a type indicates the properties and use of the form being attached to a topic. However, there are also TopicTypes that only serve more as an additional marker to a generic DataForm being used in different applications.

TopicTypes are able overcome Foswiki's limitation to only allow one form to be attached to a topic. If you'd like to attach a second form to a topic, create a new DataForm that mixes two others and indicate this by merging the resulting TopicType properties. This procedure is the recommended way to derive new TopicTypes from existing ones building on top of them, e.g. by augmenting a CategorizedTopic with additional formfields.

TopicTypes have a special property that you might use to indicate a special way of derivation by means of inheritance. There is no real inheritance in Foswiki but the way of thinking when dealing with objects and types can be clarified this way.

When you start writing a WikiApplication, first think of the data objects you will need and create TopicTypes for each. You can double-mark a TopicType being a DataForm implementation in many cases, but you can also create a separate DataForm topic being distinct from the TopicType topic.

The TopicType topic is the factory to create new TopicTypes as well.

... read more

WikiApplication

TopicType of a WikiApplication
Normally there's only one WikiApplication topic in a wiki application as created using the WikiWorkbench. This will be used to capture the CompleteDocumentation, including version and license information.

See also: WikiApplicationTemplate ... read more

WikiTopic

A normal topic for Foswiki
The WikiTopic form can be used for a wide range of TopicTypes that only need to be marked as being of a given TopicType. If you need more structure then you have to define a specific form that extends the attributes of the WikiTopic form. That is, the attributes defined here are a minimal set of attributes that all DataForms should share.

Every TopicType is used in combination with one DataForm, that is associated with it, either this generic WikiTopic form or a more specific one. Multiple TopicTypes can share the same form. In this case such a form must allow to select from a set of TopicTypes to mark it properly. A common case is where one TopicType uses one specific DataForm. Note, that a topic can be of several TopicTypes which indicates that it fullfills several duties at once. So by marking a topic of being of types Ta and type Tb you indicate that the attached form contains all form attributes that are in form Fa and from Fb, given that type Ta comes with form Fa and Tb with Fb.

See also: WebTopicEditTemplate ... read more

TopicTemplate

DataFormAttributeTemplate

Template to create DataFormAttributes

DataFormTemplate

Template to create DataForm topics

TopicFunctionTemplate

Template to create TopicFunctions
TODO

Parameters
  • ...

... read more

TopicStubTemplate

Template for TopicStubs

TopicTemplateTemplate

Template to create a TopicTemplate

TopicTypeTemplate

Template to create TopicTypes
TODO

... read more

TopicViewTemplate

Template to create TopicViews

WikiApplicationTemplate

TopicTemplate to generate a WikiApplication topic

TopicView

ApplicationTopicEditTemplate

ApplicationTopicViewTemplate

TopicView for ApplicationTopics

AtomViewTemplate

View for the atom feeds

FormEditTemplate

TopicView to edit the DataForm only

HiddenFormViewTemplate

View to hide DataForms

RssViewTemplate

View for the rss feeds

TextEditTemplate

TopicView to edit the topic text only

TextViewTemplate

Minimal TopicView usefull to generate xml output

TopicStubEditTemplate

Editor for TopicStubs

TopicStubViewTemplate

TopicView for TopicStubs

TopicTypeEditTemplate

Editor for TopicTypes

TopicTypeViewTemplate

TopicView for TopicTypes

WikiApplicationViewTemplate

TopicView for WikiApplications

WikiTopicEditTemplate

TopicView to edit a WikiTopic

WikiTopicViewTemplate

Generic topic view

TopicFunction

GetTopicTypes

returns a list of TopicTypes known in the base web
This is a "getter" TopicFunction that returns a list of known TopicTypes in a given web. Use it to create a selection in DataForms for the TopicType formfield. It adds the "none" type so that you can have (temporarily) un-typed topics. The type "TopicType" is added hardcoded so that you don't have to rely on that type being present in your web and to allow bootstrapping a type system in a web from scratch on as you will be able to create an initial TopicType TopicType this way.

Parameters
  • WEBS: list of webs to search for TopicTypes, defaults to BASEWEB
  • EXCLUDE: expression to exclude types (optional)
  • ADDITION: types that are listed additionally (optional)

... read more

RenderApplicationDocumentation

Extracts the documentation section from all parts of a WikiApplication
Parameters
  • NAME: application name, defaults to BASEWEB
  • THEWEB: web to search for docu, defaults to BASEWEB
  • TYPE: extract documentation of topics of the given type
  • NOTTYPE: don't list topics of that type

Css
  • twbDocuHolder
  • twbDocuSectionHolder
  • twbDocuSectionSummary
  • twbDocuSectionText ... read more

RenderApplicationManifest

Render a list of all files making up a given application

RenderDataFormList

Renders a list of DataForms that make use of the given DataFormAttribute
Parameters

RenderFunctionCallers

Render a list of topics that use a given TopicFunction

RenderImageSelector

Renders a widget to select an image attached to a topic
Select an image attached to a SOURCE topic

Parameters
  • SELECTED
  • SOURCE
  • DEFAULT
  • FIELDNAME

... read more

RenderIndexItem

Fallback to render a summary for WikiTopic that does not have a type specific version of to render an index item
This method is called by RenderCategory to display a summary for an object. This method serves as a final fallback when no other TopicType-specific method was found.

Parameters
  • OBJECT

... read more

RenderSideBar

Render the sidebar navigation for the WikiWorkbench?

RenderSimpleTopicCreator

TopicFunction to display a simple form to create a new topic
This function renders a topic creator form that holds a set of initial input elements to create a topic.

Parameters
  • TEXT: headline text; defaults to "Create a new INCLUDINGTOPIC"
  • LABEL: label of the TopicTitle field, defaults to "Title"
  • BUTTONTEXT: text on the twisty buttinm; default New
  • VALUE: initial value of the title input field (optional)
  • TOPICVALUE: initial value of the topic input field, e.g. SomeTopicAUTOINC0
  • FORM: DataForm to be used when creating a topic, defaults to WikiTopic
  • TEMPLATE: TopicTemplate to be used (optional)
  • TYPE: initial TopicType value, defaults to values predefined in the form definition
  • PARENT: parent topic for the new topic, defaults to the BASETOPIC
  • WHITEBOARD: switch on/off the whiteboard textarea
  • EXTRA: additional <input … />
  • ACTION: script to be used to create the topic, eg save or edit, defaults to edit
  • EDITOR: TopicView to be used as an edit_template

... read more

RenderTopicInstaller

Render a simple factory to deploy a topic in another web
This is a tool to add a topic based application, or part of it to another web. This is done by creating a TopicStub that points back to the implementation. For example, to add a new TopicType to web, you create a TopicStub that points back to the implementation of that TopicType.

The function will display a small input form to specify the web where the TopicStub is to be created.

Parameters
  • TEXT: headline for the install form, defaults to "Install BASETOPIC"
  • NAME: name of the topic to be created, defaults to BASETOPIC
  • SOURCE: used to specify the TopicStub's target to be created, defaults to BASEWEB.BASETOPIC
  • PARENT: topicparent of the new topic, defaults to HOMETOPIC
  • TEMPLATE: TopicTemplate used to create this topic, defaults to TopicStubTemplate
  • FORM: DataForm used for this topic, defaults to TopicStub
  • TYPE: type of the new topic, defaults to TopicStub
  • WIKIAPP: the name of the WikiApllication? this topic belongs to, defaults to BASEWEB
  • EXTRA: extra stuff to be send during save

... read more

RenderTopicThumbnail

Display thumbnail image for a topic
This function gets the first image attachment from a topic and creates a 48x48 thumbnail using ImagePlugin. The attachment taken must end with jpeg, jpg, gif, bmp, svg or png. If there are multiple image attachments then the first one ordered by comment and name is taken. The empty string is returned if no image attachment is found.

Parameters
  • OBJECT: topic to generate a thumbnail for
  • ALIGN: optional alignment of image, defaults to right
  • SIZE: optional size of thumbnail
  • TYPE: image rendering type, see documentation of ImagePlugin, defaults to simple
  • CROP
  • SORT: specifies which image to chose from the attachments, defaults to comment:name which will take the one that sorts first wrt the comment, falling back to the name

... read more

RenderTopicsOfType

Display a table of topcis of a given type
Parameters
  • TYPE: the TopicType to be searched for, defaults to BASETOPIC
  • FIELDS: columns of formfields to display, defaults to Topic, Summary, WikiApplication, Changed
  • ROWS: number of rows to display initially, defauts to 10
  • FILTER: additional filter expression (optional)
  • THEWEB: web to examin, defaults to BASEWEB
  • <field_name>_title: column title for the given field ... read more

RenderWikiApplicationFactory

Renders a form to create a new WikiApplication
This is used to create a new WikiApplication

... read more

RenderWikiApplicationWebHome

Renders a dashboard for an application web
Renders the Applications of a WikiApplication subweb

Parameters
None

... read more

RenderWikiTopicEditor

This function renders an editor for a normal WikiTopic to be displayed at the topic of the text tab.

Parameters

  • BASETOPIC
  • FORM: name of the form definition, defaults to Applications.WikiTopic
  • FIELDS: fields to be edited, defaults to TopicTitle, Summary

... read more

RenderWikiTopicView

This function renders a view for a wiki topic, showing its title and the summary line.

Parameters

  • TITLE_EXTRA: optional addition put behind the topic title

... read more

Installation

...

Manifest

# Name Type
1 ApplicationLicense TopicType
  License for WikiApplications
2 ApplicationTopic TopicType, DataForm, DocuTopic
  A topic that is part of an application
3 ApplicationTopicEditTemplate TopicView
  Editor for ApplicationTopics
4 ApplicationTopicViewTemplate TopicView
  TopicView for ApplicationTopics
5 AtomViewTemplate TopicView
  View for the atom feeds
6 DataForm TopicType, DocuTopic
  DataForm definitions
7 DataFormAttribute TopicType, DocuTopic
  Value definitions for formfields in a DataForm
8 DataFormAttributeTemplate TopicTemplate
  Template to create DataFormAttributes
9 DataFormTemplate TopicTemplate
  Template to create DataForm topics
10 DocuTopic TopicType, DocuTopic
  Topics that contain pure documentation.
11 FirstSteps ApplicationTopic, DocuTopic
  What's next: first steps after creating a new workbench web
12 FormEditTemplate TopicView
  TopicView to edit the DataForm only
13 GetTopicTypes DocuTopic, TopicFunction
  returns a list of TopicTypes known in the base web
14 GnuGeneralPublicLicense ApplicationLicense
  Standard Open Source License
15 HiddenFormViewTemplate TopicView
  View to hide System.DataForms
16 RenderApplicationDocumentation TopicFunction
  Extracts the documentation section from all parts of a WikiApplication
17 RenderApplicationManifest TopicFunction
  Render a list of all files making up a given application
18 RenderDataFormList DocuTopic, TopicFunction
  Renders a list of DataForms that make use of the given DataFormAttribute
19 RenderFunctionCallers TopicFunction
  Render a list of topics that use a given TopicFunction
20 RenderImageSelector DocuTopic, TopicFunction
  Renders a widget to select an image attached to a topic
21 RenderIndexItem DocuTopic, TopicFunction
  Fallback to render a summary for WikiTopic that does not have a type specific version of to render an index item
22 RenderSideBar TopicFunction
  Render the sidebar navigation for the WikiWorkbench
23 RenderSimpleTopicCreator TopicFunction
  TopicFunction to display a simple form to create a new topic
24 RenderTopicInstaller DocuTopic, TopicFunction
  Render a simple factory to deploy a topic in another web
25 RenderTopicThumbnail DocuTopic, TopicFunction
  Display thumbnail image for a topic
26 RenderTopicsOfType DocuTopic, TopicFunction
  Display a table of topcis of a given type
27 RenderWikiApplicationFactory DocuTopic, TopicFunction
  Renders a form to create a new WikiApplication
28 RenderWikiApplicationWebHome DocuTopic, TopicFunction
  Renders a dashboard for an application web
29 RenderWikiTopicEditor DocuTopic, TopicFunction
   
30 RenderWikiTopicView DocuTopic, TopicFunction
   
31 RssViewTemplate TopicView
  View for the rss feeds
32 TextEditTemplate TopicView
  TopicView to edit the topic text only
33 TextViewTemplate TopicView
  Minimal TopicView usefull to generate xml output
34 TopicFunction TopicType, DocuTopic
  Function library
35 TopicFunctionTemplate TopicTemplate
  Template to create TopicFunctions
36 TopicStub TopicType, DataForm, DocuTopic
  A placeholder or redirect topic
37 TopicStubEditTemplate TopicView
  Editor for TopicStubs
38 TopicStubTemplate TopicTemplate
  Template for TopicStubs
39 TopicStubViewTemplate TopicView
  TopicView for TopicStubs
40 TopicTemplate TopicType, DocuTopic
  Blueprints for wiki topics
41 TopicTemplateTemplate TopicTemplate
  Template to create a TopicTemplate
42 TopicType TopicType, DataForm, DocuTopic
  TopicType of all TopicTypes
43 TopicTypeEditTemplate TopicView
  Editor for TopicTypes
44 TopicTypeTemplate TopicTemplate
  Template to create TopicTypes
45 TopicTypeViewTemplate TopicView
  TopicView for TopicTypes
46 TopicView TopicType, DocuTopic
  Views and editors
47 TopicViewTemplate TopicTemplate
  Template to create TopicViews
48 WebHome WebTool
  Library of all WikiApplications installed on Foswiki
49 WebLeftBar WebTool
  Sidebar navigation used by the Projekte/Projekte/System.PatternSkin
50 WebPreferences WebTool
  Preferences of the Applications web
51 WebTool TopicType
  TopicType for topics on the administrative level
52 WikiApplication TopicType, DataForm, DocuTopic
  TopicType of a WikiApplication
53 WikiApplicationTemplate TopicTemplate
  TopicTemplate to generate a WikiApplication topic
54 WikiApplicationViewTemplate TopicView
  TopicView for WikiApplications
55 WikiTopic TopicType, DataForm, DocuTopic
  A normal topic for Foswiki
56 WikiTopicEditTemplate TopicView
  TopicView to edit a WikiTopic
57 WikiTopicViewTemplate TopicView
  Generic topic view

WikiApplication edit

TopicType WikiApplication
TopicTitle
Summary WikiApplication to develop WikiApplications
Version 0.9
Author Michael Daum
Copyright © 2006-2013 Michael Daum http://michaeldaumconsulting.com
License GnuGeneralPublicLicense
Dependencies
Topic revision: r1 - 23 Dec 2012, ProjectContributor
 

Das Urheberrecht © liegt bei den mitwirkenden Autoren. Alle Inhalte dieser Kollaborations-Plattform sind Eigentum der Autoren.