Kuvat: Visitors (7.4.2015):
|
PmWiki /
Custom Actionsadministrators (intermediate) With cookbook recipes, it is possible to define custom page actions for PMWiki. The correspondent code is executed whenever a parameter [[MyGroup/MyPage?action=myaction]]
With such an action, you can alter the display and treatment of the current page - like in standard actions as Whereas a Custom Markup is primarily intended to generate a meaningful text replacement on the current page, a page action is triggered by a url parameter and thus can be used in links as a call to a PHP function, acting on the current page or wiki wide, for instance like:
However, if you want to use PMWiki's built-in functions for custom actions you have to be aware of the fact that cookbook recipes are included in The following example shows how to set up a custom action
$HandleActions['myaction'] = 'HandleMyAction'; # if url contains action=myaction call HandleMyAction timely
$HandleAuth['myaction'] = 'admin'; # authorization level $auth for HandleMyAction
function HandleMyAction($pagename, $auth) { # parameters (signature) of handler function required by PMWiki
global $Author; # get hold of current author name, e.g. for page history
$old = RetrieveAuthPage('MyGroup.MyOtherPage', $auth); # get all information from page MyGroup.MyOtherPage
$new = $old; # copy the page information to stay (e.g. page history)
$new['text'] = "x".$old['text']; # ... some manipulation of the old wiki mark-up
$Author='myactionbot'; # author name to appear in the page history for this manipulation
$pn='MyGroup.MyOtherPage'; # need to call UpdatePage with variables (by reference) only
UpdatePage($pn,$old,$new); # alter the actual wiki page
HandleBrowse($pagename); # display the page specified in the url (e.g. MyGroup.MyPage)
}
Notes:
Category: PmWiki Developer
This page may have a more recent version on pmwiki.org: PmWiki:CustomActions, and a talk page: PmWiki:CustomActions-Talk. |