beber pushed a commit to branch master.

http://git.enlightenment.org/website/www.git/commit/?id=b88336b2ee9f26b5230ce1fcee3ff494bab7b5a7

commit b88336b2ee9f26b5230ce1fcee3ff494bab7b5a7
Author: Bertrand Jacquin <bertr...@jacquin.bzh>
Date:   Sun Oct 15 04:52:26 2017 +0100

    MEDIUM: Update plugin yalist to v2016-08-29
---
 public_html/lib/plugins/yalist/.travis.yml       |  30 +
 public_html/lib/plugins/yalist/README.md         |   8 +
 public_html/lib/plugins/yalist/conf/default.php  |   7 +
 public_html/lib/plugins/yalist/conf/metadata.php |   8 +
 public_html/lib/plugins/yalist/odt.css           |   7 +
 public_html/lib/plugins/yalist/plugin.info.txt   |   4 +-
 public_html/lib/plugins/yalist/style.css         |   6 -
 public_html/lib/plugins/yalist/syntax.php        | 672 +++++++++++++++++------
 8 files changed, 568 insertions(+), 174 deletions(-)

diff --git a/public_html/lib/plugins/yalist/.travis.yml 
b/public_html/lib/plugins/yalist/.travis.yml
new file mode 100644
index 00000000..66b3dff5
--- /dev/null
+++ b/public_html/lib/plugins/yalist/.travis.yml
@@ -0,0 +1,30 @@
+dist: trusty
+language: php
+
+php:
+  - "nightly"
+  - "7.1"
+  - "7.0"
+  - "5.6"
+  - "hhvm"
+
+matrix:
+  allow_failures:
+    - php: "hhvm"
+    - php: "nightly"
+      env: DOKUWIKI=stable
+    - php: "7.1"
+      env: DOKUWIKI=stable
+
+env:
+  - DOKUWIKI=master
+  - DOKUWIKI=stable
+
+before_install:
+  - wget https://raw.github.com/splitbrain/dokuwiki-travis/master/travis.sh
+
+install:
+  - sh travis.sh
+
+script:
+  - cd _test && PRESERVE_TMP=false phpunit --stderr --group plugin_backlinks 
--verbose --debug
diff --git a/public_html/lib/plugins/yalist/README.md 
b/public_html/lib/plugins/yalist/README.md
index 9deb2ce4..02fed24d 100644
--- a/public_html/lib/plugins/yalist/README.md
+++ b/public_html/lib/plugins/yalist/README.md
@@ -17,3 +17,11 @@ and list items with multiple paragraphs. The complete syntax 
is as follows:
 ```
 
 Lists can be nested within lists, just as in the standard DokuWiki syntax.
+
+
+[![Build 
Status](https://travis-ci.org/mprins/dokuwiki-yalist-plugin.svg?branch=master)](https://travis-ci.org/mprins/dokuwiki-yalist-plugin)
+[![Scrutinizer Code 
Quality](https://scrutinizer-ci.com/g/mprins/dokuwiki-yalist-plugin/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/mprins/dokuwiki-yalist-plugin/?branch=master)
+[![GitHub 
issues](https://img.shields.io/github/issues/mprins/dokuwiki-yalist-plugin.svg)](https://github.com/mprins/dokuwiki-yalist-plugin/issues)
+[![GitHub 
forks](https://img.shields.io/github/forks/mprins/dokuwiki-yalist-plugin.svg)](https://github.com/mprins/dokuwiki-yalist-plugin/network)
+[![GitHub 
stars](https://img.shields.io/github/stars/mprins/dokuwiki-yalist-plugin.svg)](https://github.com/mprins/dokuwiki-yalist-plugin/stargazers)
+[![GitHub 
license](https://img.shields.io/badge/license-GPLv2-blue.svg)](https://raw.githubusercontent.com/mprins/dokuwiki-yalist-plugin/master/LICENSE)
diff --git a/public_html/lib/plugins/yalist/conf/default.php 
b/public_html/lib/plugins/yalist/conf/default.php
new file mode 100644
index 00000000..7e9a0861
--- /dev/null
+++ b/public_html/lib/plugins/yalist/conf/default.php
@@ -0,0 +1,7 @@
+<?php
+/**
+ * @author LarsDW223
+ */
+
+// How shall definition lists be exported to ODT?
+$conf['def_list_odt_export'] = 'list';
diff --git a/public_html/lib/plugins/yalist/conf/metadata.php 
b/public_html/lib/plugins/yalist/conf/metadata.php
new file mode 100644
index 00000000..5d612a5d
--- /dev/null
+++ b/public_html/lib/plugins/yalist/conf/metadata.php
@@ -0,0 +1,8 @@
+<?php
+/**
+ * Options for the yalist plugin
+ *
+ * @author LarsDW223
+ */
+
+$meta['def_list_odt_export'] = array('multichoice', '_choices' => 
array('list', 'listheader', 'table'));
diff --git a/public_html/lib/plugins/yalist/odt.css 
b/public_html/lib/plugins/yalist/odt.css
new file mode 100644
index 00000000..1023b75d
--- /dev/null
+++ b/public_html/lib/plugins/yalist/odt.css
@@ -0,0 +1,7 @@
+div.dokuwiki .dt {
+    margin-right: 1em;
+    color: __text_alt__;
+    font-weight: bold;
+    max-width: 30%;
+    float: left;
+}
diff --git a/public_html/lib/plugins/yalist/plugin.info.txt 
b/public_html/lib/plugins/yalist/plugin.info.txt
index f6edfd48..81501cc2 100644
--- a/public_html/lib/plugins/yalist/plugin.info.txt
+++ b/public_html/lib/plugins/yalist/plugin.info.txt
@@ -1,7 +1,7 @@
 base    yalist
 author  Mark C. Prins, previously Ben Slusky
 email   mpr...@users.sf.net
-date    2014-05-16
+date    2016-08-29
 name    Simple universal list plugin
 desc    Extend DokuWiki list syntax to allow definition list and multiple 
paragraphs in a list entry
-url     https://www.dokuwiki.org/plugin:yalist
\ No newline at end of file
+url     https://www.dokuwiki.org/plugin:yalist
diff --git a/public_html/lib/plugins/yalist/style.css 
b/public_html/lib/plugins/yalist/style.css
index b4655ee8..c30b734e 100644
--- a/public_html/lib/plugins/yalist/style.css
+++ b/public_html/lib/plugins/yalist/style.css
@@ -14,12 +14,6 @@ div.dokuwiki .dt {
     float: left;
 }
 
-div.dokuwiki .dt,
-div.dokuwiki .dd,
-div.dokuwiki .li {
-    margin-bottom: 0.33em;
-}
-
 div.dokuwiki dd {
     margin-left: 3em;
 }
diff --git a/public_html/lib/plugins/yalist/syntax.php 
b/public_html/lib/plugins/yalist/syntax.php
index bc287148..7304e318 100644
--- a/public_html/lib/plugins/yalist/syntax.php
+++ b/public_html/lib/plugins/yalist/syntax.php
@@ -21,11 +21,18 @@
  * @author     Ben Slusky <slus...@paranoiacs.org>
  *
  */
-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');
+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_yalist extends DokuWiki_Syntax_Plugin {
     var $stack = array();
+    static $odt_table_stack = array();
+    static $odt_table_stack_index = 0;
+
     function getType() {
         return 'container';
     }
@@ -40,27 +47,28 @@ class syntax_plugin_yalist extends DokuWiki_Syntax_Plugin {
         return array('substition', 'protected', 'disabled', 'formatting');
     }
     function connectTo($mode) {
-       $this->Lexer->addEntryPattern('\n {2,}(?:--?|\*\*?|\?|::?)', $mode, 
'plugin_yalist');
-       $this->Lexer->addEntryPattern('\n\t{1,}(?:--?|\*\*?|\?|::?)', $mode, 
'plugin_yalist');
-       $this->Lexer->addPattern('\n {2,}(?:--?|\*\*?|\?|::?|\.\.)', 
'plugin_yalist');
-       $this->Lexer->addPattern('\n\t{1,}(?:--?|\*\*?|\?|::?|\.\.)', 
'plugin_yalist');
+        $this->Lexer->addEntryPattern('\n {2,}(?:--?|\*\*?|\?|::?)', $mode, 
'plugin_yalist');
+        $this->Lexer->addEntryPattern('\n\t{1,}(?:--?|\*\*?|\?|::?)', $mode, 
'plugin_yalist');
+        $this->Lexer->addPattern('\n {2,}(?:--?|\*\*?|\?|::?|\.\.)', 
'plugin_yalist');
+        $this->Lexer->addPattern('\n\t{1,}(?:--?|\*\*?|\?|::?|\.\.)', 
'plugin_yalist');
     }
     function postConnect() {
         $this->Lexer->addExitPattern('\n', 'plugin_yalist');
     }
-    function handle($match, $state, $pos, &$handler) {
+    function handle($match, $state, $pos, Doku_Handler $handler) {
         $output = array();
         $level = 0;
         switch ($state) {
-        case DOKU_LEXER_ENTER:
-            $frame = $this->_interpret_match($match);
-            $level = $frame['level'] = 1;
-            array_push($output,
-                       "${frame['list']}_open",
-                       "${frame['item']}_open",
-                       "${frame['item']}_content_open");
-            if ($frame['paras'])
-                array_push($output, 'p_open');
+            case DOKU_LEXER_ENTER:
+                $frame = $this->_interpret_match($match);
+                $level = $frame['level'] = 1;
+                array_push($output,
+                            "${frame['list']}_open",
+                        "${frame['item']}_open",
+                        "${frame['item']}_content_open");
+            if ($frame['paras']) {
+                            array_push($output, 'p_open');
+            }
             array_push($this->stack, $frame);
             break;
         case DOKU_LEXER_EXIT:
@@ -70,14 +78,15 @@ class syntax_plugin_yalist extends DokuWiki_Syntax_Plugin {
                 // close the content tag; for the rest it will have been
                 // closed already
                 if ($close_content) {
-                    if ($frame['paras'])
-                        array_push($output, 'p_close');
+                    if ($frame['paras']) {
+                                            array_push($output, 'p_close');
+                    }
                     array_push($output, "${frame['item']}_content_close");
                     $close_content = false;
                 }
                 array_push($output,
-                           "${frame['item']}_close",
-                           "${frame['list']}_close");
+                            "${frame['item']}_close",
+                            "${frame['list']}_close");
             }
             break;
         case DOKU_LEXER_MATCHED:
@@ -89,25 +98,27 @@ class syntax_plugin_yalist extends DokuWiki_Syntax_Plugin {
                 $close_content = true;
                 while ($para_depth < $last_frame['depth'] && 
count($this->stack) > 1) {
                     if ($close_content) {
-                        if ($last_frame['paras'])
-                            array_push($output, 'p_close');
+                        if ($last_frame['paras']) {
+                                                    array_push($output, 
'p_close');
+                        }
                         array_push($output, 
"${last_frame['item']}_content_close");
                         $close_content = false;
                     }
                     array_push($output,
-                               "${last_frame['item']}_close",
-                               "${last_frame['list']}_close");
+                                "${last_frame['item']}_close",
+                                "${last_frame['list']}_close");
                     array_pop($this->stack);
                     $last_frame = end($this->stack);
                 }
                 if ($last_frame['paras']) {
-                    if ($close_content)
-                        // depth did not change
+                    if ($close_content) {
+                                            // depth did not change
                         array_push($output, 'p_close', 'p_open');
-                    else
-                        array_push($output,
-                                   "${last_frame['item']}_content_open",
-                                   'p_open');
+                    } else {
+                                            array_push($output,
+                                    "${last_frame['item']}_content_open",
+                                    'p_open');
+                    }
                 } else {
                     // let's just pretend we didn't match...
                     $state = DOKU_LEXER_UNMATCHED;
@@ -119,11 +130,12 @@ class syntax_plugin_yalist extends DokuWiki_Syntax_Plugin 
{
             if ($curr_frame['depth'] > $last_frame['depth']) {
                 // going one level deeper
                 $level = $last_frame['level'] + 1;
-                if ($last_frame['paras'])
-                    array_push($output, 'p_close');
+                if ($last_frame['paras']) {
+                                    array_push($output, 'p_close');
+                }
                 array_push($output,
-                           "${last_frame['item']}_content_close",
-                           "${curr_frame['list']}_open");
+                            "${last_frame['item']}_content_close",
+                            "${curr_frame['list']}_open");
             } else {
                 // same depth, or getting shallower
                 $close_content = true;
@@ -136,14 +148,15 @@ class syntax_plugin_yalist extends DokuWiki_Syntax_Plugin 
{
                     // again, we need to close the content tag only for
                     // the first frame popped off the stack
                     if ($close_content) {
-                        if ($last_frame['paras'])
-                            array_push($output, 'p_close');
+                        if ($last_frame['paras']) {
+                                                    array_push($output, 
'p_close');
+                        }
                         array_push($output, 
"${last_frame['item']}_content_close");
                         $close_content = false;
                     }
                     array_push($output,
-                               "${last_frame['item']}_close",
-                               "${last_frame['list']}_close");
+                                "${last_frame['item']}_close",
+                                "${last_frame['list']}_close");
                     array_pop($this->stack);
                     $last_frame = end($this->stack);
                 }
@@ -152,8 +165,9 @@ class syntax_plugin_yalist extends DokuWiki_Syntax_Plugin {
                 array_pop($this->stack);
                 $level = $last_frame['level'];
                 if ($close_content) {
-                    if ($last_frame['paras'])
-                        array_push($output, 'p_close');
+                    if ($last_frame['paras']) {
+                                            array_push($output, 'p_close');
+                    }
                     array_push($output, "${last_frame['item']}_content_close");
                     $close_content = false;
                 }
@@ -161,16 +175,17 @@ class syntax_plugin_yalist extends DokuWiki_Syntax_Plugin 
{
                 if ($curr_frame['list'] != $last_frame['list']) {
                     // change list types
                     array_push($output,
-                               "${last_frame['list']}_close",
-                               "${curr_frame['list']}_open");
+                                "${last_frame['list']}_close",
+                                "${curr_frame['list']}_open");
                 }
             }
             // and finally, open tags for the new list item
             array_push($output,
-                       "${curr_frame['item']}_open",
-                       "${curr_frame['item']}_content_open");
-            if ($curr_frame['paras'])
-                array_push($output, 'p_open');
+                        "${curr_frame['item']}_open",
+                        "${curr_frame['item']}_content_open");
+            if ($curr_frame['paras']) {
+                            array_push($output, 'p_open');
+            }
             $curr_frame['level'] = $level;
             array_push($this->stack, $curr_frame);
             break;
@@ -195,140 +210,465 @@ class syntax_plugin_yalist extends 
DokuWiki_Syntax_Plugin {
             'paras' => (substr($match, -1) == substr($match, -2, 1)),
         );
     }
-    function render($mode, &$renderer, $data) {
-        if ($mode != 'xhtml' && $mode != 'latex')
-            return false;
+
+    function render($mode, Doku_Renderer $renderer, $data) {
+        if ($mode != 'xhtml' && $mode != 'latex' && $mode != 'odt') {
+                    return false;
+        }
         if ($data['state'] == DOKU_LEXER_UNMATCHED) {
-            $renderer->doc .= $renderer->_xmlEntities($data['output']);
+            if ($mode != 'odt') {
+                $renderer->doc .= $renderer->_xmlEntities($data['output']);
+            } else {
+                $renderer->cdata($data['output']);
+            }
             return true;
         }
         foreach ($data['output'] as $i) {
-            $markup = '';
-            if ($mode == 'xhtml') {
-                switch ($i) {
-                case 'ol_open':
-                    $markup = "<ol>\n";
-                    break;
-                case 'ol_close':
-                    $markup = "</ol>\n";
-                    break;
-                case 'ul_open':
-                    $markup = "<ul>\n";
-                    break;
-                case 'ul_close':
-                    $markup = "</ul>\n";
-                    break;
-                case 'dl_open':
-                    $markup = "<dl>\n";
-                    break;
-                case 'dl_close':
-                    $markup = "</dl>\n";
-                    break;
-                case 'li_open':
-                    $markup = "<li class=\"level${data['level']}\">";
-                    break;
-                case 'li_content_open':
-                    $markup = "<div class=\"li\">\n";
-                    break;
-                case 'li_content_close':
-                    $markup = "\n</div>";
-                    break;
-                case 'li_close':
-                    $markup = "</li>\n";
-                    break;
-                case 'dt_open':
-                    $markup = "<dt class=\"level${data['level']}\">";
-                    break;
-                case 'dt_content_open':
-                    $markup = "<span class=\"dt\">";
-                    break;
-                case 'dt_content_close':
-                    $markup = "</span>";
-                    break;
-                case 'dt_close':
-                    $markup = "</dt>\n";
-                    break;
-                case 'dd_open':
-                    $markup = "<dd class=\"level${data['level']}\">";
-                    break;
-                case 'dd_content_open':
-                    $markup = "<div class=\"dd\">\n";
-                    break;
-                case 'dd_content_close':
-                    $markup = "\n</div>";
-                    break;
-                case 'dd_close':
-                    $markup = "</dd>\n";
-                    break;
-                case 'p_open':
-                    $markup = "<p>\n";
-                    break;
-                case 'p_close':
-                    $markup = "\n</p>";
-                    break;
-                }
+            switch ($mode) {
+                case 'xhtml':
+                    $this->render_xhtml_item($renderer, $i, $data);
+                break;
+                case 'latex':
+                    $this->render_latex_item($renderer, $i, $data);
+                break;
+                case 'odt':
+                    $this->render_odt_item($renderer, $i, $data);
+                break;
+            }
+        }
+        if ($data['state'] == DOKU_LEXER_EXIT) {
+            if ($mode != 'odt') {
+                $renderer->doc .= "\n";
             } else {
-                // $mode == 'latex'
-                switch ($i) {
-                case 'ol_open':
-                    $markup = "\\begin{enumerate}\n";
-                    break;
-                case 'ol_close':
-                    $markup = "\\end{enumerate}\n";
-                    break;
-                case 'ul_open':
-                    $markup = "\\begin{itemize}\n";
-                    break;
-                case 'ul_close':
-                    $markup = "\\end{itemize}\n";
-                    break;
-                case 'dl_open':
-                    $markup = "\\begin{description}\n";
-                    break;
-                case 'dl_close':
-                    $markup = "\\end{description}\n";
-                    break;
-                case 'li_open':
-                    $markup = "\item ";
-                    break;
-                case 'li_content_open':
-                    break;
-                case 'li_content_close':
-                    break;
-                case 'li_close':
-                    $markup = "\n";
-                    break;
-                case 'dt_open':
-                    $markup = "\item[";
+                $renderer->linebreak();
+            }
+        }
+        return true;
+    }
+
+    function render_xhtml_item(Doku_Renderer $renderer, $item) {
+        $markup = '';
+        switch ($item) {
+            case 'ol_open':
+                $markup = "<ol>\n";
+                break;
+            case 'ol_close':
+                $markup = "</ol>\n";
+                break;
+            case 'ul_open':
+                $markup = "<ul>\n";
+                break;
+            case 'ul_close':
+                $markup = "</ul>\n";
+                break;
+            case 'dl_open':
+                $markup = "<dl>\n";
+                break;
+            case 'dl_close':
+                $markup = "</dl>\n";
+                break;
+            case 'li_open':
+                $markup = "<li class=\"level${data['level']}\">";
+            break;
+        case 'li_content_open':
+            $markup = "<div class=\"li\">\n";
+            break;
+        case 'li_content_close':
+            $markup = "\n</div>";
+            break;
+        case 'li_close':
+            $markup = "</li>\n";
+            break;
+        case 'dt_open':
+            $markup = "<dt class=\"level${data['level']}\">";
+            break;
+        case 'dt_content_open':
+            $markup = "<span class=\"dt\">";
+            break;
+        case 'dt_content_close':
+            $markup = "</span>";
+            break;
+        case 'dt_close':
+            $markup = "</dt>\n";
+            break;
+        case 'dd_open':
+            $markup = "<dd class=\"level${data['level']}\">";
+            break;
+        case 'dd_content_open':
+            $markup = "<div class=\"dd\">\n";
+            break;
+        case 'dd_content_close':
+            $markup = "\n</div>";
+            break;
+        case 'dd_close':
+            $markup = "</dd>\n";
+            break;
+        case 'p_open':
+            $markup = "<p>\n";
+            break;
+        case 'p_close':
+            $markup = "\n</p>";
+            break;
+        }
+        $renderer->doc .= $markup;
+    }
+
+    function render_latex_item(Doku_Renderer $renderer, $item) {
+        $markup = '';
+        switch ($item) {
+            case 'ol_open':
+                $markup = "\\begin{enumerate}\n";
+                break;
+            case 'ol_close':
+                $markup = "\\end{enumerate}\n";
+                break;
+            case 'ul_open':
+                $markup = "\\begin{itemize}\n";
+                break;
+            case 'ul_close':
+                $markup = "\\end{itemize}\n";
+                break;
+            case 'dl_open':
+                $markup = "\\begin{description}\n";
+                break;
+            case 'dl_close':
+                $markup = "\\end{description}\n";
+                break;
+            case 'li_open':
+                $markup = "\item ";
+                break;
+            case 'li_content_open':
+                break;
+            case 'li_content_close':
+                break;
+            case 'li_close':
+                $markup = "\n";
+                break;
+            case 'dt_open':
+                $markup = "\item[";
+                break;
+            case 'dt_content_open':
+                break;
+            case 'dt_content_close':
+                break;
+            case 'dt_close':
+                $markup = "] ";
+                break;
+            case 'dd_open':
+                break;
+            case 'dd_content_open':
+                break;
+            case 'dd_content_close':
+                break;
+            case 'dd_close':
+                $markup = "\n";
+                break;
+            case 'p_open':
+                $markup = "\n";
+                break;
+            case 'p_close':
+                $markup = "\n";
+                break;
+        }
+        $renderer->doc .= $markup;
+    }
+
+    /**
+     * Render yalist items for ODT format
+     *
+     * @param Doku_Renderer $renderer  The current renderer object
+     * @param string        $item      The item to render
+     *
+     * @author LarsDW223
+     */
+    function render_odt_item(Doku_Renderer $renderer, $item) {
+        switch ($item) {
+            case 'ol_open':
+                $renderer->listo_open();
+                break;
+            case 'ul_open':
+                $renderer->listu_open();
+                break;
+            case 'dl_open':
+                if ($this->getConf('def_list_odt_export') != 'table') {
+                    $renderer->listu_open();
+                } else {
+                    $renderer->table_open(2);
+                }
+                self::$odt_table_stack [self::$odt_table_stack_index] = 
array();
+                self::$odt_table_stack 
[self::$odt_table_stack_index]['itemOpen'] = false;
+                self::$odt_table_stack 
[self::$odt_table_stack_index]['dtState'] = 0;
+                self::$odt_table_stack 
[self::$odt_table_stack_index]['ddState'] = 0;
+                self::$odt_table_stack_index++;
+                break;
+            case 'ol_close':
+            case 'ul_close':
+                $renderer->list_close();
+                break;
+            case 'dl_close':
+                $config = $this->getConf('def_list_odt_export');
+                if ($config != 'table') {
+                    if (self::$odt_table_stack [self::$odt_table_stack_index - 
1]['ddState'] != 2) {
+                        if ($config == 'listheader' && 
method_exists($renderer, 'listheader_close')) {
+                            $renderer->listheader_close();
+                        } else {
+                            $renderer->listitem_close();
+                        }
+                    }
+                    self::$odt_table_stack [self::$odt_table_stack_index - 
1]['ddState'] = 0;
+                    $renderer->list_close();
+                } else {
+                    if (self::$odt_table_stack [self::$odt_table_stack_index - 
1]['ddState'] == 0) {
+                        $properties = array();
+                        $properties ['border'] = 'none';
+                        $renderer->_odtTableCellOpenUseProperties($properties);
+                        $renderer->tablecell_close();
+                    }
+                    self::$odt_table_stack [self::$odt_table_stack_index - 
1]['ddState'] = 0;
+                    if (self::$odt_table_stack [self::$odt_table_stack_index - 
1]['itemOpen'] === true) {
+                        $renderer->tablerow_close(1);
+                        self::$odt_table_stack [self::$odt_table_stack_index - 
1]['itemOpen'] = false;
+                    }
+                    $renderer->table_close();
+                }
+                if (self::$odt_table_stack_index > 0) {
+                    self::$odt_table_stack_index--;
+                    unset(self::$odt_table_stack 
[self::$odt_table_stack_index]);
+                }
+                break;
+
+            case 'li_open':             
+                $renderer->listitem_open(1);
+                break;
+            case 'li_content_open':
+                $renderer->listcontent_open();
+                break;
+            case 'li_content_close':    
+                $renderer->listcontent_close();
+                break;
+            case 'li_close':
+                $renderer->listitem_close();
+                break;
+
+            case 'dt_open': // unconditional: DT tags can't contain 
paragraphs. That would not be legal XHTML.
+                switch ($this->getConf('def_list_odt_export')) {
+                    case 'listheader':
+                        if (self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['itemOpen'] === true) {
+                            if (method_exists($renderer, 'listheader_close')) {
+                                $renderer->listheader_close();
+                            } else {
+                                $renderer->listitem_close();
+                            }
+                            self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['itemOpen'] = false;
+                        }
+                        if (self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['itemOpen'] === false) {
+                            if (method_exists($renderer, 'listheader_open')) {
+                                $renderer->listheader_open(1);
+                            } else {
+                                $renderer->listitem_open(1);
+                            }
+                            self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['itemOpen'] = true;
+                        }
+                    break;
+                    case 'table':
+                        if (self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['ddState'] == 0) {
+                            $properties = array();
+                            $properties ['border'] = 'none';
+                            
$renderer->_odtTableCellOpenUseProperties($properties);
+                            $renderer->tablecell_close();
+                        }
+
+                        if (self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['itemOpen'] === true) {
+                            $renderer->tablerow_close();
+                            self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['itemOpen'] = false;
+                        }
+                        if (self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['itemOpen'] === false) {
+                            $renderer->tablerow_open(1);
+                            self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['itemOpen'] = true;
+                        }
+                        $properties = array();
+                        $properties ['border'] = 'none';
+                        $renderer->_odtTableCellOpenUseProperties($properties);
+                    break;
+                    default:
+                        if (self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['itemOpen'] === true) {
+                            $renderer->listitem_close();
+                            self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['itemOpen'] = false;
+                        }
+                        if (self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['itemOpen'] === false) {
+                            $renderer->listitem_open(1);
+                            self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['itemOpen'] = true;
+                        }
                     break;
-                case 'dt_content_open':
+                }
+            self::$odt_table_stack [self::$odt_table_stack_index - 
1]['dtState'] = 1;
+            self::$odt_table_stack [self::$odt_table_stack_index - 
1]['ddState'] = 0;
+            break;
+            case 'dd_open':
+                switch ($this->getConf('def_list_odt_export')) {
+                    case 'listheader':
+                        if (self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['itemOpen'] === false) {
+                            if (method_exists($renderer, 'listheader_open')) {
+                                $renderer->listheader_open(1);
+                            } else {
+                                $renderer->listitem_open(1);
+                            }
+                            self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['itemOpen'] = true;
+                        }
+                    break;
+                    case 'table':
+                        if (self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['itemOpen'] === false) {
+                            $renderer->tablerow_open(1);
+                            self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['itemOpen'] = true;
+                        }
+                        if (self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['dtState'] == 1) {
+                            $renderer->tablecell_close();
+                        }
+                        if (self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['dtState'] == 0) {
+                            $properties = array();
+                            $properties ['border'] = 'none';
+                            
$renderer->_odtTableCellOpenUseProperties($properties);
+                            $renderer->tablecell_close();
+                        }
+
+                        $properties = array();
+                        $properties ['border'] = 'none';
+                        $renderer->_odtTableCellOpenUseProperties($properties);
+                    break;
+                    default:
+                        if (self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['itemOpen'] === false) {
+                            $renderer->listitem_open(1);
+                            self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['itemOpen'] = true;
+                        }
                     break;
-                case 'dt_content_close':
+                }
+            self::$odt_table_stack [self::$odt_table_stack_index - 
1]['dtState'] = 0;
+            self::$odt_table_stack [self::$odt_table_stack_index - 
1]['ddState'] = 1;
+            break;
+            case 'dt_content_open':
+                switch ($this->getConf('def_list_odt_export')) {
+                    case 'table':
+                        $renderer->p_open();
                     break;
-                case 'dt_close':
-                    $markup = "] ";
+                    default:
+                        $renderer->listcontent_open();
                     break;
-                case 'dd_open':
+                }
+            $this->renderODTOpenSpan($renderer);
+            break;
+            case 'dd_content_open':
+                switch ($this->getConf('def_list_odt_export')) {
+                    case 'table':
+                        $renderer->p_open();
                     break;
-                case 'dd_content_open':
+                    default:
+                        $renderer->listcontent_open();
                     break;
-                case 'dd_content_close':
+                }
+            break;
+            case 'dt_content_close':
+                $this->renderODTCloseSpan($renderer);
+                switch ($this->getConf('def_list_odt_export')) {
+                    case 'table':
+                        $renderer->p_close();
                     break;
-                case 'dd_close':
-                    $markup = "\n";
+                    default:
+                        $renderer->listcontent_close();
                     break;
-                case 'p_open':
-                    $markup = "\n";
+                }
+            break;
+            case 'dd_content_close':
+                switch ($this->getConf('def_list_odt_export')) {
+                    case 'table':
+                        $renderer->p_close();
                     break;
-                case 'p_close':
-                    $markup = "\n";
+                    default:
+                        $renderer->listcontent_close();
                     break;
                 }
-            }
-            $renderer->doc .= $markup;
+            break;
+            case 'dt_close':
+                switch ($this->getConf('def_list_odt_export')) {
+                    case 'listheader':
+                        $renderer->linebreak();
+                        break;
+                    case 'table':
+                        $renderer->tablecell_close();
+                        self::$odt_table_stack [self::$odt_table_stack_index - 
1]['dtState'] = 2;
+                        break;
+                    default:
+                        $renderer->linebreak();
+                        break;
+                }
+            break;
+
+            case 'dd_close':
+                switch ($this->getConf('def_list_odt_export')) {
+                    case 'listheader':
+                        if (self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['itemOpen'] === true) {
+                            if (method_exists($renderer, 'listheader_close')) {
+                                $renderer->listheader_close();
+                            } else {
+                                $renderer->listitem_close();
+                            }
+                            self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['itemOpen'] = false;
+                        }
+                        break;
+                    case 'table':
+                        $renderer->tablecell_close();
+                        if (self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['itemOpen'] === true) {
+                            $renderer->tablerow_close(1);
+                            self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['itemOpen'] = false;
+                        }
+                        break;
+                    default:
+                        if (self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['itemOpen'] === true) {
+                            $renderer->listitem_close(1);
+                            self::$odt_table_stack 
[self::$odt_table_stack_index - 1]['itemOpen'] = false;
+                        }
+                        break;
+                }
+            self::$odt_table_stack [self::$odt_table_stack_index - 
1]['dtState'] = 0;
+            self::$odt_table_stack [self::$odt_table_stack_index - 
1]['ddState'] = 2;
+            break;
+
+            case 'p_open':
+                $renderer->p_open();
+                break;
+            case 'p_close':
+                $renderer->p_close();
+                break;
         }
-        if ($data['state'] == DOKU_LEXER_EXIT)
-            $renderer->doc .= "\n";
-        return true;
     }
-}
\ No newline at end of file
+
+    /**
+     * Open ODT span for rendering of dt-content
+     *
+     * @param Doku_Renderer $renderer  The current renderer object
+     *
+     * @author LarsDW223
+     */
+    function renderODTOpenSpan($renderer) {
+        $properties = array();
+
+        // Get CSS properties for ODT export.
+        $renderer->getODTProperties($properties, 'div', 'dokuwiki dt', NULL);
+
+        $renderer->_odtSpanOpenUseProperties($properties);
+    }
+
+    /**
+     * Close ODT span for rendering of dt-content
+     *
+     * @param Doku_Renderer $renderer  The current renderer object
+     *
+     * @author LarsDW223
+     */
+    function renderODTCloseSpan($renderer) {
+        if (method_exists($renderer, '_odtSpanClose') === false) {
+            // Function is not supported by installed ODT plugin version, 
return.
+            return;
+        }
+        $renderer->_odtSpanClose();
+    }
+}

-- 


Reply via email to