getTemplateVars('print_page') == 'y' || $prefs['layout_tabs_optional'] === 'n') {
$params['toggle'] = 'n';
}
if ($repeat) {
// opening
if (! is_array($smarty_tabset)) {
$smarty_tabset = [];
}
$tabset_index = count($smarty_tabset) + 1;
$smarty_tabset_name = getTabsetName($params, $tabset_index);
$smarty_tabset[$tabset_index] = [ 'name' => $smarty_tabset_name, 'tabs' => []];
if (! isset($smarty_tabset_i_tab)) {
$smarty_tabset_i_tab = 1;
}
if (! isset($cookietab) || $tabset_index > 1) {
$cookietab = getCookie($smarty_tabset_name, 'tabs', 1);
}
// work out cookie value if there
if (isset($_REQUEST['cookietab']) && $tabset_index) { // overrides cookie if added to request as in tiki-admin.php?page=look&cookietab=6
$cookietab = empty($_REQUEST['cookietab']) ? 1 : $_REQUEST['cookietab'];
setCookieSection($smarty_tabset_name, $cookietab, 'tabs'); // too late to set it here as output has started
}
// If the tabset specifies the tab, override any kind of memory but only if not doing "no tabs" mode
if (isset($params['cookietab']) && $cookietab !== 'n') {
$cookietab = $params['cookietab'];
}
$smarty_tabset_i_tab = 1;
return;
} else {
$content = trim($content);
if (empty($content)) {
return '';
}
if (! empty($params['skipsingle']) && count($smarty_tabset[$tabset_index]['tabs']) == 1) {
return $content;
}
$ret = '';
$notabs = '';
//closing
if ($prefs['feature_tabs'] == 'y') {
if (empty($params['toggle']) || $params['toggle'] != 'n') {
$smarty->loadPlugin('smarty_function_button');
if ($cookietab == 'n') {
$button_params['_text'] = tra('Tab View');
} else {
$button_params['_text'] = tra('No Tabs');
}
$button_params['_size'] = 'mini';
$button_params['_auto_args'] = '*';
$button_params['_onclick'] = "setCookie('$smarty_tabset_name','" . ($cookietab == 'n' ? 1 : 'n' ) . "', 'tabs') ;";
$button_params['_class'] = 'btn-sm btn-secondary';
$notabs = smarty_function_button($button_params, $smarty);
$notabs = "
$notabs
";
$content_class = '';
} else {
$content_class = ' full_width'; // no no-tabs button
}
} else {
return $content;
}
if ($cookietab == 'n') {
return $ret . $notabs . $content;
}
$smarty_tabset_name = getTabsetName($params, $tabset_index);
if (isset($params['params']['direction']) && $params['params']['direction'] == 'vertical') {
$count = 1;
$ret .= '
' . $notabs . '
';
foreach ($smarty_tabset[$tabset_index]['tabs'] as $value) {
$ret .= '
' . $value['label'] . '';
++$count;
}
$ret .= "
";
$tabset_index--;
$ret .= '
' . $content . '
';
//add styles
applyStyles($params, $smarty_tabset_name);
} else {
$ret .= '' . $notabs;
$count = 1;
$ret .= '
';
foreach ($smarty_tabset[$tabset_index]['tabs'] as $value) {
$ret .= '- ' . $value['label'] . '
';
++$count;
}
$ret .= '
';
$ret .= "
";
$tabset_index--;
$ret .= '' . $content . '
';
// add styles
applyStyles($params, $smarty_tabset_name);
}
return $ret;
}
}
/**
* @param $params
* @param $tabset_index
* @return array
*/
function getTabsetName($params, $tabset_index)
{
if (! empty($params['name'])) {
$smarty_tabset_name = $params['name']; // names have to be unique
} else {
$short_name = str_replace(['tiki-', '.php'], '', basename($_SERVER['SCRIPT_NAME']));
$smarty_tabset_name = '_' . $short_name . $tabset_index;
}
$smarty_tabset_name = TikiLib::remove_non_word_characters_and_accents($smarty_tabset_name);
return $smarty_tabset_name;
}
function applyStyles($params, $smarty_tabset_name)
{
$headerlib = TikiLib::lib('header');
$panels = '#v-pills-' . $smarty_tabset_name;
$tabs = '#nav-' . $smarty_tabset_name . ' .nav-link';
$style = '';
$style .= ! empty($params['params']['tabborderstyle']) ? $tabs . '{border-style:' . $params['params']['tabborderstyle'] . ';} ' : '';
$style .= ! empty($params['params']['tabborderwidth']) ? $tabs . '{border-width:' . $params['params']['tabborderwidth'] . 'px;} ' : '';
$style .= ! empty($params['params']['tabbordercolor']) ? $tabs . '{border-color:' . $params['params']['tabbordercolor'] . ';} ' : '';
$style .= ! empty($params['params']['tabfontstyle']) ? $tabs . '{font-style:' . $params['params']['tabfontstyle'] . ';} ' : '';
$style .= ! empty($params['params']['tabfontweight']) ? $tabs . '{font-weight:' . $params['params']['tabfontweight'] . ';} ' : '';
$style .= ! empty($params['params']['tabfontsize']) ? $tabs . '{font-size:' . $params['params']['tabfontsize'] . 'px;} ' : '';
$style .= ! empty($params['params']['tabtextcolor']) ? $tabs . '{color:' . $params['params']['tabtextcolor'] . ';} ' : '';
$style .= ! empty($params['params']['tabactivetextcolor']) ? $tabs . '.active {color:' . $params['params']['tabactivetextcolor'] . ';} ' : '';
$style .= ! empty($params['params']['tabbgcolor']) ? $tabs . '{background-color:' . $params['params']['tabbgcolor'] . ';} ' : '';
$style .= ! empty($params['params']['tabactivebgcolor']) ? $tabs . '.active {background:' . $params['params']['tabactivebgcolor'] . ';} ' : '';
$style .= ! empty($params['params']['panelbgcolor']) ? $panels . '{background-color:' . $params['params']['panelbgcolor'] . ';} ' : '';
$style .= ! empty($params['params']['paneltextcolor']) ? $panels . '{color:' . $params['params']['paneltextcolor'] . ';} ' : '';
$style .= ! empty($params['params']['paneltextstyle']) ? $panels . '{font-style:' . $params['params']['paneltextstyle'] . ';} ' : '';
$style .= ! empty($params['params']['panelfontweight']) ? $panels . '{font-weight:' . $params['params']['panelfontweight'] . ';} ' : '';
$style .= ! empty($params['params']['panelfontsize']) ? $panels . '{font-size:' . $params['params']['panelfontsize'] . 'px;} ' : '';
$style .= ! empty($params['params']['panelborderstyle']) ? $panels . '{border-style:' . $params['params']['panelborderstyle'] . ';} ' : '';
$style .= ! empty($params['params']['panelborderwidth']) ? $panels . '{border-width:' . $params['params']['panelborderwidth'] . 'px;} ' : '';
$style .= ! empty($params['params']['panelbordercolor']) ? $panels . '{border-color:' . $params['params']['panelbordercolor'] . ';} ' : '';
$headerlib->add_css($style);
}