KwGrid:Editing Help: Difference between revisions
m (add header) |
|||
Line 69: | Line 69: | ||
==Extensions== | ==Extensions== | ||
{{User:Barre/Extensions}} | {{User:Barre/MediaWiki/Extensions}} | ||
{{:kwGrid:Template/Footer}} | {{:kwGrid:Template/Footer}} |
Revision as of 17:38, 9 March 2005
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 . For example:
{{:kwGrid:Template/Mail To|sebastien.barre@kitware.com|Sebastien Barre}}
...is rendered as: 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:
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:
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:
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:
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:
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)
- kw_bread_crumbs
<kw_include_file>url=http://public.kitware.com/cgi-bin/viewcvs.cgi/*checkout*/scripts/media-wiki-extensions/kwBreadCrumbs.php?content-type=text%2Fplain&root=kwGridWeb%7Cpre=0%7Ccollapse_par=1%7Cpreg_match=/\/\*\s*=*Description=*\s*(.*?)\n\n/sm</kw_include_file> - kw_include_file
<kw_include_file>url=http://public.kitware.com/cgi-bin/viewcvs.cgi/*checkout*/scripts/media-wiki-extensions/kwIncludeFile.php?content-type=text%2Fplain&root=kwGridWeb%7Cpre=0%7Ccollapse_par=1%7Cpreg_match=/\/\*\s*=*Description=*\s*(.*?)\n\n/sm</kw_include_file> - kw_site_map
<kw_include_file>url=http://public.kitware.com/cgi-bin/viewcvs.cgi/*checkout*/scripts/media-wiki-extensions/kwSiteMap.php?content-type=text%2Fplain&root=kwGridWeb%7Cpre=0%7Ccollapse_par=1%7Cpreg_match=/\/\*\s*=*Description=*\s*(.*?)\n\n/sm</kw_include_file> - kw_article_time_stamp
<kw_include_file>url=http://public.kitware.com/cgi-bin/viewcvs.cgi/*checkout*/scripts/media-wiki-extensions/kwArticleTimeStamp.php?content-type=text%2Fplain&root=kwGridWeb%7Cpre=0%7Ccollapse_par=1%7Cpreg_match=/\/\*\s*=*Description=*\s*(.*?)\n\n/sm</kw_include_file>
Resources
- MediaWiki generated documentation
- Help For Mediawiki Hackers
- Database Layout and Schema
- Programming notes (Chris Phoenix, CRN)
- Wikimedia mailing lists
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, "");