Gebruikershulpmiddelen

Site-hulpmiddelen


bridge:troeftekens-in-dokuwiki

Verschillen

Dit geeft de verschillen weer tussen de geselecteerde revisie en de huidige revisie van de pagina.

Link naar deze vergelijking

Beide kanten vorige revisieVorige revisie
Volgende revisie
Vorige revisie
bridge:troeftekens-in-dokuwiki [2020/12/19 17:14] – oude revisie hersteld (2007/08/08 22:35) 31.40.208.98bridge:troeftekens-in-dokuwiki [2021/03/13 00:03] (huidige) – Externe bewerking 127.0.0.1
Regel 1: Regel 1:
 ====== Troef tekens in Dokuwiki ====== ====== Troef tekens in Dokuwiki ======
  
-Troeftekens lopen niet lekker in Dokuwiki. Het kan via smileys, zoals op [[.:sampiemon.xs4all.nl:wiki:bridge]]. Rendert traag, werkt niet in kopjes, en past zich niet aan de fontgrootte aan (geen probleem, het werkt toch niet in kopjes). Het is daarentegen simpel te implementeren en werkt op alle grafische browsers. 
  
-Een alternatieve oplossing gaat via entities.conf, daar kun je vervangingen definiëren. Een voorbeeld:+===== Troef tekens beschikbaar maken =====
  
-<code> 
-[s]     <font size="+1" color="black">&spades;</font> 
-[h]     <font size="+1" color="red">&hearts;</font> 
-[r]     <font size="+1" color="red">&diams;</font> 
-[k]     <font size="+1" color="black">&clubs;</font> 
-</code> 
  
-Het probleem van deze methode is dat de parser van Dokuwiki entities.conf zo ongeveer alleen voor platte tekst gebruikt. Op veel plaatsen (in elk geval de kopjes weer) wordt niet vervangen.+Troef tekens lopen niet lekker in Dokuwiki. Er zijn globaal gesproken drie mogelijkheden om troef tekens te gebruiken. 
 +  - Smileys 
 +  - Entities 
 +  - UTF karakters
  
 +Op alledrie de mogelijkheden wordt hieronder ingegaan.
  
 +==== Smileys ====
  
 +Dit is werkend te zien op [[sampiemon>biedsysteem|de site van Hans]]. Rendert traag (alleen merkbaar voor grote documenten), werkt niet in kopjes, en past zich niet aan de fontgrootte aan (geen probleem, het werkt toch niet in kopjes). Het is daarentegen simpel te implementeren en werkt op alle grafische browsers. Op tekstbrowsers worden de troeftekens in principe vervangen door letters.
  
-===== Knoppen en keyboard shortcuts in de Dokuwiki editor maken =====+==== Entities ====
  
 +Een alternatieve oplossing gaat via entities.conf, daar kun je vervangingen definiëren. Een voorbeeld:
  
-Beide voorgaande oplossingen hebben als nadeel dat zij niet goed combineren met de DokuTexit plugin voor export naar LaTeX/PDF (ze werken wel met het alternatief pdfex). Het laatste alternatief, de troef tekens via knoppen en de toets combinaties beschikbaar maken op de wiki, is wel te combineren met DokuTexit. Dit is met afstand de ingewikkeldste oplossing. Om de troef tekens te gebruiken in de editor moeten drie dingen gebeuren: +<code> 
-  - De volgende pngtjes moeten worden gekopieerd naar /usr/share/dokuwiki/lib/images/toolbar. +[s]     <font size="+1" color="black">&spades;</font
-    * {{http://www.vdmeulen.net/wiki/lib/images/toolbar/clubs.png}} (klaveren) +[h]     <font size="+1color="red">&hearts;</font
-    * {{http://www.vdmeulen.net/wiki/lib/images/toolbar/diamonds.png}} (ruiten) +[r    <font size="+1" color="red">&diams;</font
-    * {{http://www.vdmeulen.net/wiki/lib/images/toolbar/hearts.png}} (harten) +[k    <font size="+1" color="black">&clubs;</font>
-    * {{http://www.vdmeulen.net/wiki/lib/images/toolbar/spades.png}} (schoppen) +
-  - /usr/share/docuwiki/inc/toolbar.php worden aangepast. Het volgende stuk code moet worden ingevoegd: <code php+
-       array( +
-            'type'   => 'insert', +
-            'title'  => 'klaveren', +
-            'icon'   => 'clubs.png', +
-            'insert' => html_entity_decode('&clubs;', ENT_QUOTES, 'UTF-8'), +
-            'key'    => 'k', +
-            ), +
-       array( +
-            'type'   => 'insert', +
-            'title'  => 'ruiten', +
-            'icon'   => 'diamonds.png', +
-            'insert' => html_entity_decode('&diams;', ENT_QUOTES, 'UTF-8'), +
-            'key'    => 'r', +
-            ), +
-       array( +
-            'type'   => 'insert', +
-            'title'  => 'harten', +
-            'icon'   => 'hearts.png', +
-            'insert' => html_entity_decode('&hearts;', ENT_QUOTES, 'UTF-8'), +
-            'key'    => 'h', +
-            ), +
-       array( +
-            'type'   => 'insert', +
-            'title'  => 'schoppen', +
-            'icon'   => 'spades.png', +
-            'insert' => html_entity_decode('&spades;', ENT_QUOTES, 'UTF-8'), +
-            'key'    => 's', +
-            ), +
-</code>De complete toolbar.php:<code php+
-<?php +
-/** +
- * Editing toolbar functions +
- * +
- * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html) +
- * @author     Andreas Gohr <andi@splitbrain.org> +
- */ +
- +
-  if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../').'/'); +
- +
-require_once(DOKU_INC.'inc/JSON.php'); +
- +
- +
-/** +
- * Prepares and prints an JavaScript array with all toolbar buttons +
- * +
- * @todo add toolbar plugins +
- * @param  string $varname Name of the JS variable to fill +
- * @author Andreas Gohr <andi@splitbrain.org> +
- */ +
-function toolbar_JSdefines($varname){ +
-    global $ID; +
-    global $conf; +
-    global $lang; +
- +
-    // build button array +
-    $menu array( +
-       array( +
-            'type'   => 'format', +
-            'title'  => $lang['qb_bold'], +
-            'icon'   => 'bold.png', +
-            'key'    => 'b', +
-            'open'   => '**', +
-            'close'  => '**', +
-            ), +
-       array( +
-            'type'   => 'format', +
-            'title'  => $lang['qb_italic'], +
-            'icon'   => 'italic.png', +
-            'key'    => 'i', +
-            'open'   => '//', +
-            'close'  => '//', +
-            ), +
-       array( +
-            'type'   => 'format', +
-            'title'  => $lang['qb_underl'], +
-            'icon'   => 'underline.png', +
-            'key'    => 'u', +
-            'open'   => '__', +
-            'close'  => '__', +
-            ), +
-       array( +
-            'type'   => 'format', +
-            'title'  => $lang['qb_code'], +
-            'icon'   => 'mono.png', +
-            'key'    => 'c', +
-            'open'   => "''"+
-            'close'  ="''"+
-            ), +
-       array( +
-            'type'   ='format', +
-            'title'  => $lang['qb_strike'], +
-            'icon'   => 'strike.png', +
-            'key'    => 'd', +
-            'open'  => '<del>', +
-            'close'   => '</del>', +
-            ), +
-       array( +
-            'type'   => 'format', +
-            'title'  => $lang['qb_h1']+
-            'icon'   => 'h1.png', +
-            'key'    => '1', +
-            'open'   => '====== ', +
-            'close'  => ' ======\n', +
-            ), +
-       array( +
-            'type'   => 'format', +
-            'title'  => $lang['qb_h2'], +
-            'icon'   => 'h2.png', +
-            'key'    => '2', +
-            'open'   => '===== ', +
-            'close'  => ' =====\n', +
-            ), +
-       array( +
-            'type'   => 'format', +
-            'title'  => $lang['qb_h3'], +
-            'icon'   => 'h3.png', +
-            'key'    => '3', +
-            'open'   => '==== ', +
-            'close'  => ' ====\n', +
-            ), +
-       array( +
-            'type'   => 'format', +
-            'title'  => $lang['qb_h4'], +
-            'icon'   => 'h4.png', +
-            'key'    => '4', +
-            'open'   => '=== ', +
-            'close'  => ' ===\n', +
-            ), +
-       array( +
-            'type'   => 'format', +
-            'title'  => $lang['qb_h5'], +
-            'icon'   => 'h5.png', +
-            'key'    => '5', +
-            'open'   => '== ', +
-            'close'  => ' ==\n', +
-            ), +
-       array( +
-            'type'   => 'format', +
-            'title'  => $lang['qb_link'], +
-            'icon'   => 'link.png', +
-            'key'    => 'l', +
-            'open'   => '[[close]]', +
-            ), +
-       array( +
-            'type'   => 'format', +
-            'title'  => $lang['qb_extlink'], +
-            'icon'   => 'linkextern.png', +
-            'open'   => '[[close]]', +
-            'sample' => 'http://example.com|'.$lang['qb_extlink'], +
-            ), +
-       array( +
-            'type'   ='format', +
-            'title'  => $lang['qb_ol']+
-            'icon'   => 'ol.png', +
-            'open'   => '  - ', +
-            'close'  => '\n', +
-            ), +
-       array( +
-            'type'   => 'format', +
-            'title'  => $lang['qb_ul'], +
-            'icon'   => 'ul.png', +
-            'open'   => '  * ', +
-            'close'  => '\n', +
-            ), +
-       array( +
-            'type'   => 'insert', +
-            'title'  => $lang['qb_hr'], +
-            'icon'   => 'hr.png', +
-            'insert' => '----\n', +
-            ), +
-       array( +
-            'type'   => 'mediapopup', +
-            'title'  => $lang['qb_media'], +
-            'icon'   => 'image.png', +
-            'url'    => DOKU_BASE.'lib/exe/mediamanager.php?ns=', +
-            'name'   => 'mediaselect', +
-            'options'=> 'width=750,height=500,left=20,top=20,scrollbars=yes,resizable=yes', +
-            ), +
-      array( +
-            'type'   => 'picker', +
-            'title'  => $lang['qb_smileys'], +
-            'icon'   => 'smiley.png', +
-            'list'   => getSmileys(), +
-            'icobase'=> 'smileys', +
-           ), +
-      array( +
-            'type'   => 'picker', +
-            'title'  => $lang['qb_chars'], +
-            'icon'   => 'chars.png', +
-            'list'   => explode(' ','À à Ã? á  â à ã Ä ä Ç? ÇŽ Ä‚ ă Ã… Ã¥ Ä€ Ä? Ä„ Ä… Æ æ Ć ć Ç ç ÄŒ Ä? Ĉ ĉ ÄŠ Ä‹ Ã? Ä‘ ð ÄŽ Ä? È è É é Ê ê Ë ë Äš Ä› Ä’ Ä“ Ä– Ä— Ę Ä™ Ä¢ Ä£ Äœ Ä? Äž ÄŸ Ä  Ä¡ Ĥ Ä¥ ÃŒ ì Ã? í ÃŽ î Ã? ï Ç? Ç? Ī Ä« İ ı Ä® į Ä´ ĵ Ķ Ä· Ĺ ĺ Ä» ļ Ľ ľ Å? Å‚ Ä¿ Å€ Ń Å„ Ñ ñ Å… ņ Ň ň Ã’ ò Ó ó Ô ô Õ õ Ö ö Ç‘ Ç’ ÅŒ Å? Å? Å‘ Å’ Å“ Ø ø Å” Å• Å– Å— Ř Å™ Åš Å› Åž ÅŸ Å  Å¡ Åœ Å? Å¢ Å£ Ť Å¥ Ù ù Ú ú Û û Ü ü Ç“ Ç” Ŭ Å­ Ū Å« Å® ů Ç– ǘ Çš Çœ Ų ų Ű ű Å´ ŵ Ã? ý Ÿ ÿ Ŷ Å· Ź ź Ž ž Å» ż Þ þ ß Ħ ħ ¿ ¡ ¢ £ ¤ Â¥ € ¦ § ª ¬ ¯ ° ± ÷ ‰ ¼ ½ ¾ ¹ ² ³ µ ¶ † ‡ · • º ∀ ∂ ∃ Æ? É™ ∅ ∇ ∈ ∉ ∋ âˆ? ∑ ‾ − ∗ √ âˆ? ∞ ∠ ∧ ∨ ∩ ∪ ∫ ∴ ∼ ≅ ≈ ≠ ≡ ≤ ≥ ⊂ ⊃ ⊄ ⊆ ⊇ ⊕ ⊗ ⊥ â‹… â—Š ℘ â„‘ ℜ ℵ â™  ♣ ♥ ♦ α β Γ γ Δ δ ε ζ η Θ θ ι κ Λ λ μ Ξ ξ Π Ï€ Ï? Σ σ Τ Ï„ Ï… Φ φ χ Ψ ψ Ω ω ★ ☆ ☎ ☚ ☛ ☜ â˜? ☞ ☟ ☹ ☺ ✔ ✘'), +
-           ), +
-      array( +
-            'type'   => 'signature', +
-            'title'  => $lang['qb_sig'], +
-            'icon'   => 'sig.png', +
-            'key'    => 'y', +
-           ), +
-       array( +
-            'type'   => 'insert', +
-            'title'  => 'klaveren', +
-            'icon'   => 'clubs.png', +
-            'insert' => 'âY£', +
-            'key'    => 'k', +
-            ), +
-       array( +
-            'type'   => 'insert', +
-            'title'  => 'ruiten', +
-            'icon'   => 'diamonds.png', +
-            'insert' => 'âY¦', +
-            'key'    => 'r', +
-            ), +
-       array( +
-            'type'   => 'insert', +
-            'title'  => 'harten', +
-            'icon'   => 'hearts.png', +
-            'insert' => 'âY¥', +
-            'key'    => 'h', +
-            ), +
-       array( +
-            'type'   => 'insert', +
-            'title'  => 'schoppen', +
-            'icon'   => 'spades.png', +
-            'insert' => 'âY ', +
-            'key'    => 's', +
-            ), +
-    ); +
- +
-    // use JSON to build the JavaScript array +
-    $json = new JSON(); +
-    print "var $varname = ".$json->encode($menu).";\n"; +
-+
- +
-/** +
- * prepares the signature string as configured in the config +
- * +
- * @author Andreas Gohr <andi@splitbrain.org> +
- */ +
-function toolbar_signature(){ +
-  global $conf; +
- +
-  $sig = $conf['signature']; +
-  $sig = strftime($sig); +
-  $sig = str_replace('@USER@',$_SERVER['REMOTE_USER'],$sig); +
-  $sig = str_replace('@NAME@',$_SESSION[DOKU_COOKIE]['auth']['info']['name'],$sig); +
-  $sig = str_replace('@MAIL@',$_SESSION[DOKU_COOKIE]['auth']['info']['mail'],$sig); +
-  $sig = str_replace('@DATE@',date($conf['dformat']),$sig); +
-  $sig = str_replace('\\\\n','\\n',addslashes($sig)); +
-  return $sig; +
-+
- +
-//Setup VIM: ex: et ts=4 enc=utf-8 :+
 </code> </code>
-  - Geef in een shell: %%touch /etc/dokuwiki/local.php%%. Dit zorgt ervoor dat de javascript cache wordt weggegooid. 
  
-En klaar is uw kunstgebitAls HTML is toegestaan kun je ook %%<font color>%% tags toevoegen.+Het probleem van deze methode is dat de parser van Dokuwiki entities.conf zo ongeveer alleen voor platte tekst gebruikt. Op veel plaatsen (in elk geval de kopjes weer) wordt niet vervangen. DEze methode werkt wel beter voor mensen die zelf de fontgrootte in hun browser willen controleren.
  
-De indexmenu plugin bevat jscript om een toolbar/button toe te voegen. Dit is een mooiere oplossiing, want dan worden de wijzigingen niet weggegooid na iedere update van de dokuwkik software. Bovendien is de code makkelijk op andere machines te installeren. Voorbeeld: http://samuele.netsons.org/dokuwiki/doku.php?id=dokuwiki:plugins:indexmenu:source:script+==== UTF karakters ====
  
-<code javascript> +Beide voorgaande oplossingen hebben als nadeel dat zij niet goed combineren met de DokuTexit plugin voor export naar LaTeX/PDF (ze werken wel met het alternatief pdfex). Het laatste alternatiefde UTF karakters voor de troeftekens via knoppen en toetscombinaties beschikbaar maken op de wikiis wel te combineren met DokuTexitDit is met afstand de meest bewerkelijke oplossingHij wordt beschreven en geïmplementeerd in de [[Trumpsuits DokuWiki plugin]]. 
- +
-  +
-function trumpsigns_createToolbar (){ +
-    var indx_ico = document.createElement('img'); +
-    indx_ico.src = DOKU_BASE + 'lib/plugins/trumpsigns/images/indexmenu_toolbar.png'; +
-    var indx_btn = document.createElement('button')+
-    indx_btn.id = 'syntax_plugin_indexmenu'; +
-    indx_btn.className = 'toolbutton'; +
-    indx_btn.title = 'Insert Indexmenu tree'; +
-    indx_btn.appendChild(indx_ico); +
-    return indx_btn; +
-+
-  +
-function indexmenu_toolbar_additions() { +
-    var toolbar = $('tool__bar'); +
-    if(!toolbar) return; +
-    var edbtn = $('edbtn__save'); +
-    if(!edbtn) return; +
-    indexmenu_createPicker('picker_plugin_indexmenu'); +
-    var indx_btn = indexmenu_createToolbar(); +
-    eval("indx_btn.onclick = function(){indexmenu_ajax('req=local','picker_plugin_indexmenu',this,true);return false;}"); +
-    toolbar.appendChild(indx_btn); +
-+
-  +
-function indexmenu_ajax (get,picker,btn,notoc) { +
-    var indx_list= $(picker); +
-    var show = false; +
-    if (!indx_list) { +
- indx_list=indexmenu_createPicker(picker); +
- indx_list.className='dokuwiki indexmenu_toc'; +
- indx_list.innerHTML='<a href="javascript: indexmenu_showPicker(\''+picker+'\');"><img src="'+DOKU_BASE+'lib/plugins/indexmenu/images/close.gif" /></a>'; +
- tocobj = document.createElement('div'); +
- indx_list.appendChild(tocobj); +
-    } +
-    if (!notoc) { +
- show=true; +
- indx_list=indx_list.childNodes[1]; +
-    } +
-    indexmenu_showPicker(picker,btn,show); +
-    // We use SACK to do the AJAX requests +
-    var ajax = new sack(DOKU_BASE+'lib/plugins/indexmenu/ajax.php'); +
-    ajax.encodeURIString=false; +
-    ajax.onLoading = function () { +
- indx_list.innerHTML='<div class="tocheader">Loading .....</div>'; +
-    }; +
-  +
-    // define callback +
-    ajax.onCompletion = function(){ +
-        var data = this.response; +
- indx_list.innerHTML=""; +
- if (notoc) { +
-     if(data.substring(0,9) != 'indexmenu'){ indx_list.innerHTML="Retriving error";return;+
-     indexmenu_createThemes(data,indx_list); +
- } else { +
-     indx_list.innerHTML=data; +
-+
-    }; +
-  +
-    ajax.runAJAX(encodeURI(get)); +
-+
-  +
-function indexmenu_createPicker(id) { +
-    var indx_list = document.createElement('div'); +
-    indx_list.className = 'picker'; +
-    indx_list.id=id; +
-    indx_list.style.position = 'absolute'; +
-    indx_list.style.display  = 'none'; +
-    var body = document.getElementsByTagName('body')[0]+
-    body.appendChild(indx_list); +
-    return indx_list; +
-+
-  +
-function indexmenu_showPicker(pickerid,btn,show){ +
-    var picker = $(pickerid); +
-    var x = 0; +
-    var y = 0; +
-    if (btn) { +
- x = findPosX(btn); +
- y = findPosY(btn); +
-    } +
-    if(picker.style.display == 'none' || show){ +
- picker.style.display = 'block'; +
- picker.style.left = (x+3)+'px'; +
- var offs = (btn.offsetHeight) ? btn.offsetHeight : 10; +
- picker.style.top = (y+offs+3)+'px'; +
-    }else{ +
- picker.style.display = 'none'; +
-    } +
-+
-  +
-addInitEvent(indexmenu_toolbar_additions); +
-</code> +
- +
- +
- +
- +
-===== Vergroot in rood en zwart weergeven ===== +
- +
-<code php> +
-<?php +
-/** +
- * Plugin Trumpsigns: Inserts <font size="+1" color="..."> tags into the document when trumpsigns are encountered +
- *  +
- * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html) +
- * @author     Pieter van der Meulen <dev@vdmeulen.net> +
- */ +
-  +
-if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/'); +
-if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); +
-require_once(DOKU_PLUGIN.'syntax.php'); +
-  +
-/** +
- * All DokuWiki plugins to extend the parser/rendering mechanism +
- * need to inherit from this class +
- */ +
-class syntax_plugin_tab extends DokuWiki_Syntax_Plugin { +
-  +
-    /** +
-     * return some info +
-     */ +
-    function getInfo(){ +
-        return array( +
-            'author' => 'Pieter van der Meulen', +
-            'email'  => 'dev@vdmeulen.net', +
-            'date'   => '2006-11-20', +
-            'name'   => 'Trumpsigns Plugin', +
-            'desc'   => 'Inserts <font size="+1" color="..."> tags into the html around trump signs', +
-            'url'    => 'http://www.vdmeulen.net/wiki/bridge/troeftekens_in_dokuwiki#vergroot_in_rood_en_wart_weergeven', +
-        ); +
-    } +
-  +
-    /** +
-     * What kind of syntax are we? +
-     */ +
-    function getType(){ +
-        return 'substition'; +
-    } +
-    +
-  +
-    /** +
-     * Where to sort in? +
-     */  +
-    function getSort(){ +
-        return 789; +
-    } +
-  +
-  +
-    /** +
-     * Connect pattern to lexer +
-     */ +
-    function connectTo($mode) { +
-      $this->Lexer->addSpecialPattern('♣',$mode,'plugin_trumpsigns'); +
-      $this->Lexer->addSpecialPattern('♦',$mode,'plugin_trumpsigns'); +
-      $this->Lexer->addSpecialPattern('♥',$mode,'plugin_trumpsigns'); +
-      $this->Lexer->addSpecialPattern('♠',$mode,'plugin_trumpsigns'); +
-    } +
-  +
-    /** +
-     * Handle the match +
-     */ +
-    function handle($match, $state, $pos, &$handler){ +
-        switch ($state) { +
-          case DOKU_LEXER_ENTER :  +
-            break; +
-          case DOKU_LEXER_MATCHED : +
-            break; +
-          case DOKU_LEXER_UNMATCHED : +
-            break; +
-          case DOKU_LEXER_EXIT : +
-            break; +
-          case DOKU_LEXER_SPECIAL : +
-            break; +
-        } +
-        return array(); +
-    } +
-  +
-    /** +
-     * Create output +
-     */ +
-    function render($mode, &$renderer, $data) { +
-        if($mode == 'xhtml'){ +
-            $renderer->doc .= "<FONT SIZE=\"+1\" COLOR=\"RED\">XXX+"; +
-            $renderer->doc .= $data; +
-            $renderer->doc .= "-XXX</FONT>"; +
-            return true; +
-        } +
-        return false; +
-    } +
-+
-  +
-//Setup VIM: ex: et ts=4 enc=utf-8 : +
- +
- +
-</code>+
  
  
-==== Ruitenprobleem onder Internet Explorer ====+===== Ruitenprobleem onder Internet Explorer =====
  
 Onder IE worden de ruitentekens niet goed weergegeven, de andere troeftekens wel. Zie http://www.xs4all.nl/~zanstra/inTec/diamondBug.htm Onder IE worden de ruitentekens niet goed weergegeven, de andere troeftekens wel. Zie http://www.xs4all.nl/~zanstra/inTec/diamondBug.htm
bridge/troeftekens-in-dokuwiki.1608394466.txt.gz · Laatst gewijzigd: (Externe bewerking)