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 implenting this are: structstatus 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 implenting this are: structgantt Plugin

plugin/struct/devel.txt · Last modified: 2017-03-28 10:16 by andi