DokuWiki

It's better when it's simple

User Tools

Site Tools


plugin:tagentry

This is an old revision of the document!


tagentry Plugin

Compatible with DokuWiki

2008-05-05, Mulled Wine, Lemming, Anteater, Rincewind, Angua, 2014-09-29 "Hrun", Frusterick Manners

plugin Assign tags using checkboxes

Last updated on
2018-02-15
Provides
Action
Conflicts with
ckgedit, codemirror, fckg
Requires
tag

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

Tagged with editing, javascript, navigation, tags

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

Download and install the plugin using the Plugin Manager using the URL above. Refer to Plugins on how to install plugins manually.


New update 2018-02-15 (see changelogs

Here is an update of the plugin for Dokuwiki 2017-02-19 “Frusterick Manners” that works on my server (not tested with conflict plugins).

This is the old release (2009-09-18) from Robin Gareus.

Changelogs

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. In lib/plugins/tagentry/action.php comment out the following in the function handle_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 function handle_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 in action.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>&#160</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&#160des&#160tags&#160".str_repeat("&#160",$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 &#160 “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>&nbsp;';
    // By this
    $rv.=' /> '.$this->_getTagTitle($t).'</label>&nbsp;';

Sphaira 2013/12/23 14:43:26


plugin/tagentry.1518691004.txt.gz · Last modified: 2018-02-15 11:36 by sphaira

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki