slitaz-doc-wiki-data annotate plugins/note/syntax.php @ rev 25

Add the remainder of meta/fr folder.
author Christopher Rogers <slaxemulator@gmail.com>
date Wed Apr 20 19:15:29 2011 +0000 (2011-04-20)
parents
children
rev   line source
slaxemulator@14 1 <?php
slaxemulator@14 2 /**
slaxemulator@14 3 * Add Note capability to dokuwiki
slaxemulator@14 4 *
slaxemulator@14 5 * <note>This is note</note>
slaxemulator@14 6 * <note classic>This is note</note>
slaxemulator@14 7 * <note important>This is an important note</note>
slaxemulator@14 8 * <note warning>This is a big warning</note>
slaxemulator@14 9 * <note tip>This is a tip</note>
slaxemulator@14 10 *
slaxemulator@14 11 * by Olivier Cortès <olive@deep-ocean.net>
slaxemulator@14 12 * under the terms of the GNU GPL v2.
slaxemulator@14 13 *
slaxemulator@14 14 * Originaly derived from the work of :
slaxemulator@14 15 * Stephane Chamberland <stephane.chamberland@ec.gc.ca> (Side Notes PlugIn)
slaxemulator@14 16 * Carl-Christian Salvesen <calle@ioslo.net> (Graphviz plugin)
slaxemulator@14 17 *
slaxemulator@14 18 * Contributions by Eric Hameleers <alien [at] slackware [dot] com> :
slaxemulator@14 19 * use <div> instead of <table>,
slaxemulator@14 20 * contain the images and stylesheet inside the plugin,
slaxemulator@14 21 * permit nesting of notes,
slaxemulator@14 22 *
slaxemulator@14 23 * Contributed by Christopher Smith <chris [at] jalakai [dot] co [dot] uk>
slaxemulator@14 24 * fix some parsing problems and a security hole.
slaxemulator@14 25 * make note types case independent
slaxemulator@14 26 * simplify code reading
slaxemulator@14 27 * modernise the plugin for changes/fixes/improvements to the underlying Dokuwiki plugin class,
slaxemulator@14 28 * improve efficiency.
slaxemulator@14 29 *
slaxemulator@14 30 * Contributed by Aurélien Bompard <aurelien [at] bompard [dot] org>
slaxemulator@14 31 * support for the ODT output format.
slaxemulator@14 32 *
slaxemulator@14 33 * @license GNU_GPL_v2
slaxemulator@14 34 * @author Olivier Cortes <olive@deep-ocean.net>
slaxemulator@14 35 */
slaxemulator@14 36
slaxemulator@14 37 if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
slaxemulator@14 38 if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
slaxemulator@14 39 require_once(DOKU_PLUGIN.'syntax.php');
slaxemulator@14 40
slaxemulator@14 41
slaxemulator@14 42 class syntax_plugin_note extends DokuWiki_Syntax_Plugin {
slaxemulator@14 43
slaxemulator@14 44 var $notes = array(
slaxemulator@14 45 'noteimportant' => array('important', 'importante'),
slaxemulator@14 46 'notewarning' => array('warning','bloquante','critique'),
slaxemulator@14 47 'notetip' => array('tip','tuyau','idée'),
slaxemulator@14 48 'noteclassic' => array('','classic','classique')
slaxemulator@14 49 );
slaxemulator@14 50
slaxemulator@14 51 var $default = 'noteclassic';
slaxemulator@14 52
slaxemulator@14 53 function getInfo(){
slaxemulator@14 54 return confToHash(dirname(__FILE__).'/info.txt');
slaxemulator@14 55 }
slaxemulator@14 56
slaxemulator@14 57
slaxemulator@14 58 function getType(){ return 'container'; }
slaxemulator@14 59 function getPType(){ return 'normal'; }
slaxemulator@14 60 function getAllowedTypes() {
slaxemulator@14 61 return array('container','substition','protected','disabled','formatting','paragraphs');
slaxemulator@14 62 }
slaxemulator@14 63 function getSort(){ return 195; }
slaxemulator@14 64
slaxemulator@14 65 // override default accepts() method to allow nesting
slaxemulator@14 66 // - ie, to get the plugin accepts its own entry syntax
slaxemulator@14 67 function accepts($mode) {
slaxemulator@14 68 if ($mode == substr(get_class($this), 7)) return true;
slaxemulator@14 69 return parent::accepts($mode);
slaxemulator@14 70 }
slaxemulator@14 71
slaxemulator@14 72 function connectTo($mode) {
slaxemulator@14 73 $this->Lexer->addEntryPattern('<note.*?>(?=.*?</note>)',$mode,'plugin_note');
slaxemulator@14 74 }
slaxemulator@14 75 function postConnect() {
slaxemulator@14 76 $this->Lexer->addExitPattern('</note>','plugin_note');
slaxemulator@14 77 }
slaxemulator@14 78
slaxemulator@14 79 function handle($match, $state, $pos, &$handler){
slaxemulator@14 80
slaxemulator@14 81 switch ($state) {
slaxemulator@14 82
slaxemulator@14 83 case DOKU_LEXER_ENTER :
slaxemulator@14 84 $note = strtolower(trim(substr($match,5,-1)));
slaxemulator@14 85
slaxemulator@14 86 foreach( $this->notes as $class => $names ) {
slaxemulator@14 87 if (in_array($note, $names))
slaxemulator@14 88 return array($state, $class);
slaxemulator@14 89 }
slaxemulator@14 90
slaxemulator@14 91 return array($state, $this->default);
slaxemulator@14 92
slaxemulator@14 93 case DOKU_LEXER_UNMATCHED :
slaxemulator@14 94 return array($state, $match);
slaxemulator@14 95
slaxemulator@14 96 default:
slaxemulator@14 97 return array($state);
slaxemulator@14 98 }
slaxemulator@14 99 }
slaxemulator@14 100
slaxemulator@14 101 function render($mode, &$renderer, $indata) {
slaxemulator@14 102
slaxemulator@14 103 if($mode == 'xhtml'){
slaxemulator@14 104
slaxemulator@14 105 list($state, $data) = $indata;
slaxemulator@14 106
slaxemulator@14 107 switch ($state) {
slaxemulator@14 108 case DOKU_LEXER_ENTER :
slaxemulator@14 109 $renderer->doc .= '<p><div class="'.$data.'">';
slaxemulator@14 110 break;
slaxemulator@14 111
slaxemulator@14 112 case DOKU_LEXER_UNMATCHED :
slaxemulator@14 113 $renderer->doc .= $renderer->_xmlEntities($data);
slaxemulator@14 114 break;
slaxemulator@14 115
slaxemulator@14 116 case DOKU_LEXER_EXIT :
slaxemulator@14 117 $renderer->doc .= "\n</div></p>";
slaxemulator@14 118 break;
slaxemulator@14 119 }
slaxemulator@14 120 return true;
slaxemulator@14 121
slaxemulator@14 122 } elseif ($mode == 'odt'){
slaxemulator@14 123
slaxemulator@14 124 list($state, $data) = $indata;
slaxemulator@14 125
slaxemulator@14 126 switch ($state) {
slaxemulator@14 127 case DOKU_LEXER_ENTER :
slaxemulator@14 128 $type = substr($data, 4);
slaxemulator@14 129 if ($type == "classic") {
slaxemulator@14 130 $type = "note"; // the icon for classic notes is named note.png
slaxemulator@14 131 }
slaxemulator@14 132 $colors = array("note"=>"#eeffff", "warning"=>"#ffdddd", "important"=>"#ffffcc", "tip"=>"#ddffdd");
slaxemulator@14 133 $renderer->autostyles["pluginnote"] = '
slaxemulator@14 134 <style:style style:name="pluginnote" style:family="table">
slaxemulator@14 135 <style:table-properties style:width="15cm" table:align="center" style:shadow="#808080 0.18cm 0.18cm"/>
slaxemulator@14 136 </style:style>';
slaxemulator@14 137 $renderer->autostyles["pluginnote.A"] = '
slaxemulator@14 138 <style:style style:name="pluginnote.A" style:family="table-column">
slaxemulator@14 139 <style:table-column-properties style:column-width="1.5cm"/>
slaxemulator@14 140 </style:style>';
slaxemulator@14 141 $renderer->autostyles["pluginnote.B"] = '
slaxemulator@14 142 <style:style style:name="pluginnote.B" style:family="table-column">
slaxemulator@14 143 <style:table-column-properties style:column-width="13.5cm"/>
slaxemulator@14 144 </style:style>';
slaxemulator@14 145 $renderer->autostyles["pluginnote".$type.".A1"] = '
slaxemulator@14 146 <style:style style:name="pluginnote'.$type.'.A1" style:family="table-cell">
slaxemulator@14 147 <style:table-cell-properties style:vertical-align="middle" fo:padding="0.1cm" fo:border-left="0.002cm solid #000000" fo:border-right="none" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000" fo:background-color="'.$colors[$type].'"/>
slaxemulator@14 148 </style:style>';
slaxemulator@14 149 $renderer->autostyles["pluginnote".$type.".B1"] = '
slaxemulator@14 150 <style:style style:name="pluginnote'.$type.'.B1" style:family="table-cell">
slaxemulator@14 151 <style:table-cell-properties style:vertical-align="middle" fo:padding="0.3cm" fo:border-left="none" fo:border-right="0.002cm solid #000000" fo:border-top="0.002cm solid #000000" fo:border-bottom="0.002cm solid #000000" fo:background-color="'.$colors[$type].'"/>
slaxemulator@14 152 </style:style>';
slaxemulator@14 153 // Content
slaxemulator@14 154 $renderer->p_close();
slaxemulator@14 155 $renderer->doc .= '<table:table table:name="" table:style-name="pluginnote">';
slaxemulator@14 156 $renderer->doc .= '<table:table-column table:style-name="pluginnote.A"/>';
slaxemulator@14 157 $renderer->doc .= '<table:table-column table:style-name="pluginnote.B"/>';
slaxemulator@14 158 $renderer->doc .= '<table:table-row>';
slaxemulator@14 159 $renderer->doc .= '<table:table-cell table:style-name="pluginnote'.$type.'.A1" office:value-type="string">';
slaxemulator@14 160 // Don't use p_open, as it's not the same style-name
slaxemulator@14 161 $renderer->doc .= '<text:p text:style-name="Table_20_Contents">';
slaxemulator@14 162 $src = DOKU_PLUGIN."note/images/".$type.".png";
slaxemulator@14 163 $renderer->_odtAddImage($src);
slaxemulator@14 164 $renderer->doc .= '</text:p>';
slaxemulator@14 165 $renderer->doc .= '</table:table-cell>';
slaxemulator@14 166 $renderer->doc .= '<table:table-cell table:style-name="pluginnote'.$type.'.B1" office:value-type="string">';
slaxemulator@14 167 $renderer->p_open();
slaxemulator@14 168 break;
slaxemulator@14 169
slaxemulator@14 170 case DOKU_LEXER_UNMATCHED :
slaxemulator@14 171 $renderer->cdata($data);
slaxemulator@14 172 break;
slaxemulator@14 173
slaxemulator@14 174 case DOKU_LEXER_EXIT :
slaxemulator@14 175 $renderer->p_close();
slaxemulator@14 176 $renderer->doc .= '</table:table-cell>';
slaxemulator@14 177 $renderer->doc .= '</table:table-row>';
slaxemulator@14 178 $renderer->doc .= '</table:table>';
slaxemulator@14 179 $renderer->p_open();
slaxemulator@14 180 break;
slaxemulator@14 181 }
slaxemulator@14 182 return true;
slaxemulator@14 183 }
slaxemulator@14 184
slaxemulator@14 185 // unsupported $mode
slaxemulator@14 186 return false;
slaxemulator@14 187 }
slaxemulator@14 188 }
slaxemulator@14 189
slaxemulator@14 190 //Setup VIM: ex: et ts=4 enc=utf-8 :
slaxemulator@14 191 ?>