=====Administration of Actions===== >>**See also:** - [[http://docs.wikkawiki.org/UsingActions | UsingActions]] - DescribeActions - CategoryDevelopmentActions >>This is the development page for the action administration module. ===Main goals of this module=== ~- allow finegrained access control on actions (preferably based on ACLs) ~- make the "intranet" directory obsolete ~- allow WikkaEdit to retrieve the list of installed actions and for each action its description, parameters... ===Needed metadata=== ~- action short name = tag name (eg : "files") ~- action name (eg : "File upload form") ~- action description (eg : "Display a form with file attachments to the current page.") ~- parameter 1 short name (eg : "download") ~- parameter 1 description (eg : "prints a link to the file specified in the string") ~- parameter 1 mandatory (or optional) (boolean) ===Where metadata are stored=== - header in action file For each action in "/action" directory, the header of the action file is read (eg : "/action/image/image.php") Action file header contains all the required metadata, prefixed by a specific tag. - separate data file (best method?) Each action directory contains an additional file "actionname.inc.php". __Data formats :__ 1) PHP array (best method?) %%(php) 'hidden', 'tag' => 'image', 'title' => 'Image', 'summary' => 'Display an image.', 'usage' => '', 'params' => array( 'url' => array( 'default_value' => 'url', 'description' => 'Image URL. Can be relative (images/img.png) or external (http://example.com/example.jpg)', 'importance' => 2 ), 'title' => array( 'default_value' => 'text', 'description' => 'Image title', 'importance' => 1 ), 'alt' => array( 'default_value' => 'text', 'description' => 'Alternate text when image can\'t be displayed', 'importance' => 1 ), 'class' => array( 'default_value' => 'className', 'description' => 'Class name (defined in the CSS file)' ), 'link' => array( 'default_value' => 'url', 'description' => 'Add a link to the image' ) ) ); ?> %% + fastest - may introduce some errors (especially with comma or parentheses) 2) INI-file %%(ini) [action] category=hidden tag=image title=Image summary=Display an image. usage= [url] default_value=url description=Image URL. Can be relative (images/img.png) or external (http://example.com/example.jpg) importance=2 [title] default_value=text description=Image title importance=1 [alt] default_value=text description=Alternate text when image can't be displayed importance=1 [class] default_value=className description=Class name (defined in the CSS file) [link] default_value=url description=Image title %% + easiest to read and write - no hierarchical structure (action and parameters data are mixed together) 3) XML %%(xml) hidden image Image Display an image. url Image URL. Can be relative (images/img.png) or external (http://example.com/example.jpg) 2 <default_value>text</default_value> <description>Image title</description> <importance>1</importance> text Alternate text when image can't be displayed 1 className Class name (defined in the CSS file) url Image title %% - give headaches to read or write - slow to parse ===Caching metadata=== Parsing the "/action" directory on each request is too slow. Moreover, additional data like action ACLs can't be stored in the file itself. Solution : add to the database two tables : "wikka_actions" and "wikka_action_params" %%(sql) CREATE TABLE `wikka_actions` ( `tag` varchar(75) NOT NULL, `title` varchar(75) NOT NULL, `summary` varchar(200) NOT NULL, `usage_infos` varchar(400) NOT NULL, `category` varchar(75) NOT NULL, `acl` text NOT NULL, PRIMARY KEY (`tag`) ) ENGINE=MyISAM;%% %%(sql) CREATE TABLE `wikka_action_params` ( `action_tag` varchar(75) NOT NULL, `name` varchar(75) NOT NULL, `description` varchar(400) NOT NULL, `default_value` varchar(75) NOT NULL, `importance` tinyint(1) NOT NULL, PRIMARY KEY (`action_tag`,`name`) ) ENGINE=MyISAM;%% **Field "importance" :** - it is only used by WikkaEdit - values : 0=none, 1=default, 2=mandatory - when adding an action, the "mandatory" and "default" parameters are added automatically. If a "mandatory" parameter is removed, the editor will display a warning. ===When metadata cache is updated ?=== These databases are currently updated each time AdminAction is called (an "update action list" link may be a better solution) ===User interface=== The UI is based on UserAdmin and [[PageAdminAction | PageAdmin]] style. The ACLs are currently not used (see following chapiter "Actions ACLs") ""

Actions Administration

Filter view:

Records (28): 1-15 | 16-28
Sorted by: tag, asc
Action Tag Action Title ACLS
adminpagesPages administrationJohnDoeedit
adminusersUsers administration*edit
backlinksBacklinks*edit
calendarCalendar*edit
categoryCategory*edit
checkversionVersion checker*edit
colorText color*edit
contactAdministrator email address*edit
countcommentsCount comments*edit
countownedCount owned*edit
countpagesCount pages*edit
countusersCount users*edit
emailpasswordLost password form*edit
imageImage*edit
usersettingsMy user settings*edit
"" ===Actions ACLs=== The main idea of ACLs is to allow the admin to disable non-safe actions like "files" or "iframe", or allow only some users to use them. For basic actions, these ACLs are really useless (eg: "color", "image", "table"...) Ideas : - ACLs could be used to replace the hardcoded "if ($this->IsAdmin($this->GetUser()))" in some actions Problems : - "wikka_actions" and "wikka_action_params" tables are not always up-to-date (only updated when the AdminActions action is called) - the ACLs are currently ignored by the core (and can't be added due to the 1st problem) ---- CategoryDevelopment