KwGrid:Editing Help

From KitwarePublic
Jump to navigationJump to search

In addition to the guidelines provided in the MediaWiki General Editing page, the following rules are suggested:

Page and File Names

  • Prefix a page name with the kwGrid: namespace (lowercase kw). For example, kwGrid:Welcome. Used the piped link notation to hide the namespace when the page is rendered. Namespaces allow separation of different kinds of unrelated content within the same Wiki (i.e. isolate projects like VTK, CMake, ITK, kwGrid). Namespaces also provide facilities to limit searches to a particular area and allow easy exporting of a selection of work.
  • Use spaces at will. For example, use kwGrid:My Own Hardware over kwGrid:MyOwnHardware.
  • Use slashes (/) to provide additional structure and depth. For example, the kwGrid:Partners page provides links to pages describing each partner one by one: use kwGrid:Partners/Argonne National Lab over kwGrid:Partners Argonne National Lab, as it emphasizes that it is a "sub-page" of kwGrid:Partners and mimics the traditional web structure. Furthermore, if the sub-page feature is enabled in the Wiki, a link is automatically created on top of the sub-page to the "parent" page.
  • Use the same rules to upload files, but remove spaces and slashes since they are not allowed in a file name. For example: kwGridPartnersArgonneNationalLab.png. Let the team know about the files, images, PDF or Word documents you upload, so that we can also archive a copy in the CVS repository.

Page Content

  • Start a page with a call to the Header template. Terminate a page with a call to the Footer template. This automatically adds a header and footer to the page. They provide extra navigational links and associate the page to specific searchable categories. Check the top and bottom of this page to see how the templates are rendered.
{{:kwGrid:Template/Header}}
...
{{:kwGrid:Template/Footer}}

Templates

Mail To

The Mail To template can be used to build a mailto: link prefixed with a small mail icon KwGridMailToIcon.png. For example:

{{:kwGrid:Template/Mail To|sebastien.barre@kitware.com|Sebastien Barre}}

...is rendered as: KwGridMailToIcon.png Sebastien Barre

Note Box

The Note Box template can be used to provide a short note:

{{:kwGrid:Template/Note Box|message=This is an example of text inside a Note Box template.}}

...is rendered as:

KwGridInfoIcon.png Note: This is an example of text inside a Note Box template.

Warning Box

The Warning Box template can be used to provide a short warning:

{{:kwGrid:Template/Warning Box|message=This is an example of text inside a Warning Box template.}}

...is rendered as:

KwGridWarningIcon.png Warning: This is an example of text inside a Warning Box template.

Help Box

The Help Box template can be used to provide a short help:

{{:kwGrid:Template/Help Box|message=This is an example of text inside a Help Box template.}}

...is rendered as:

KwGridHelpIcon.png Help: This is an example of text inside a Help Box template.

Tip Box

The Tip Box template can be used to provide a short tip:

{{:kwGrid:Template/Tip Box|message=This is an example of text inside a Tip Box template.}}

...is rendered as:

KwGridWrenchIcon.png Tip: This is an example of text inside a Tip Box template.

Security Box

The Security Box template can be used to provide a short security notice:

{{:kwGrid:Template/Security Box|message=This is an example of text inside a Security Box template.}}

...is rendered as:

KwGridPadlockIcon.png Security Notice: This is an example of text inside a Security Box template.

Extensions

<kw_bread_crumbs>prefix=» |small=1|bgcolor=F9F9F9|trim_prefix=User:|on_top_hack=1</kw_bread_crumbs> MediaWiki, the software that runs this Wiki site, allows developers to write their own extensions to the Wiki markup. An extension defines an HTML/XML-style tag which can be used in the Wiki editor like any other markup. If you want to write your own extensions, check those resources.

So here it goes... <-- The links below give an error message: "Fatal error: Call to undefined function: setshowtoc() in /mounts/raid/projects/KitwareWeb/mediawiki-1.5.7-namic/extensions/kwIncludeFile.php on line 303"/ --JohnMcDonnell 10:46, 9 May 2006 (EDT)

Resources

Cache Problem

As of MediaWiki 1.3 and 1.4, the extension feature is limited by the caching mechanism. If your extension is used to display dynamic contents and therefore needs to be re-executed each time the page is accessed, you will notice pretty early on that it does not work as expected. The problem is that MediaWiki caches the contents of the page the first time it is rendered, and serves that cached output until the corresponding page is modified again. Several parameters are considered when the decision is made to use the cached output instead of re-rendering the page, and most of them deal with comparing the creation time of the cache against the creation time of the page (cur_timestamp/cur_touched is the SQL database). If the cache is older than the page, it is re-rendered.

The code below uses that knowledge to 'touch' the page and invalidate its cache. It is indeed slightly identical to the code in the Title::invalidateCache() method. Sadly invalidateCache() can not be used in an extension: even though it sets cur_touched to 'now', at the time we would be calling this method we would still be in the process of creating and rendering the page itself and the page would be cached anyway once we would be done with our extension. At the end of the day the cache would always end up newer than cur_touched, defeating the whole purpose of calling invalidateCache(). The trick here is to set cur_touched in the future, something not too intrusive, say 'now' + 120 seconds, provided that we expect the whole page (and our extension code) to be executed and rendered within 120 seconds. That way, cur_touched remains 'fresher' than the cache, and the next time the page is accessed, the cache creation time will appear to be older than cur_touched, forcing the page to be re-rendered, and forcing cur_touched to be, again, set in the future and appear fresher than the new cache, etc.

 $ts = mktime();
 $now = gmdate("YmdHis", $ts + 120);
 $ns = $wgTitle->getNamespace();
 $ti = wfStrencode($wgTitle->getDBkey());
 $sql = "UPDATE cur SET cur_touched='$now' WHERE cur_namespace=$ns AND cur_title='$ti'";
 wfQuery($sql, DB_WRITE, "");



kwGrid: [Welcome | Site Map | Editing Help] - [Public Web | Public Wiki | Private Wiki]