From 7fde6de1212323418401c15efba06026c704ca87 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Fri, 14 Oct 2016 13:22:58 +0200 Subject: New init function for plugins, supports errors reporting All plugins can optionally add an init function named `pluginname_init()` which is called when the plugin is loaded. This function is aware of the config, and can return initialization errors, which are displayed in the header template. Note that the previous error system hack no longer work. --- plugins/demo_plugin/demo_plugin.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'plugins/demo_plugin/demo_plugin.php') diff --git a/plugins/demo_plugin/demo_plugin.php b/plugins/demo_plugin/demo_plugin.php index 18834e53..7335c9d4 100644 --- a/plugins/demo_plugin/demo_plugin.php +++ b/plugins/demo_plugin/demo_plugin.php @@ -14,6 +14,23 @@ * and check user status with _LOGGEDIN_. */ +/** + * Initialization function. + * It will be called when the plugin is loaded. + * This function can be used to return a list of initialization errors. + * + * @param $conf ConfigManager instance. + * + * @return array List of errors (optional). + */ +function demo_plugin_init($conf) +{ + $conf->get('toto', 'nope'); + + $errors[] = 'This a demo init error.'; + return $errors; +} + /** * Hook render_header. * Executed on every page redering. -- cgit v1.2.3 From ba0fd80732acbff0fcda57a0b31e4edfaa337001 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Thu, 1 Dec 2016 11:38:21 +0100 Subject: Improve theme dependent plugin placeholders: - buttons_toolbar: now expect links represented by an array instead of HTML content - fields_toolbar: now expect a form represented by an array instead of HTML content - action_plugin: now expect links represented by an array instead of HTML content Default templates updated accordingly mprove theme dependent plugin placeholders: --- plugins/demo_plugin/demo_plugin.php | 82 +++++++++++++++++++++++++++++++++---- 1 file changed, 75 insertions(+), 7 deletions(-) (limited to 'plugins/demo_plugin/demo_plugin.php') diff --git a/plugins/demo_plugin/demo_plugin.php b/plugins/demo_plugin/demo_plugin.php index 7335c9d4..8fdbf663 100644 --- a/plugins/demo_plugin/demo_plugin.php +++ b/plugins/demo_plugin/demo_plugin.php @@ -50,15 +50,68 @@ function hook_demo_plugin_render_header($data) // If loggedin if ($data['_LOGGEDIN_'] === true) { - // Buttons in toolbar - $data['buttons_toolbar'][] = '
  • DEMO_buttons_toolbar
  • '; + /* + * Links in toolbar: + * A link is an array of its attributes (key="value"), + * and a mandatory `html` key, which contains its value. + */ + $button = array( + 'attr' => array ( + 'href' => '#', + 'class' => 'mybutton', + 'title' => 'hover me', + ), + 'html' => 'DEMO buttons toolbar', + ); + $data['buttons_toolbar'][] = $button; } - // Fields in toolbar - $data['fields_toolbar'][] = 'DEMO_fields_toolbar'; + /* + * Add additional input fields in the tools. + * A field is an array containing: + * [ + * 'form-attribute-1' => 'form attribute 1 value', + * 'form-attribute-2' => 'form attribute 2 value', + * 'inputs' => [ + * [ + * 'input-1-attribute-1 => 'input 1 attribute 1 value', + * 'input-1-attribute-2 => 'input 1 attribute 2 value', + * ], + * [ + * 'input-2-attribute-1 => 'input 2 attribute 1 value', + * ], + * ], + * ] + * This example renders as: + *
    + * + * + *
    + */ + $form = array( + 'attr' => array( + 'method' => 'GET', + 'action' => '?', + 'class' => 'addform', + ), + 'inputs' => array( + array( + 'type' => 'text', + 'name' => 'demo', + 'placeholder' => 'demo', + ) + ) + ); + $data['fields_toolbar'][] = $form; } // Another button always displayed - $data['buttons_toolbar'][] = '
  • DEMO
  • '; + $button = array( + 'attr' => array( + 'href' => '#', + ), + 'html' => 'Demo', + ); + $data['buttons_toolbar'][] = $button; return $data; } @@ -143,8 +196,19 @@ function hook_demo_plugin_render_footer($data) */ function hook_demo_plugin_render_linklist($data) { - // action_plugin - $data['action_plugin'][] = ''; + /* + * Action links (action_plugin): + * A link is an array of its attributes (key="value"), + * and a mandatory `html` key, which contains its value. + * It's also recommended to add key 'on' or 'off' for theme rendering. + */ + $action = array( + 'attr' => array( + 'href' => '?up', + 'title' => 'Uppercase!', + ), + 'html' => '←', + ); if (isset($_GET['up'])) { // Manipulate link data @@ -152,7 +216,11 @@ function hook_demo_plugin_render_linklist($data) $value['description'] = strtoupper($value['description']); $value['title'] = strtoupper($value['title']); } + $action['on'] = true; + } else { + $action['off'] = true; } + $data['action_plugin'][] = $action; // link_plugin (for each link) foreach ($data['links'] as &$value) { -- cgit v1.2.3