| Current Path : /home/antonen/poznajlitwe.lt/libraries/nextend2/nextend/library/libraries/form/ |
| Current File : //home/antonen/poznajlitwe.lt/libraries/nextend2/nextend/library/libraries/form/tab.php |
<?php
N2Loader::import('libraries.form.element');
/**
* Class N2Tab
*/
class N2Tab implements N2FormTabContainer, N2FormElementContainer {
/** @var N2FormTabContainer */
protected $parent;
/** @var string */
protected $name;
/** @var string */
protected $label;
/** @var N2Tab[] */
protected $tabs = array();
protected $hideTitle = false;
/** @var N2Element[] */
private $elements = array();
/** @var bool */
protected $isVisible = true;
protected $class = '';
/**
* N2Tab constructor.
*
* @param N2FormTabContainer $parent
* @param $name
* @param boolean|string $label
* @param array $parameters
*/
public function __construct($parent, $name, $label = false, $parameters = array()) {
$this->parent = $parent;
$this->name = $name;
$this->hideTitle = $label === false;
$this->label = $label;
foreach ($parameters AS $option => $value) {
$option = 'set' . $option;
$this->{$option}($value);
}
$this->parent->addTab($this);
}
/**
* @return string
*/
public function getName() {
return $this->name;
}
/**
* @param N2Form|N2Tab $parent
*/
public function setParent($parent) {
$this->parent = $parent;
}
/**
* @return N2FormAbstract
*/
public function getForm() {
return $this->parent->getForm();
}
/**
* @param string $tab
*
* @return N2Tab
*/
public function getTab($tab) {
return $this->tabs[$tab];
}
/**
* @param N2Element $element
*/
public function addElement($element) {
$name = $element->getName();
if ($name) {
$this->elements[$name] = $element;
} else {
$this->elements[] = $element;
}
}
/**
* @param N2Tab $tab
*/
public function addTab($tab) {
$this->tabs[$tab->getName()] = $tab;
}
public function getElement($name) {
if (isset($this->elements[$name])) {
return $this->elements[$name];
}
return false;
}
/**
* @param $control_name
*/
public function render($control_name) {
ob_start();
$this->decorateTitle();
$this->decorateGroupStart();
$keys = array_keys($this->elements);
for ($i = 0; $i < count($keys); $i++) {
$this->decorateElement($this->elements[$keys[$i]], $this->elements[$keys[$i]]->render($control_name));
}
$this->decorateGroupEnd();
if ($this->isVisible) {
echo ob_get_clean();
} else {
echo N2Html::tag('div', array('style' => 'display: none;'), ob_get_clean());
}
}
public function hide() {
$this->isVisible = false;
}
protected function decorateTitle() {
echo "<div id='n2-tab-" . $this->name . "' class='n2-form-tab " . $this->class . "'>";
$this->renderTitle();
}
protected function renderTitle() {
if (!$this->hideTitle) {
echo N2Html::tag('div', array(
'class' => 'n2-h2 n2-content-box-title-bg'
), $this->label);
}
}
protected function decorateGroupStart() {
echo "<table>";
echo N2Html::tag('colgroup', array(), N2Html::tag('col', array('class' => 'n2-label-col'), '', false) . N2Html::tag('col', array('class' => 'n2-element-col'), '', false));
}
protected function decorateGroupEnd() {
echo "</table>";
echo "</div>";
}
/**
* @param N2Element $el
* @param $renderedElement
*/
protected function decorateElement($el, $renderedElement) {
echo N2Html::openTag('tr', array(
'class' => $el->getRowClass(),
'data-field' => $el->getName()
) + $el->getRowAttributes());
$colSpan = '';
if ($renderedElement[0] != '') {
echo "<td class='n2-label" . ($el->hasLabel() ? '' : ' n2-empty-label') . "'>" . $renderedElement[0] . "</td>";
} else {
$colSpan = 'colspan="2"';
}
echo "<td class='n2-element' {$colSpan}>" . $renderedElement[1] . "</td>";
echo "</tr>";
}
public function removeTab($name) {
if (isset($this->tabs[$name])) {
unset($this->tabs[$name]);
}
}
private static function array_insert($array, $values, $offset) {
return array_slice($array, 0, $offset, true) + $values + array_slice($array, $offset, NULL, true);
}
/**
* @return string
*/
public function getLabel() {
return $this->label;
}
/**
* @param string $class
*/
public function setClass($class) {
$this->class = $class;
}
}
class N2TabDark extends N2Tab {
protected function decorateTitle() {
echo "<div id='n2-tab-" . $this->name . "' class='n2-form-tab " . $this->class . "'>";
if ($this->hideTitle != 1) {
echo N2Html::tag('div', array(
'class' => 'n2-h3 n2-sidebar-header-bg n2-uc'
), $this->label);
}
}
}