first commit

This commit is contained in:
2025-03-12 17:06:23 +01:00
commit 2241f7131f
13185 changed files with 1692479 additions and 0 deletions

View File

@@ -0,0 +1,207 @@
<?php
/**
* SOTESHOP/stTabNavigatorPlugin
*
* Ten plik należy do aplikacji stTabNavigatorPlugin opartej na licencji (Open License SOTE) Otwarta Licencja SOTE.
* Nie zmieniaj tego pliku, jeśli chcesz korzystać z automatycznych aktualizacji oprogramowania.
* Jeśli chcesz wprowadzać swoje modyfikacje do programu, zapoznaj się z dokumentacją, jak zmieniać
* oprogramowanie bez zmiany kodu bazowego http://www.sote.pl/modifications
*
* @package stTabNavigatorPlugin
* @subpackage helpers
* @copyright SOTE (www.sote.pl)
* @license http://www.sote.pl/license/open (Open License SOTE) Otwarta Licencja SOTE
* @version $Id: stTabNavigatorHelper.php 15099 2011-09-16 10:31:59Z marcin $
*/
/**
* stTabNavigatorPlugin
*
* @package stTabNavigatorPlugin
* @author Marcin Butlak <marcin.butlak@sote.pl>
*/
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 = '<script type="text/javascript">jQuery(document).ready(function() { jQuery("#'.$params['id'].'-link-'.$tab_navigator->getCurrentTab()->getIndex().' > a").click(); });</script>';
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
<script type="text/javascript">
//<![CDATA[
jQuery(function($) {
$('li#$tab_id a').click(function(event) {
stTabNavigator.selectTab('$tab_navigator_id', '$tab_id', '{$params['s_tab_class']}');
$('#{$params['id']}-content').html('$indicator');
$('#$tab_navigator_id-content').load('$url', function() { $('st_indicator-$param_name').hide(); });
event.preventDefault();
});
});
//]]>
</script>
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']));
}

View File

@@ -0,0 +1,354 @@
<?php
/**
* SOTESHOP/stTabNavigatorPlugin
*
* Ten plik należy do aplikacji stTabNavigatorPlugin opartej na licencji (Open License SOTE) Otwarta Licencja SOTE.
* Nie zmieniaj tego pliku, jeśli chcesz korzystać z automatycznych aktualizacji oprogramowania.
* Jeśli chcesz wprowadzać swoje modyfikacje do programu, zapoznaj się z dokumentacją, jak zmieniać
* oprogramowanie bez zmiany kodu bazowego http://www.sote.pl/modifications
*
* @package stTabNavigatorPlugin
* @subpackage libs
* @copyright SOTE (www.sote.pl)
* @license http://www.sote.pl/license/open (Open License SOTE) Otwarta Licencja SOTE
* @version $Id: stTabNavigator.class.php 5034 2010-05-17 12:46:36Z michal $
*/
/**
* Klasa generująca zakładkę
*
* @author Marcin Butlak <marcin.butlak@sote.pl>
*
* @package stTabNavigatorPlugin
* @subpackage libs
*/
class stTab
{
protected $index = 1, $label = '', $moduleName = '', $actionName = '', $params = array();
/**
* Konstruktor inicjalizujący zakładkę
*
* @param string $index index/numer zakładki
* @param string $label Etykieta zakładki
* @param string $moduleName Nazwa modułu
* @param string $actionName Nazwa akcji
* @param array $params Parametry przekazywane do akcji
*/
public function __construct($index, $label, $moduleName, $actionName, $params = null)
{
$this->index = $index;
$this->label = $label;
$this->moduleName = $moduleName;
$this->actionName = $actionName;
if ($params)
{
$this->params = $params;
}
}
/**
* Zwraca index/numer zakładki
*
* @return integer
*/
public function getIndex()
{
return $this->index;
}
/**
* Zwraca nazwę modułu
*
* @return string
*/
public function getLabel()
{
return $this->label;
}
/**
* Zwraca nazwę modułu
*
* @return string
*/
public function getModuleName()
{
return $this->moduleName;
}
/**
* Zwraca nazwę akcji
*
* @return string
*/
public function getActionName()
{
return $this->actionName;
}
/**
* Zwraca tablicę parametrów
*
* @return array
*/
public function getParams()
{
return $this->params;
}
/**
* Zwraca parametry URL
* Przydatne jezeli chcecie je przekazać do zbudowania linku np. przez helper url_for
*
* @return array of URL parameters
*/
public function getParamsForUrl()
{
$params = $this->getParams();
$params['module'] = $this->getModuleName();
$params['action'] = $this->getActionName();
return $params;
}
}
/**
* Klasa generująca nawiagtor zakładek
*
* @author Marcin Butlak <marcin.butlak@sote.pl>
*
* @package stTabNavigatorPlugin
* @subpackage libs
*/
class stTabNavigator
{
protected static $instance = array();
protected $name = '', $targetUrl = '', $context = null, $tabs = array(), $tab = 0, $validateTabs = true;
/**
* Zwraca instancje obiektu
*
* @param string $context instancja obiektu sfContext::getInstance()
* @param string unikalna nazwa nawigatora
* @param string uri strony na ktorej znajduje sie nawigator
* @param bool $validateTabs weryfikuj czy podana akcja dla danej zakładki istnieje
* @return stTabNavigator
*/
public static function getInstance($context, $name, $targetUrl, $validateTabs = true)
{
if (!isset(self::$instance[$name]))
{
$class = __CLASS__;
self::$instance[$name] = new $class();
self::$instance[$name]->initialize($context, $name, $targetUrl, $validateTabs);
}
return self::$instance[$name];
}
/**
* Inicjalizacja stTabNavigator
*
* @param string $context instancja obiektu sfContext::getInstance()
*/
public function initialize($context, $name, $targetUrl, $validateTabs)
{
$this->context = $context;
$this->name = $name;
$this->targetUrl = $targetUrl;
$this->validateTabs = $validateTabs;
}
/**
* Dodaje zakładkę
*
* @param string $label Etykieta zakładki
* @param string $moduleName Nazwa modułu
* @param string $actionName Nazwa akcji
* @param array $params Lista parametrów przekazywanych do akcji
* @param string $alias Alias dla zakladki. Jezeli pozostawione puste alias nadawany jest automatycznie.
*/
public function addTab($label, $moduleName, $actionName, $params = null, $alias = '')
{
if ($params)
{
$request = $this->context->getRequest()->getParameterHolder()->add($params);
}
$tabIndex = !empty($alias) ? $alias : count($this->tabs) + 1;
$this->tabs[$tabIndex] = new stTab($tabIndex, $label, $moduleName, $actionName, $params);
}
/**
* Ustawia numer aktywnej zakładki
*
* @param integer $tab Numer lub alias zakładki
*/
public function setTab($tab = 0)
{
$this->tab = $tab ? $tab : 1;
}
/**
* Zwraca numer aktywnej zakładki
*
* @return integer
*/
public function getTab()
{
return $this->tab;
}
public function setTabs($tabs)
{
$this->tabs = $tabs;
}
/**
* Pobiera aktywną zakładkę
*
* @return stTab
*/
public function getCurrentTab()
{
$tabs = $this->getTabs();
$index = $this->getTab();
if (!isset($tabs[$index]))
{
if ($tab = $this->getFirstTab())
{
return $tab;
}
}
return $tabs[$index];
}
/**
* Zwraca ostatnią zakładkę
*
* @return stTab
*/
public function getLastTab()
{
$tabs = $this->getTabs();
return end($tabs);
}
/**
* Zwraca pierwszą zakładkę
*
* @return stTab
*/
public function getFirstTab()
{
$tabs = $this->getTabs();
reset($tabs);
return current($tabs);
}
/**
* Zwraca tablicę zakładek
*
* @return array of stTab
*/
public function getTabs()
{
return $this->tabs;
}
/**
* Zwraca unikalną nazwę nawigatora
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Zwraca docelowy adres URL na jakim znajduje się nawigator
*/
public function getTargetUrl()
{
return $this->targetUrl;
}
/**
* Zwraca zawartość aktywnej zakładki
*
* @return string
*/
public function getTabContent()
{
/**
*/
$controller = $this->context->getController();
/**
*/
$request = $this->context->getRequest();
if ($tab = $this->getCurrentTab())
{
$params = $tab->getParams();
$params[$this->name] = $tab->getIndex();
$request->getParameterHolder()->add($params);
$view = $controller->getPresentationFor($tab->getModuleName(), $tab->getActionName(), 'sfPHP');
$this->context->getI18N()->revertToPreviousCatalogue();
return $view;
}
}
/**
* Sprawdza czy podana zakładka jest pierwsza
*
* @param stTab $tab zakładka
* @return bool
*/
public function isFirst($tab)
{
return $this->getFirstTab()->getIndex() == $tab->getIndex();
}
/**
* Sprawdza czy podana zakładka jest ostatnia
*
* @param stTab $tab zakładka
* @return bool
*/
public function isLast($tab)
{
return $this->getLastTab()->getIndex() == $tab->getIndex();
}
/**
* Sprawdza czy podana zakładka jest aktywna (wybrana)
*
* @param stTab $tab zakładka
* @return bool
*/
public function isSelected($tab)
{
return $this->getCurrentTab()->getIndex() == $tab->getIndex();
}
}