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 */ 16*d868eb89SAndreas Gohrfunction toolbar_JSdefines($varname) 17*d868eb89SAndreas 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()){ 248b3b5ebbSEsther Brunner 2520d062caSAndreas Gohr // build button array 2624870174SAndreas Gohr $menu = array_merge($menu, [ 2724870174SAndreas Gohr [ 2820d062caSAndreas Gohr 'type' => 'format', 2920d062caSAndreas Gohr 'title' => $lang['qb_bold'], 3020d062caSAndreas Gohr 'icon' => 'bold.png', 3120d062caSAndreas Gohr 'key' => 'b', 3220d062caSAndreas Gohr 'open' => '**', 3320d062caSAndreas Gohr 'close' => '**', 34c4ba149aSAdrian Lang 'block' => false 3524870174SAndreas Gohr ], 3624870174SAndreas Gohr [ 3720d062caSAndreas Gohr 'type' => 'format', 3820d062caSAndreas Gohr 'title' => $lang['qb_italic'], 3920d062caSAndreas Gohr 'icon' => 'italic.png', 4020d062caSAndreas Gohr 'key' => 'i', 4120d062caSAndreas Gohr 'open' => '//', 4220d062caSAndreas Gohr 'close' => '//', 43c4ba149aSAdrian Lang 'block' => false 4424870174SAndreas Gohr ], 4524870174SAndreas Gohr [ 4620d062caSAndreas Gohr 'type' => 'format', 4720d062caSAndreas Gohr 'title' => $lang['qb_underl'], 4820d062caSAndreas Gohr 'icon' => 'underline.png', 4920d062caSAndreas Gohr 'key' => 'u', 5020d062caSAndreas Gohr 'open' => '__', 5120d062caSAndreas Gohr 'close' => '__', 52c4ba149aSAdrian Lang 'block' => false 5324870174SAndreas Gohr ], 5424870174SAndreas Gohr [ 5520d062caSAndreas Gohr 'type' => 'format', 5620d062caSAndreas Gohr 'title' => $lang['qb_code'], 5720d062caSAndreas Gohr 'icon' => 'mono.png', 582bc9e793SAndreas Gohr 'key' => 'm', 5920d062caSAndreas Gohr 'open' => "''", 6020d062caSAndreas Gohr 'close' => "''", 61c4ba149aSAdrian Lang 'block' => false 6224870174SAndreas Gohr ], 6324870174SAndreas Gohr [ 6420d062caSAndreas Gohr 'type' => 'format', 6520d062caSAndreas Gohr 'title' => $lang['qb_strike'], 6620d062caSAndreas Gohr 'icon' => 'strike.png', 6720d062caSAndreas Gohr 'key' => 'd', 6820d062caSAndreas Gohr 'open' => '<del>', 69b0bf105aSAndreas Gohr 'close' => '</del>', 70c4ba149aSAdrian Lang 'block' => false 7124870174SAndreas Gohr ], 7224870174SAndreas Gohr [ 73a2be6cd9SAndreas Gohr 'type' => 'autohead', 74a2be6cd9SAndreas Gohr 'title' => $lang['qb_hequal'], 75a2be6cd9SAndreas Gohr 'icon' => 'hequal.png', 76af14334bSAndreas Gohr 'key' => '8', 77a2be6cd9SAndreas Gohr 'text' => $lang['qb_h'], 78c4ba149aSAdrian Lang 'mod' => 0, 79c4ba149aSAdrian Lang 'block' => true 8024870174SAndreas Gohr ], 8124870174SAndreas Gohr [ 82a2be6cd9SAndreas Gohr 'type' => 'autohead', 83a2be6cd9SAndreas Gohr 'title' => $lang['qb_hminus'], 84a2be6cd9SAndreas Gohr 'icon' => 'hminus.png', 85af14334bSAndreas Gohr 'key' => '9', 86a2be6cd9SAndreas Gohr 'text' => $lang['qb_h'], 87c4ba149aSAdrian Lang 'mod' => 1, 88c4ba149aSAdrian Lang 'block' => true 8924870174SAndreas Gohr ], 9024870174SAndreas Gohr [ 917ba342d5Smatthiasgrimm 'type' => 'autohead', 927ba342d5Smatthiasgrimm 'title' => $lang['qb_hplus'], 937ba342d5Smatthiasgrimm 'icon' => 'hplus.png', 94af14334bSAndreas Gohr 'key' => '0', 957ba342d5Smatthiasgrimm 'text' => $lang['qb_h'], 96c4ba149aSAdrian Lang 'mod' => -1, 97c4ba149aSAdrian Lang 'block' => true 9824870174SAndreas Gohr ], 9924870174SAndreas Gohr [ 100a2be6cd9SAndreas Gohr 'type' => 'picker', 101a2be6cd9SAndreas Gohr 'title' => $lang['qb_hs'], 102a2be6cd9SAndreas Gohr 'icon' => 'h.png', 10373a509d7SAndreas Gohr 'class' => 'pk_hl', 10424870174SAndreas Gohr 'list' => [ 10524870174SAndreas Gohr [ 10620d062caSAndreas Gohr 'type' => 'format', 10720d062caSAndreas Gohr 'title' => $lang['qb_h1'], 10820d062caSAndreas Gohr 'icon' => 'h1.png', 10920d062caSAndreas Gohr 'key' => '1', 11020d062caSAndreas Gohr 'open' => '====== ', 11124870174SAndreas Gohr 'close' => ' ======\n' 11224870174SAndreas Gohr ], 11324870174SAndreas Gohr [ 11420d062caSAndreas Gohr 'type' => 'format', 11520d062caSAndreas Gohr 'title' => $lang['qb_h2'], 11620d062caSAndreas Gohr 'icon' => 'h2.png', 11720d062caSAndreas Gohr 'key' => '2', 11820d062caSAndreas Gohr 'open' => '===== ', 11924870174SAndreas Gohr 'close' => ' =====\n' 12024870174SAndreas Gohr ], 12124870174SAndreas Gohr [ 12220d062caSAndreas Gohr 'type' => 'format', 12320d062caSAndreas Gohr 'title' => $lang['qb_h3'], 12420d062caSAndreas Gohr 'icon' => 'h3.png', 12520d062caSAndreas Gohr 'key' => '3', 12620d062caSAndreas Gohr 'open' => '==== ', 12724870174SAndreas Gohr 'close' => ' ====\n' 12824870174SAndreas Gohr ], 12924870174SAndreas Gohr [ 13020d062caSAndreas Gohr 'type' => 'format', 13120d062caSAndreas Gohr 'title' => $lang['qb_h4'], 13220d062caSAndreas Gohr 'icon' => 'h4.png', 13320d062caSAndreas Gohr 'key' => '4', 13420d062caSAndreas Gohr 'open' => '=== ', 13524870174SAndreas Gohr 'close' => ' ===\n' 13624870174SAndreas Gohr ], 13724870174SAndreas Gohr [ 13820d062caSAndreas Gohr 'type' => 'format', 13920d062caSAndreas Gohr 'title' => $lang['qb_h5'], 14020d062caSAndreas Gohr 'icon' => 'h5.png', 14120d062caSAndreas Gohr 'key' => '5', 14220d062caSAndreas Gohr 'open' => '== ', 14324870174SAndreas Gohr 'close' => ' ==\n' 14424870174SAndreas Gohr ] 14524870174SAndreas Gohr ], 146c4ba149aSAdrian Lang 'block' => true 14724870174SAndreas Gohr ], 14824870174SAndreas Gohr [ 14956dfcc12SAndreas Gohr 'type' => 'linkwiz', 15020d062caSAndreas Gohr 'title' => $lang['qb_link'], 15120d062caSAndreas Gohr 'icon' => 'link.png', 15220d062caSAndreas Gohr 'key' => 'l', 15320d062caSAndreas Gohr 'open' => '[[', 15420d062caSAndreas Gohr 'close' => ']]', 155c4ba149aSAdrian Lang 'block' => false 15624870174SAndreas Gohr ], 15724870174SAndreas Gohr [ 15820d062caSAndreas Gohr 'type' => 'format', 15920d062caSAndreas Gohr 'title' => $lang['qb_extlink'], 16020d062caSAndreas Gohr 'icon' => 'linkextern.png', 16120d062caSAndreas Gohr 'open' => '[[', 16220d062caSAndreas Gohr 'close' => ']]', 16320d062caSAndreas Gohr 'sample' => 'http://example.com|'.$lang['qb_extlink'], 164c4ba149aSAdrian Lang 'block' => false 16524870174SAndreas Gohr ], 16624870174SAndreas Gohr [ 167201ea5f3SAndreas Gohr 'type' => 'formatln', 16820d062caSAndreas Gohr 'title' => $lang['qb_ol'], 16920d062caSAndreas Gohr 'icon' => 'ol.png', 17020d062caSAndreas Gohr 'open' => ' - ', 171201ea5f3SAndreas Gohr 'close' => '', 172a4b53097SAndreas Gohr 'key' => '-', 173c4ba149aSAdrian Lang 'block' => true 17424870174SAndreas Gohr ], 17524870174SAndreas Gohr [ 176201ea5f3SAndreas Gohr 'type' => 'formatln', 17720d062caSAndreas Gohr 'title' => $lang['qb_ul'], 17820d062caSAndreas Gohr 'icon' => 'ul.png', 17920d062caSAndreas Gohr 'open' => ' * ', 180201ea5f3SAndreas Gohr 'close' => '', 181a4b53097SAndreas Gohr 'key' => '.', 182c4ba149aSAdrian Lang 'block' => true 18324870174SAndreas Gohr ], 18424870174SAndreas Gohr [ 18520d062caSAndreas Gohr 'type' => 'insert', 18620d062caSAndreas Gohr 'title' => $lang['qb_hr'], 18720d062caSAndreas Gohr 'icon' => 'hr.png', 188d27d0a5aSGina Haeussge 'insert' => '\n----\n', 189c4ba149aSAdrian Lang 'block' => true 19024870174SAndreas Gohr ], 19124870174SAndreas Gohr [ 192c591aabeSAndreas Gohr 'type' => 'mediapopup', 19320d062caSAndreas Gohr 'title' => $lang['qb_media'], 19420d062caSAndreas Gohr 'icon' => 'image.png', 195de4e429dSAndreas Gohr 'url' => 'lib/exe/mediamanager.php?ns=', 19620d062caSAndreas Gohr 'name' => 'mediaselect', 1973df72098SAndreas Gohr 'options'=> 'width=750,height=500,left=20,top=20,scrollbars=yes,resizable=yes', 198c4ba149aSAdrian Lang 'block' => false 19924870174SAndreas Gohr ], 20024870174SAndreas Gohr [ 20120d062caSAndreas Gohr 'type' => 'picker', 20220d062caSAndreas Gohr 'title' => $lang['qb_smileys'], 20320d062caSAndreas Gohr 'icon' => 'smiley.png', 20420d062caSAndreas Gohr 'list' => getSmileys(), 20520d062caSAndreas Gohr 'icobase'=> 'smileys', 206c4ba149aSAdrian Lang 'block' => false 20724870174SAndreas Gohr ], 20824870174SAndreas Gohr [ 20920d062caSAndreas Gohr 'type' => 'picker', 21020d062caSAndreas Gohr 'title' => $lang['qb_chars'], 21120d062caSAndreas Gohr 'icon' => 'chars.png', 21264159a61SAndreas Gohr 'list' => [ 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 '″', '[', ']', '{', '}', '~', '(', ')', '%', '§', '$', '#', '|', '@' 23564159a61SAndreas Gohr ], 236c4ba149aSAdrian Lang 'block' => false 23724870174SAndreas Gohr ], 23824870174SAndreas Gohr [ 239c591aabeSAndreas Gohr 'type' => 'signature', 240c591aabeSAndreas Gohr 'title' => $lang['qb_sig'], 241c591aabeSAndreas Gohr 'icon' => 'sig.png', 242c591aabeSAndreas Gohr 'key' => 'y', 243c4ba149aSAdrian Lang 'block' => false 24424870174SAndreas Gohr ] 24524870174SAndreas Gohr ]); 2468b3b5ebbSEsther Brunner } // end event TOOLBAR_DEFINE default action 2478b3b5ebbSEsther Brunner $evt->advise_after(); 2488b3b5ebbSEsther Brunner unset($evt); 24920d062caSAndreas Gohr 25020d062caSAndreas Gohr // use JSON to build the JavaScript array 25124870174SAndreas Gohr print "var $varname = ".json_encode($menu, JSON_THROW_ON_ERROR).";\n"; 25220d062caSAndreas Gohr} 25320d062caSAndreas Gohr 25420d062caSAndreas Gohr/** 25520d062caSAndreas Gohr * prepares the signature string as configured in the config 25620d062caSAndreas Gohr * 25720d062caSAndreas Gohr * @author Andreas Gohr <andi@splitbrain.org> 25820d062caSAndreas Gohr */ 259*d868eb89SAndreas Gohrfunction toolbar_signature() 260*d868eb89SAndreas Gohr{ 26120d062caSAndreas Gohr global $conf; 2621b2abcf9SAndreas Gohr global $INFO; 263585bf44eSChristopher Smith /** @var Input $INPUT */ 264585bf44eSChristopher Smith global $INPUT; 26520d062caSAndreas Gohr 26620d062caSAndreas Gohr $sig = $conf['signature']; 2677883d066SAndreas Gohr $sig = dformat(null, $sig); 268585bf44eSChristopher Smith $sig = str_replace('@USER@', $INPUT->server->str('REMOTE_USER'), $sig); 269c7a4b560SGuillaume Turri if (is_null($INFO)) { 270c7a4b560SGuillaume Turri $sig = str_replace(['@NAME@', '@MAIL@'], '', $sig); 271c7a4b560SGuillaume Turri } else { 272e86df411SMarvin Klein $sig = str_replace('@NAME@', $INFO['userinfo']['name'] ?? "", $sig); 2730519ac41SMarvin Klein $sig = str_replace('@MAIL@', $INFO['userinfo']['mail'] ?? "", $sig); 274c7a4b560SGuillaume Turri } 275f2263577SAndreas Gohr $sig = str_replace('@DATE@', dformat(), $sig); 276462a3baeSPhy $sig = str_replace('\\\\n', '\\n', $sig); 27724870174SAndreas Gohr return json_encode($sig, JSON_THROW_ON_ERROR); 27820d062caSAndreas Gohr} 27920d062caSAndreas Gohr 280e3776c06SMichael Hamann//Setup VIM: ex: et ts=4 : 281