120d062caSAndreas Gohr<?php 220d062caSAndreas Gohr/** 320d062caSAndreas Gohr * Editing toolbar functions 420d062caSAndreas Gohr * 520d062caSAndreas Gohr * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 620d062caSAndreas Gohr * @author Andreas Gohr <andi@splitbrain.org> 7e1d9dcc8SAndreas Gohr */use dokuwiki\Extension\Event; 820d062caSAndreas Gohr 920d062caSAndreas Gohr/** 1020d062caSAndreas Gohr * Prepares and prints an JavaScript array with all toolbar buttons 1120d062caSAndreas Gohr * 12db959ae3SAndreas Gohr * @emits TOOLBAR_DEFINE 1320d062caSAndreas Gohr * @param string $varname Name of the JS variable to fill 1420d062caSAndreas Gohr * @author Andreas Gohr <andi@splitbrain.org> 1520d062caSAndreas Gohr */ 16d868eb89SAndreas Gohrfunction toolbar_JSdefines($varname) 17d868eb89SAndreas Gohr{ 1820d062caSAndreas Gohr global $lang; 1920d062caSAndreas Gohr 2024870174SAndreas Gohr $menu = []; 218b3b5ebbSEsther Brunner 22e1d9dcc8SAndreas Gohr $evt = new Event('TOOLBAR_DEFINE', $menu); 238b3b5ebbSEsther Brunner if ($evt->advise_before()) { 2420d062caSAndreas Gohr // build button array 2524870174SAndreas Gohr $menu = array_merge($menu, [ 2624870174SAndreas Gohr [ 2720d062caSAndreas Gohr 'type' => 'format', 2820d062caSAndreas Gohr 'title' => $lang['qb_bold'], 2920d062caSAndreas Gohr 'icon' => 'bold.png', 3020d062caSAndreas Gohr 'key' => 'b', 3120d062caSAndreas Gohr 'open' => '**', 3220d062caSAndreas Gohr 'close' => '**', 33c4ba149aSAdrian Lang 'block' => false 3424870174SAndreas Gohr ], 3524870174SAndreas Gohr [ 3620d062caSAndreas Gohr 'type' => 'format', 3720d062caSAndreas Gohr 'title' => $lang['qb_italic'], 3820d062caSAndreas Gohr 'icon' => 'italic.png', 3920d062caSAndreas Gohr 'key' => 'i', 4020d062caSAndreas Gohr 'open' => '//', 4120d062caSAndreas Gohr 'close' => '//', 42c4ba149aSAdrian Lang 'block' => false 4324870174SAndreas Gohr ], 4424870174SAndreas Gohr [ 4520d062caSAndreas Gohr 'type' => 'format', 4620d062caSAndreas Gohr 'title' => $lang['qb_underl'], 4720d062caSAndreas Gohr 'icon' => 'underline.png', 4820d062caSAndreas Gohr 'key' => 'u', 4920d062caSAndreas Gohr 'open' => '__', 5020d062caSAndreas Gohr 'close' => '__', 51c4ba149aSAdrian Lang 'block' => false 5224870174SAndreas Gohr ], 5324870174SAndreas Gohr [ 5420d062caSAndreas Gohr 'type' => 'format', 5520d062caSAndreas Gohr 'title' => $lang['qb_code'], 5620d062caSAndreas Gohr 'icon' => 'mono.png', 572bc9e793SAndreas Gohr 'key' => 'm', 5820d062caSAndreas Gohr 'open' => "''", 5920d062caSAndreas Gohr 'close' => "''", 60c4ba149aSAdrian Lang 'block' => false 6124870174SAndreas Gohr ], 6224870174SAndreas Gohr [ 6320d062caSAndreas Gohr 'type' => 'format', 6420d062caSAndreas Gohr 'title' => $lang['qb_strike'], 6520d062caSAndreas Gohr 'icon' => 'strike.png', 6620d062caSAndreas Gohr 'key' => 'd', 6720d062caSAndreas Gohr 'open' => '<del>', 68b0bf105aSAndreas Gohr 'close' => '</del>', 69c4ba149aSAdrian Lang 'block' => false 7024870174SAndreas Gohr ], 7124870174SAndreas Gohr [ 72a2be6cd9SAndreas Gohr 'type' => 'autohead', 73a2be6cd9SAndreas Gohr 'title' => $lang['qb_hequal'], 74a2be6cd9SAndreas Gohr 'icon' => 'hequal.png', 75af14334bSAndreas Gohr 'key' => '8', 76a2be6cd9SAndreas Gohr 'text' => $lang['qb_h'], 77c4ba149aSAdrian Lang 'mod' => 0, 78c4ba149aSAdrian Lang 'block' => true 7924870174SAndreas Gohr ], 8024870174SAndreas Gohr [ 81a2be6cd9SAndreas Gohr 'type' => 'autohead', 82a2be6cd9SAndreas Gohr 'title' => $lang['qb_hminus'], 83a2be6cd9SAndreas Gohr 'icon' => 'hminus.png', 84af14334bSAndreas Gohr 'key' => '9', 85a2be6cd9SAndreas Gohr 'text' => $lang['qb_h'], 86c4ba149aSAdrian Lang 'mod' => 1, 87c4ba149aSAdrian Lang 'block' => true 8824870174SAndreas Gohr ], 8924870174SAndreas Gohr [ 907ba342d5Smatthiasgrimm 'type' => 'autohead', 917ba342d5Smatthiasgrimm 'title' => $lang['qb_hplus'], 927ba342d5Smatthiasgrimm 'icon' => 'hplus.png', 93af14334bSAndreas Gohr 'key' => '0', 947ba342d5Smatthiasgrimm 'text' => $lang['qb_h'], 95c4ba149aSAdrian Lang 'mod' => -1, 96c4ba149aSAdrian Lang 'block' => true 9724870174SAndreas Gohr ], 9824870174SAndreas Gohr [ 99a2be6cd9SAndreas Gohr 'type' => 'picker', 100a2be6cd9SAndreas Gohr 'title' => $lang['qb_hs'], 101a2be6cd9SAndreas Gohr 'icon' => 'h.png', 10273a509d7SAndreas Gohr 'class' => 'pk_hl', 10324870174SAndreas Gohr 'list' => [ 10424870174SAndreas Gohr [ 10520d062caSAndreas Gohr 'type' => 'format', 10620d062caSAndreas Gohr 'title' => $lang['qb_h1'], 10720d062caSAndreas Gohr 'icon' => 'h1.png', 10820d062caSAndreas Gohr 'key' => '1', 10920d062caSAndreas Gohr 'open' => '====== ', 11024870174SAndreas Gohr 'close' => ' ======\n' 11124870174SAndreas Gohr ], 11224870174SAndreas Gohr [ 11320d062caSAndreas Gohr 'type' => 'format', 11420d062caSAndreas Gohr 'title' => $lang['qb_h2'], 11520d062caSAndreas Gohr 'icon' => 'h2.png', 11620d062caSAndreas Gohr 'key' => '2', 11720d062caSAndreas Gohr 'open' => '===== ', 11824870174SAndreas Gohr 'close' => ' =====\n' 11924870174SAndreas Gohr ], 12024870174SAndreas Gohr [ 12120d062caSAndreas Gohr 'type' => 'format', 12220d062caSAndreas Gohr 'title' => $lang['qb_h3'], 12320d062caSAndreas Gohr 'icon' => 'h3.png', 12420d062caSAndreas Gohr 'key' => '3', 12520d062caSAndreas Gohr 'open' => '==== ', 12624870174SAndreas Gohr 'close' => ' ====\n' 12724870174SAndreas Gohr ], 12824870174SAndreas Gohr [ 12920d062caSAndreas Gohr 'type' => 'format', 13020d062caSAndreas Gohr 'title' => $lang['qb_h4'], 13120d062caSAndreas Gohr 'icon' => 'h4.png', 13220d062caSAndreas Gohr 'key' => '4', 13320d062caSAndreas Gohr 'open' => '=== ', 13424870174SAndreas Gohr 'close' => ' ===\n' 13524870174SAndreas Gohr ], 13624870174SAndreas Gohr [ 13720d062caSAndreas Gohr 'type' => 'format', 13820d062caSAndreas Gohr 'title' => $lang['qb_h5'], 13920d062caSAndreas Gohr 'icon' => 'h5.png', 14020d062caSAndreas Gohr 'key' => '5', 14120d062caSAndreas Gohr 'open' => '== ', 14224870174SAndreas Gohr 'close' => ' ==\n' 14324870174SAndreas Gohr ] 14424870174SAndreas Gohr ], 145c4ba149aSAdrian Lang 'block' => true 14624870174SAndreas Gohr ], 14724870174SAndreas Gohr [ 14856dfcc12SAndreas Gohr 'type' => 'linkwiz', 14920d062caSAndreas Gohr 'title' => $lang['qb_link'], 15020d062caSAndreas Gohr 'icon' => 'link.png', 15120d062caSAndreas Gohr 'key' => 'l', 15220d062caSAndreas Gohr 'open' => '[[', 15320d062caSAndreas Gohr 'close' => ']]', 154c4ba149aSAdrian Lang 'block' => false 15524870174SAndreas Gohr ], 15624870174SAndreas Gohr [ 15720d062caSAndreas Gohr 'type' => 'format', 15820d062caSAndreas Gohr 'title' => $lang['qb_extlink'], 15920d062caSAndreas Gohr 'icon' => 'linkextern.png', 16020d062caSAndreas Gohr 'open' => '[[', 16120d062caSAndreas Gohr 'close' => ']]', 16220d062caSAndreas Gohr 'sample' => 'http://example.com|'.$lang['qb_extlink'], 163c4ba149aSAdrian Lang 'block' => false 16424870174SAndreas Gohr ], 16524870174SAndreas Gohr [ 166201ea5f3SAndreas Gohr 'type' => 'formatln', 16720d062caSAndreas Gohr 'title' => $lang['qb_ol'], 16820d062caSAndreas Gohr 'icon' => 'ol.png', 16920d062caSAndreas Gohr 'open' => ' - ', 170201ea5f3SAndreas Gohr 'close' => '', 171a4b53097SAndreas Gohr 'key' => '-', 172c4ba149aSAdrian Lang 'block' => true 17324870174SAndreas Gohr ], 17424870174SAndreas Gohr [ 175201ea5f3SAndreas Gohr 'type' => 'formatln', 17620d062caSAndreas Gohr 'title' => $lang['qb_ul'], 17720d062caSAndreas Gohr 'icon' => 'ul.png', 17820d062caSAndreas Gohr 'open' => ' * ', 179201ea5f3SAndreas Gohr 'close' => '', 180a4b53097SAndreas Gohr 'key' => '.', 181c4ba149aSAdrian Lang 'block' => true 18224870174SAndreas Gohr ], 18324870174SAndreas Gohr [ 18420d062caSAndreas Gohr 'type' => 'insert', 18520d062caSAndreas Gohr 'title' => $lang['qb_hr'], 18620d062caSAndreas Gohr 'icon' => 'hr.png', 187d27d0a5aSGina Haeussge 'insert' => '\n----\n', 188c4ba149aSAdrian Lang 'block' => true 18924870174SAndreas Gohr ], 19024870174SAndreas Gohr [ 191c591aabeSAndreas Gohr 'type' => 'mediapopup', 19220d062caSAndreas Gohr 'title' => $lang['qb_media'], 19320d062caSAndreas Gohr 'icon' => 'image.png', 194de4e429dSAndreas Gohr 'url' => 'lib/exe/mediamanager.php?ns=', 19520d062caSAndreas Gohr 'name' => 'mediaselect', 1963df72098SAndreas Gohr 'options'=> 'width=750,height=500,left=20,top=20,scrollbars=yes,resizable=yes', 197c4ba149aSAdrian Lang 'block' => false 19824870174SAndreas Gohr ], 19924870174SAndreas Gohr [ 20020d062caSAndreas Gohr 'type' => 'picker', 20120d062caSAndreas Gohr 'title' => $lang['qb_smileys'], 20220d062caSAndreas Gohr 'icon' => 'smiley.png', 20320d062caSAndreas Gohr 'list' => getSmileys(), 20420d062caSAndreas Gohr 'icobase'=> 'smileys', 205c4ba149aSAdrian Lang 'block' => false 20624870174SAndreas Gohr ], 20724870174SAndreas Gohr [ 20820d062caSAndreas Gohr 'type' => 'picker', 20920d062caSAndreas Gohr 'title' => $lang['qb_chars'], 21020d062caSAndreas Gohr 'icon' => 'chars.png', 21164159a61SAndreas Gohr 'list' => [ 21264159a61SAndreas Gohr 'À', 'à', 'Á', 'á', 'Â', 'â', 'Ã', 'ã', 'Ä', 'ä', 'Ǎ', 'ǎ', 'Ă', 'ă', 'Å', 'å', 21364159a61SAndreas Gohr 'Ā', 'ā', 'Ą', 'ą', 'Æ', 'æ', 'Ć', 'ć', 'Ç', 'ç', 'Č', 'č', 'Ĉ', 'ĉ', 'Ċ', 'ċ', 21464159a61SAndreas Gohr 'Ð', 'đ', 'ð', 'Ď', 'ď', 'È', 'è', 'É', 'é', 'Ê', 'ê', 'Ë', 'ë', 'Ě', 'ě', 'Ē', 21564159a61SAndreas Gohr 'ē', 'Ė', 'ė', 'Ę', 'ę', 'Ģ', 'ģ', 'Ĝ', 'ĝ', 'Ğ', 'ğ', 'Ġ', 'ġ', 'Ĥ', 'ĥ', 'Ì', 21664159a61SAndreas Gohr 'ì', 'Í', 'í', 'Î', 'î', 'Ï', 'ï', 'Ǐ', 'ǐ', 'Ī', 'ī', 'İ', 'ı', 'Į', 'į', 'Ĵ', 21764159a61SAndreas Gohr 'ĵ', 'Ķ', 'ķ', 'Ĺ', 'ĺ', 'Ļ', 'ļ', 'Ľ', 'ľ', 'Ł', 'ł', 'Ŀ', 'ŀ', 'Ń', 'ń', 'Ñ', 21864159a61SAndreas Gohr 'ñ', 'Ņ', 'ņ', 'Ň', 'ň', 'Ò', 'ò', 'Ó', 'ó', 'Ô', 'ô', 'Õ', 'õ', 'Ö', 'ö', 'Ǒ', 21964159a61SAndreas Gohr 'ǒ', 'Ō', 'ō', 'Ő', 'ő', 'Œ', 'œ', 'Ø', 'ø', 'Ŕ', 'ŕ', 'Ŗ', 'ŗ', 'Ř', 'ř', 'Ś', 22064159a61SAndreas Gohr 'ś', 'Ş', 'ş', 'Š', 'š', 'Ŝ', 'ŝ', 'Ţ', 'ţ', 'Ť', 'ť', 'Ù', 'ù', 'Ú', 'ú', 'Û', 22164159a61SAndreas Gohr 'û', 'Ü', 'ü', 'Ǔ', 'ǔ', 'Ŭ', 'ŭ', 'Ū', 'ū', 'Ů', 'ů', 'ǖ', 'ǘ', 'ǚ', 'ǜ', 'Ų', 22264159a61SAndreas Gohr 'ų', 'Ű', 'ű', 'Ŵ', 'ŵ', 'Ý', 'ý', 'Ÿ', 'ÿ', 'Ŷ', 'ŷ', 'Ź', 'ź', 'Ž', 'ž', 'Ż', 22364159a61SAndreas Gohr 'ż', 'Þ', 'þ', 'ß', 'Ħ', 'ħ', '¿', '¡', '¢', '£', '¤', '¥', '€', '¦', '§', 'ª', 22464159a61SAndreas Gohr '¬', '¯', '°', '±', '÷', '‰', '¼', '½', '¾', '¹', '²', '³', 'µ', '¶', '†', '‡', 22564159a61SAndreas Gohr '·', '•', 'º', '∀', '∂', '∃', 'Ə', 'ə', '∅', '∇', '∈', '∉', '∋', '∏', '∑', '‾', 22664159a61SAndreas Gohr '−', '∗', '×', '⁄', '√', '∝', '∞', '∠', '∧', '∨', '∩', '∪', '∫', '∴', '∼', '≅', 22764159a61SAndreas Gohr '≈', '≠', '≡', '≤', '≥', '⊂', '⊃', '⊄', '⊆', '⊇', '⊕', '⊗', '⊥', '⋅', '◊', '℘', 22864159a61SAndreas Gohr 'ℑ', 'ℜ', 'ℵ', '♠', '♣', '♥', '♦', 'α', 'β', 'Γ', 'γ', 'Δ', 'δ', 'ε', 'ζ', 'η', 22964159a61SAndreas Gohr 'Θ', 'θ', 'ι', 'κ', 'Λ', 'λ', 'μ', 'Ξ', 'ξ', 'Π', 'π', 'ρ', 'Σ', 'σ', 'Τ', 'τ', 23064159a61SAndreas Gohr 'υ', 'Φ', 'φ', 'χ', 'Ψ', 'ψ', 'Ω', 'ω', '★', '☆', '☎', '☚', '☛', '☜', '☝', '☞', 23164159a61SAndreas Gohr '☟', '☹', '☺', '✔', '✘', '„', '“', '”', '‚', '‘', '’', '«', '»', '‹', '›', '—', 23264159a61SAndreas Gohr '–', '…', '←', '↑', '→', '↓', '↔', '⇐', '⇑', '⇒', '⇓', '⇔', '©', '™', '®', '′', 23364159a61SAndreas Gohr '″', '[', ']', '{', '}', '~', '(', ')', '%', '§', '$', '#', '|', '@' 23464159a61SAndreas Gohr ], 235c4ba149aSAdrian Lang 'block' => false 23624870174SAndreas Gohr ], 23724870174SAndreas Gohr [ 238c591aabeSAndreas Gohr 'type' => 'signature', 239c591aabeSAndreas Gohr 'title' => $lang['qb_sig'], 240c591aabeSAndreas Gohr 'icon' => 'sig.png', 241c591aabeSAndreas Gohr 'key' => 'y', 242c4ba149aSAdrian Lang 'block' => false 24324870174SAndreas Gohr ] 24424870174SAndreas Gohr ]); 2458b3b5ebbSEsther Brunner } // end event TOOLBAR_DEFINE default action 2468b3b5ebbSEsther Brunner $evt->advise_after(); 2478b3b5ebbSEsther Brunner unset($evt); 24820d062caSAndreas Gohr 24920d062caSAndreas Gohr // use JSON to build the JavaScript array 250*26dfc232SAndreas Gohr echo "var $varname = ".json_encode($menu, JSON_THROW_ON_ERROR).";\n"; 25120d062caSAndreas Gohr} 25220d062caSAndreas Gohr 25320d062caSAndreas Gohr/** 25420d062caSAndreas Gohr * prepares the signature string as configured in the config 25520d062caSAndreas Gohr * 25620d062caSAndreas Gohr * @author Andreas Gohr <andi@splitbrain.org> 25720d062caSAndreas Gohr */ 258d868eb89SAndreas Gohrfunction toolbar_signature() 259d868eb89SAndreas Gohr{ 26020d062caSAndreas Gohr global $conf; 2611b2abcf9SAndreas Gohr global $INFO; 262585bf44eSChristopher Smith /** @var Input $INPUT */ 263585bf44eSChristopher Smith global $INPUT; 26420d062caSAndreas Gohr 26520d062caSAndreas Gohr $sig = $conf['signature']; 2667883d066SAndreas Gohr $sig = dformat(null, $sig); 267585bf44eSChristopher Smith $sig = str_replace('@USER@', $INPUT->server->str('REMOTE_USER'), $sig); 268c7a4b560SGuillaume Turri if (is_null($INFO)) { 269c7a4b560SGuillaume Turri $sig = str_replace(['@NAME@', '@MAIL@'], '', $sig); 270c7a4b560SGuillaume Turri } else { 271e86df411SMarvin Klein $sig = str_replace('@NAME@', $INFO['userinfo']['name'] ?? "", $sig); 2720519ac41SMarvin Klein $sig = str_replace('@MAIL@', $INFO['userinfo']['mail'] ?? "", $sig); 273c7a4b560SGuillaume Turri } 274f2263577SAndreas Gohr $sig = str_replace('@DATE@', dformat(), $sig); 275462a3baeSPhy $sig = str_replace('\\\\n', '\\n', $sig); 27624870174SAndreas Gohr return json_encode($sig, JSON_THROW_ON_ERROR); 27720d062caSAndreas Gohr} 27820d062caSAndreas Gohr 279e3776c06SMichael Hamann//Setup VIM: ex: et ts=4 : 280