fix slash regression in toolbar signature #3045
[dokuwiki.git] / inc / toolbar.php
blob7151202f2486ca2b7bd65a28570373262c7cb58b
1 <?php
2 /**
3 * Editing toolbar functions
5 * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
6 * @author Andreas Gohr <andi@splitbrain.org>
7 */use dokuwiki\Extension\Event;
9 /**
10 * Prepares and prints an JavaScript array with all toolbar buttons
12 * @emits TOOLBAR_DEFINE
13 * @param string $varname Name of the JS variable to fill
14 * @author Andreas Gohr <andi@splitbrain.org>
16 function toolbar_JSdefines($varname){
17 global $lang;
19 $menu = array();
21 $evt = new Event('TOOLBAR_DEFINE', $menu);
22 if ($evt->advise_before()){
24 // build button array
25 $menu = array_merge($menu, array(
26 array(
27 'type' => 'format',
28 'title' => $lang['qb_bold'],
29 'icon' => 'bold.png',
30 'key' => 'b',
31 'open' => '**',
32 'close' => '**',
33 'block' => false
35 array(
36 'type' => 'format',
37 'title' => $lang['qb_italic'],
38 'icon' => 'italic.png',
39 'key' => 'i',
40 'open' => '//',
41 'close' => '//',
42 'block' => false
44 array(
45 'type' => 'format',
46 'title' => $lang['qb_underl'],
47 'icon' => 'underline.png',
48 'key' => 'u',
49 'open' => '__',
50 'close' => '__',
51 'block' => false
53 array(
54 'type' => 'format',
55 'title' => $lang['qb_code'],
56 'icon' => 'mono.png',
57 'key' => 'm',
58 'open' => "''",
59 'close' => "''",
60 'block' => false
62 array(
63 'type' => 'format',
64 'title' => $lang['qb_strike'],
65 'icon' => 'strike.png',
66 'key' => 'd',
67 'open' => '<del>',
68 'close' => '</del>',
69 'block' => false
72 array(
73 'type' => 'autohead',
74 'title' => $lang['qb_hequal'],
75 'icon' => 'hequal.png',
76 'key' => '8',
77 'text' => $lang['qb_h'],
78 'mod' => 0,
79 'block' => true
81 array(
82 'type' => 'autohead',
83 'title' => $lang['qb_hminus'],
84 'icon' => 'hminus.png',
85 'key' => '9',
86 'text' => $lang['qb_h'],
87 'mod' => 1,
88 'block' => true
90 array(
91 'type' => 'autohead',
92 'title' => $lang['qb_hplus'],
93 'icon' => 'hplus.png',
94 'key' => '0',
95 'text' => $lang['qb_h'],
96 'mod' => -1,
97 'block' => true
100 array(
101 'type' => 'picker',
102 'title' => $lang['qb_hs'],
103 'icon' => 'h.png',
104 'class' => 'pk_hl',
105 'list' => array(
106 array(
107 'type' => 'format',
108 'title' => $lang['qb_h1'],
109 'icon' => 'h1.png',
110 'key' => '1',
111 'open' => '====== ',
112 'close' => ' ======\n',
114 array(
115 'type' => 'format',
116 'title' => $lang['qb_h2'],
117 'icon' => 'h2.png',
118 'key' => '2',
119 'open' => '===== ',
120 'close' => ' =====\n',
122 array(
123 'type' => 'format',
124 'title' => $lang['qb_h3'],
125 'icon' => 'h3.png',
126 'key' => '3',
127 'open' => '==== ',
128 'close' => ' ====\n',
130 array(
131 'type' => 'format',
132 'title' => $lang['qb_h4'],
133 'icon' => 'h4.png',
134 'key' => '4',
135 'open' => '=== ',
136 'close' => ' ===\n',
138 array(
139 'type' => 'format',
140 'title' => $lang['qb_h5'],
141 'icon' => 'h5.png',
142 'key' => '5',
143 'open' => '== ',
144 'close' => ' ==\n',
147 'block' => true
150 array(
151 'type' => 'linkwiz',
152 'title' => $lang['qb_link'],
153 'icon' => 'link.png',
154 'key' => 'l',
155 'open' => '[[',
156 'close' => ']]',
157 'block' => false
159 array(
160 'type' => 'format',
161 'title' => $lang['qb_extlink'],
162 'icon' => 'linkextern.png',
163 'open' => '[[',
164 'close' => ']]',
165 'sample' => 'http://example.com|'.$lang['qb_extlink'],
166 'block' => false
168 array(
169 'type' => 'formatln',
170 'title' => $lang['qb_ol'],
171 'icon' => 'ol.png',
172 'open' => ' - ',
173 'close' => '',
174 'key' => '-',
175 'block' => true
177 array(
178 'type' => 'formatln',
179 'title' => $lang['qb_ul'],
180 'icon' => 'ul.png',
181 'open' => ' * ',
182 'close' => '',
183 'key' => '.',
184 'block' => true
186 array(
187 'type' => 'insert',
188 'title' => $lang['qb_hr'],
189 'icon' => 'hr.png',
190 'insert' => '\n----\n',
191 'block' => true
193 array(
194 'type' => 'mediapopup',
195 'title' => $lang['qb_media'],
196 'icon' => 'image.png',
197 'url' => 'lib/exe/mediamanager.php?ns=',
198 'name' => 'mediaselect',
199 'options'=> 'width=750,height=500,left=20,top=20,scrollbars=yes,resizable=yes',
200 'block' => false
202 array(
203 'type' => 'picker',
204 'title' => $lang['qb_smileys'],
205 'icon' => 'smiley.png',
206 'list' => getSmileys(),
207 'icobase'=> 'smileys',
208 'block' => false
210 array(
211 'type' => 'picker',
212 'title' => $lang['qb_chars'],
213 'icon' => 'chars.png',
214 'list' => [
215 'À', 'à', 'Á', 'á', 'Â', 'â', 'Ã', 'ã', 'Ä', 'ä', 'Ǎ', 'ǎ', 'Ă', 'ă', 'Å', 'å',
216 'Ā', 'ā', 'Ą', 'ą', 'Æ', 'æ', 'Ć', 'ć', 'Ç', 'ç', 'Č', 'č', 'Ĉ', 'ĉ', 'Ċ', 'ċ',
217 'Ð', 'đ', 'ð', 'Ď', 'ď', 'È', 'è', 'É', 'é', 'Ê', 'ê', 'Ë', 'ë', 'Ě', 'ě', 'Ē',
218 'ē', 'Ė', 'ė', 'Ę', 'ę', 'Ģ', 'ģ', 'Ĝ', 'ĝ', 'Ğ', 'ğ', 'Ġ', 'ġ', 'Ĥ', 'ĥ', 'Ì',
219 'ì', 'Í', 'í', 'Î', 'î', 'Ï', 'ï', 'Ǐ', 'ǐ', 'Ī', 'ī', 'İ', 'ı', 'Į', 'į', 'Ĵ',
220 'ĵ', 'Ķ', 'ķ', 'Ĺ', 'ĺ', 'Ļ', 'ļ', 'Ľ', 'ľ', 'Ł', 'ł', 'Ŀ', 'ŀ', 'Ń', 'ń', 'Ñ',
221 'ñ', 'Ņ', 'ņ', 'Ň', 'ň', 'Ò', 'ò', 'Ó', 'ó', 'Ô', 'ô', 'Õ', 'õ', 'Ö', 'ö', 'Ǒ',
222 'ǒ', 'Ō', 'ō', 'Ő', 'ő', 'Œ', 'œ', 'Ø', 'ø', 'Ŕ', 'ŕ', 'Ŗ', 'ŗ', 'Ř', 'ř', 'Ś',
223 'ś', 'Ş', 'ş', 'Š', 'š', 'Ŝ', 'ŝ', 'Ţ', 'ţ', 'Ť', 'ť', 'Ù', 'ù', 'Ú', 'ú', 'Û',
224 'û', 'Ü', 'ü', 'Ǔ', 'ǔ', 'Ŭ', 'ŭ', 'Ū', 'ū', 'Ů', 'ů', 'ǖ', 'ǘ', 'ǚ', 'ǜ', 'Ų',
225 'ų', 'Ű', 'ű', 'Ŵ', 'ŵ', 'Ý', 'ý', 'Ÿ', 'ÿ', 'Ŷ', 'ŷ', 'Ź', 'ź', 'Ž', 'ž', 'Ż',
226 'ż', 'Þ', 'þ', 'ß', 'Ħ', 'ħ', '¿', '¡', '¢', '£', '¤', '¥', '€', '¦', '§', 'ª',
227 '¬', '¯', '°', '±', '÷', '‰', '¼', '½', '¾', '¹', '²', '³', 'µ', '¶', '†', '‡',
228 '·', '•', 'º', '∀', '∂', '∃', 'Ə', 'ə', '∅', '∇', '∈', '∉', '∋', '∏', '∑', '‾',
229 '−', '∗', '×', '⁄', '√', '∝', '∞', '∠', '∧', '∨', '∩', '∪', '∫', '∴', '∼', '≅',
230 '≈', '≠', '≡', '≤', '≥', '⊂', '⊃', '⊄', '⊆', '⊇', '⊕', '⊗', '⊥', '⋅', '◊', '℘',
231 'ℑ', 'ℜ', 'ℵ', '♠', '♣', '♥', '♦', 'α', 'β', 'Γ', 'γ', 'Δ', 'δ', 'ε', 'ζ', 'η',
232 'Θ', 'θ', 'ι', 'κ', 'Λ', 'λ', 'μ', 'Ξ', 'ξ', 'Π', 'π', 'ρ', 'Σ', 'σ', 'Τ', 'τ',
233 'υ', 'Φ', 'φ', 'χ', 'Ψ', 'ψ', 'Ω', 'ω', '★', '☆', '☎', '☚', '☛', '☜', '☝', '☞',
234 '☟', '☹', '☺', '✔', '✘', '„', '“', '”', '‚', '‘', '’', '«', '»', '‹', '›', '—',
235 '–', '…', '←', '↑', '→', '↓', '↔', '⇐', '⇑', '⇒', '⇓', '⇔', '©', '™', '®', '′',
236 '″', '[', ']', '{', '}', '~', '(', ')', '%', '§', '$', '#', '|', '@'
238 'block' => false
240 array(
241 'type' => 'signature',
242 'title' => $lang['qb_sig'],
243 'icon' => 'sig.png',
244 'key' => 'y',
245 'block' => false
248 } // end event TOOLBAR_DEFINE default action
249 $evt->advise_after();
250 unset($evt);
252 // use JSON to build the JavaScript array
253 print "var $varname = ".json_encode($menu).";\n";
257 * prepares the signature string as configured in the config
259 * @author Andreas Gohr <andi@splitbrain.org>
261 function toolbar_signature(){
262 global $conf;
263 global $INFO;
264 /** @var Input $INPUT */
265 global $INPUT;
267 $sig = $conf['signature'];
268 $sig = dformat(null,$sig);
269 $sig = str_replace('@USER@',$INPUT->server->str('REMOTE_USER'),$sig);
270 $sig = str_replace('@NAME@',$INFO['userinfo']['name'],$sig);
271 $sig = str_replace('@MAIL@',$INFO['userinfo']['mail'],$sig);
272 $sig = str_replace('@DATE@',dformat(),$sig);
273 $sig = str_replace('\\\\n','\\n',$sig);
274 return json_encode($sig);
277 //Setup VIM: ex: et ts=4 :