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.
 
 
 
 
 
 

87 lines
2.9 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$
/**
* Smarty plugin
* @package Smarty
* @subpackage plugins
*
* \brief smarty_block_tabs : add tabs to a template
*
*
* @param array $params - params are passed through the array params and available under their key. i.e $params['name']
* The following params are supported via $params as keys:
* string name - name of the tab
* string print - 'y' this tab will be printed (by setting the class active flag)
* integer key ????
* @param string $content - content of the tab
* @param object $smarty - ref to smarty instance
* @param ref $repeat - ????
*
*
* usage:
* \code
* {tab name="myname" print=1}
* tab content
* {/tab}
* \endcode
*/
function smarty_block_tab($params, $content, $smarty, &$repeat)
{
global $prefs, $smarty_tabset, $cookietab, $smarty_tabset_i_tab, $tabset_index;
$smarty = TikiLib::lib('smarty');
if ($repeat) {
return;
} else {
$print_page = $smarty->getTemplateVars('print_page');
$name = $smarty_tabset[$tabset_index]['name'];
$id = null;
$active = null;
if ($print_page != 'y') {
$smarty_tabset_i_tab = count($smarty_tabset[$tabset_index]['tabs']) + 1;
if (empty($params['name'])) {
$params['name'] = "tab" . $smarty_tabset_i_tab;
}
if (empty($params['key'])) {
$params['key'] = $smarty_tabset_i_tab;
}
if (empty($name)) {
$name = $tabset_index;
}
$id = $id = "content$name-{$params['key']}";
$active = ($smarty_tabset_i_tab == $cookietab) ? 'active show' : '';
$def = [
'label' => $params['name'],
'id' => $id,
'active' => $active,
];
$smarty_tabset[$tabset_index]['tabs'][] = $def;
} else {
// if we print a page then then all tabs would be "not active" so hidden and we would print nothing.
// we cannot click something so no js handler involed. thats we use the defaultActive
// so get the cookietab as the enabled tab.
$active = (isset($params['print']) && $params['print'] == 'y') ? 'active' : '';
}
if (isset($params['params']['direction']) && $params['params']['direction'] == 'vertical') {
$ret = '<div class="tab-pane ' . $active . '" id="v-pills-' . $id . '" role="tabpanel" aria-labelledby="v-pills-' . $id . '-tab">'.
$content
.'</div>';
} else {
$ret = "<div id='{$id}' class='tab-pane pt-3 $active'>$content</div>";
}
return $ret;
}
}