DokuWiki

It's better when it's simple

User Tools

Site Tools


plugin:struct:devel

Struct Plugin

Struct Plugin: Development Support

The Struct Plugin allows other plugin developers to hook into it's functionality, adding additional features.

Registering new Types

The plugin signals the PLUGIN_STRUCT_TYPECLASS_INIT event which can be intercepted by Action Plugins. There is no default action. The passed $data is an associative array listing the available Types and their respective classes. It looks like this:

array(
    'Checkbox' => 'dokuwiki\\plugin\\struct\\types\\Checkbox',
    'Date' => 'dokuwiki\\plugin\\struct\\types\\Date',
    'DateTime' => 'dokuwiki\\plugin\\struct\\types\\DateTime',
    'Decimal' => 'dokuwiki\\plugin\\struct\\types\\Decimal',
    'Dropdown' => 'dokuwiki\\plugin\\struct\\types\\Dropdown',
    'Lookup' => 'dokuwiki\\plugin\\struct\\types\\Lookup',
    'Mail' => 'dokuwiki\\plugin\\struct\\types\\Mail',
    'Media' => 'dokuwiki\\plugin\\struct\\types\\Media',
    'Page' => 'dokuwiki\\plugin\\struct\\types\\Page',
    'Tag' => 'dokuwiki\\plugin\\struct\\types\\Tag',
    'Text' => 'dokuwiki\\plugin\\struct\\types\\Text',
    'Url' => 'dokuwiki\\plugin\\struct\\types\\Url',
    'User' => 'dokuwiki\\plugin\\struct\\types\\User',
    'Wiki' => 'dokuwiki\\plugin\\struct\\types\\Wiki',
);

Plugins may add their own Typeclass pairs here. The class name has to be fully qualified and needs to be loadable by DokuWiki's Autoloader. The class needs to inherit from AbstractBaseType or one of its subclasses.

Please refer to the existing types' source code to see how to implement your own type.

Examples of plugins implementing this are: structstatus Plugin, structgroup Plugin, structjoin Plugin, structcombolookup Plugin

Allow Additional Config Keys

When you write a plugin doing it's own aggregation, you might want to reuse the ConfigParser class. By default this class will throw an Exception when a config key is encountered that it does not understand. You can handle the PLUGIN_STRUCT_CONFIGPARSER_UNKNOWNKEY event and prevent the default (of throwing the exception). You can add your own config to the config array in the event.

array(
  'config' => &$this->config,
  'key' => 'the unknown config key',
  'val' => 'the value for that key'
)

Examples of plugins implementing this are: structgantt Plugin, structodt Plugin

Modify row rendering in AggregationTable

The PLUGIN_STRUCT_AGGREGATIONTABLE_RENDERRESULTROW event is called every time when the AggregationTable renders a row in a struct table. You can use the BEFORE hook to change the default rendering procedure or AFTER to make some modifications to rendered row.

array(
  'id' => $this->id,
  'mode' => $this->mode,
  'renderer' => $this->renderer,
  'searchConfig' => $this->searchConfig,
  'data' => $this->data,
  'rownum' => &$rownum,
  'row' => &$row,
)

Examples of plugins implementing this are: structrowcolor Plugin

plugin/struct/devel.txt · Last modified: 2020-08-21 11:36 by Klap-in