This is an old revision of the document!
Table of Contents
tagentry Plugin
Compatible with DokuWiki
2008-05-05, Mulled Wine, Lemming, Anteater, Rincewind, Angua, 2014-09-29 "Hrun", Frusterick Manners
This extension has not been updated in over 2 years. It may no longer be maintained or supported and may have compatibility issues.
Similar to tagadd
The tagentry plugin displays a set of tag-name checkboxes just below the edit form and automatically adds or modifies {{tag>}} in the wiki-text using JavaScript when a checkbox is activated.
Download and installation
Refer to Plugins on how to install plugins manually.
Download and install the plugin using the Plugin Manager using the URL above does not work until the bug is fixed.
Author information
I am not the author of this plugin but Robin Gareus yes. I improve or correct this plugin during my spare time. Fixing an error or adding a new function takes time (development, testing and publication), that's why I do not react quickly.
Thank you for your understanding .
Changelogs
-
- Fix PHP 7 deprecated "split" function replaced by "explode".
-
- Update for Dokuwiki 2017-02-19 “Frusterick Manners”
- Fix the following bugs : "+" or "-" apears before tags and Tagentry checkboxes vanished.
- 2009-09-18 : old release from Robin Gareus.
Bugs
"+" or "-" appears before tags
When we use {{topic>}}
syntax with “+” or “-” before tags in order to select results, labels of checkboxes appears with this “+” or “-”, as if they were part of the tag (although this is not the case). I suppose it is because of {{topic>}}
accept parameters in its syntax. — Ner0lph 2010-02-11 16:59 (Europe/Paris timezone)
Tagentry checkboxes vanished when using the Dokuwiki "Anteater" Release 2010-11-07 (and newer)
Just like the plugin was no more active in the edit page.
Had the same problem… Here is a quick and dirty fix; someone with more experience can probably provide a better solution. Inlib/plugins/tagentry/action.php
comment out the following in the functionhandle_editform_output
:
if ( !empty($event->data->_hidden['prefix']) || !empty($event->data->_hidden['suffix'])) return; if ($event->data->findElementByType('wikitext')===false) return
tmul - 2010-11-18
Thanks, the fix worked for me, using Anteater. If I experience any inconvenience, I'll post them.
2011-03-23
Thanks tmul.
This fix worked also for me with the “Rincewind” release.
BidiX - 2011-06-14
This fix works for the Angua release as well (at least on my wiki).
Hmm, seems the behaviour returned with the latest development version . Any suggestions?
krid - 2012-08-28
Not displayed for me too.
Yoshiki - 2012-0830
Same here - haven't been able to see it since the last few releases, even with the fix. Any news on this?
Shoe - 2012-1022
The problem comes from the new version tag plugin. You need to change the way the $alltags variable is initialised. Make the following change in functionhandle_editform_output
:
if ($this->getConf('tagsrc') == 'All tags') { $alltags=array_map('trim', idx_getIndex('subject', '_w')); } else { $alltags=$this->_getpages($tagns); }
This works fine for me with tag plugin released on 2012-08-24 and Dokuwiki 2012-10-13
You can see more in http://blog.dinel.org.uk/?p=272
Dinel - 2012-11-25
Works fine for me, too!
DokuWiki: git@8ca9187; tag: git@41fb82b; tagentry: git@6c654d5
— krid 2012/11/25 14:43
Doesn't work on Dokuwiki 2012-10-13 and tag 2013-02-15…
Filter - 2013-3-19
To make it working for version 2013-05-10 “Weatherwax” you need to apply following patch
./action.php.old 2009-09-18 13:32:00.000000000 +0400 +++ ./action.php 2013-05-30 12:29:47.000000000 +0400 @@ -55,7 +55,7 @@ $pos = $event->data->findElementByAttribute('type','submit'); if(!$pos) return; // no button -> source view mode #echo "DEBUG: <pre>".print_r($event->data,true).'</pre>'; - if ( !empty($event->data->_hidden['prefix']) + if ( empty($event->data->_hidden['prefix']) || !empty($event->data->_hidden['suffix'])) return; if ($event->data->findElementByType('wikitext')===false) return; }elseif(!$event->data['writable']){ @@ -72,7 +72,7 @@ } if ($this->getConf('tagsrc') == 'All tags' && $thlp) { - $alltags=$this->_gettags($thlp); + $alltags=array_map('trim', idx_getIndex('subject', '_w')); } else { $alltags=$this->_getpages($tagns); }
— Denis 2013/05/30 10:22
The last fix work fine on Dokuwiki 2013-12-08 “Binky” (after an update you have to empty all the cache)
PHP 7.0 Issue
Neither the old nor the new version of this plugins works with Dokuwiki 2017-02-19 “Frusterick Manners” on PHP 7.0. Error shown is this:
Got error 'PHP message: PHP Fatal error: Uncaught Error: Call to undefined function split() in /var/www/.../dokuwiki/lib/plugins/tagentry/action.php ...
I have no time to look into the code and fix it.
JohnG 2017/09/13 16:30 CET
Quick search shows that split() has been deprecated and removed from 7.0. It was replaced by preg_split() and explode(). The line in question is line 111 of action.php. Although making this change alone has not fixed the issue for me.
EvanC 2017/09/14 15:15 EST
Seems to work for me. I replaced the calls to split() with explode(). There are two calls, on line 111 and 125.
nuess0r 2018/01/01 16:28 CET
Plugin Installation Error - "Header does not match it's checksum"
Upon attempting to install this plugin via the Extension Manager, I receive the error mentioned above. The same also happens when I attempt to manually install it using the URL. I'm on DokuWiki Release 2017-02-19e “Frusterick Manners”, Windows 10, PHP 7. Any ideas about what's going on?
— RiseUp 2018/01/24 22:41:30
Discussions
it doesn't work with Opera — tested with 9.64
JavaScript is enabled and other scripts (e.g. show/hide contents) is working
Tag tables formatting
Phi - 2010/08/25
Good plugin as far as I have used it. But the screen formatting was not very exciting.
The very simple / basic modification below is done in order to get a better formatting of the XML tables of tags:
- uniform width for the columns of the table
- one line for each box + tag label item.
Around line 250 inaction.php
of the plugin replace the three following lines:
$rv.='<div class="'.$options['class'].'">'; $rv.=' <div><label>'.$this->getLang('assign').'</label></div>'; $rv.=' <div class="taglist"'.$dstyle.'>';
with the following
$rv.='<div class="'.$options['class'].'">'; if (!$options['tagboxtable']) $rv.=' <div><label>'.$this->getLang('assign').'</label></div>'; $rv.=' <div><label> </label></div>'; $rv.=' <div class="taglist"'.$dstyle.'>'; if ($options['tagboxtable']) { $rv.='<table>'; $rv.='<thead><tr>'; $i=0; $ls=0; $lsmax=0; natcasesort($alltags); foreach ($alltags as $t) { if (is_array($options['blacklist']) && $this->_in_casearray($t, $options['blacklist'])) continue; $i++; $ls = strlen($t); if ($ls > $lsmax) $lsmax=$ls; } For ($j=1;$j<=$options['tablerowcnt'];$j++) { $rv.='<th>'; if ($j == 1) $rv.="Liste des tags ".str_repeat(" ",$lsmax-8); if ($j > 1) $rv.=str_repeat("_",$lsmax+1); $rv.='</th>'; } $rv.='</tr></thead>'; $rv.='<tbody><tr>'; } else { $rv.=' <div>'; }
Note: The title Liste des tags is in french but can be changed by whatever you want. Take care to use the   “no-break space” characters to replace your space characters in the title.
I tried this edit, but my website wouldn't load when I made the change. Once I reverted back to the original code, my website ran normally. -JC
Use Heading of tag page
When the tag entry is a page in the namesapce tag (default tag plugin setting) you can display the first heading of the page (if useheading setting is checked) with this modifications in tagentry/action.php :
/** * Return Header title or tag name * @param $tagname The name of tag without namespace * @return Title of the tag page or tag name formatted */ function _getTagTitle($tagname){ global $conf; if( $conf['useheading'] ){ $tagplugin = plugin_load('helper', 'tag'); if ( plugin_isdisabled('tag') || !$tagplugin ) { //msg('The Tag Plugin must be installed to display tagentry.', -1); return $this->clipstring($tagname); } $id = $tagname; $exist = false; resolve_pageID($tagplugin->namespace, $id, $exist); if( $exist ){ return p_get_first_heading($id, false); } } return $this->clipstring($tagname); } // Replace this line (in function _format_tags) $rv.=' /> '.$this->clipstring($t).'</label> '; // By this $rv.=' /> '.$this->_getTagTitle($t).'</label> ';
— Sphaira 2013/12/23 14:43:26