diff --git a/syntax.php b/syntax.php
index 4d48f8c..23768d7 100644
--- a/syntax.php
+++ b/syntax.php
@@ -23,6 +23,7 @@ define('DOKU_PLUGIN_FILELIST_OUTSIDEJAIL', -2);
class syntax_plugin_filelist extends DokuWiki_Syntax_Plugin {
var $mediadir;
+ var $is_odt_export = false;
function syntax_plugin_filelist() {
global $conf;
@@ -117,9 +118,13 @@ class syntax_plugin_filelist extends DokuWiki_Syntax_Plugin {
list($type, $pattern, $params, $title, $pos) = $data;
+ if ($mode == 'odt') {
+ $this->is_odt_export = true;
+ }
+
// disable caching
$renderer->info['cache'] = (bool) $params['cache'];
- if ($mode == 'xhtml') {
+ if ($mode == 'xhtml' || $mode == 'odt') {
$result = $this->_create_filelist($pattern, $params);
if ($type == 'filename') {
@@ -157,15 +162,23 @@ class syntax_plugin_filelist extends DokuWiki_Syntax_Plugin {
switch ($params['style']) {
case 'list':
case 'olist':
- $renderer->doc .= '
'.DOKU_LF;
+ if (!$this->is_odt_export) {
+ $renderer->doc .= '
'.DOKU_LF;
+ }
$this->_render_list($result, $params, $renderer);
- $renderer->doc .= '
'.DOKU_LF;
+ if (!$this->is_odt_export) {
+ $renderer->doc .= '
'.DOKU_LF;
+ }
break;
case 'table':
- $renderer->doc .= ''.DOKU_LF;
+ if (!$this->is_odt_export) {
+ $renderer->doc .= '
'.DOKU_LF;
+ }
$this->_render_table($result, $params, $pos, $renderer);
- $renderer->doc .= '
'.DOKU_LF;
+ if (!$this->is_odt_export) {
+ $renderer->doc .= '
'.DOKU_LF;
+ }
break;
case 'page':
@@ -216,7 +229,37 @@ class syntax_plugin_filelist extends DokuWiki_Syntax_Plugin {
$link['class'] .= ' mediafile mf_'.$ext;
//output formatted
- $renderer->doc .= $renderer->_formatLink($link);
+ if ( !$this->is_odt_export ) {
+ $renderer->doc .= $renderer->_formatLink($link);
+ } else {
+ $this->render_odt_link ($link, $renderer);
+ }
+ }
+
+ /**
+ * Renders a link for odt mode.
+ *
+ * @param $link the link parameters
+ * @param $renderer the renderer to use
+ * @return void
+ */
+ protected function render_odt_link ($link, &$renderer) {
+ if ( method_exists ($renderer, 'getODTProperties') === true ) {
+ $properties = array ();
+
+ // Get CSS properties for ODT export.
+ $renderer->getODTProperties ($properties, 'a', $link['class'], NULL, 'screen');
+
+ // Insert image if present for that media class.
+ if ( empty($properties ['background-image']) === false ) {
+ $properties ['background-image'] =
+ $renderer->replaceURLPrefix ($properties ['background-image'], DOKU_INC);
+ $renderer->_odtAddImage ($properties ['background-image']);
+ }
+ }
+
+ // Render link.
+ $renderer->externallink($link['url'], $link['name']);
}
/**
@@ -253,13 +296,25 @@ class syntax_plugin_filelist extends DokuWiki_Syntax_Plugin {
if ($file['children'] !== false && $file['treesize'] > 0) {
// render the directory and its subtree
$renderer->listitem_open($level);
+ if ($this->is_odt_export) {
+ $renderer->p_open();
+ }
$renderer->doc .= $file['name'];
$this->_render_list_items($file['children'], $basedir, $webdir, $params, $renderer, $level+1);
+ if ($this->is_odt_export) {
+ $renderer->p_close();
+ }
$renderer->listitem_close();
} else if ($file['children'] === false) {
// render the file
$renderer->listitem_open($level);
+ if ($this->is_odt_export) {
+ $renderer->p_open();
+ }
$this->_render_link($file['name'], $file['path'], $basedir, $webdir, $params, $renderer);
+ if ($this->is_odt_export) {
+ $renderer->p_close();
+ }
$renderer->listitem_close();
} else {
// ignore empty directories