From 39c2107599b9ef67651095b4bfd88e26fa09971a Mon Sep 17 00:00:00 2001 From: Alexander Kochetov Date: Sun, 26 May 2013 21:09:12 +0400 Subject: [PATCH] Refactoring --- framework/yii/jui/Tabs.php | 77 +++++++++++++++++++--------------------------- 1 file changed, 31 insertions(+), 46 deletions(-) diff --git a/framework/yii/jui/Tabs.php b/framework/yii/jui/Tabs.php index 052ffe7..7b9d4d8 100644 --- a/framework/yii/jui/Tabs.php +++ b/framework/yii/jui/Tabs.php @@ -20,16 +20,32 @@ use yii\helpers\Html; * echo Tabs::widget(array( * 'items' => array( * array( - * 'header' => 'One', + * 'header' => 'Tab one', * 'content' => 'Mauris mauris ante, blandit et, ultrices a, suscipit eget...', * ), * array( - * 'header' => 'Two', - * 'headerOptions' => array(...), + * 'header' => 'Tab two', + * 'headerOptions' => array( + * 'tag' => 'li', + * ), * 'content' => 'Sed non urna. Phasellus eu ligula. Vestibulum sit amet purus...', - * 'options' => array(...), + * 'options' => array( + * 'tag' => 'div', + * ), * ), * ), + * 'options' => array( + * 'tag' => 'div', + * ), + * 'itemOptions' => array( + * 'tag' => 'div', + * ), + * 'headerOptions' => array( + * 'tag' => 'li', + * ), + * 'clientOptions' => array( + * 'collapsible' => false, + * ), * )); * ``` * @@ -39,24 +55,10 @@ use yii\helpers\Html; */ class Tabs extends Widget { - /** - * @var array list of tabs in the tabs widget. Each array element represents a single - * tab with the following structure: - * - * ```php - * array( - * // required, the header (HTML) of the tab - * 'header' => 'Tab label', - * // required, the content (HTML) of the tab - * 'content' => 'Mauris mauris ante, blandit et, ultrices a, suscipit eget...', - * // optional the HTML attributes of the tab content container - * 'options'=> array(...), - * // optional the HTML attributes of the tab header container - * 'headerOptions'=> array(...), - * ) - * ``` - */ + public $options = array(); public $items = array(); + public $itemOptions = array(); + public $headerOptions = array(); /** @@ -65,42 +67,24 @@ class Tabs extends Widget public function run() { echo Html::beginTag('div', $this->options) . "\n"; - echo $this->renderHeaders() . "\n"; - echo $this->renderContents() . "\n"; + echo $this->renderItems() . "\n"; echo Html::endTag('div') . "\n"; $this->registerWidget('tabs'); } /** - * Renders tabs headers as specified on [[items]]. + * Renders tab items as specified on [[items]]. * @return string the rendering result. * @throws InvalidConfigException. */ - protected function renderHeaders() + protected function renderItems() { $headers = array(); + $items = array(); foreach ($this->items as $n => $item) { if (!isset($item['header'])) { throw new InvalidConfigException("The 'header' option is required."); } - $options = ArrayHelper::getValue($item, 'options', array()); - $id = isset($options['id']) ? $options['id'] : $this->options['id'] . '-tab' . $n; - $headerOptions = ArrayHelper::getValue($item, 'headerOptions', array()); - $headers[] = Html::tag('li', Html::a($item['header'], "#$id"), $headerOptions); - } - - return Html::tag('ul', implode("\n", $headers)); - } - - /** - * Renders tabs contents as specified on [[items]]. - * @return string the rendering result. - * @throws InvalidConfigException. - */ - protected function renderContents() - { - $contents = array(); - foreach ($this->items as $n => $item) { if (!isset($item['content'])) { throw new InvalidConfigException("The 'content' option is required."); } @@ -108,9 +92,10 @@ class Tabs extends Widget if (!isset($options['id'])) { $options['id'] = $this->options['id'] . '-tab' . $n; } - $contents[] = Html::tag('div', $item['content'], $options); + $headerOptions = ArrayHelper::getValue($item, 'headerOptions', array()); + $headers[] = Html::tag('li', Html::a($item['header'], '#' . $options['id']), $headerOptions); + $items[] = Html::tag('div', $item['content'], $options); } - - return implode("\n", $contents); + return Html::tag('ul', implode("\n", $headers)) . "\n" . implode("\n", $items); } }