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