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