Added ODT support.

This commit is contained in:
LarsDW223
2016-04-30 17:45:19 +02:00
parent c26020c439
commit 7441ea06c0

View File

@@ -23,6 +23,7 @@ define('DOKU_PLUGIN_FILELIST_OUTSIDEJAIL', -2);
class syntax_plugin_filelist extends DokuWiki_Syntax_Plugin { class syntax_plugin_filelist extends DokuWiki_Syntax_Plugin {
var $mediadir; var $mediadir;
var $is_odt_export = false;
function syntax_plugin_filelist() { function syntax_plugin_filelist() {
global $conf; global $conf;
@@ -117,9 +118,13 @@ class syntax_plugin_filelist extends DokuWiki_Syntax_Plugin {
list($type, $pattern, $params, $title, $pos) = $data; list($type, $pattern, $params, $title, $pos) = $data;
if ($mode == 'odt') {
$this->is_odt_export = true;
}
// disable caching // disable caching
$renderer->info['cache'] = (bool) $params['cache']; $renderer->info['cache'] = (bool) $params['cache'];
if ($mode == 'xhtml') { if ($mode == 'xhtml' || $mode == 'odt') {
$result = $this->_create_filelist($pattern, $params); $result = $this->_create_filelist($pattern, $params);
if ($type == 'filename') { if ($type == 'filename') {
@@ -157,15 +162,23 @@ class syntax_plugin_filelist extends DokuWiki_Syntax_Plugin {
switch ($params['style']) { switch ($params['style']) {
case 'list': case 'list':
case 'olist': case 'olist':
$renderer->doc .= '<div class="filelist-plugin">'.DOKU_LF; if (!$this->is_odt_export) {
$renderer->doc .= '<div class="filelist-plugin">'.DOKU_LF;
}
$this->_render_list($result, $params, $renderer); $this->_render_list($result, $params, $renderer);
$renderer->doc .= '</div>'.DOKU_LF; if (!$this->is_odt_export) {
$renderer->doc .= '</div>'.DOKU_LF;
}
break; break;
case 'table': case 'table':
$renderer->doc .= '<div class="filelist-plugin">'.DOKU_LF; if (!$this->is_odt_export) {
$renderer->doc .= '<div class="filelist-plugin">'.DOKU_LF;
}
$this->_render_table($result, $params, $pos, $renderer); $this->_render_table($result, $params, $pos, $renderer);
$renderer->doc .= '</div>'.DOKU_LF; if (!$this->is_odt_export) {
$renderer->doc .= '</div>'.DOKU_LF;
}
break; break;
case 'page': case 'page':
@@ -216,7 +229,37 @@ class syntax_plugin_filelist extends DokuWiki_Syntax_Plugin {
$link['class'] .= ' mediafile mf_'.$ext; $link['class'] .= ' mediafile mf_'.$ext;
//output formatted //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) { if ($file['children'] !== false && $file['treesize'] > 0) {
// render the directory and its subtree // render the directory and its subtree
$renderer->listitem_open($level); $renderer->listitem_open($level);
if ($this->is_odt_export) {
$renderer->p_open();
}
$renderer->doc .= $file['name']; $renderer->doc .= $file['name'];
$this->_render_list_items($file['children'], $basedir, $webdir, $params, $renderer, $level+1); $this->_render_list_items($file['children'], $basedir, $webdir, $params, $renderer, $level+1);
if ($this->is_odt_export) {
$renderer->p_close();
}
$renderer->listitem_close(); $renderer->listitem_close();
} else if ($file['children'] === false) { } else if ($file['children'] === false) {
// render the file // render the file
$renderer->listitem_open($level); $renderer->listitem_open($level);
if ($this->is_odt_export) {
$renderer->p_open();
}
$this->_render_link($file['name'], $file['path'], $basedir, $webdir, $params, $renderer); $this->_render_link($file['name'], $file['path'], $basedir, $webdir, $params, $renderer);
if ($this->is_odt_export) {
$renderer->p_close();
}
$renderer->listitem_close(); $renderer->listitem_close();
} else { } else {
// ignore empty directories // ignore empty directories