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> 720d062caSAndreas Gohr */ 820d062caSAndreas Gohr 9fa8adffeSAndreas Gohrif(!defined('DOKU_INC')) die('meh.'); 1020d062caSAndreas Gohrrequire_once(DOKU_INC.'inc/JSON.php'); 1120d062caSAndreas Gohr 1220d062caSAndreas Gohr 1320d062caSAndreas Gohr/** 1420d062caSAndreas Gohr * Prepares and prints an JavaScript array with all toolbar buttons 1520d062caSAndreas Gohr * 16db959ae3SAndreas Gohr * @emits TOOLBAR_DEFINE 1720d062caSAndreas Gohr * @param string $varname Name of the JS variable to fill 1820d062caSAndreas Gohr * @author Andreas Gohr <andi@splitbrain.org> 1920d062caSAndreas Gohr */ 2020d062caSAndreas Gohrfunction toolbar_JSdefines($varname){ 2120d062caSAndreas Gohr global $ID; 2220d062caSAndreas Gohr global $conf; 2320d062caSAndreas Gohr global $lang; 2420d062caSAndreas Gohr 258b3b5ebbSEsther Brunner $menu = array(); 268b3b5ebbSEsther Brunner 278b3b5ebbSEsther Brunner $evt = new Doku_Event('TOOLBAR_DEFINE', $menu); 288b3b5ebbSEsther Brunner if ($evt->advise_before()){ 298b3b5ebbSEsther Brunner 3020d062caSAndreas Gohr // build button array 318b3b5ebbSEsther Brunner $menu = array_merge($menu, array( 3220d062caSAndreas Gohr array( 3320d062caSAndreas Gohr 'type' => 'format', 3420d062caSAndreas Gohr 'title' => $lang['qb_bold'], 3520d062caSAndreas Gohr 'icon' => 'bold.png', 3620d062caSAndreas Gohr 'key' => 'b', 3720d062caSAndreas Gohr 'open' => '**', 3820d062caSAndreas Gohr 'close' => '**', 39*c4ba149aSAdrian Lang 'block' => false 4020d062caSAndreas Gohr ), 4120d062caSAndreas Gohr array( 4220d062caSAndreas Gohr 'type' => 'format', 4320d062caSAndreas Gohr 'title' => $lang['qb_italic'], 4420d062caSAndreas Gohr 'icon' => 'italic.png', 4520d062caSAndreas Gohr 'key' => 'i', 4620d062caSAndreas Gohr 'open' => '//', 4720d062caSAndreas Gohr 'close' => '//', 48*c4ba149aSAdrian Lang 'block' => false 4920d062caSAndreas Gohr ), 5020d062caSAndreas Gohr array( 5120d062caSAndreas Gohr 'type' => 'format', 5220d062caSAndreas Gohr 'title' => $lang['qb_underl'], 5320d062caSAndreas Gohr 'icon' => 'underline.png', 5420d062caSAndreas Gohr 'key' => 'u', 5520d062caSAndreas Gohr 'open' => '__', 5620d062caSAndreas Gohr 'close' => '__', 57*c4ba149aSAdrian Lang 'block' => false 5820d062caSAndreas Gohr ), 5920d062caSAndreas Gohr array( 6020d062caSAndreas Gohr 'type' => 'format', 6120d062caSAndreas Gohr 'title' => $lang['qb_code'], 6220d062caSAndreas Gohr 'icon' => 'mono.png', 6320d062caSAndreas Gohr 'key' => 'c', 6420d062caSAndreas Gohr 'open' => "''", 6520d062caSAndreas Gohr 'close' => "''", 66*c4ba149aSAdrian Lang 'block' => false 6720d062caSAndreas Gohr ), 6820d062caSAndreas Gohr array( 6920d062caSAndreas Gohr 'type' => 'format', 7020d062caSAndreas Gohr 'title' => $lang['qb_strike'], 7120d062caSAndreas Gohr 'icon' => 'strike.png', 7220d062caSAndreas Gohr 'key' => 'd', 7320d062caSAndreas Gohr 'open' => '<del>', 74b0bf105aSAndreas Gohr 'close' => '</del>', 75*c4ba149aSAdrian Lang 'block' => false 7620d062caSAndreas Gohr ), 77a2be6cd9SAndreas Gohr 78a2be6cd9SAndreas Gohr array( 79a2be6cd9SAndreas Gohr 'type' => 'autohead', 80a2be6cd9SAndreas Gohr 'title' => $lang['qb_hequal'], 81a2be6cd9SAndreas Gohr 'icon' => 'hequal.png', 82af14334bSAndreas Gohr 'key' => '8', 83a2be6cd9SAndreas Gohr 'text' => $lang['qb_h'], 84*c4ba149aSAdrian Lang 'mod' => 0, 85*c4ba149aSAdrian Lang 'block' => true 86a2be6cd9SAndreas Gohr ), 87a2be6cd9SAndreas Gohr array( 88a2be6cd9SAndreas Gohr 'type' => 'autohead', 89a2be6cd9SAndreas Gohr 'title' => $lang['qb_hminus'], 90a2be6cd9SAndreas Gohr 'icon' => 'hminus.png', 91af14334bSAndreas Gohr 'key' => '9', 92a2be6cd9SAndreas Gohr 'text' => $lang['qb_h'], 93*c4ba149aSAdrian Lang 'mod' => 1, 94*c4ba149aSAdrian Lang 'block' => true 95a2be6cd9SAndreas Gohr ), 967ba342d5Smatthiasgrimm array( 977ba342d5Smatthiasgrimm 'type' => 'autohead', 987ba342d5Smatthiasgrimm 'title' => $lang['qb_hplus'], 997ba342d5Smatthiasgrimm 'icon' => 'hplus.png', 100af14334bSAndreas Gohr 'key' => '0', 1017ba342d5Smatthiasgrimm 'text' => $lang['qb_h'], 102*c4ba149aSAdrian Lang 'mod' => -1, 103*c4ba149aSAdrian Lang 'block' => true 1047ba342d5Smatthiasgrimm ), 105a2be6cd9SAndreas Gohr 106a2be6cd9SAndreas Gohr array( 107a2be6cd9SAndreas Gohr 'type' => 'picker', 108a2be6cd9SAndreas Gohr 'title' => $lang['qb_hs'], 109a2be6cd9SAndreas Gohr 'icon' => 'h.png', 11073a509d7SAndreas Gohr 'class' => 'pk_hl', 111a2be6cd9SAndreas Gohr 'list' => array( 11220d062caSAndreas Gohr array( 11320d062caSAndreas Gohr 'type' => 'format', 11420d062caSAndreas Gohr 'title' => $lang['qb_h1'], 11520d062caSAndreas Gohr 'icon' => 'h1.png', 11620d062caSAndreas Gohr 'key' => '1', 11720d062caSAndreas Gohr 'open' => '====== ', 11820d062caSAndreas Gohr 'close' => ' ======\n', 11920d062caSAndreas Gohr ), 12020d062caSAndreas Gohr array( 12120d062caSAndreas Gohr 'type' => 'format', 12220d062caSAndreas Gohr 'title' => $lang['qb_h2'], 12320d062caSAndreas Gohr 'icon' => 'h2.png', 12420d062caSAndreas Gohr 'key' => '2', 12520d062caSAndreas Gohr 'open' => '===== ', 12620d062caSAndreas Gohr 'close' => ' =====\n', 12720d062caSAndreas Gohr ), 12820d062caSAndreas Gohr array( 12920d062caSAndreas Gohr 'type' => 'format', 13020d062caSAndreas Gohr 'title' => $lang['qb_h3'], 13120d062caSAndreas Gohr 'icon' => 'h3.png', 13220d062caSAndreas Gohr 'key' => '3', 13320d062caSAndreas Gohr 'open' => '==== ', 13420d062caSAndreas Gohr 'close' => ' ====\n', 13520d062caSAndreas Gohr ), 13620d062caSAndreas Gohr array( 13720d062caSAndreas Gohr 'type' => 'format', 13820d062caSAndreas Gohr 'title' => $lang['qb_h4'], 13920d062caSAndreas Gohr 'icon' => 'h4.png', 14020d062caSAndreas Gohr 'key' => '4', 14120d062caSAndreas Gohr 'open' => '=== ', 14220d062caSAndreas Gohr 'close' => ' ===\n', 14320d062caSAndreas Gohr ), 14420d062caSAndreas Gohr array( 14520d062caSAndreas Gohr 'type' => 'format', 14620d062caSAndreas Gohr 'title' => $lang['qb_h5'], 14720d062caSAndreas Gohr 'icon' => 'h5.png', 14820d062caSAndreas Gohr 'key' => '5', 14920d062caSAndreas Gohr 'open' => '== ', 15020d062caSAndreas Gohr 'close' => ' ==\n', 15120d062caSAndreas Gohr ), 152*c4ba149aSAdrian Lang ), 153*c4ba149aSAdrian Lang 'block' => true 154a2be6cd9SAndreas Gohr ), 155a2be6cd9SAndreas Gohr 15620d062caSAndreas Gohr array( 15756dfcc12SAndreas Gohr 'type' => 'linkwiz', 15820d062caSAndreas Gohr 'title' => $lang['qb_link'], 15920d062caSAndreas Gohr 'icon' => 'link.png', 16020d062caSAndreas Gohr 'key' => 'l', 16120d062caSAndreas Gohr 'open' => '[[', 16220d062caSAndreas Gohr 'close' => ']]', 163*c4ba149aSAdrian Lang 'block' => false 16420d062caSAndreas Gohr ), 16520d062caSAndreas Gohr array( 16620d062caSAndreas Gohr 'type' => 'format', 16720d062caSAndreas Gohr 'title' => $lang['qb_extlink'], 16820d062caSAndreas Gohr 'icon' => 'linkextern.png', 16920d062caSAndreas Gohr 'open' => '[[', 17020d062caSAndreas Gohr 'close' => ']]', 17120d062caSAndreas Gohr 'sample' => 'http://example.com|'.$lang['qb_extlink'], 172*c4ba149aSAdrian Lang 'block' => false 17320d062caSAndreas Gohr ), 17420d062caSAndreas Gohr array( 175201ea5f3SAndreas Gohr 'type' => 'formatln', 17620d062caSAndreas Gohr 'title' => $lang['qb_ol'], 17720d062caSAndreas Gohr 'icon' => 'ol.png', 17820d062caSAndreas Gohr 'open' => ' - ', 179201ea5f3SAndreas Gohr 'close' => '', 180a4b53097SAndreas Gohr 'key' => '-', 181*c4ba149aSAdrian Lang 'block' => true 18220d062caSAndreas Gohr ), 18320d062caSAndreas Gohr array( 184201ea5f3SAndreas Gohr 'type' => 'formatln', 18520d062caSAndreas Gohr 'title' => $lang['qb_ul'], 18620d062caSAndreas Gohr 'icon' => 'ul.png', 18720d062caSAndreas Gohr 'open' => ' * ', 188201ea5f3SAndreas Gohr 'close' => '', 189a4b53097SAndreas Gohr 'key' => '.', 190*c4ba149aSAdrian Lang 'block' => true 19120d062caSAndreas Gohr ), 19220d062caSAndreas Gohr array( 19320d062caSAndreas Gohr 'type' => 'insert', 19420d062caSAndreas Gohr 'title' => $lang['qb_hr'], 19520d062caSAndreas Gohr 'icon' => 'hr.png', 196d27d0a5aSGina Haeussge 'insert' => '\n----\n', 197*c4ba149aSAdrian Lang 'block' => true 19820d062caSAndreas Gohr ), 19920d062caSAndreas Gohr array( 200c591aabeSAndreas Gohr 'type' => 'mediapopup', 20120d062caSAndreas Gohr 'title' => $lang['qb_media'], 20220d062caSAndreas Gohr 'icon' => 'image.png', 203de4e429dSAndreas Gohr 'url' => 'lib/exe/mediamanager.php?ns=', 20420d062caSAndreas Gohr 'name' => 'mediaselect', 2053df72098SAndreas Gohr 'options'=> 'width=750,height=500,left=20,top=20,scrollbars=yes,resizable=yes', 206*c4ba149aSAdrian Lang 'block' => false 20720d062caSAndreas Gohr ), 20820d062caSAndreas Gohr array( 20920d062caSAndreas Gohr 'type' => 'picker', 21020d062caSAndreas Gohr 'title' => $lang['qb_smileys'], 21120d062caSAndreas Gohr 'icon' => 'smiley.png', 21220d062caSAndreas Gohr 'list' => getSmileys(), 21320d062caSAndreas Gohr 'icobase'=> 'smileys', 214*c4ba149aSAdrian Lang 'block' => false 21520d062caSAndreas Gohr ), 21620d062caSAndreas Gohr array( 21720d062caSAndreas Gohr 'type' => 'picker', 21820d062caSAndreas Gohr 'title' => $lang['qb_chars'], 21920d062caSAndreas Gohr 'icon' => 'chars.png', 22003c89b24SAndreas Gohr 'list' => explode(' ','À à Á á  â à ã Ä ä Ǎ ǎ Ă ă Å å Ā ā Ą ą Æ æ Ć ć Ç ç Č č Ĉ ĉ Ċ ċ Ð đ ð Ď ď È è É é Ê ê Ë ë Ě ě Ē ē Ė ė Ę ę Ģ ģ Ĝ ĝ Ğ ğ Ġ ġ Ĥ ĥ Ì ì Í í Î î Ï ï Ǐ ǐ Ī ī İ ı Į į Ĵ ĵ Ķ ķ Ĺ ĺ Ļ ļ Ľ ľ Ł ł Ŀ ŀ Ń ń Ñ ñ Ņ ņ Ň ň Ò ò Ó ó Ô ô Õ õ Ö ö Ǒ ǒ Ō ō Ő ő Œ œ Ø ø Ŕ ŕ Ŗ ŗ Ř ř Ś ś Ş ş Š š Ŝ ŝ Ţ ţ Ť ť Ù ù Ú ú Û û Ü ü Ǔ ǔ Ŭ ŭ Ū ū Ů ů ǖ ǘ ǚ ǜ Ų ų Ű ű Ŵ ŵ Ý ý Ÿ ÿ Ŷ ŷ Ź ź Ž ž Ż ż Þ þ ß Ħ ħ ¿ ¡ ¢ £ ¤ ¥ € ¦ § ª ¬ ¯ ° ± ÷ ‰ ¼ ½ ¾ ¹ ² ³ µ ¶ † ‡ · • º ∀ ∂ ∃ Ə ə ∅ ∇ ∈ ∉ ∋ ∏ ∑ ‾ − ∗ √ ∝ ∞ ∠ ∧ ∨ ∩ ∪ ∫ ∴ ∼ ≅ ≈ ≠ ≡ ≤ ≥ ⊂ ⊃ ⊄ ⊆ ⊇ ⊕ ⊗ ⊥ ⋅ ◊ ℘ ℑ ℜ ℵ ♠ ♣ ♥ ♦ α β Γ γ Δ δ ε ζ η Θ θ ι κ Λ λ μ Ξ ξ Π π ρ Σ σ Τ τ υ Φ φ χ Ψ ψ Ω ω ★ ☆ ☎ ☚ ☛ ☜ ☝ ☞ ☟ ☹ ☺ ✔ ✘ × „ “ ” ‚ ‘ ’ « » ‹ › — – … ← ↑ → ↓ ↔ ⇐ ⇑ ⇒ ⇓ ⇔ © ™ ® ′ ″ [ ] { } ~ ( ) % § $ # | @'), 221*c4ba149aSAdrian Lang 'block' => false 22220d062caSAndreas Gohr ), 223c591aabeSAndreas Gohr array( 224c591aabeSAndreas Gohr 'type' => 'signature', 225c591aabeSAndreas Gohr 'title' => $lang['qb_sig'], 226c591aabeSAndreas Gohr 'icon' => 'sig.png', 227c591aabeSAndreas Gohr 'key' => 'y', 228*c4ba149aSAdrian Lang 'block' => false 229c591aabeSAndreas Gohr ), 2308b3b5ebbSEsther Brunner )); 2318b3b5ebbSEsther Brunner } // end event TOOLBAR_DEFINE default action 2328b3b5ebbSEsther Brunner $evt->advise_after(); 2338b3b5ebbSEsther Brunner unset($evt); 23420d062caSAndreas Gohr 23520d062caSAndreas Gohr // use JSON to build the JavaScript array 23620d062caSAndreas Gohr $json = new JSON(); 23720d062caSAndreas Gohr print "var $varname = ".$json->encode($menu).";\n"; 23820d062caSAndreas Gohr} 23920d062caSAndreas Gohr 24020d062caSAndreas Gohr/** 24120d062caSAndreas Gohr * prepares the signature string as configured in the config 24220d062caSAndreas Gohr * 24320d062caSAndreas Gohr * @author Andreas Gohr <andi@splitbrain.org> 24420d062caSAndreas Gohr */ 24520d062caSAndreas Gohrfunction toolbar_signature(){ 24620d062caSAndreas Gohr global $conf; 2471b2abcf9SAndreas Gohr global $INFO; 24820d062caSAndreas Gohr 24920d062caSAndreas Gohr $sig = $conf['signature']; 25020d062caSAndreas Gohr $sig = strftime($sig); 25120d062caSAndreas Gohr $sig = str_replace('@USER@',$_SERVER['REMOTE_USER'],$sig); 2521b2abcf9SAndreas Gohr $sig = str_replace('@NAME@',$INFO['userinfo']['name'],$sig); 2531b2abcf9SAndreas Gohr $sig = str_replace('@MAIL@',$INFO['userinfo']['mail'],$sig); 254f2263577SAndreas Gohr $sig = str_replace('@DATE@',dformat(),$sig); 255c591aabeSAndreas Gohr $sig = str_replace('\\\\n','\\n',addslashes($sig)); 25620d062caSAndreas Gohr return $sig; 25720d062caSAndreas Gohr} 25820d062caSAndreas Gohr 25920d062caSAndreas Gohr//Setup VIM: ex: et ts=4 enc=utf-8 : 260