120d062caSAndreas Gohr<?php 2*d4f83172SAndreas Gohr 320d062caSAndreas Gohr/** 420d062caSAndreas Gohr * Editing toolbar functions 520d062caSAndreas Gohr * 620d062caSAndreas Gohr * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 720d062caSAndreas Gohr * @author Andreas Gohr <andi@splitbrain.org> 8*d4f83172SAndreas Gohr */ 9*d4f83172SAndreas Gohr 10*d4f83172SAndreas Gohruse dokuwiki\Extension\Event; 1120d062caSAndreas Gohr 1220d062caSAndreas Gohr/** 1320d062caSAndreas Gohr * Prepares and prints an JavaScript array with all toolbar buttons 1420d062caSAndreas Gohr * 15db959ae3SAndreas Gohr * @emits TOOLBAR_DEFINE 1620d062caSAndreas Gohr * @param string $varname Name of the JS variable to fill 1720d062caSAndreas Gohr * @author Andreas Gohr <andi@splitbrain.org> 1820d062caSAndreas Gohr */ 19d868eb89SAndreas Gohrfunction toolbar_JSdefines($varname) 20d868eb89SAndreas Gohr{ 2120d062caSAndreas Gohr global $lang; 2220d062caSAndreas Gohr 2324870174SAndreas Gohr $menu = []; 248b3b5ebbSEsther Brunner 25e1d9dcc8SAndreas Gohr $evt = new Event('TOOLBAR_DEFINE', $menu); 268b3b5ebbSEsther Brunner if ($evt->advise_before()) { 2720d062caSAndreas Gohr // build button array 2824870174SAndreas Gohr $menu = array_merge($menu, [ 2924870174SAndreas Gohr [ 3020d062caSAndreas Gohr 'type' => 'format', 3120d062caSAndreas Gohr 'title' => $lang['qb_bold'], 3220d062caSAndreas Gohr 'icon' => 'bold.png', 3320d062caSAndreas Gohr 'key' => 'b', 3420d062caSAndreas Gohr 'open' => '**', 3520d062caSAndreas Gohr 'close' => '**', 36c4ba149aSAdrian Lang 'block' => false 3724870174SAndreas Gohr ], 3824870174SAndreas Gohr [ 3920d062caSAndreas Gohr 'type' => 'format', 4020d062caSAndreas Gohr 'title' => $lang['qb_italic'], 4120d062caSAndreas Gohr 'icon' => 'italic.png', 4220d062caSAndreas Gohr 'key' => 'i', 4320d062caSAndreas Gohr 'open' => '//', 4420d062caSAndreas Gohr 'close' => '//', 45c4ba149aSAdrian Lang 'block' => false 4624870174SAndreas Gohr ], 4724870174SAndreas Gohr [ 4820d062caSAndreas Gohr 'type' => 'format', 4920d062caSAndreas Gohr 'title' => $lang['qb_underl'], 5020d062caSAndreas Gohr 'icon' => 'underline.png', 5120d062caSAndreas Gohr 'key' => 'u', 5220d062caSAndreas Gohr 'open' => '__', 5320d062caSAndreas Gohr 'close' => '__', 54c4ba149aSAdrian Lang 'block' => false 5524870174SAndreas Gohr ], 5624870174SAndreas Gohr [ 5720d062caSAndreas Gohr 'type' => 'format', 5820d062caSAndreas Gohr 'title' => $lang['qb_code'], 5920d062caSAndreas Gohr 'icon' => 'mono.png', 602bc9e793SAndreas Gohr 'key' => 'm', 6120d062caSAndreas Gohr 'open' => "''", 6220d062caSAndreas Gohr 'close' => "''", 63c4ba149aSAdrian Lang 'block' => false 6424870174SAndreas Gohr ], 6524870174SAndreas Gohr [ 6620d062caSAndreas Gohr 'type' => 'format', 6720d062caSAndreas Gohr 'title' => $lang['qb_strike'], 6820d062caSAndreas Gohr 'icon' => 'strike.png', 6920d062caSAndreas Gohr 'key' => 'd', 7020d062caSAndreas Gohr 'open' => '<del>', 71b0bf105aSAndreas Gohr 'close' => '</del>', 72c4ba149aSAdrian Lang 'block' => false 7324870174SAndreas Gohr ], 7424870174SAndreas Gohr [ 75a2be6cd9SAndreas Gohr 'type' => 'autohead', 76a2be6cd9SAndreas Gohr 'title' => $lang['qb_hequal'], 77a2be6cd9SAndreas Gohr 'icon' => 'hequal.png', 78af14334bSAndreas Gohr 'key' => '8', 79a2be6cd9SAndreas Gohr 'text' => $lang['qb_h'], 80c4ba149aSAdrian Lang 'mod' => 0, 81c4ba149aSAdrian Lang 'block' => true 8224870174SAndreas Gohr ], 8324870174SAndreas Gohr [ 84a2be6cd9SAndreas Gohr 'type' => 'autohead', 85a2be6cd9SAndreas Gohr 'title' => $lang['qb_hminus'], 86a2be6cd9SAndreas Gohr 'icon' => 'hminus.png', 87af14334bSAndreas Gohr 'key' => '9', 88a2be6cd9SAndreas Gohr 'text' => $lang['qb_h'], 89c4ba149aSAdrian Lang 'mod' => 1, 90c4ba149aSAdrian Lang 'block' => true 9124870174SAndreas Gohr ], 9224870174SAndreas Gohr [ 937ba342d5Smatthiasgrimm 'type' => 'autohead', 947ba342d5Smatthiasgrimm 'title' => $lang['qb_hplus'], 957ba342d5Smatthiasgrimm 'icon' => 'hplus.png', 96af14334bSAndreas Gohr 'key' => '0', 977ba342d5Smatthiasgrimm 'text' => $lang['qb_h'], 98c4ba149aSAdrian Lang 'mod' => -1, 99c4ba149aSAdrian Lang 'block' => true 10024870174SAndreas Gohr ], 10124870174SAndreas Gohr [ 102a2be6cd9SAndreas Gohr 'type' => 'picker', 103a2be6cd9SAndreas Gohr 'title' => $lang['qb_hs'], 104a2be6cd9SAndreas Gohr 'icon' => 'h.png', 10573a509d7SAndreas Gohr 'class' => 'pk_hl', 10624870174SAndreas Gohr 'list' => [ 10724870174SAndreas Gohr [ 10820d062caSAndreas Gohr 'type' => 'format', 10920d062caSAndreas Gohr 'title' => $lang['qb_h1'], 11020d062caSAndreas Gohr 'icon' => 'h1.png', 11120d062caSAndreas Gohr 'key' => '1', 11220d062caSAndreas Gohr 'open' => '====== ', 11324870174SAndreas Gohr 'close' => ' ======\n' 11424870174SAndreas Gohr ], 11524870174SAndreas Gohr [ 11620d062caSAndreas Gohr 'type' => 'format', 11720d062caSAndreas Gohr 'title' => $lang['qb_h2'], 11820d062caSAndreas Gohr 'icon' => 'h2.png', 11920d062caSAndreas Gohr 'key' => '2', 12020d062caSAndreas Gohr 'open' => '===== ', 12124870174SAndreas Gohr 'close' => ' =====\n' 12224870174SAndreas Gohr ], 12324870174SAndreas Gohr [ 12420d062caSAndreas Gohr 'type' => 'format', 12520d062caSAndreas Gohr 'title' => $lang['qb_h3'], 12620d062caSAndreas Gohr 'icon' => 'h3.png', 12720d062caSAndreas Gohr 'key' => '3', 12820d062caSAndreas Gohr 'open' => '==== ', 12924870174SAndreas Gohr 'close' => ' ====\n' 13024870174SAndreas Gohr ], 13124870174SAndreas Gohr [ 13220d062caSAndreas Gohr 'type' => 'format', 13320d062caSAndreas Gohr 'title' => $lang['qb_h4'], 13420d062caSAndreas Gohr 'icon' => 'h4.png', 13520d062caSAndreas Gohr 'key' => '4', 13620d062caSAndreas Gohr 'open' => '=== ', 13724870174SAndreas Gohr 'close' => ' ===\n' 13824870174SAndreas Gohr ], 13924870174SAndreas Gohr [ 14020d062caSAndreas Gohr 'type' => 'format', 14120d062caSAndreas Gohr 'title' => $lang['qb_h5'], 14220d062caSAndreas Gohr 'icon' => 'h5.png', 14320d062caSAndreas Gohr 'key' => '5', 14420d062caSAndreas Gohr 'open' => '== ', 14524870174SAndreas Gohr 'close' => ' ==\n' 14624870174SAndreas Gohr ] 14724870174SAndreas Gohr ], 148c4ba149aSAdrian Lang 'block' => true 14924870174SAndreas Gohr ], 15024870174SAndreas Gohr [ 15156dfcc12SAndreas Gohr 'type' => 'linkwiz', 15220d062caSAndreas Gohr 'title' => $lang['qb_link'], 15320d062caSAndreas Gohr 'icon' => 'link.png', 15420d062caSAndreas Gohr 'key' => 'l', 15520d062caSAndreas Gohr 'open' => '[[', 15620d062caSAndreas Gohr 'close' => ']]', 157c4ba149aSAdrian Lang 'block' => false 15824870174SAndreas Gohr ], 15924870174SAndreas Gohr [ 16020d062caSAndreas Gohr 'type' => 'format', 16120d062caSAndreas Gohr 'title' => $lang['qb_extlink'], 16220d062caSAndreas Gohr 'icon' => 'linkextern.png', 16320d062caSAndreas Gohr 'open' => '[[', 16420d062caSAndreas Gohr 'close' => ']]', 16520d062caSAndreas Gohr 'sample' => 'http://example.com|' . $lang['qb_extlink'], 166c4ba149aSAdrian Lang 'block' => false 16724870174SAndreas Gohr ], 16824870174SAndreas Gohr [ 169201ea5f3SAndreas Gohr 'type' => 'formatln', 17020d062caSAndreas Gohr 'title' => $lang['qb_ol'], 17120d062caSAndreas Gohr 'icon' => 'ol.png', 17220d062caSAndreas Gohr 'open' => ' - ', 173201ea5f3SAndreas Gohr 'close' => '', 174a4b53097SAndreas Gohr 'key' => '-', 175c4ba149aSAdrian Lang 'block' => true 17624870174SAndreas Gohr ], 17724870174SAndreas Gohr [ 178201ea5f3SAndreas Gohr 'type' => 'formatln', 17920d062caSAndreas Gohr 'title' => $lang['qb_ul'], 18020d062caSAndreas Gohr 'icon' => 'ul.png', 18120d062caSAndreas Gohr 'open' => ' * ', 182201ea5f3SAndreas Gohr 'close' => '', 183a4b53097SAndreas Gohr 'key' => '.', 184c4ba149aSAdrian Lang 'block' => true 18524870174SAndreas Gohr ], 18624870174SAndreas Gohr [ 18720d062caSAndreas Gohr 'type' => 'insert', 18820d062caSAndreas Gohr 'title' => $lang['qb_hr'], 18920d062caSAndreas Gohr 'icon' => 'hr.png', 190d27d0a5aSGina Haeussge 'insert' => '\n----\n', 191c4ba149aSAdrian Lang 'block' => true 19224870174SAndreas Gohr ], 19324870174SAndreas Gohr [ 194c591aabeSAndreas Gohr 'type' => 'mediapopup', 19520d062caSAndreas Gohr 'title' => $lang['qb_media'], 19620d062caSAndreas Gohr 'icon' => 'image.png', 197de4e429dSAndreas Gohr 'url' => 'lib/exe/mediamanager.php?ns=', 19820d062caSAndreas Gohr 'name' => 'mediaselect', 1993df72098SAndreas Gohr 'options' => 'width=750,height=500,left=20,top=20,scrollbars=yes,resizable=yes', 200c4ba149aSAdrian Lang 'block' => false 20124870174SAndreas Gohr ], 20224870174SAndreas Gohr [ 20320d062caSAndreas Gohr 'type' => 'picker', 20420d062caSAndreas Gohr 'title' => $lang['qb_smileys'], 20520d062caSAndreas Gohr 'icon' => 'smiley.png', 20620d062caSAndreas Gohr 'list' => getSmileys(), 20720d062caSAndreas Gohr 'icobase' => 'smileys', 208c4ba149aSAdrian Lang 'block' => false 20924870174SAndreas Gohr ], 21024870174SAndreas Gohr [ 21120d062caSAndreas Gohr 'type' => 'picker', 21220d062caSAndreas Gohr 'title' => $lang['qb_chars'], 21320d062caSAndreas Gohr 'icon' => 'chars.png', 21464159a61SAndreas Gohr 'list' => [ 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 '☟', '☹', '☺', '✔', '✘', '„', '“', '”', '‚', '‘', '’', '«', '»', '‹', '›', '—', 23564159a61SAndreas Gohr '–', '…', '←', '↑', '→', '↓', '↔', '⇐', '⇑', '⇒', '⇓', '⇔', '©', '™', '®', '′', 23664159a61SAndreas Gohr '″', '[', ']', '{', '}', '~', '(', ')', '%', '§', '$', '#', '|', '@' 23764159a61SAndreas Gohr ], 238c4ba149aSAdrian Lang 'block' => false 23924870174SAndreas Gohr ], 24024870174SAndreas Gohr [ 241c591aabeSAndreas Gohr 'type' => 'signature', 242c591aabeSAndreas Gohr 'title' => $lang['qb_sig'], 243c591aabeSAndreas Gohr 'icon' => 'sig.png', 244c591aabeSAndreas Gohr 'key' => 'y', 245c4ba149aSAdrian Lang 'block' => false 24624870174SAndreas Gohr ] 24724870174SAndreas Gohr ]); 2488b3b5ebbSEsther Brunner } // end event TOOLBAR_DEFINE default action 2498b3b5ebbSEsther Brunner $evt->advise_after(); 2508b3b5ebbSEsther Brunner unset($evt); 25120d062caSAndreas Gohr 25220d062caSAndreas Gohr // use JSON to build the JavaScript array 25326dfc232SAndreas Gohr echo "var $varname = " . json_encode($menu, JSON_THROW_ON_ERROR) . ";\n"; 25420d062caSAndreas Gohr} 25520d062caSAndreas Gohr 25620d062caSAndreas Gohr/** 25720d062caSAndreas Gohr * prepares the signature string as configured in the config 25820d062caSAndreas Gohr * 25920d062caSAndreas Gohr * @author Andreas Gohr <andi@splitbrain.org> 26020d062caSAndreas Gohr */ 261d868eb89SAndreas Gohrfunction toolbar_signature() 262d868eb89SAndreas Gohr{ 26320d062caSAndreas Gohr global $conf; 2641b2abcf9SAndreas Gohr global $INFO; 265585bf44eSChristopher Smith /** @var Input $INPUT */ 266585bf44eSChristopher Smith global $INPUT; 26720d062caSAndreas Gohr 26820d062caSAndreas Gohr $sig = $conf['signature']; 2697883d066SAndreas Gohr $sig = dformat(null, $sig); 270585bf44eSChristopher Smith $sig = str_replace('@USER@', $INPUT->server->str('REMOTE_USER'), $sig); 271c7a4b560SGuillaume Turri if (is_null($INFO)) { 272c7a4b560SGuillaume Turri $sig = str_replace(['@NAME@', '@MAIL@'], '', $sig); 273c7a4b560SGuillaume Turri } else { 274e86df411SMarvin Klein $sig = str_replace('@NAME@', $INFO['userinfo']['name'] ?? "", $sig); 2750519ac41SMarvin Klein $sig = str_replace('@MAIL@', $INFO['userinfo']['mail'] ?? "", $sig); 276c7a4b560SGuillaume Turri } 277f2263577SAndreas Gohr $sig = str_replace('@DATE@', dformat(), $sig); 278462a3baeSPhy $sig = str_replace('\\\\n', '\\n', $sig); 27924870174SAndreas Gohr return json_encode($sig, JSON_THROW_ON_ERROR); 28020d062caSAndreas Gohr} 28120d062caSAndreas Gohr 282e3776c06SMichael Hamann//Setup VIM: ex: et ts=4 : 283