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