Corrected image link generation for image preview.

This fixes broken preview images if media ids are used in the file pattern
(parameter 'direct=0'). Fixes #27.
This commit is contained in:
LarsDW223
2018-04-07 12:55:36 +02:00
parent ed94025e20
commit bfd71e37a5

View File

@@ -533,9 +533,15 @@ class syntax_plugin_filelist extends DokuWiki_Syntax_Plugin {
* @return void * @return void
*/ */
protected function _render_preview_image ($filepath, $basedir, $webdir, $params, Doku_Renderer $renderer) { protected function _render_preview_image ($filepath, $basedir, $webdir, $params, Doku_Renderer $renderer) {
$imagepath = $this->get_preview_image_path($filepath, $params); $imagepath = $this->get_preview_image_path($filepath, $params, $isImage);
if (!empty($imagepath)) { if (!empty($imagepath)) {
$imgLink = $this->_get_link_url ($imagepath, $basedir, $webdir, 0, 1); if ($isImage == false) {
// Generate link to returned filetype icon
$imgLink = $this->_get_link_url ($imagepath, $basedir, $webdir, 0, 1);
} else {
// Generate link to image file
$imgLink = $this->_get_link_url ($filepath, $basedir, $webdir, $params['randlinks'], $params['direct'], $params['ftp']);
}
$previewsize = $params['previewsize']; $previewsize = $params['previewsize'];
if ($previewsize == 0) { if ($previewsize == 0) {
@@ -545,7 +551,7 @@ class syntax_plugin_filelist extends DokuWiki_Syntax_Plugin {
if ($params['onhover']) { if ($params['onhover']) {
$imgclass = 'class="filelist_preview"'; $imgclass = 'class="filelist_preview"';
} }
if (!$this->is_odt_export) { if (!$this->is_odt_export) {
$renderer->doc .= '<img '.$imgclass.' style=" max-height: '.$previewsize.'px; max-width: '.$previewsize.'px;" src="'.$imgLink.'">'; $renderer->doc .= '<img '.$imgclass.' style=" max-height: '.$previewsize.'px; max-width: '.$previewsize.'px;" src="'.$imgLink.'">';
} else { } else {
@@ -971,7 +977,7 @@ class syntax_plugin_filelist extends DokuWiki_Syntax_Plugin {
return ($path[0] == '/'); return ($path[0] == '/');
} }
} }
function _convert_mediapath($path) { function _convert_mediapath($path) {
$mid = str_replace('/', ':', substr($path, strlen($this->mediadir))); // strip media base dir $mid = str_replace('/', ':', substr($path, strlen($this->mediadir))); // strip media base dir
return ltrim($mid, ':'); // strip leading : return ltrim($mid, ':'); // strip leading :
@@ -989,13 +995,15 @@ class syntax_plugin_filelist extends DokuWiki_Syntax_Plugin {
* @param $filename the file to check * @param $filename the file to check
* @return string Image to use for preview image * @return string Image to use for preview image
*/ */
protected function get_preview_image_path ($filename, $params) { protected function get_preview_image_path ($filename, $params, &$isImage) {
list($ext,$mime) = mimetype(basename($filename)); list($ext,$mime) = mimetype(basename($filename));
$imagepath = ''; $imagepath = '';
$isImage = false;
if (($params['preview'] == 1 || $params['preview'] == 2) && if (($params['preview'] == 1 || $params['preview'] == 2) &&
strncmp($mime, 'image', strlen('image')) == 0) { strncmp($mime, 'image', strlen('image')) == 0) {
// The file is an image. Return itself as the image path. // The file is an image. Return itself as the image path.
$imagepath = $filename; $imagepath = $filename;
$isImage = true;
} }
if (($params['preview'] == 1 && empty($imagepath)) || if (($params['preview'] == 1 && empty($imagepath)) ||
$params['preview'] == 3 ) { $params['preview'] == 3 ) {