*/
use_helper('Javascript', 'I18N');
/**
* Wyświetla kontrolke dla obiektu stTabNavigator
*
* @param stTabNavigator $tab_navigator instancja obiektu
* @param array $params parametry
*/
function st_include_tab_navigator($tab_navigator, $params = array())
{
echo st_get_tab_navigator($tab_navigator, $params);
}
/**
* Zwraca kontrolke dla obiektu stTabNavigator
*
* @param stTabNavigator $tab_navigator instancja obiektu
* @param array $params parametry
* @return string HTML
*/
function st_get_tab_navigator($tab_navigator, $params = array())
{
st_theme_use_stylesheet('stTabNavigator.css');
sfContext::getInstance()->getResponse()->addJavascript('/plugins/stTabNavigatorPlugin/js/stTabNavigator.js');
if (!isset($params['target_url']))
{
$params['target_url'] = $tab_navigator->getTargetUrl();
}
if (!isset($params['class']))
{
$params['class'] = 'st_tab_navigator';
}
if (!isset($params['param_name']))
{
$params['param_name'] = $tab_navigator->getName();
}
if (!isset($params['id']))
{
$params['id'] = $params['class'].'-'.$tab_navigator->getName();
}
else
{
$params['id'] .= '-'.$tab_navigator->getName();
}
if (!isset($params['s_tab_class']))
{
$params['s_tab_class'] = 'st_selected';
}
if (!isset($params['f_tab_class']))
{
$params['f_tab_class'] = 'st_first';
}
if (!isset($params['l_tab_class']))
{
$params['l_tab_class'] = 'st_last';
}
if (!isset($params['d_tab_class']))
{
$params['d_tab_class'] = 'st_dummy';
}
if (!isset($params['c_tab_class']))
{
$params['c_tab_class'] = 'st_content_tab';
}
$content = '';
if(count($tab_navigator->getTabs())==0)
{
return;
}
foreach ($tab_navigator->getTabs() as $tab)
{
$params['tab_class']='';
if ($tab->getIndex() == $tab_navigator->getCurrentTab()->getIndex())
{
$params['tab_class'] .= $params['s_tab_class']. ' ';
}
if ($tab->getIndex() == $tab_navigator->getLastTab()->getIndex())
{
$params['tab_class'] .= $params['l_tab_class']. ' ';
}
elseif ($tab->getIndex() == $tab_navigator->getFirstTab()->getIndex())
{
$params['tab_class'] .= $params['f_tab_class']. ' ';
}
$content .= _link_to_tab($tab, $params)."\n";
}
$content .= content_tag('li', '', array('class' => $params['d_tab_class']));
$ul_content = content_tag('ul', $content);
$tab_content = _get_tab_content($tab_navigator, $params);
$select_js = '';
return content_tag('div', $ul_content, array('id' => $params['id'], 'class' => $params['class'])).$tab_content.$select_js;
}
/**
* Zwraca link dla zakładki
*
* @param stTab $tab obiekt zakładki
* @param array $params parametry
* @return string
*/
function _link_to_tab($tab, $params = array())
{
$target_url = $params['target_url'];
$param_name = $params['param_name'];
$tab_navigator_id = $params['id'];
$tab_class = $params['tab_class'];
if (strpos($target_url, '?') === false)
{
$url_for = url_for($target_url.'?'.$param_name.'='.$tab->getIndex());
}
else
{
$url_for = url_for($target_url.'&'.$param_name.'='.$tab->getIndex());
}
$tab_id = $tab_navigator_id.'-link-'.$tab->getIndex();
$params_for_url = $tab->getParamsForUrl();
$params_for_url[$param_name] = $tab->getIndex();
$indicator = content_tag('div', image_tag('/plugins/stTabNavigatorPlugin/images/ajax-loader.gif'), array('class' => 'st_indicator'));
$link_to_remote = content_tag('a', content_tag('span',__($tab->getLabel(), '', $tab->getModuleName())), array('href' => '#'));
$url = url_for($params_for_url);
$js = <<
//
JS;
if ($tab_class)
{
return content_tag('li', $link_to_remote.$js, array('id' => $tab_id, 'class' => $tab_class));
}
return content_tag('li', $link_to_remote.$js, array('id' => $tab_id));
}
/**
* Zwraca kontener zawierający zawartość zakładki
*
* @param stTabNavigator $tab_navigator
* @param array $params parametry
* @return unknown
*/
function _get_tab_content($tab_navigator, $params = array())
{
return content_tag('div', '', array('id' => $params['id'].'-content', 'class' => $params['c_tab_class']));
}