You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

101 lines
3.2 KiB

<?php
// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
//
// All Rights Reserved. See copyright.txt for details and a complete list of authors.
// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
// $Id$
function wikiplugin_catpath_info()
{
return [
'name' => tra('Category Path'),
'documentation' => 'PluginCatPath',
'description' => tra('Show the full category path for a wiki page'),
'prefs' => [ 'feature_categories', 'wikiplugin_catpath' ],
'iconname' => 'structure',
'introduced' => 1,
'params' => [
'divider' => [
'required' => false,
'name' => tra('Separator'),
'description' => tr(
'String used to separate the categories in the path. Default character is %0.',
'<code>></code>'
),
'since' => '1',
'default' => '>',
],
'top' => [
'required' => false,
'name' => tra('Display Top Category'),
'description' => tra('Show the top category as part of the path name (not shown by default)'),
'since' => '1',
'filter' => 'alpha',
'default' => 'no',
'options' => [
['text' => '', 'value' => ''],
['text' => tra('Yes'), 'value' => 'y'],
['text' => tra('No'), 'value' => 'n']
],
],
],
];
}
function wikiplugin_catpath($data, $params)
{
global $prefs;
$smarty = TikiLib::lib('smarty');
$tikilib = TikiLib::lib('tiki');
$categlib = TikiLib::lib('categ');
if ($prefs['feature_categories'] != 'y') {
return "<span class='warn'>" . tra("Categories are disabled") . "</span>";
}
extract($params, EXTR_SKIP);
// default divider is '>'
if (! (isset($divider))) {
$divider = '>';
}
// default setting for top is 'no'
if (! (isset($top))) {
$top = 'no';
} elseif ($top != 'y' and $top != 'yes' and $top != 'n' and $top != 'no') {
$top = 'no';
}
$objId = urldecode($_REQUEST['page']);
$cats = $categlib->get_object_categories('wiki page', $objId);
$catpath = '';
foreach ($cats as $categId) {
$catpath .= '<span class="categpath">';
// Display TOP on each line if wanted
if ($top == 'yes' or $top == 'y') {
$catpath .= '<a class="categpath" href="tiki-browse_categories.php?parentId=0">TOP</a> ' . $divider . ' ';
}
$path = '';
$info = $categlib->get_category($categId);
$path
= '<a class="categpath" href="tiki-browse_categories.php?parentId=' . $info["categId"] . '">' . htmlspecialchars($info["name"]) . '</a>';
while ($info["parentId"] != 0) {
$info = $categlib->get_category($info["parentId"]);
$path = '<a class="categpath" href="tiki-browse_categories.php?parentId=' . $info["categId"] . '">' . htmlspecialchars($info["name"]) . '</a> ' . htmlspecialchars($divider) . ' ' . $path;
}
$catpath .= $path . '</span><br />';
}
return $catpath;
}