Meta data
Additional topic data, program-generated or from DataForms, is stored embedded in the topic text using META: tags
Overview
By default, topics are stored in files on disk, in a really simple and obvious directory structure. The big advantage of this approach is that it makes it really easy to manipulate topics from outside, and is also very safe; there are no complex binary indexes to maintain, and moving a topic from one installation to another is as simple as copying a couple of text files.
To keep eveything together in one place, meta-data (program-generated or from DataForms) is embedded directly in topics. It does this using META: tags.
META: data includes program-generated info like FileAttachment, topic movement data and user-defined information from DataForms.
Meta data syntax
- Format is the same as in macros, except all fields have a key.
%META:<type>{key1="value1" key2="value2" ...}%
- Order of fields within the meta-data is not defined, except that if there is a field with key
name, this appears first for easier searching (note the order of the data themselves is defined).
- Each meta-datum is on one line.
- Values in meta-data are URL encoded so that characters such as \n can be stored.
Example of Format
%META:TOPICINFO{version="1.6" date="976762663" author="LastEditorWikiName" format="1.0"}%
text of the topic
%META:TOPICMOVED{from="Codev.OldName" to="Codev.NewName"
by="TopicMoverWikiName" date="976762680"}%
%META:TOPICPARENT{name="NavigationByTopicContext"}%
%META:FILEATTACHMENT{name="Sample.txt" version="1.3" ... }%
%META:FILEATTACHMENT{name="Smile.gif" version="1.1" ... }%
%META:FORM{name="WebFormTemplate"}%
%META:FIELD{name="OperatingSystem" value="OsWin"}%
%META:FIELD{name="TopicClassification" value="PublicFAQ"}%
Meta data specifications
The current version of Meta Data is 1.0, with support for the following syntax.
META:TOPICINFO
| Key | Comment |
|---|
| version | Same as SVN version | | date | integer, unix time, seconds since start 1970 | | author | last to change topic, is the REMOTE_USER | | format | Format of this topic, will be used for automatic format conversion |
| Key | Comment |
|---|
| version | Same as SVN version | | date | integer, unix time, seconds since start 1970 | | author | last to change topic, is the REMOTE_USER | | format | Format of this topic, will be used for automatic format conversion |
META:TOPICMOVED
This is optional, exists if topic has ever been moved. If a topic is moved more than once, only the most recent META:TOPICMOVED meta datum exists in the topic, older ones are to be found in the rcs history.
%META:TOPICMOVED{from="Codev.OldName" to="Codev.NewName" by="talintj" date="976762680"}%
| Key | Comment |
|---|
| from | Full name, i.e., web.topic | | to | Full name, i.e., web.topic | | by | Who did it, is the REMOTE_USER, not WikiName | | date | integer, unix time, seconds since start 1970 |
| Key | Comment |
|---|
| from | Full name, i.e., web.topic | | to | Full name, i.e., web.topic | | by | Who did it, is the REMOTE_USER, not WikiName | | date | integer, unix time, seconds since start 1970 |
Notes:
- at present version number is not supported directly, it can be inferred from the SVN history.
- there is only one META:TOPICMOVED in a topic, older move information can be found in the SVN history.
META:TOPICPARENT
| Key | Comment |
|---|
| name | The topic from which this was created, typically when clicking on a ? questionmark link, or by filling out a form. Normally just TopicName, but it can be a full Web.TopicName format if the parent is in a different Web. |
| Key | Comment |
|---|
| name | The topic from which this was created, typically when clicking on a ? questionmark link, or by filling out a form. Normally just TopicName, but it can be a full Web.TopicName format if the parent is in a different Web. |
META:FILEATTACHMENT
| Key | Comment |
|---|
| name | Name of file, no path. Must be unique within topic | | version | Same as SVN revision | | path | Full path file was loaded from | | size | In bytes | | date | integer, unix time, seconds since start 1970 | | user | the REMOTE_USER, not WikiName | | comment | As supplied when file uploaded | | attr | h if hidden, optional |
| Key | Comment |
|---|
| name | Name of file, no path. Must be unique within topic | | version | Same as SVN revision | | path | Full path file was loaded from | | size | In bytes | | date | integer, unix time, seconds since start 1970 | | user | the REMOTE_USER, not WikiName | | comment | As supplied when file uploaded | | attr | h if hidden, optional |
Extra fields that are added if an attachment is moved:
| Key | Comment |
|---|
| movedfrom | full topic name - web.topic | | movedby | the REMOTE_USER, not WikiName | | movedto | full topic name - web.topic | | moveddate | integer, unix time, seconds since start 1970 |
| Key | Comment |
|---|
| movedfrom | full topic name - web.topic | | movedby | the REMOTE_USER, not WikiName | | movedto | full topic name - web.topic | | moveddate | integer, unix time, seconds since start 1970 |
META:FORM
| Key | Comment |
|---|
| name | A topic name - the topic represents one of the DataForms. Can optionally include the web name (i.e., web.topic), but doesn't normally |
| Key | Comment |
|---|
| name | A topic name - the topic represents one of the DataForms. Can optionally include the web name (i.e., web.topic), but doesn't normally |
META:FIELD
Should only be present if there is a META:FORM entry. Note that this data is used when viewing a topic; the form definition is not read.
| Key | Name |
|---|
| name | Ties to entry in DataForms template, is title with all bar alphanumerics and . removed | | title | Full text from DataForms template | | value | Value user has supplied via form |
| Key | Name |
|---|
| name | Ties to entry in DataForms template, is title with all bar alphanumerics and . removed | | title | Full text from DataForms template | | value | Value user has supplied via form |
Recommended sequence
There is no absolute need for Meta data to be listed in a specific order within a topic, but it makes sense to do so for a couple of good reasons:
- form fields remain in the order they are defined
- the
diff function output appears in a logical order
The recommended sequence is:
META:TOPICINFOMETA:TOPICPARENT (optional) - text of topic
META:TOPICMOVED (optional) META:FILEATTACHMENT (0 or more entries) META:FORM (optional) META:FIELD (0 or more entries; FORM required)
Viewing meta data in page source
When viewing a topic the [View raw text] link can be clicked to show the text of a topic (i.e., as seen when editing). This is done by adding raw=on to URL. raw=debug shows the meta data as well as the topic data, ex: debug view for this topic
Rendering meta data
Meta data is rendered with the %META% macro. This is mostly used in the view, preview and edit scripts.
You can render form fields in topic text by using the FORMFIELD macro. Example:
%FORMFIELD{"TopicClassification"}% For details, see VarFORMFIELD.
Current support covers:
| Macro usage: | Comment: |
|---|
%META{"form"}% | Show form data, see DataForms. | %META{"formfield"}% | Show form field value. Parameter: name="field_name". Example:
%META{ "formfield" name="TopicClassification" }% | %META{"attachments"}% | Show attachments, except for hidden ones. Options:
all="on": Show all attachments, including hidden ones. | %META{"moved"}% | Details of any topic moves. | %META{"parent"}% | Show topic parent. Options:
dontrecurse="on": By default recurses up tree, at some cost.
nowebhome="on": Suppress WebHome.
prefix="...": Prefix for parents, only if there are parents, default "".
suffix="...": Suffix, only appears if there are parents, default "".
separator="...": Separator between parents, default is " > ". |
| Macro usage: | Comment: |
|---|
%META{"form"}% | Show form data, see DataForms. | %META{"formfield"}% | Show form field value. Parameter: name="field_name". Example:
%META{ "formfield" name="TopicClassification" }% | %META{"attachments"}% | Show attachments, except for hidden ones. Options:
all="on": Show all attachments, including hidden ones. | %META{"moved"}% | Details of any topic moves. | %META{"parent"}% | Show topic parent. Options:
dontrecurse="on": By default recurses up tree, at some cost.
nowebhome="on": Suppress WebHome.
prefix="...": Prefix for parents, only if there are parents, default "".
suffix="...": Suffix, only appears if there are parents, default "".
separator="...": Separator between parents, default is " > ". |
SEARCH can also be used to render meta data, see examples in FormattedSearch and SearchPatternCookbook.
Related Topics: DeveloperDocumentationCategory, UserDocumentationCategory

|