diff --git a/Output.php b/Output.php index d0d4fc8..9661d10 100644 --- a/Output.php +++ b/Output.php @@ -276,6 +276,8 @@ class Output 'name' => $this->getLang('openlocation'), 'path' => $params['openlocation'], 'isdir' => true, + // Render without an icon (no mf_* class). + 'noicon' => true, ]; /** @var \Doku_Renderer_xhtml $renderer */ @@ -439,7 +441,8 @@ class Output $serviceUrl = $syntax ? trim((string)$syntax->getConf('open_service_url')) : ''; $serviceToken = $syntax ? trim((string)$syntax->getConf('open_service_token')) : ''; - // Prepare a DokuWiki-style media link with a folder icon class. + // Prepare a DokuWiki-style link. + // Use the same icon mechanism as normal media links (via $link['class']). $link = [ 'target' => $conf['target']['extern'], 'style' => '', @@ -448,15 +451,18 @@ class Output 'name' => $caption, 'url' => '#', 'title' => $renderer->_xmlEntities($path), - 'more' => ' class="filetools-open media mediafile mf_folder" data-path="' . hsc($path) . '"', + 'more' => '', ]; + + $noIcon = !empty($item['noicon']); + $link['class'] = $noIcon + ? 'filetools-open' + : 'filetools-open media mediafile mf_folder'; + + $link['more'] .= ' data-path="' . hsc($path) . '"'; if ($conf['relnofollow']) $link['more'] .= ' rel="nofollow"'; - if ($serviceUrl !== '') { - $link['more'] .= ' data-service-url="' . hsc($serviceUrl) . '"'; - } - if ($serviceToken !== '') { - $link['more'] .= ' data-service-token="' . hsc($serviceToken) . '"'; - } + if ($serviceUrl !== '') $link['more'] .= ' data-service-url="' . hsc($serviceUrl) . '"'; + if ($serviceToken !== '') $link['more'] .= ' data-service-token="' . hsc($serviceToken) . '"'; $renderer->doc .= $renderer->_formatLink($link); } diff --git a/style.css b/style.css index 65f0148..ae378b6 100644 --- a/style.css +++ b/style.css @@ -17,3 +17,15 @@ div.filetools-plugin table thead tr.luxtools-openlocation-row td { div.filetools-plugin table thead tr.luxtools-openlocation-row:hover td { background-color: @ini_background !important; } + +/* Ensure directories use a dedicated folder icon. + * DokuWiki's icon CSS is generated primarily for file extensions; a custom + * mf_folder class may otherwise fall back to the generic file icon. + * + * The relative URL is resolved against the plugin directory by DokuWiki's CSS + * aggregator, resulting in lib/images/fileicons/svg/folder.svg. + */ +div.filetools-plugin a.media.mediafile.mf_folder, +div.filetools-plugin a.mediafile.mf_folder { + background-image: url(../../images/fileicons/svg/folder.svg) !important; +}