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/09 16:19) 95.181.148.167bridge: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>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. 
  
-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.
  
-===== Knoppen en keyboard shortcuts in de Dokuwiki editor maken =====+==== Smileys ====
  
-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: +Dit is werkend te zien op [[sampiemon>biedsysteem|de site van Hans]]Rendert traag (alleen merkbaar voor grote documenten), werkt niet in kopjesen past zich niet aan de fontgrootte aan (geen probleemhet werkt toch niet in kopjes). Het is daarentegen simpel te implementeren en werkt op alle grafische browsersOp tekstbrowsers worden de troeftekens in principe vervangen door letters.
-  - De volgende pngtjes moeten worden gekopieerd naar /usr/share/dokuwiki/lib/images/toolbar. +
-    * {{http://www.vdmeulen.net/wiki/lib/images/toolbar/clubs.png}} (klaveren) +
-    * {{http://www.vdmeulen.net/wiki/lib/images/toolbar/diamonds.png}} (ruiten) +
-    * {{http://www.vdmeulen.net/wiki/lib/images/toolbar/hearts.png}} (harten) +
-    * {{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__).'/../').'/');+==== Entities ====
  
-require_once(DOKU_INC.'inc/JSON.php');+Een alternatieve oplossing gaat via entities.conf, daar kun je vervangingen definiërenEen voorbeeld:
  
- +<code
-/** +[s    <font size="+1" color="black">&spades;</font
- * Prepares and prints an JavaScript array with all toolbar buttons +[h    <font size="+1color="red">&hearts;</font
- * +[r    <font size="+1" color="red">&diams;</font
- * @todo add toolbar plugins +[k    <font size="+1" color="black">&clubs;</font>
- * @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.
  
 +==== UTF karakters ====
  
- +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 UTF karakters voor de troeftekens via knoppen en toetscombinaties beschikbaar maken op de wiki, is wel te combineren met DokuTexitDit is met afstand de meest bewerkelijke oplossingHij wordt beschreven en geïmplementeerd in de [[Trumpsuits DokuWiki plugin]]. 
-====Als plugin==== +
-De indexmenu en de highlight plugins bevatten javascript om een toolbar/button toe te voegenDit is een mooiere oplossingwant 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://wiki.splitbrain.org/plugin:highlight +
- +
-Voorbeeld van script.js +
- +
-<code javascript> +
- +
-//create a single toolbutton with desired properties +
-function plugin_trumpsigns_createToolbutton (idtooltipText, imgFile, insText, accKey){ +
-    var indx_ico = document.createElement('img'); +
-    indx_ico.src = DOKU_BASE + 'lib/plugins/trumpsigns/images/' + imgFile; +
-    var indx_btn = document.createElement('button'); +
-    indx_btn.id = 'syntax_plugin_trumpsign_' + id; +
-    indx_btn.className = 'toolbutton'; +
-    indx_btn.title = tooltipText; +
-    indx_btn.accessKey = accKey; +
-    indx_btn.appendChild(indx_ico); +
-    onclick = function(){insertAtCarret("wiki__text", insText); return false;}; +
-    return indx_btn; +
-+
- +
-//if this is an "edit" page, add toolbuttons +
-function plugin_trumpsigns_toolbar_additions() { +
-    var toolbar = $('tool__bar'); +
-    if(!toolbar) return; +
-    var edbtn = $('edbtn__save'); +
-    if(!edbtn) return; +
-    var index_btn = plugin_trumpsigns_createToolbutton('spades', 'Schoppen', 'spades.png', '[S]', 's'); +
-    toolbar.appendChild(indx_btn); +
-    index_btn = plugin_trumpsigns_createToolbutton('hearts', 'Harten', 'hearts.png', '[H]', 'h'); +
-    toolbar.appendChild(indx_btn); +
-    index_btn = plugin_trumpsigns_createToolbutton('ruiten', 'Ruiten', 'diamonds.png', '[R]', 'r'); +
-    toolbar.appendChild(indx_btn); +
-    index_btn = plugin_trumpsigns_createToolbutton('clubs', 'Klaveren', 'clubs.png', '[K]', 'k'); +
-    toolbar.appendChild(indx_btn); +
-+
-  +
-addInitEvent(plugin_trumpsigns_toolbar_additions); +
- +
-//Setup VIM: ex: et ts=2 sw=2 enc=utf-8 : +
-</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.1608394464.txt.gz · Laatst gewijzigd: (Externe bewerking)