Commit 70a5c5fc by niskac

fixed an issue with navbar and collapse

parent 4ce49194
...@@ -45,6 +45,8 @@ class TbAlert extends CWidget ...@@ -45,6 +45,8 @@ class TbAlert extends CWidget
*/ */
public $htmlOptions = array(); public $htmlOptions = array();
private static $_containerId = 0;
/** /**
* Initializes the widget. * Initializes the widget.
*/ */
...@@ -128,7 +130,7 @@ class TbAlert extends CWidget ...@@ -128,7 +130,7 @@ class TbAlert extends CWidget
echo '</div>'; echo '</div>';
$selector = "#{$id} .alert"; $selector = "#{$id} .alert";
$id .= '_'.uniqid(true, true); $id .= '_'.self::$_containerId++;
/** @var CClientScript $cs */ /** @var CClientScript $cs */
$cs = Yii::app()->getClientScript(); $cs = Yii::app()->getClientScript();
......
...@@ -39,6 +39,8 @@ class TbCollapse extends CWidget ...@@ -39,6 +39,8 @@ class TbCollapse extends CWidget
*/ */
public $htmlOptions = array(); public $htmlOptions = array();
private static $_containerId = 0;
/** /**
* Initializes the widget. * Initializes the widget.
*/ */
...@@ -76,5 +78,15 @@ class TbCollapse extends CWidget ...@@ -76,5 +78,15 @@ class TbCollapse extends CWidget
$cs->registerScript(__CLASS__.'#'.$id.'_'.$name, "jQuery('#{$id}').on('{$name}', {$handler});"); $cs->registerScript(__CLASS__.'#'.$id.'_'.$name, "jQuery('#{$id}').on('{$name}', {$handler});");
} }
} }
/**
* Returns the next collapse container ID.
* @return string the id
* @static
*/
public static function getNextContainerId()
{
return 'collapse_'.self::$_containerId++;
}
} }
...@@ -8,6 +8,8 @@ ...@@ -8,6 +8,8 @@
* @since 0.9.7 * @since 0.9.7
*/ */
Yii::import('bootstrap.widgets.TbCollapse');
/** /**
* Bootstrap navigation bar widget. * Bootstrap navigation bar widget.
*/ */
...@@ -107,14 +109,14 @@ class TbNavbar extends CWidget ...@@ -107,14 +109,14 @@ class TbNavbar extends CWidget
*/ */
public function run() public function run()
{ {
$containerCssClass = $this->fluid ? 'container-fluid' : 'container';
echo CHtml::openTag('div', $this->htmlOptions); echo CHtml::openTag('div', $this->htmlOptions);
echo '<div class="navbar-inner"><div class="'.$containerCssClass.'">'; echo '<div class="navbar-inner"><div class="'.$this->getContainerCssClass().'">';
if ($this->collapse) $collapseId = TbCollapse::getNextContainerId();
if ($this->collapse !== false)
{ {
echo '<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">'; echo '<a class="btn btn-navbar" data-toggle="collapse" data-target="#'.$collapseId.'">';
echo '<span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span>'; echo '<span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span>';
echo '</a>'; echo '</a>';
} }
...@@ -122,9 +124,10 @@ class TbNavbar extends CWidget ...@@ -122,9 +124,10 @@ class TbNavbar extends CWidget
if ($this->brand !== false) if ($this->brand !== false)
echo CHtml::openTag('a', $this->brandOptions).$this->brand.'</a>'; echo CHtml::openTag('a', $this->brandOptions).$this->brand.'</a>';
if ($this->collapse) if ($this->collapse !== false)
{ {
$this->controller->beginWidget('bootstrap.widgets.TbCollapse', array( $this->controller->beginWidget('bootstrap.widgets.TbCollapse', array(
'id'=>$collapseId,
'toggle'=>false, // navbars should be collapsed by default 'toggle'=>false, // navbars should be collapsed by default
'htmlOptions'=>array('class'=>'nav-collapse'), 'htmlOptions'=>array('class'=>'nav-collapse'),
)); ));
...@@ -146,9 +149,18 @@ class TbNavbar extends CWidget ...@@ -146,9 +149,18 @@ class TbNavbar extends CWidget
} }
} }
if ($this->collapse) if ($this->collapse !== false)
$this->controller->endWidget(); $this->controller->endWidget();
echo '</div></div></div>'; echo '</div></div></div>';
} }
/**
* Returns the navbar container CSS class.
* @return string the class
*/
protected function getContainerCssClass()
{
return $this->fluid ? 'container-fluid' : 'container';
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment