xref: /dokuwiki/inc/toolbar.php (revision e86df411bec221b3bca58042d835cf301ac7bcd1)
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 */
1620d062caSAndreas Gohrfunction toolbar_JSdefines($varname){
1720d062caSAndreas Gohr    global $lang;
1820d062caSAndreas Gohr
198b3b5ebbSEsther Brunner    $menu = array();
208b3b5ebbSEsther Brunner
21e1d9dcc8SAndreas Gohr    $evt = new Event('TOOLBAR_DEFINE', $menu);
228b3b5ebbSEsther Brunner    if ($evt->advise_before()){
238b3b5ebbSEsther Brunner
2420d062caSAndreas Gohr        // build button array
258b3b5ebbSEsther Brunner        $menu = array_merge($menu, array(
2620d062caSAndreas Gohr           array(
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
3420d062caSAndreas Gohr                ),
3520d062caSAndreas Gohr           array(
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
4320d062caSAndreas Gohr                ),
4420d062caSAndreas Gohr           array(
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
5220d062caSAndreas Gohr                ),
5320d062caSAndreas Gohr           array(
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
6120d062caSAndreas Gohr                ),
6220d062caSAndreas Gohr           array(
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
7020d062caSAndreas Gohr                ),
71a2be6cd9SAndreas Gohr
72a2be6cd9SAndreas Gohr           array(
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
80a2be6cd9SAndreas Gohr               ),
81a2be6cd9SAndreas Gohr           array(
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
89a2be6cd9SAndreas Gohr               ),
907ba342d5Smatthiasgrimm           array(
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
987ba342d5Smatthiasgrimm               ),
99a2be6cd9SAndreas Gohr
100a2be6cd9SAndreas Gohr           array(
101a2be6cd9SAndreas Gohr                'type'   => 'picker',
102a2be6cd9SAndreas Gohr                'title'  => $lang['qb_hs'],
103a2be6cd9SAndreas Gohr                'icon'   => 'h.png',
10473a509d7SAndreas Gohr                'class'  => 'pk_hl',
105a2be6cd9SAndreas Gohr                'list'   => array(
10620d062caSAndreas Gohr                               array(
10720d062caSAndreas Gohr                                    'type'   => 'format',
10820d062caSAndreas Gohr                                    'title'  => $lang['qb_h1'],
10920d062caSAndreas Gohr                                    'icon'   => 'h1.png',
11020d062caSAndreas Gohr                                    'key'    => '1',
11120d062caSAndreas Gohr                                    'open'   => '====== ',
11220d062caSAndreas Gohr                                    'close'  => ' ======\n',
11320d062caSAndreas Gohr                                    ),
11420d062caSAndreas Gohr                               array(
11520d062caSAndreas Gohr                                    'type'   => 'format',
11620d062caSAndreas Gohr                                    'title'  => $lang['qb_h2'],
11720d062caSAndreas Gohr                                    'icon'   => 'h2.png',
11820d062caSAndreas Gohr                                    'key'    => '2',
11920d062caSAndreas Gohr                                    'open'   => '===== ',
12020d062caSAndreas Gohr                                    'close'  => ' =====\n',
12120d062caSAndreas Gohr                                    ),
12220d062caSAndreas Gohr                               array(
12320d062caSAndreas Gohr                                    'type'   => 'format',
12420d062caSAndreas Gohr                                    'title'  => $lang['qb_h3'],
12520d062caSAndreas Gohr                                    'icon'   => 'h3.png',
12620d062caSAndreas Gohr                                    'key'    => '3',
12720d062caSAndreas Gohr                                    'open'   => '==== ',
12820d062caSAndreas Gohr                                    'close'  => ' ====\n',
12920d062caSAndreas Gohr                                    ),
13020d062caSAndreas Gohr                               array(
13120d062caSAndreas Gohr                                    'type'   => 'format',
13220d062caSAndreas Gohr                                    'title'  => $lang['qb_h4'],
13320d062caSAndreas Gohr                                    'icon'   => 'h4.png',
13420d062caSAndreas Gohr                                    'key'    => '4',
13520d062caSAndreas Gohr                                    'open'   => '=== ',
13620d062caSAndreas Gohr                                    'close'  => ' ===\n',
13720d062caSAndreas Gohr                                    ),
13820d062caSAndreas Gohr                               array(
13920d062caSAndreas Gohr                                    'type'   => 'format',
14020d062caSAndreas Gohr                                    'title'  => $lang['qb_h5'],
14120d062caSAndreas Gohr                                    'icon'   => 'h5.png',
14220d062caSAndreas Gohr                                    'key'    => '5',
14320d062caSAndreas Gohr                                    'open'   => '== ',
14420d062caSAndreas Gohr                                    'close'  => ' ==\n',
14520d062caSAndreas Gohr                                    ),
146c4ba149aSAdrian Lang                            ),
147c4ba149aSAdrian Lang                'block'  => true
148a2be6cd9SAndreas Gohr                ),
149a2be6cd9SAndreas Gohr
15020d062caSAndreas Gohr           array(
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
15820d062caSAndreas Gohr                ),
15920d062caSAndreas Gohr           array(
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
16720d062caSAndreas Gohr                ),
16820d062caSAndreas Gohr           array(
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
17620d062caSAndreas Gohr                ),
17720d062caSAndreas Gohr           array(
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
18520d062caSAndreas Gohr                ),
18620d062caSAndreas Gohr           array(
18720d062caSAndreas Gohr                'type'   => 'insert',
18820d062caSAndreas Gohr                'title'  => $lang['qb_hr'],
18920d062caSAndreas Gohr                'icon'   => 'hr.png',
190d27d0a5aSGina Haeussge                'insert' => '\n----\n',
191c4ba149aSAdrian Lang                'block'  => true
19220d062caSAndreas Gohr                ),
19320d062caSAndreas Gohr           array(
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
20120d062caSAndreas Gohr                ),
20220d062caSAndreas Gohr          array(
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
20920d062caSAndreas Gohr               ),
21020d062caSAndreas Gohr          array(
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
23920d062caSAndreas Gohr               ),
240c591aabeSAndreas Gohr          array(
241c591aabeSAndreas Gohr                'type'   => 'signature',
242c591aabeSAndreas Gohr                'title'  => $lang['qb_sig'],
243c591aabeSAndreas Gohr                'icon'   => 'sig.png',
244c591aabeSAndreas Gohr                'key'    => 'y',
245c4ba149aSAdrian Lang                'block'  => false
246c591aabeSAndreas Gohr               ),
2478b3b5ebbSEsther Brunner        ));
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
253d443762bSAndreas Gohr    print "var $varname = ".json_encode($menu).";\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 */
26120d062caSAndreas Gohrfunction toolbar_signature(){
26220d062caSAndreas Gohr    global $conf;
2631b2abcf9SAndreas Gohr    global $INFO;
264585bf44eSChristopher Smith    /** @var Input $INPUT */
265585bf44eSChristopher Smith    global $INPUT;
26620d062caSAndreas Gohr
26720d062caSAndreas Gohr    $sig = $conf['signature'];
2687883d066SAndreas Gohr    $sig = dformat(null,$sig);
269585bf44eSChristopher Smith    $sig = str_replace('@USER@',$INPUT->server->str('REMOTE_USER'),$sig);
270*e86df411SMarvin Klein    $sig = str_replace('@NAME@', $INFO['userinfo']['name'] ?? "" ,$sig);
271e945440aSMarvin Klein    $sig = str_replace('@MAIL@',is_null($INFO) ? "" : $INFO['userinfo']['mail'],$sig);
272f2263577SAndreas Gohr    $sig = str_replace('@DATE@',dformat(),$sig);
273462a3baeSPhy    $sig = str_replace('\\\\n','\\n',$sig);
27498169a0fSAndreas Gohr    return json_encode($sig);
27520d062caSAndreas Gohr}
27620d062caSAndreas Gohr
277e3776c06SMichael Hamann//Setup VIM: ex: et ts=4 :
278