summaryrefslogtreecommitdiff
path: root/lib/plugins/note
diff options
context:
space:
mode:
Diffstat (limited to 'lib/plugins/note')
-rw-r--r--lib/plugins/note/.gitignore1
-rw-r--r--lib/plugins/note/images/important.pngbin0 -> 2250 bytes
-rw-r--r--lib/plugins/note/images/note.pngbin0 -> 2520 bytes
-rw-r--r--lib/plugins/note/images/tb_important.pngbin0 -> 1366 bytes
-rw-r--r--lib/plugins/note/images/tb_note.pngbin0 -> 1461 bytes
-rw-r--r--lib/plugins/note/images/tb_tip.pngbin0 -> 1441 bytes
-rw-r--r--lib/plugins/note/images/tb_warning.pngbin0 -> 1870 bytes
-rw-r--r--lib/plugins/note/images/tip.pngbin0 -> 2909 bytes
-rw-r--r--lib/plugins/note/images/warning.pngbin0 -> 3249 bytes
-rw-r--r--lib/plugins/note/info.txt8
-rw-r--r--lib/plugins/note/script.js36
-rw-r--r--lib/plugins/note/style.css41
-rw-r--r--lib/plugins/note/syntax.php191
13 files changed, 277 insertions, 0 deletions
diff --git a/lib/plugins/note/.gitignore b/lib/plugins/note/.gitignore
new file mode 100644
index 000000000..f3c7a7c5d
--- /dev/null
+++ b/lib/plugins/note/.gitignore
@@ -0,0 +1 @@
+Makefile
diff --git a/lib/plugins/note/images/important.png b/lib/plugins/note/images/important.png
new file mode 100644
index 000000000..dc8c8a457
--- /dev/null
+++ b/lib/plugins/note/images/important.png
Binary files differ
diff --git a/lib/plugins/note/images/note.png b/lib/plugins/note/images/note.png
new file mode 100644
index 000000000..df1e0a926
--- /dev/null
+++ b/lib/plugins/note/images/note.png
Binary files differ
diff --git a/lib/plugins/note/images/tb_important.png b/lib/plugins/note/images/tb_important.png
new file mode 100644
index 000000000..d853518de
--- /dev/null
+++ b/lib/plugins/note/images/tb_important.png
Binary files differ
diff --git a/lib/plugins/note/images/tb_note.png b/lib/plugins/note/images/tb_note.png
new file mode 100644
index 000000000..f5c931603
--- /dev/null
+++ b/lib/plugins/note/images/tb_note.png
Binary files differ
diff --git a/lib/plugins/note/images/tb_tip.png b/lib/plugins/note/images/tb_tip.png
new file mode 100644
index 000000000..f127e91c5
--- /dev/null
+++ b/lib/plugins/note/images/tb_tip.png
Binary files differ
diff --git a/lib/plugins/note/images/tb_warning.png b/lib/plugins/note/images/tb_warning.png
new file mode 100644
index 000000000..892c83393
--- /dev/null
+++ b/lib/plugins/note/images/tb_warning.png
Binary files differ
diff --git a/lib/plugins/note/images/tip.png b/lib/plugins/note/images/tip.png
new file mode 100644
index 000000000..2000f2085
--- /dev/null
+++ b/lib/plugins/note/images/tip.png
Binary files differ
diff --git a/lib/plugins/note/images/warning.png b/lib/plugins/note/images/warning.png
new file mode 100644
index 000000000..3c8a37df5
--- /dev/null
+++ b/lib/plugins/note/images/warning.png
Binary files differ
diff --git a/lib/plugins/note/info.txt b/lib/plugins/note/info.txt
new file mode 100644
index 000000000..5226345f4
--- /dev/null
+++ b/lib/plugins/note/info.txt
@@ -0,0 +1,8 @@
+# General Plugin Info do not edit
+
+author Olivier Cortès / Eric Hameleers / Christopher Smith / Aurélien Bompard
+email olive@deep-ocean.net
+date 2009-06-15
+name Note Plugin
+desc Add Note/Important/Tip/Warning Capability (DIV+CSS box)
+url http://www.dokuwiki.org/plugin:note
diff --git a/lib/plugins/note/script.js b/lib/plugins/note/script.js
new file mode 100644
index 000000000..c21120727
--- /dev/null
+++ b/lib/plugins/note/script.js
@@ -0,0 +1,36 @@
+/* Add Note buttons to the toolbar */
+/* from http://wiki.splitbrain.org/wiki:tips:toolbarbutton */
+
+/* Disabled because this does not allow to select a text and turn it into a note like the type:format does
+var notes_arr = new Array(); // key = insertion string , value = icon filename.
+notes_arr['<note></note>\\n']='tb_note.png';
+notes_arr['<note tip></note>\\n']='tb_tip.png';
+notes_arr['<note important></note>\\n']='tb_important.png';
+notes_arr['<note warning></note>\\n']='tb_warning.png';
+
+toolbar[toolbar.length] = {"type":"picker",
+ "title":"Notes",
+ "icon":"../../plugins/note/images/tb_note.png",
+ "key":"",
+ "list": notes_arr,
+ "icobase":"../plugins/note/images"};
+*/
+
+if(toolbar){
+ toolbar[toolbar.length] = {"type":"format", "title":"note", "key":"",
+ "icon":"../../plugins/note/images/tb_note.png",
+ "open":"<note>", "close":"</note>"
+ };
+ toolbar[toolbar.length] = {"type":"format", "title":"tip", "key":"",
+ "icon":"../../plugins/note/images/tb_tip.png",
+ "open":"<note tip>", "close":"</note>"
+ };
+ toolbar[toolbar.length] = {"type":"format", "title":"important", "key":"",
+ "icon":"../../plugins/note/images/tb_important.png",
+ "open":"<note important>", "close":"</note>"
+ };
+ toolbar[toolbar.length] = {"type":"format", "title":"warning", "key":"",
+ "icon":"../../plugins/note/images/tb_warning.png",
+ "open":"<note warning>", "close":"</note>"
+ };
+}
diff --git a/lib/plugins/note/style.css b/lib/plugins/note/style.css
new file mode 100644
index 000000000..8b97dea06
--- /dev/null
+++ b/lib/plugins/note/style.css
@@ -0,0 +1,41 @@
+.noteclassic, .noteimportant, .notewarning, .notetip {
+ margin: 2em;
+ margin-left: auto;
+ margin-right: auto;
+ width: 70% !important;
+ min-height: 40px;
+ clear: both;
+ text-align: justify;
+ vertical-align: middle;
+ border-collapse: collapse;
+ padding: 15px 20px 15px 80px;
+ background-position: 20px 50%;
+ background-repeat: no-repeat;
+ -moz-border-radius: 20px;
+ -khtml-border-radius: 20px;
+ border-radius: 20px;
+}
+
+.noteclassic {
+ /*border: 1px solid #99D;*/
+ background-color: #eef;
+ background-image: url(images/note.png);
+}
+
+.noteimportant {
+ /*border: 1px solid #ff0;*/
+ background-color: #ffc;
+ background-image: url(images/important.png);
+}
+
+.notewarning {
+ /*border: 1px solid #d99;*/
+ background-color: #fdd;
+ background-image: url(images/warning.png);
+}
+
+.notetip {
+ /*border: 1px solid #9d9;*/
+ background-color: #dfd;
+ background-image: url(images/tip.png);
+}
diff --git a/lib/plugins/note/syntax.php b/lib/plugins/note/syntax.php
new file mode 100644
index 000000000..368d0d412
--- /dev/null
+++ b/lib/plugins/note/syntax.php
@@ -0,0 +1,191 @@
+<?php
+/**
+ * Add Note capability to dokuwiki
+ *
+ * <note>This is note</note>
+ * <note classic>This is note</note>
+ * <note important>This is an important note</note>
+ * <note warning>This is a big warning</note>
+ * <note tip>This is a tip</note>
+ *
+ * by Olivier Cortès <olive@deep-ocean.net>
+ * under the terms of the GNU GPL v2.
+ *
+ * Originaly derived from the work of :
+ * Stephane Chamberland <stephane.chamberland@ec.gc.ca> (Side Notes PlugIn)
+ * Carl-Christian Salvesen <calle@ioslo.net> (Graphviz plugin)
+ *
+ * Contributions by Eric Hameleers <alien [at] slackware [dot] com> :
+ * use <div> instead of <table>,
+ * contain the images and stylesheet inside the plugin,
+ * permit nesting of notes,
+ *
+ * Contributed by Christopher Smith <chris [at] jalakai [dot] co [dot] uk>
+ * fix some parsing problems and a security hole.
+ * make note types case independent
+ * simplify code reading
+ * modernise the plugin for changes/fixes/improvements to the underlying Dokuwiki plugin class,
+ * improve efficiency.
+ *
+ * Contributed by Aurélien Bompard <aurelien [at] bompard [dot] org>
+ * support for the ODT output format.
+ *
+ * @license GNU_GPL_v2
+ * @author Olivier Cortes <olive@deep-ocean.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');
+
+
+class syntax_plugin_note extends DokuWiki_Syntax_Plugin {
+
+ var $notes = array(
+ 'noteimportant' => array('important', 'importante'),
+ 'notewarning' => array('warning','bloquante','critique'),
+ 'notetip' => array('tip','tuyau','idée'),
+ 'noteclassic' => array('','classic','classique')
+ );
+
+ var $default = 'noteclassic';
+
+ function getInfo(){
+ return confToHash(dirname(__FILE__).'/info.txt');
+ }
+
+
+ function getType(){ return 'container'; }
+ function getPType(){ return 'normal'; }
+ function getAllowedTypes() {
+ return array('container','substition','protected','disabled','formatting','paragraphs');
+ }
+ function getSort(){ return 195; }
+
+ // override default accepts() method to allow nesting
+ // - ie, to get the plugin accepts its own entry syntax
+ function accepts($mode) {
+ if ($mode == substr(get_class($this), 7)) return true;
+ return parent::accepts($mode);
+ }
+
+ function connectTo($mode) {
+ $this->Lexer->addEntryPattern('<note.*?>(?=.*?</note>)',$mode,'plugin_note');
+ }
+ function postConnect() {
+ $this->Lexer->addExitPattern('</note>','plugin_note');
+ }
+
+ function handle($match, $state, $pos, &$handler){
+
+ switch ($state) {
+
+ case DOKU_LEXER_ENTER :
+ $note = strtolower(trim(substr($match,5,-1)));
+
+ foreach( $this->notes as $class => $names ) {
+ if (in_array($note, $names))
+ return array($state, $class);
+ }
+
+ return array($state, $this->default);
+
+ case DOKU_LEXER_UNMATCHED :
+ return array($state, $match);
+
+ default:
+ return array($state);
+ }
+ }
+
+ function render($mode, &$renderer, $indata) {
+
+ if($mode == 'xhtml'){
+
+ list($state, $data) = $indata;
+
+ switch ($state) {
+ case DOKU_LEXER_ENTER :
+ $renderer->doc .= '<p><div class="'.$data.'">';
+ break;
+
+ case DOKU_LEXER_UNMATCHED :
+ $renderer->doc .= $renderer->_xmlEntities($data);
+ break;
+
+ case DOKU_LEXER_EXIT :
+ $renderer->doc .= "\n</div></p>";
+ break;
+ }
+ return true;
+
+ } elseif ($mode == 'odt'){
+
+ list($state, $data) = $indata;
+
+ switch ($state) {
+ case DOKU_LEXER_ENTER :
+ $type = substr($data, 4);
+ if ($type == "classic") {
+ $type = "note"; // the icon for classic notes is named note.png
+ }
+ $colors = array("note"=>"#eeffff", "warning"=>"#ffdddd", "important"=>"#ffffcc", "tip"=>"#ddffdd");
+ $renderer->autostyles["pluginnote"] = '
+ <style:style style:name="pluginnote" style:family="table">
+ <style:table-properties style:width="15cm" table:align="center" style:shadow="#808080 0.18cm 0.18cm"/>
+ </style:style>';
+ $renderer->autostyles["pluginnote.A"] = '
+ <style:style style:name="pluginnote.A" style:family="table-column">
+ <style:table-column-properties style:column-width="1.5cm"/>
+ </style:style>';
+ $renderer->autostyles["pluginnote.B"] = '
+ <style:style style:name="pluginnote.B" style:family="table-column">
+ <style:table-column-properties style:column-width="13.5cm"/>
+ </style:style>';
+ $renderer->autostyles["pluginnote".$type.".A1"] = '
+ <style:style style:name="pluginnote'.$type.'.A1" style:family="table-cell">
+ <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].'"/>
+ </style:style>';
+ $renderer->autostyles["pluginnote".$type.".B1"] = '
+ <style:style style:name="pluginnote'.$type.'.B1" style:family="table-cell">
+ <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].'"/>
+ </style:style>';
+ // Content
+ $renderer->p_close();
+ $renderer->doc .= '<table:table table:name="" table:style-name="pluginnote">';
+ $renderer->doc .= '<table:table-column table:style-name="pluginnote.A"/>';
+ $renderer->doc .= '<table:table-column table:style-name="pluginnote.B"/>';
+ $renderer->doc .= '<table:table-row>';
+ $renderer->doc .= '<table:table-cell table:style-name="pluginnote'.$type.'.A1" office:value-type="string">';
+ // Don't use p_open, as it's not the same style-name
+ $renderer->doc .= '<text:p text:style-name="Table_20_Contents">';
+ $src = DOKU_PLUGIN."note/images/".$type.".png";
+ $renderer->_odtAddImage($src);
+ $renderer->doc .= '</text:p>';
+ $renderer->doc .= '</table:table-cell>';
+ $renderer->doc .= '<table:table-cell table:style-name="pluginnote'.$type.'.B1" office:value-type="string">';
+ $renderer->p_open();
+ break;
+
+ case DOKU_LEXER_UNMATCHED :
+ $renderer->cdata($data);
+ break;
+
+ case DOKU_LEXER_EXIT :
+ $renderer->p_close();
+ $renderer->doc .= '</table:table-cell>';
+ $renderer->doc .= '</table:table-row>';
+ $renderer->doc .= '</table:table>';
+ $renderer->p_open();
+ break;
+ }
+ return true;
+ }
+
+ // unsupported $mode
+ return false;
+ }
+}
+
+//Setup VIM: ex: et ts=4 enc=utf-8 :
+?>