diff --git a/helper.php b/helper.php index 3a1580e0..38fe2c7b 100644 --- a/helper.php +++ b/helper.php @@ -32,7 +32,6 @@ class helper_plugin_struct extends Plugin * All descendants are also blacklisted. */ public const BLACKLIST_RENDERER = [ - 'Doku_Renderer_metadata', '\renderer_plugin_qc' ]; diff --git a/meta/SearchConfig.php b/meta/SearchConfig.php index 07f8c79f..14b6082d 100644 --- a/meta/SearchConfig.php +++ b/meta/SearchConfig.php @@ -113,8 +113,8 @@ protected function applyFilterVars($filter) { global $INPUT; global $INFO; - if (!isset($INFO['id'])) { - $INFO['id'] = ''; + if (is_null($INFO)) { + $INFO = pageinfo(); } // apply inexpensive filters first diff --git a/syntax/output.php b/syntax/output.php index ddd6c38f..99083b4d 100644 --- a/syntax/output.php +++ b/syntax/output.php @@ -15,7 +15,7 @@ class syntax_plugin_struct_output extends SyntaxPlugin { - protected $hasBeenRendered = false; + protected $hasBeenRendered = array('metadata'=>false, 'xhtml'=>false); protected const XHTML_OPEN = '
'; protected const XHTML_CLOSE = '
'; @@ -99,13 +99,25 @@ public function render($format, Doku_Renderer $renderer, $data) return true; } } - if (!isset($INFO['id']) || ($ID != $INFO['id'])) return true; - if (!$INFO['exists']) return true; - if ($this->hasBeenRendered) return true; + if (!isset($INFO) || $format == "metadata") { + $pagename = pageinfo()['id']; + } else { + $pagename = $INFO['id']; + } + + if ($ID != $pagename) return true; + if (!page_exists($pagename)) return true; + if ($this->hasBeenRendered['metadata'] && $format == 'metadata') return true; + if ($this->hasBeenRendered['xhtml'] && $format == 'xhtml') return true; if (!preg_match(self::WHITELIST_ACTIONS, act_clean($ACT))) return true; // do not render the output twice on the same page, e.g. when another page has been included - $this->hasBeenRendered = true; + if ($format == 'metadata') { + $this->hasBeenRendered['metadata'] = true; + } + else if ($format == 'xhtml') { + $this->hasBeenRendered['xhtml'] = true; + } try { $assignments = Assignments::getInstance(); } catch (StructException $e) { diff --git a/syntax/table.php b/syntax/table.php index c6de0b84..147b23b9 100644 --- a/syntax/table.php +++ b/syntax/table.php @@ -109,9 +109,14 @@ public function render($format, Doku_Renderer $renderer, $config) } try { - $search = $this->getSearchConfig($config); - if ($format === 'struct_csv') { - // no pagination in export + if ($format === "metadata") { + $search = $this->getSearchConfig($config, false); + } else { + $search = $this->getSearchConfig($config); + } + + if ($format === 'struct_csv' || $format === "metadata") { + // no pagination in export or metadata render $search->setLimit(0); $search->setOffset(0); } @@ -144,9 +149,9 @@ public function render($format, Doku_Renderer $renderer, $config) * @param array $config * @return SearchConfig */ - protected function getSearchConfig($config) + protected function getSearchConfig($config, $dymamic = true) { - return new SearchConfig($config); + return new SearchConfig($config, $dymamic); }