xref: /template/strap/action/toolbar.php (revision 4cadd4f8c541149bdda95f080e38a6d4e3a640ca)
1007225e5Sgerardnico<?php
2007225e5Sgerardnico/**
3007225e5Sgerardnico * Action Component
4007225e5Sgerardnico * Add a button in the edit toolbar
5007225e5Sgerardnico *
6007225e5Sgerardnico * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
7007225e5Sgerardnico * @author     Nicolas GERARD
8007225e5Sgerardnico */
9007225e5Sgerardnico
1032b85071SNickeauuse ComboStrap\Resources;
11007225e5Sgerardnico
12007225e5Sgerardnicoif (!defined('DOKU_INC')) die();
1337748cd8SNickeaurequire_once(__DIR__ . '/../ComboStrap/PluginUtility.php');
14007225e5Sgerardnico
15007225e5Sgerardnico
165f891b7eSNickeauclass action_plugin_combo_toolbar extends DokuWiki_Action_Plugin
175f891b7eSNickeau{
18007225e5Sgerardnico
19007225e5Sgerardnico    /**
20007225e5Sgerardnico     * register the event handlers
21007225e5Sgerardnico     *
22007225e5Sgerardnico     * @author Nicolas GERARD
23007225e5Sgerardnico     */
245f891b7eSNickeau    function register(Doku_Event_Handler $controller)
255f891b7eSNickeau    {
26007225e5Sgerardnico        $controller->register_hook('TOOLBAR_DEFINE', 'AFTER', $this, 'handle_toolbar', array());
27007225e5Sgerardnico    }
28007225e5Sgerardnico
295f891b7eSNickeau    function handle_toolbar(&$event, $param)
305f891b7eSNickeau    {
31007225e5Sgerardnico
32*4cadd4f8SNickeau        /**
33*4cadd4f8SNickeau         * Relative path against
34*4cadd4f8SNickeau         * DOKUBASE/lib/images/toolbar/
35*4cadd4f8SNickeau         */
36*4cadd4f8SNickeau        $imageBase = '../../plugins/combo/resources/images';
3732b85071SNickeau
382128d419Sgerardnico        $unit = array(
39007225e5Sgerardnico            'type' => 'format',
402128d419Sgerardnico            'title' => 'Insert an unit test',
4132b85071SNickeau            'icon' => $imageBase . '/unit-doc-block.png',
42007225e5Sgerardnico            'open' => '<unit name="default">\n<file lang path>\n</file>\n\t<code lang>',
435f891b7eSNickeau            'close' => '\n\t</code>\n\t<console>\n\t</console></unit>\n',
442128d419Sgerardnico            // 'key'    => $unitShortcutKey
45007225e5Sgerardnico        );
46007225e5Sgerardnico
472128d419Sgerardnico        /**
482128d419Sgerardnico         * This is called from the js.php with a get HTTP
492128d419Sgerardnico         * There is no knowledge of which page is modified
502128d419Sgerardnico         */
512128d419Sgerardnico
5232b85071SNickeau        $frontmatterInsert = <<<EOF
532128d419Sgerardnico---json
542128d419Sgerardnico{
55c3437056SNickeau    "name":"short name",
562128d419Sgerardnico    "canonical":"unique:name",
57c3437056SNickeau    "title":"A title for template iteration and search page engine",
58c3437056SNickeau    "description":"A description for template iteration and search page engine"
592128d419Sgerardnico}
602128d419Sgerardnico---
612128d419SgerardnicoEOF;
622128d419Sgerardnico        // https://www.dokuwiki.org/devel:event:toolbar_define
632128d419Sgerardnico        $frontmatter = array(
642128d419Sgerardnico            'type' => 'insert',
652128d419Sgerardnico            'title' => 'Insert a frontmatter',
6632b85071SNickeau            'icon' => $imageBase . '/table-of-contents.svg',
6732b85071SNickeau            'insert' => $frontmatterInsert,
682128d419Sgerardnico            'block' => true
692128d419Sgerardnico        );
702128d419Sgerardnico
712128d419Sgerardnico
722128d419Sgerardnico        $blockquote = array(
732128d419Sgerardnico            'type' => 'format',
742128d419Sgerardnico            'title' => 'blockquote',
7532b85071SNickeau            'icon' => $imageBase . '/blockquote-icon.png',
762128d419Sgerardnico            'open' => '<blockquote>',
772128d419Sgerardnico            'close' => '</blockquote>',
782128d419Sgerardnico
792128d419Sgerardnico        );
802128d419Sgerardnico
8132b85071SNickeau        $webcode = array(
825f891b7eSNickeau            'type' => 'format',
835f891b7eSNickeau            'title' => 'webcode',
8421913ab3SNickeau            'icon' => $imageBase . '/code-square.svg',
855f891b7eSNickeau            'open' => '<webcode name="Default" frameborder="0">\n',
865f891b7eSNickeau            'close' => '\n</webcode>\n'
875f891b7eSNickeau            //'key' => $webCodeShortcutKey
885f891b7eSNickeau        );
895f891b7eSNickeau
9021913ab3SNickeau        $twitter = array(
9121913ab3SNickeau            'type' => 'format',
9221913ab3SNickeau            'title' => 'twitter',
9321913ab3SNickeau            'icon' => $imageBase . '/twitter.svg',
9421913ab3SNickeau            'open' => '<blockquote>\n<cite>[[',
95e8b2ff59SNickeau            'close' => ']]</cite>\n</blockquote>\n'
9621913ab3SNickeau            //'key' => $webCodeShortcutKey
9721913ab3SNickeau        );
9821913ab3SNickeau
9932b85071SNickeau        $event->data[] = array(
10032b85071SNickeau            'type' => 'picker',
10132b85071SNickeau            'title' => "Choose comboStrap component",
10232b85071SNickeau            'icon' => $imageBase . '/logo.svg',
10321913ab3SNickeau            'list' => array($frontmatter, $blockquote, $webcode, $twitter, $unit)
10432b85071SNickeau        );
10532b85071SNickeau
10632b85071SNickeau
10721913ab3SNickeau
10821913ab3SNickeau
1092128d419Sgerardnico        return true;
1102128d419Sgerardnico
111007225e5Sgerardnico
112007225e5Sgerardnico    }
113007225e5Sgerardnico
114007225e5Sgerardnico}
115007225e5Sgerardnico
116