Lexer->addSpecialPattern("\{\{tagcompare>.*?\}\}", $mode, 'plugin_tagfilter_compare'); } /* * Handle the matches */ function handle($match, $state, $pos, Doku_Handler $handler) { $match = trim(substr($match, 13, -2)); return $this->getOpts($match); } /* * Create output */ function render($format, Doku_Renderer $renderer, $opt) { global $ID; global $INPUT; $flags = $opt['tagfilterFlags']; if ($format === 'metadata') return false; if ($format === 'xhtml') { $renderer->nocache(); /* @var helper_plugin_tagfilter $Htagfilter */ $Htagfilter = $this->loadHelper('tagfilter'); /* @var helper_plugin_tagfilter_syntax $HtagfilterSyntax */ $HtagfilterSyntax = $this->loadHelper('tagfilter_syntax'); $renderer->cdata("\n"); list($tagFilters, $allPageids) = $HtagfilterSyntax->getTagPageRelations($opt); $preparedPages = $HtagfilterSyntax->prepareList($allPageids, $flags); //check for read access foreach ($allPageids as $key => $pageid) { if (!$Htagfilter->canRead($pageid)) { unset($allPageids[$key]); } } //check tags for visibility foreach ($tagFilters['pagesPerMatchedTags'] as $pagesPerMatchedTag) { foreach ($pagesPerMatchedTag as $tag => $pageidsPerTag) { if (count(array_intersect($pageidsPerTag, $allPageids)) == 0) { unset($pagesPerMatchedTag[$tag]); } } } $dropdownValues = ['' => '']; foreach ($preparedPages as $key => $page) { if (!in_array($page['id'], $allPageids)) { unset($preparedPages[$key]); } $dropdownValues[$page['id']] = $page['title']; } //dbg($INPUT->arr('tagcompare_page')); $selectedValues = $INPUT->arr('tagcompare_page'); var_dump($selectedValues); echo '
'); $form->addElement(hsc('Tags')); $form->addElement(' | '); for ($ii = 0; $ii < 4; $ii++) { $form->addElement(''); $form->addElement(form_makeListboxField('tagcompare_page[' . $ii . ']', $dropdownValues, $selectedValues[$ii] ?? null, '', '', 'tagcompare', [])); $form->addElement(' | '); } $form->addElement('
---|---|
'); for ($ii = 0; $ii < 4; $ii++) { $form->addElement(' | '); if (!empty($selectedValues[$ii])) { $form->addElement($HPageimage->td($selectedValues[$ii], ['firstimage' => true])); //fixme pageimage->td() does not accept flags as 2nd arg. } $form->addElement(' | '); } $form->addElement('
'); $form->addElement(hsc($tagFilters['label'][$idx])); $form->addElement(' | '); for ($ii = 0; $ii < 4; $ii++) { $form->addElement('');
//more tags per cell(=per page) possible
foreach ($pagesPerMatchedTag as $tagName => $pageidsPerTag) {
if (isset($selectedValues[$ii]) & in_array($selectedValues[$ii], $pageidsPerTag)) {
$form->addElement(hsc($Htagfilter->getTagLabel($tagName)) . ' '); } } $form->addElement(' | ');
}
$form->addElement('
'); $form->addElement('Link'); $form->addElement(' | '); for ($ii = 0; $ii < 4; $ii++) { $form->addElement(''); if (!empty($selectedValues[$ii])) { $form->addElement('Link'); } $form->addElement(' | '); } $form->addElement('