Advanced Wiki

Applications: What and Why?

See also:

Wiki Applications: What and Why?

  • Intended Audience
    • Anyone at who feels familiar with using Wiki

  • Pre-requisites
    • Familiarity with Wiki essentials (webs and topics) and Intermediate Wiki (variables and plugins)
    • Knowledge of HTML and/or programming concepts helpful, but not required

What You Can Expect

Become an "Informed Consumer"

These training presentations won't turn you into you a Wiki expert in a few hours. However, you can expect to gain new perspective, hear about a few tips and tricks, add some insights, and see many examples.

We also hope you'll learn at least one new thing you didn't know before!

Beyond This Class

  • Tips, tricks, and tutorials can be found in the Help web.

You may also be interested in:

Who Are You?

  • What's your experience with Wiki?

  • Have you used any Wiki applications?

  • Do you have documentation that could be improved by using a Wiki application?

  • Are there any specific things you'd like to see covered in this session?

What's Covered

  • What Are Wiki Applications?

  • Lots of Examples

Quick Review (Intermediate)

  • Variables
    • Pre-defined (may act like functions)
    • User-defined
    • Preferences (user settable)

  • Plugins (Calendar, Comment, SpreadSheet ...)

  • Raw View
    • ?raw=on
    • ?raw=debug

Start presentation

Slide 1: Applications

Application: _software that employs the capabilities of a computer to perform a task that the user wishes to perform._

  • Aid organization, search, and retrieval of content

  • Automate workflow

  • Impose consistent Look & Feel across a set of topics

  • Increase efficiency

  • Reduce learning curve

  • Can be created by people with moderate computing skill sets (e.g. non-programmers)

If you need to create a lot of pages with the same look and feel -- the same structure -- consider building a Wiki application.

Slide 2: Wiki Applications - Possibilities

  • Multi-function Calendar / Planner
  • FAQ
  • Discussion forum
  • Ticket tracking
  • Team directory
  • Meeting minutes
  • Project tracking system
  • Bug database
  • Document repository
  • Troubleshooting (runbooks)
  • Blogging
  • Inventory system
  • Music collection
  • Employee automobile database
  • Telephone call log

Slide 3: Wiki Applications - Parts

Applications may make use of:

  • Multiple Plugins and/or variables

Slide 4: Demo: Power Calendar:

A simple Wiki application using several plugins:

  • Calendar
  • TimeTable
  • ToolTips
  • Comment
  • Glue

All in two pages! (1 for the app; 1 for the data.)

  • Month view:
    Month view

  • Week view:
    Week view

  • Event list view:
    Event List

  • Posting new event:
    Post New Event

hand Demo - Power Calendar

Slide 5: Wiki Applications - Parts

Applications may make use of:

  • Multiple Plugins and/or variables

  • HTML Forms

Slide 6: Demo: One Button Page Creator

Create a new Wiki page by entering a name and clicking a button.

Application includes:

  • An HTML form with one text field

  • Formatted SEARCH to index pages created this way.


hand Demo - New Topic creation tool

Slide 7: HTML Forms

  • Provide a convenient way to enter initial information.

  • Used to send values to Wiki topics via URL parameters

  • embedded in a topic

  • Has a "Submit" button

  • <form action... >=

Slide 8: Page Creator HTML Form (Code)

The code for a very simple form; it presents a text "fill-in" field and a submit button.

<form action="%SCRIPTURLPATH%/edit%SCRIPTSUFFIX%/%WEB%/"> 
  <input type="hidden" name="onlywikiname"  value="on" />
  <input type="hidden" name="onlynewtopic"  value="on" />
  <input type="hidden" name="topicparent"   value="WikiTrainingAdv"  />

  <input type="text" name="topic"  size="30" value=""  />
  <input type="submit" value="Create New Topic"/>

Slide 9: Terminology: Forms

Form: _an editable data area on a web page with (possibly) menus, checkboxes, text fields... and some way to submit the data to a program on the server._

Wiki applications may use forms, to pass data between pages or to store data in a topic.

Note: The word form may refer to:

  • HTML Form
    • <form action=... >

  • Wiki Form
    • defined in a specially-formatted Wiki table
    • automatically converted into HTML forms for editing

We'll come back to HTML forms in a bit.

Slide 10: Structured Wiki

Structured wikis support "database-like" manipulation of data stored in forms on pages. The result is a small application inside the wiki.

  • By adding form-based input to freeform content, you can structure topics with unlimited, easily searchable categories.

  • Form input values are stored as Wiki metadata.

  • All data is saved in the page and can be edited as easily as editing regular content.

  • One topic (instance page) is analogous to one "record" in a database.

hand See: Wiki:Codev.StructuredWiki and Wikipedia:Structured_wiki

No "real" database engine is used. Wiki metadata is stored in topic pages along with the content.

Slide 11: Structured Applications - Parts

Structured applications may make use of:

  • Multiple Plugins and/or variables

  • HTML Forms

  • Template Topics

  • Wiki forms

  • Instance Pages

  • Index / Formatted Search

Slide 12: Structured Applications

data flow diagram

Slide 13: Structured Applications: Features

  • Multiple Plugins and/or variables
    Powerful data manipulation

  • HTML form
    Provides a convenient way to enter initial information.

  • Template topics
    Add consistency to the look and feel of your pages

  • Wiki forms
    Provide a way for users to add and update structured data in a consistent way.
    Meta-data stored in a Wiki form makes searching and indexing simple.

  • Instance Pages
    Equivalent to a "record" in a data base; one instance page equals one entry in your application.

  • Index / Formatted Search
    Query your pages. Dynamic indexes.

Slide 14: Template Topics

Template topics add consistency to the look and feel of your pages.

Template: a pre-developed page layout used to create new pages with the same design, pattern, or style

  • Define the default text for new topics
    Analogous to stationery in word processing programs

  • Automatically expand certain variables, such as %DATE% and %WIKINAME% when copied

In a Wiki application, template topics

  • Provide a consistent look and feel to all pages within an application

  • Are copied programatically when a new "instance page" is created

  • Allow variables to be passed in and evaluated

(Note:Wiki has several kinds of "templates". We'll only be discussing template topics as used in Wiki applications.)

Slide 15: Wiki Forms

  • Describe the metadata to be associated with a class of instance pages
    Guarantees consistency of metadata

  • Provide a formatted user interface for data entry or update on instance pages

  • Analogous to a table definition in a database "schema"

Unlike HTML Forms

  • Defined in Wiki tables (specific format);
    Wiki converts the table information to a form when viewing or editing.

  • Topic name (usually) ends in the word Form (TeamDirectoryForm)

  • Usually enabled for a web (WEBFORMS variable)
    • Can be added to any topic using the "Add Form" button
    • Often pre-attached to template topics

Slide 16: Wiki Forms

(images are cropped; actual forms are longer...)

Wiki Form definition (in Wiki table)

Wiki Form in "View" mode

Wiki Form in "Edit" mode


Slide 17: Instance Pages

Instance pages are the topics representing individual entries in your application.

The template topic is copied and the copy becomes an instance page.

An instance page may may represent
  • one project
  • one address book entry
  • one troubleshooting procedure
  • one blog entry
  • the status report for one week
  • ...

  • Use a strong naming convention to support dynamic indexing

  • Data in Wiki forms makes searching easy

Slide 19: Example

hand Tutorial

hand Step-by-step: How To Build a Wiki Application

Slide 20: Where is the Form Data Stored?

Information added to Wiki forms is stored in "meta data" along with page content.

View content with raw=debug

Slide 21: Examples

  • A Team Directory

  • A Weblog

  • Project Tracking

  • Runbooks

Slide 22: Example: Team Directory

  • HTML creation form

  • Template topic
    Template INCLUDEs "shared content"
    • Format can be changed at a single point for all instance pages!

  • Wiki form
    • All data stored in Wiki form

  • Create an entry
form screenshot

  • Template

  • Sample entry
form screenshot

  • Wiki Form

hand Demo - Team Directory

Slide 23: Example: A Weblog

  • HTML creation form

  • Template topic

  • Wiki form
    • "hidden" fields in Wiki form automatically populated
    • uneditable fields (type = "label")

  • Customized look&feel
    • custom "View"
    • different colors, side bar

  • Search
    • Main page only shows "published" status
    • List page shows all entries

  • Main page
Blog App screenshot

  • Create an entry
Blog App screenshot

  • List all entries
Blog App screenshot

hand Demo - Blog

Slide 24: Example: Project Tracking

Many special features:

  • Instance pages feature "create" buttons for supplementary documents
  • Buttons change to links when suppl. documents have been created
  • Nearly all content is shared

Project Tracking App screenshot

Project Tracking App screenshot

Project Tracking App screenshot

hand Demo - Project Tracking

Slide 25: Example: Runbooks

  • Customized instance pages.
  • Search and indexing

  • Runbooks web
Runbook Web screenshot

  • Sample Runbook
    Runbooks App screenshot

Runbooks App screenshot

hand Demo

Slide 26: Demo: Weekly Status Reports

A slightly more complex application that includes:

  • An HTML form

  • A template topic (StatusReportsTemplate)
    • Editable Tables

  • Uses the current month to name the new topic

  • Date "picker" - choice pasted into topic content

  • Standardized naming convention (StatusReports200906r1)

  • TOPICTITLE variable provides more user-friendly page title

hand Demo - Weekly Status Report (example)



Slide 27: Status Reports HTML Form (Code)

   * Set YEARMO = %SERVERTIME{"$year$mo"}%

  <form action="%SCRIPTURLPATH%/save%SCRIPTSUFFIX%/%WEB%/"> 
  <input type="hidden" value="%TOPIC%%YEARMO%rXXXXXXXXXX" name="topic" />
  <input type="hidden" value="form" name="action">
  <input type="hidden" value="%TOPIC%Template" name="templatetopic" />
  <input type="hidden" value="%TOPIC%" name="topicparent" />

  <input type="hidden" value="%USERNAME%" name="qUser" />

  For the week ending...

  <input type="text" name="qWeekOf"  size="20" id="datecell" class="twikiEditFormTextField" />
  <input type="image" src="%PUBURL%/%SYSTEMWEB%/JSCalendarContrib/img.gif"  alt="Calendar" 
     onclick="javascript: return showCalendar('datecell','%e %B %Y')" />

  Choose the appropriate Friday

  <input type="submit" value="Create Page" />


Slide 28: Status Reports Template Topic (Code)


---+!! Status Report for %URLPARAM{"qUser"}%

For the week ending %URLPARAM{"qWeekOf"}%

Slide 29: Template-only Code

You can put code into a template that will not be copied to instance pages. For example, this code prints a notice warning users not to edit the template directly.

---+!! %SPACEOUT{%TOPIC%}%


Read This Notice

DO NOT edit the Template Unless you Know What You Are Doing!!!

Slide 30: Use Case: Engineering Standards


  • One page per document
  • No standardized "look" to pages
  • New pages manually added to a table
  • Recently accepted documents manually marked as "New" NEW
    (with risk of forgetting to remove NEW over time)
  • Not easy to search (e.g. "Show me only Mandatory Standards")
  • Lots of manual effort


  • One page per document
  • Template provides standardized "look" to pages
  • New pages dynamically indexed
  • Recently accepted documents marked as "New" NEW based on date comparison
  • Easy to search (e.g. "Show me only Mandatory Standards")
  • Manual effort confined to writing the doc

Slide 31: Use Case: Engineering Standards

Feature: Index table of all documents.


Table is updated by hand. Are entries in sorted order?

(only 2 entries shown!)
%EDITTABLE{format="|textarea, 2x30|select, 1, Mandatory, Standard, Aspiring, Recommended Practice, Intriguing Practice, Deprecated|date, 11, Jan/2010, %d/%b/%Y|select, 1, Development Process, Platform, Serving, Globalization, Deployment, Networking, Batch Processing|label|label|" changerows="add" }%
| *Name* | *Status* | *Date of Adoption* | *Area* | *ESG Contact* | *Engineering Contact* | *Applies if...* | *To comply* |
| [[StdTracking][Defect Tracking: Bugzilla (bug.corp)]] | Mandatory | 01/Jun/2006 | Development Process | %SEARCH{"ESG Contact" topic="StdTracking" regex="on" nonoise="on" format="$pattern(.*?ESG\sContact\:\*\s*([^\n\r]+).*)"}% | %SEARCH{"Engineering Contact" topic="StdTracking" regex="on" nonoise="on" format="$pattern(.*?Engineering\sContact\:\*\s*([^\n\r]+).*)"}% | Always | Must use Bugzilla to track bugs |


Table is built dynamically. Entries are always sorted.

| *Name* | *Compliance Level* | *Status* | *Date of Adoption* | *Area* | *ESG Contact* | *Engineering Contact* | *Applies if...* | *To comply* | *Created On* | *Created By* | 
format="| [[$topic][$formfield(StandardName)]] %IsNew% %IsDep% | %FieldsToShow% | $createdate | $createwikiusername |"

Slide 32: Use Case: Engineering Standards

Feature: Documents marked as "New" or "Deprecated*.


"New" and "Deprecated" added manually to each row. ("New" must be removed manually, as well.)

| [[StdScm][%N% Source Control: Subversion]] | Mandatory | 01/Mar/2009 | Development Process | ... |

| [[StdBuild][%N%<del>Automated Build: Buildicus</del>]] | Deprecated | 01/Jun/2006 | Development Process |...

What does it mean to be %N% and also deprecated (<del>)?


"New" and "Deprecated" are calculated for each row, based on date comparison or metadata values. Set up variables once and let the computer do the rest. A different icon signifies "Deprecated".

   * Set IsNew = $percntCALC{$IF($formfield(DateAccepted), $IF( $TIME($formfield(DateAccepted)) > $TIMEADD($TIME(), -6, month), $percntN$percnt, ), ) }$percnt
   * Set IsDep = $percntCALC{$IF($EXACT( $formfield(Status), Deprecated ), $percntX$percnt, ) }$percnt

Slide 33: Use Case: Engineering Standards

Feature: Format of each document


No standardized look and feel. Copy and paste.

sample standard page (original format)


Standardized Look and Feel automatically applied using templates.

Sample standard paage (templated format)

Slide 34: Use Case: Engineering Standards

Feature: Search


Same search options as for any page.



Specialized search concentrates on metadata.


Slide 35: Reference Pages


-- VickiBrown -- 26 Jan 2009
Topic attachments
ISorted ascending Attachment Action Size Date Who Comment
Application_diagram.jpgjpg Application_diagram.jpg manage 28 K 27 Jan 2009 - 07:41 VickiBrown  
Blog1.jpgjpg Blog1.jpg manage 88 K 27 Jan 2009 - 07:41 VickiBrown  
Blog2.jpgjpg Blog2.jpg manage 47 K 27 Jan 2009 - 07:41 VickiBrown  
Blog3.jpgjpg Blog3.jpg manage 45 K 27 Jan 2009 - 07:41 VickiBrown  
Cal_event_list.jpgjpg Cal_event_list.jpg manage 46 K 27 Jan 2009 - 07:41 VickiBrown  
Cal_month.jpgjpg Cal_month.jpg manage 97 K 27 Jan 2009 - 07:41 VickiBrown  
Cal_post_new.jpgjpg Cal_post_new.jpg manage 73 K 27 Jan 2009 - 07:41 VickiBrown  
Cal_week.jpgjpg Cal_week.jpg manage 88 K 27 Jan 2009 - 07:41 VickiBrown  
Create_New.jpgjpg Create_New.jpg manage 8 K 27 Jan 2009 - 07:41 VickiBrown  
HTMLForm.jpgjpg HTMLForm.jpg manage 63 K 27 Jan 2009 - 07:41 VickiBrown  
ProjectTracking1.jpgjpg ProjectTracking1.jpg manage 132 K 27 Jan 2009 - 07:41 VickiBrown  
ProjectTracking2.jpgjpg ProjectTracking2.jpg manage 228 K 27 Jan 2009 - 07:41 VickiBrown  
ProjectTracking3.jpgjpg ProjectTracking3.jpg manage 372 K 27 Jan 2009 - 07:41 VickiBrown  
Runbook1.jpgjpg Runbook1.jpg manage 105 K 27 Jan 2009 - 07:41 VickiBrown  
Runbook2.jpgjpg Runbook2.jpg manage 72 K 27 Jan 2009 - 07:41 VickiBrown  
RunbookWeb.jpgjpg RunbookWeb.jpg manage 106 K 27 Jan 2009 - 07:41 VickiBrown  
Status_Reports.jpgjpg Status_Reports.jpg manage 17 K 16 Jun 2009 - 22:11 UnknownUser  
Status_Reports2.jpgjpg Status_Reports2.jpg manage 46 K 16 Jun 2009 - 22:11 UnknownUser  
TeamContactPage_init.jpgjpg TeamContactPage_init.jpg manage 79 K 27 Jan 2009 - 07:41 VickiBrown  
TeamContact_form1.jpgjpg TeamContact_form1.jpg manage 24 K 27 Jan 2009 - 07:41 VickiBrown  
TeamContact_template.jpgjpg TeamContact_template.jpg manage 77 K 27 Jan 2009 - 07:41 VickiBrown  
TeamDirectory.jpgjpg TeamDirectory.jpg manage 155 K 27 Jan 2009 - 07:41 VickiBrown  
WikiForm.jpgjpg WikiForm.jpg manage 14 K 16 Jun 2009 - 22:22 UnknownUser  
WikiFormDef.jpgjpg WikiFormDef.jpg manage 46 K 16 Jun 2009 - 21:11 UnknownUser Wiki Form definition (in Wiki table)
WikiFormEdit.jpgjpg WikiFormEdit.jpg manage 30 K 16 Jun 2009 - 22:17 UnknownUser  
SampleStandard_Orig.pngpng SampleStandard_Orig.png manage 144 K 29 Mar 2014 - 05:35 VickiBrown sample standard page (original format)
SampleStandard_Template.pngpng SampleStandard_Template.png manage 161 K 29 Mar 2014 - 05:35 VickiBrown Sample standard paage (templated format)
Search_after.pngpng Search_after.png manage 19 K 21 Jan 2010 - 20:07 UnknownUser screenshot
Search_before.pngpng Search_before.png manage 11 K 29 Mar 2014 - 04:23 VickiBrown  
Topic revision: r7 - 02 Dec 2014, VickiBrown
This site is powered by Foswiki Copyright © by the contributing authors. All material on this wiki is the property of the contributing authors.
Foswiki version v2.1.6, Release Foswiki-2.1.6, Plugin API version 2.4
Ideas, requests, problems regarding CFCL Wiki? Send us email