Commits

Christoffer Niska committed c270502

Fixed ScrollSpy, fixed a few bugs with BootNavbar and BootTabbed and updated the demo.

Comments (0)

Files changed (7)

components/Bootstrap.php

 		if (isset($offset))
 			$script .= "jQuery('{$selector}').attr('data-offset', '{$offset}');";
 
-		Yii::app()->clientScript->registerScript(__CLASS__.'.spyOn.'.$selector, $script);
+		Yii::app()->clientScript->registerScript(__CLASS__.'.spyOn.'.$selector, $script, CClientScript::POS_BEGIN);
 	}
 
 	/**

demo/less/styles.less

 // PRE-IMPORTS
 
-@import "../../lib/bootstrap/less/bootstrap.less";
+@import "../../lib/bootstrap/less/mixins.less";
 //@import "../yii/vendors/TextHighlighter/highlight.css";
 
 // VARIABLES
 
-@imageUrl: "../../../demo/images/";
-
 body {
-	padding-top: 100px;
-	padding-bottom: 40px;
+	padding-top: 60px;
+	padding-bottom: 60px;
 }
 
 h1, h2, h3, h4, h5, h6 {
 }
 
 .subnav {
-    border: 1px solid #E5E5E5;
-    .border-radius(4px);
-    .size(36px, 100%);
-    #gradient > .vertical(#F5F5F5, #EEE);
+	border: 1px solid #E5E5E5;
+	font-size: 12px;
+	.border-radius(4px);
+	.size(36px, 100%);
+	#gradient > .vertical(#F5F5F5, #EEE);
 
-    &.subnav-fixed {
-        border-color: #D5D5D5;
-        border-width: 0 0 1px;
-        left: 0;
-        position: fixed;
-        right: 0;
-        top: 40px;
-        z-index: 1030;
+	&.subnav-fixed {
+		border-color: #D5D5D5;
+		border-width: 1px 0 0;
+		bottom: 0;
+		left: 0;
+		position: fixed;
+		right: 0;
+		z-index: 1030;
 		.border-radius(0);
 		.box-shadow(inset 0 1px 0 #FFF, 0 1px 5px rgba(0, 0, 0, .1));
-    }
+	}
 
-    .nav {
+	.nav {
         margin: 0 auto;
-        width: 1170px;
+        max-width: 1170px;
 
-        & > li > a {
-            margin: 0;
-            padding-top: 11px;
-            padding-bottom: 11px;
-            border-left: 1px solid whiteSmoke;
-            border-right: 1px solid #E5E5E5;
-            .border-radius(0);
-        }
-        
-        & > li:first-child > a {
-            border-left: 0;
-        }
-        
-        & > li:last-child > a {
-            border-right: 0;
-        }
-        
-        & > .active >a, & .action > a:hover {
-            background-color: #E9E9E9;
-            border-right-color: #DDD;
-            color: #777;
-            .box-shadow(inset 0 3px 5px rgba(0, 0, 0, .05));
-        }
-    }
+		& > li > a {
+			margin: 0;
+			padding: 11px;
+			border-left: 1px solid whiteSmoke;
+			border-right: 1px solid #E5E5E5;
+			.border-radius(0);
+		}
+
+		& > li:first-child > a {
+			border-left: 0;
+		}
+
+		& > li:last-child > a {
+			border-right: 0;
+		}
+
+		& > .active >a, & .action > a:hover {
+			background-color: #E9E9E9;
+			border-right-color: #DDD;
+			color: #777;
+			.box-shadow(inset 0 3px 5px rgba(0, 0, 0, .05));
+		}
+	}
 }
 
 footer {
 }
 
 section {
-	padding-top: 80px;
+	padding-top: 40px;
 
 	a.top {
 		display: block;

demo/protected/views/layouts/main.php

 	<!--[if lt IE 9]>
 		<script type="text/javascript" src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
 	<![endif]-->
+	<?php Yii::app()->bootstrap->registerCss(); ?>
 	<link rel="stylesheet/less" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/less/styles.less" />
 	<script type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/less-1.2.1.min.js"></script>
 	<script type="text/javascript">
 	'collapse'=>true,
 	'items'=>array(
 		array(
-			'class'=>'bootstrap.widgets.BootMenu',
+			'class'=>'BootMenu',
 			'items'=>array(
 				array('label'=>'Home', 'url'=>'#'),
 				array('label'=>'About', 'url'=>'#'),
 	),
 )); ?>
 
-
-<div class="subnav subnav-fixed">
-
-	<?php $this->widget('bootstrap.widgets.BootMenu', array(
-		'type'=>'pills',
-		//'scrollspy'=>array('offset'=>50),
-		'items'=>array(
-			array('label'=>'BootAlert', 'url'=>'#bootAlert'),
-			array('label'=>'BootCrumb', 'url'=>'#bootCrumb'),
-			array('label'=>'BootNavbar', 'url'=>'#bootNavbar'),
-			array('label'=>'BootMenu', 'url'=>'#bootMenu'),
-			array('label'=>'BootTabbed', 'url'=>'#bootTabbed'),
-			array('label'=>'BootDetailView', 'url'=>'#bootDetailView'),
-			array('label'=>'BootGridView', 'url'=>'#bootGridView'),
-			array('label'=>'BootThumbs', 'url'=>'#bootThumbs'),
-			array('label'=>'BootTooltip', 'url'=>'#bootTooltip'),
-			array('label'=>'BootPopover', 'url'=>'#bootPopover'),
-			array('label'=>'BootModal', 'url'=>'#bootModal'),
-			array('label'=>'BootActiveForm', 'url'=>'#bootActiveForm'),
-		),
-	)); ?>
-
-</div>
-
 <div class="container">
 
 	<div class="hero-unit">

demo/protected/views/site/index.php

 <?php $this->pageTitle=Yii::app()->name; ?>
 
-<div class="site-index">
+<section id="bootAlert">
 
-	<section id="bootAlert">
+	<h2>BootAlert</h2>
 
-		<h2>BootAlert</h2>
+	<?php
+	Yii::app()->user->setFlash('success', '<strong>Well done!</strong> You successfully read this important alert message.');
+	Yii::app()->user->setFlash('info', '<strong>Heads up!</strong> This alert needs your attention, but it\'s not super important.');
+	Yii::app()->user->setFlash('warning', '<strong>Warning!</strong> Best check yo self, you\'re not looking too good.');
+	Yii::app()->user->setFlash('error', '<strong>Oh snap!</strong> Change a few things up and try submitting again.');
+	?>
 
-		<?php
-		Yii::app()->user->setFlash('success', '<strong>Well done!</strong> You successfully read this important alert message.');
-		Yii::app()->user->setFlash('info', '<strong>Heads up!</strong> This alert needs your attention, but it\'s not super important.');
-		Yii::app()->user->setFlash('warning', '<strong>Warning!</strong> Best check yo self, you\'re not looking too good.');
-		Yii::app()->user->setFlash('error', '<strong>Oh snap!</strong> Change a few things up and try submitting again.');
-		?>
+	<?php $this->widget('bootstrap.widgets.BootAlert'); ?>
 
-		<?php $this->widget('bootstrap.widgets.BootAlert'); ?>
-
-		<h4>Source code</h4>
+	<h4>Source code</h4>
 
 <?php echo $parser->safeTransform("~~~
 [php]
 <?php \$this->widget('bootstrap.widgets.BootAlert'); ?>
 ~~~"); ?>
 
-		<a class="top" href="#top">Back to top &uarr;</a>
+	<a class="top" href="#top">Back to top &uarr;</a>
 
-	</section>
+</section>
 
-	<section id="bootCrumb">
+<section id="bootCrumb">
 
-		<h2>BootCrumb</h2>
+	<h2>BootCrumb</h2>
 
-		<?php $this->widget('bootstrap.widgets.BootCrumb', array(
-			'links'=>array('Library'=>'#', 'Data'),
-		)); ?>
+	<?php $this->widget('bootstrap.widgets.BootCrumb', array(
+		'links'=>array('Library'=>'#', 'Data'),
+	)); ?>
 
-		<h4>Source code</h4>
+	<h4>Source code</h4>
 
 <?php echo $parser->safeTransform("~~~
 [php]
 )); ?>
 ~~~"); ?>
 
-		<a class="top" href="#top">Back to top &uarr;</a>
+	<a class="top" href="#top">Back to top &uarr;</a>
 
-	</section>
+</section>
 
-	<section id="bootNavbar">
+<section id="bootNavbar">
 
-		<h2>BootNavbar</h2>
+	<h2>BootNavbar</h2>
 
-		<?php $this->widget('bootstrap.widgets.BootNavbar', array(
-			'fixed'=>false,
-			'brand'=>'Project name',
-			'brandUrl'=>'#',
-			'collapse'=>true, // requires bootstrap-responsive.css
-			'items'=>array(
-				array(
-					'class'=>'bootstrap.widgets.BootMenu',
-					'items'=>array(
-						array('label'=>'Home', 'url'=>'#', 'active'=>true),
-						array('label'=>'Link', 'url'=>'#'),
-						array('label'=>'Dropdown', 'url'=>'#', 'items'=>array(
-							array('label'=>'Action', 'url'=>'#'),
-							array('label'=>'Another action', 'url'=>'#'),
-							array('label'=>'Something else here', 'url'=>'#'),
-							'---',
-							array('label'=>'Separated link', 'url'=>'#'),
-						)),
-					),
-				),
-				'<form class="navbar-search pull-left" action=""><input type="text" class="search-query span2" placeholder="Search"></form>',
-				array(
-					'class'=>'bootstrap.widgets.BootMenu',
-					'htmlOptions'=>array('class'=>'pull-right'),
-					'items'=>array(
-						array('label'=>'Link', 'url'=>'#'),
-						array('label'=>'Dropdown', 'url'=>'#', 'items'=>array(
-							array('label'=>'Action', 'url'=>'#'),
-							array('label'=>'Another action', 'url'=>'#'),
-							array('label'=>'Something else here', 'url'=>'#'),
-							'---',
-							array('label'=>'Separated link', 'url'=>'#'),
-						)),
-					),
+	<?php $this->widget('bootstrap.widgets.BootNavbar', array(
+		'fixed'=>false,
+		'brand'=>'Project name',
+		'brandUrl'=>'#',
+		'collapse'=>true, // requires bootstrap-responsive.css
+		'items'=>array(
+			array(
+				'class'=>'bootstrap.widgets.BootMenu',
+				'items'=>array(
+					array('label'=>'Home', 'url'=>'#', 'active'=>true),
+					array('label'=>'Link', 'url'=>'#'),
+					array('label'=>'Dropdown', 'url'=>'#', 'items'=>array(
+						array('label'=>'Action', 'url'=>'#'),
+						array('label'=>'Another action', 'url'=>'#'),
+						array('label'=>'Something else here', 'url'=>'#'),
+						'---',
+						array('label'=>'Separated link', 'url'=>'#'),
+					)),
 				),
 			),
-		)); ?>
+			'<form class="navbar-search pull-left" action=""><input type="text" class="search-query span2" placeholder="Search"></form>',
+			array(
+				'class'=>'bootstrap.widgets.BootMenu',
+				'htmlOptions'=>array('class'=>'pull-right'),
+				'items'=>array(
+					array('label'=>'Link', 'url'=>'#'),
+					array('label'=>'Dropdown', 'url'=>'#', 'items'=>array(
+						array('label'=>'Action', 'url'=>'#'),
+						array('label'=>'Another action', 'url'=>'#'),
+						array('label'=>'Something else here', 'url'=>'#'),
+						'---',
+						array('label'=>'Separated link', 'url'=>'#'),
+					)),
+				),
+			),
+		),
+	)); ?>
 
-		<h4>Source code</h4>
+	<h4>Source code</h4>
 
 <?php echo $parser->safeTransform("~~~
 [php]
 )); ?>
 ~~~"); ?>
 
-		<a class="top" href="#top">Back to top &uarr;</a>
+	<a class="top" href="#top">Back to top &uarr;</a>
 
-	</section>
+</section>
 
-	<section id="bootMenu">
+<section id="bootMenu">
 
-		<h2>BootMenu</h2>
+	<h2>BootMenu</h2>
 
-		<h3>Basic tabs</h3>
+	<h3>Basic tabs</h3>
 
-		<?php $this->widget('bootstrap.widgets.BootMenu', array(
-			'type'=>'tabs',
-			'items'=>array(
-				array('label'=>'Home', 'url'=>'#', 'active'=>true),
-				array('label'=>'Profile', 'url'=>'#'),
-				array('label'=>'Messages', 'url'=>'#'),
-			),
-		)); ?>
+	<?php $this->widget('bootstrap.widgets.BootMenu', array(
+		'type'=>'tabs',
+		'items'=>array(
+			array('label'=>'Home', 'url'=>'#', 'active'=>true),
+			array('label'=>'Profile', 'url'=>'#'),
+			array('label'=>'Messages', 'url'=>'#'),
+		),
+	)); ?>
 
-		<h3>Stacked tabs</h3>
+	<h3>Stacked tabs</h3>
 
-		<?php $this->widget('bootstrap.widgets.BootMenu', array(
-			'type'=>'tabs',
-			'stacked'=>true,
-			'items'=>array(
-				array('label'=>'Home', 'url'=>'#', 'active'=>true),
-				array('label'=>'Profile', 'url'=>'#'),
-				array('label'=>'Messages', 'url'=>'#'),
-			),
-		)); ?>
+	<?php $this->widget('bootstrap.widgets.BootMenu', array(
+		'type'=>'tabs',
+		'stacked'=>true,
+		'items'=>array(
+			array('label'=>'Home', 'url'=>'#', 'active'=>true),
+			array('label'=>'Profile', 'url'=>'#'),
+			array('label'=>'Messages', 'url'=>'#'),
+		),
+	)); ?>
 
-		<h3>Basic pills</h3>
+	<h3>Basic pills</h3>
 
-		<?php $this->widget('bootstrap.widgets.BootMenu', array(
-			'type'=>'pills',
-			'items'=>array(
-				array('label'=>'Home', 'url'=>'#', 'active'=>true),
-				array('label'=>'Profile', 'url'=>'#'),
-				array('label'=>'Messages', 'url'=>'#'),
-			),
-		)); ?>
+	<?php $this->widget('bootstrap.widgets.BootMenu', array(
+		'type'=>'pills',
+		'items'=>array(
+			array('label'=>'Home', 'url'=>'#', 'active'=>true),
+			array('label'=>'Profile', 'url'=>'#'),
+			array('label'=>'Messages', 'url'=>'#'),
+		),
+	)); ?>
 
-		<h3>Stacked pills</h3>
+	<h3>Stacked pills</h3>
 
-		<?php $this->widget('bootstrap.widgets.BootMenu', array(
-			'type'=>'pills',
-			'stacked'=>true,
-			'items'=>array(
-				array('label'=>'Home', 'url'=>'#', 'active'=>true),
-				array('label'=>'Profile', 'url'=>'#'),
-				array('label'=>'Messages', 'url'=>'#'),
-			),
-		)); ?>
+	<?php $this->widget('bootstrap.widgets.BootMenu', array(
+		'type'=>'pills',
+		'stacked'=>true,
+		'items'=>array(
+			array('label'=>'Home', 'url'=>'#', 'active'=>true),
+			array('label'=>'Profile', 'url'=>'#'),
+			array('label'=>'Messages', 'url'=>'#'),
+		),
+	)); ?>
 
-		<h4>Source code</h4>
+	<h4>Source code</h4>
 
 <?php echo $parser->safeTransform("~~~
 [php]
 )); ?>
 ~~~"); ?>
 
-		<h3>Nav list</h3>
+	<h3>Nav list</h3>
 
-		<div class="well" style="padding: 8px 0;">
+	<div class="well" style="padding: 8px 0;">
 
-			<?php $this->widget('bootstrap.widgets.BootMenu', array(
-				'type'=>'list',
-				'items'=>array(
-					array('label'=>'LIST HEADER', 'itemOptions'=>array('class'=>'nav-header')),
-					array('label'=>'Home', 'icon'=>'home', 'url'=>'#', 'active'=>true),
-					array('label'=>'Library', 'icon'=>'book', 'url'=>'#'),
-					array('label'=>'Application', 'icon'=>'pencil', 'url'=>'#'),
-					array('label'=>'ANOTHER LIST HEADER', 'itemOptions'=>array('class'=>'nav-header')),
-					array('label'=>'Profile', 'icon'=>'user', 'url'=>'#'),
-					array('label'=>'Settings', 'icon'=>'cog', 'url'=>'#'),
-					array('label'=>'Help', 'icon'=>'flag', 'url'=>'#'),
-				),
-			)); ?>
+		<?php $this->widget('bootstrap.widgets.BootMenu', array(
+			'type'=>'list',
+			'items'=>array(
+				array('label'=>'LIST HEADER', 'itemOptions'=>array('class'=>'nav-header')),
+				array('label'=>'Home', 'icon'=>'home', 'url'=>'#', 'active'=>true),
+				array('label'=>'Library', 'icon'=>'book', 'url'=>'#'),
+				array('label'=>'Application', 'icon'=>'pencil', 'url'=>'#'),
+				array('label'=>'ANOTHER LIST HEADER', 'itemOptions'=>array('class'=>'nav-header')),
+				array('label'=>'Profile', 'icon'=>'user', 'url'=>'#'),
+				array('label'=>'Settings', 'icon'=>'cog', 'url'=>'#'),
+				array('label'=>'Help', 'icon'=>'flag', 'url'=>'#'),
+			),
+		)); ?>
 
-		</div>
+	</div>
 
-<h4>Source code</h4>
+	<h4>Source code</h4>
 
 <?php echo $parser->safeTransform("~~~
 [php]
 )); ?>
 ~~~"); ?>
 
-		<a class="top" href="#top">Back to top &uarr;</a>
+	<a class="top" href="#top">Back to top &uarr;</a>
 
-	</section>
+</section>
 
-	<section id="bootTabbed">
+<section id="bootTabbed">
 
-		<h2>BootTabbed</h2>
+	<h2>BootTabbed</h2>
 
-		<?php $this->widget('bootstrap.widgets.BootTabbed', array(
-			'htmlOptions'=>array('class'=>'tabbed'),
-			'tabs'=>array(
-				array('label'=>'Home', 'content'=>'Raw denim you probably haven\'t heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.'),
-				array('label'=>'Profile', 'content'=>'Food truck fixie locavore, accusamus mcsweeney\'s marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.'),
-				array('label'=>'Dropdown', 'items'=>array(
-					array('label'=>'@fat', 'content'=>'Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney\'s organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven\'t heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.'),
-					array('label'=>'@mdo', 'content'=>'Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.'),
-				)),
-			),
-		)); ?>
+	<?php $this->widget('bootstrap.widgets.BootTabbed', array(
+		'htmlOptions'=>array('class'=>'tabbed'),
+		'tabs'=>array(
+			array('label'=>'Home', 'content'=>'Raw denim you probably haven\'t heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.'),
+			array('label'=>'Profile', 'content'=>'Food truck fixie locavore, accusamus mcsweeney\'s marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.'),
+			array('label'=>'Dropdown', 'items'=>array(
+				array('label'=>'@fat', 'content'=>'Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney\'s organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven\'t heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.'),
+				array('label'=>'@mdo', 'content'=>'Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.'),
+			)),
+		),
+	)); ?>
 
-		<?php $this->widget('bootstrap.widgets.BootTabbed', array(
-			'type'=>'pills',
-			'htmlOptions'=>array('class'=>'tabbed'),
-			'tabs'=>array(
-				array('label'=>'Home', 'content'=>'Raw denim you probably haven\'t heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.'),
-				array('label'=>'Profile', 'content'=>'Food truck fixie locavore, accusamus mcsweeney\'s marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.'),
-				array('label'=>'Dropdown', 'items'=>array(
-					array('label'=>'@fat', 'content'=>'Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney\'s organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven\'t heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.'),
-					array('label'=>'@mdo', 'content'=>'Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.'),
-				)),
-			),
-		)); ?>
+	<?php $this->widget('bootstrap.widgets.BootTabbed', array(
+		'type'=>'pills',
+		'htmlOptions'=>array('class'=>'tabbed'),
+		'tabs'=>array(
+			array('label'=>'Home', 'content'=>'Raw denim you probably haven\'t heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.'),
+			array('label'=>'Profile', 'content'=>'Food truck fixie locavore, accusamus mcsweeney\'s marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.'),
+			array('label'=>'Dropdown', 'items'=>array(
+				array('label'=>'@fat', 'content'=>'Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney\'s organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven\'t heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.'),
+				array('label'=>'@mdo', 'content'=>'Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.'),
+			)),
+		),
+	)); ?>
 
-		<h4>Source code</h4>
+	<h4>Source code</h4>
 
 <?php echo $parser->safeTransform("~~~
 [php]
 )); ?>
 ~~~"); ?>
 
-		<a class="top" href="#top">Back to top &uarr;</a>
+	<a class="top" href="#top">Back to top &uarr;</a>
 
-	</section>
+</section>
 
-	<section id="bootDetailView">
+<section id="bootDetailView">
 
-		<h2>BootDetailView</h2>
+	<h2>BootDetailView</h2>
 
-		<?php $this->widget('bootstrap.widgets.BootDetailView', array(
-			'data'=>array('id'=>1, 'firstName'=>'Mark', 'lastName'=>'Otto', 'language'=>'CSS'),
-			'attributes'=>array(
-				array('name'=>'firstName', 'label'=>'First name'),
-				array('name'=>'lastName', 'label'=>'Last name'),
-				array('name'=>'language', 'label'=>'Language'),
-			),
-		)); ?>
+	<?php $this->widget('bootstrap.widgets.BootDetailView', array(
+		'data'=>array('id'=>1, 'firstName'=>'Mark', 'lastName'=>'Otto', 'language'=>'CSS'),
+		'attributes'=>array(
+			array('name'=>'firstName', 'label'=>'First name'),
+			array('name'=>'lastName', 'label'=>'Last name'),
+			array('name'=>'language', 'label'=>'Language'),
+		),
+	)); ?>
 
-		<h4>Source code</h4>
+	<h4>Source code</h4>
 
 <?php echo $parser->safeTransform("~~~
 [php]
 )); ?>
 ~~~"); ?>
 
-		<a class="top" href="#top">Back to top &uarr;</a>
+	<a class="top" href="#top">Back to top &uarr;</a>
 
-	</section>
+</section>
 
-	<section id="bootGridView">
+<section id="bootGridView">
 
-		<h2>BootGridView</h2>
+	<h2>BootGridView</h2>
 
-		<h3>Default</h3>
+	<h3>Default</h3>
 
-		<?php $this->widget('bootstrap.widgets.BootGridView', array(
-			'dataProvider'=>$gridDataProvider,
-			'template'=>"{items}",
-			'itemsCssClass'=>'table',
-			'columns'=>$gridColumns,
-		)); ?>
+	<?php $this->widget('bootstrap.widgets.BootGridView', array(
+		'dataProvider'=>$gridDataProvider,
+		'template'=>"{items}",
+		'itemsCssClass'=>'table',
+		'columns'=>$gridColumns,
+	)); ?>
 
-		<h3>Striped</h3>
+	<h3>Striped</h3>
 
-		<?php $this->widget('bootstrap.widgets.BootGridView', array(
-			'dataProvider'=>$gridDataProvider,
-			'template'=>"{items}",
-			'itemsCssClass'=>'table table-striped',
-			'columns'=>$gridColumns,
-		)); ?>
+	<?php $this->widget('bootstrap.widgets.BootGridView', array(
+		'dataProvider'=>$gridDataProvider,
+		'template'=>"{items}",
+		'itemsCssClass'=>'table table-striped',
+		'columns'=>$gridColumns,
+	)); ?>
 
-		<h3>Bordered</h3>
+	<h3>Bordered</h3>
 
-		<?php $this->widget('bootstrap.widgets.BootGridView', array(
-			'dataProvider'=>$gridDataProvider,
-			'template'=>"{items}",
-			'itemsCssClass'=>'table table-bordered',
-			'columns'=>$gridColumns,
-		)); ?>
+	<?php $this->widget('bootstrap.widgets.BootGridView', array(
+		'dataProvider'=>$gridDataProvider,
+		'template'=>"{items}",
+		'itemsCssClass'=>'table table-bordered',
+		'columns'=>$gridColumns,
+	)); ?>
 
-		<h3>Condensed</h3>
+	<h3>Condensed</h3>
 
-		<?php $this->widget('bootstrap.widgets.BootGridView', array(
-			'dataProvider'=>$gridDataProvider,
-			'template'=>"{items}",
-			'itemsCssClass'=>'table table-condensed',
-			'columns'=>$gridColumns,
-		)); ?>
+	<?php $this->widget('bootstrap.widgets.BootGridView', array(
+		'dataProvider'=>$gridDataProvider,
+		'template'=>"{items}",
+		'itemsCssClass'=>'table table-condensed',
+		'columns'=>$gridColumns,
+	)); ?>
 
-		<h3>Striped, bordered and condensed</h3>
+	<h3>Striped, bordered and condensed</h3>
 
-		<?php $this->widget('bootstrap.widgets.BootGridView', array(
-			'dataProvider'=>$gridDataProvider,
-			'template'=>"{items}",
-			'itemsCssClass'=>'table table-striped table-bordered table-condensed',
-			'columns'=>$gridColumns,
-		)); ?>
+	<?php $this->widget('bootstrap.widgets.BootGridView', array(
+		'dataProvider'=>$gridDataProvider,
+		'template'=>"{items}",
+		'itemsCssClass'=>'table table-striped table-bordered table-condensed',
+		'columns'=>$gridColumns,
+	)); ?>
 
-		<h4>Source code</h4>
+	<h4>Source code</h4>
 
 <?php echo $parser->safeTransform("~~~
 [php]
 )); ?>
 ~~~"); ?>
 
-		<a class="top" href="#top">Back to top &uarr;</a>
+	<a class="top" href="#top">Back to top &uarr;</a>
 
-	</section>
+</section>
 
-	<section id="bootThumbs">
+<section id="bootThumbs">
 
-		<h2>BootThumbs</h2>
+	<h2>BootThumbs</h2>
 
-		<?php $this->widget('bootstrap.widgets.BootThumbs', array(
-			'dataProvider'=>$listDataProvider,
-			'template'=>"{items}\n{pager}",
-			'itemView'=>'_thumb',
-			// Remove the existing tooltips and
-			// rebind the plugin after each ajax-call.
-			'afterAjaxUpdate'=>"js:function() {
-				jQuery('.tooltip').remove();
-				jQuery('a[rel=tooltip]').tooltip();
-			}",
-		)); ?>
+	<?php $this->widget('bootstrap.widgets.BootThumbs', array(
+		'dataProvider'=>$listDataProvider,
+		'template'=>"{items}\n{pager}",
+		'itemView'=>'_thumb',
+		// Remove the existing tooltips and
+		// rebind the plugin after each ajax-call.
+		'afterAjaxUpdate'=>"js:function() {
+			jQuery('.tooltip').remove();
+			jQuery('a[rel=tooltip]').tooltip();
+		}",
+	)); ?>
 
-		<h4>Source code</h4>
+	<h4>Source code</h4>
 
 <?php echo $parser->safeTransform("~~~
 [php]
 </li>
 ~~~"); ?>
 
-		<a class="top" href="#top">Back to top &uarr;</a>
+	<a class="top" href="#top">Back to top &uarr;</a>
 
-	</section>
+</section>
 
-	<section id="bootTooltip">
+<section id="bootTooltip">
 
-		<h2>BootTooltip</h2>
+	<h2>BootTooltip</h2>
 
-		<p class="well">
-			Lorem ipsum dolor sit <a href="#" rel="tooltip" title="First tooltip">amet</a>,
-			consectetur adipiscing elit.
-			Fusce ut velit sem, id elementum elit. Quisque tincidunt magna in quam luctus a ultrices tellus luctus.
-			Pellentesque at tellus urna.
-			Ut congue, <a href="#" rel="tooltip" title="Another tooltip">nibh eu</a> interdum commodo,
-			ligula urna consequat tortor, at vehicula tellus est a orci.
-			Maecenas nec ligula sed ipsum posuere sollicitudin pretium ac sapien.
-			Sed odio dui, pretium eu pellentesque ac,
-			<a href="#" rel="tooltip" title="Yet another tooltip">tempor</a> sed sem.
-		</p>
+	<p class="well">
+		Lorem ipsum dolor sit <a href="#" rel="tooltip" title="First tooltip">amet</a>,
+		consectetur adipiscing elit.
+		Fusce ut velit sem, id elementum elit. Quisque tincidunt magna in quam luctus a ultrices tellus luctus.
+		Pellentesque at tellus urna.
+		Ut congue, <a href="#" rel="tooltip" title="Another tooltip">nibh eu</a> interdum commodo,
+		ligula urna consequat tortor, at vehicula tellus est a orci.
+		Maecenas nec ligula sed ipsum posuere sollicitudin pretium ac sapien.
+		Sed odio dui, pretium eu pellentesque ac,
+		<a href="#" rel="tooltip" title="Yet another tooltip">tempor</a> sed sem.
+	</p>
 
-		<h4>Source code</h4>
+	<h4>Source code</h4>
 
 <?php echo $parser->safeTransform("~~~
 [html]
 </p>
 ~~~"); ?>
 
-		<a class="top" href="#top">Back to top &uarr;</a>
+	<a class="top" href="#top">Back to top &uarr;</a>
 
-	</section>
+</section>
 
-	<section id="bootPopover">
+<section id="bootPopover">
 
-		<h2>BootPopover</h2>
+	<h2>BootPopover</h2>
 
-		<div class="well">
-			<?php echo CHtml::link('Hover me', '#', array(
-				'class'=>'btn btn-primary btn-danger',
-				'data-title'=>'Heading',
-				'data-content'=>'Content ...',
-				'rel'=>'popover'
-			)); ?>
-		</div>
+	<div class="well">
+		<?php echo CHtml::link('Hover me', '#', array(
+			'class'=>'btn btn-primary btn-danger',
+			'data-title'=>'Heading',
+			'data-content'=>'Content ...',
+			'rel'=>'popover'
+		)); ?>
+	</div>
 
-		<h4>Source code</h4>
+	<h4>Source code</h4>
 
 <?php echo $parser->safeTransform("~~~
 [php]
 <?php echo CHtml::link('Hover me', '#', array('class'=>'btn btn-primary btn-danger', 'data-title'=>'Heading', 'data-content'=>'Content ...', 'rel'=>'popover')); ?>
 ~~~"); ?>
 
-		<a class="top" href="#top">Back to top &uarr;</a>
+	<a class="top" href="#top">Back to top &uarr;</a>
 
-	</section>
+</section>
 
-	<section id="bootModal">
+<section id="bootModal">
 
-		<h2>BootModal</h2>
+	<h2>BootModal</h2>
 
-		<?php $this->beginWidget('bootstrap.widgets.BootModal', array(
-			'id'=>'modal',
-			'htmlOptions'=>array('class'=>'hide'),
-			'events'=>array(
-				'show'=>"js:function() { console.log('modal show.'); }",
-				'shown'=>"js:function() { console.log('modal shown.'); }",
-				'hide'=>"js:function() { console.log('modal hide.'); }",
-				'hidden'=>"js:function() { console.log('modal hidden.'); }",
-			),
+	<?php $this->beginWidget('bootstrap.widgets.BootModal', array(
+		'id'=>'modal',
+		'htmlOptions'=>array('class'=>'hide'),
+		'events'=>array(
+			'show'=>"js:function() { console.log('modal show.'); }",
+			'shown'=>"js:function() { console.log('modal shown.'); }",
+			'hide'=>"js:function() { console.log('modal hide.'); }",
+			'hidden'=>"js:function() { console.log('modal hidden.'); }",
+		),
+	)); ?>
+
+	<div class="modal-header">
+		<a class="close" data-dismiss="modal">&times;</a>
+		<h3>Modal header</h3>
+	</div>
+	<div class="modal-body">
+		<p>One fine body...</p>
+	</div>
+	<div class="modal-footer">
+		<?php echo CHtml::link('Save changes', '#', array('class'=>'btn btn-primary', 'data-dismiss'=>'modal')); ?>
+		<?php echo CHtml::link('Close', '#', array('class'=>'btn', 'data-dismiss'=>'modal')); ?>
+	</div>
+
+	<?php $this->endWidget(); ?>
+
+	<div class="well">
+		<?php echo CHtml::link('Click me','#modal', array(
+			'class'=>'btn btn-primary',
+			'data-toggle'=>'modal',
 		)); ?>
+	</div>
 
-		<div class="modal-header">
-			<a class="close" data-dismiss="modal">&times;</a>
-			<h3>Modal header</h3>
-		</div>
-		<div class="modal-body">
-			<p>One fine body...</p>
-		</div>
-		<div class="modal-footer">
-			<?php echo CHtml::link('Save changes', '#', array('class'=>'btn btn-primary', 'data-dismiss'=>'modal')); ?>
-			<?php echo CHtml::link('Close', '#', array('class'=>'btn', 'data-dismiss'=>'modal')); ?>
-		</div>
-
-		<?php $this->endWidget(); ?>
-
-		<div class="well">
-			<?php echo CHtml::link('Click me','#modal', array(
-				'class'=>'btn btn-primary',
-				'data-toggle'=>'modal',
-			)); ?>
-		</div>
-
-		<h4>Source code</h4>
+	<h4>Source code</h4>
 
 <?php echo $parser->safeTransform("~~~
 [php]
 <?php echo CHtml::link('Click me','#modal', array('class'=>'btn btn-primary', 'data-toggle'=>'modal')); ?>
 ~~~"); ?>
 
-		<a class="top" href="#top">Back to top &uarr;</a>
+	<a class="top" href="#top">Back to top &uarr;</a>
 
-	</section>
+</section>
 
-	<section id="bootActiveForm">
+<section id="bootActiveForm">
 
-		<h2>BootActiveForm</h2>
+	<h2>BootActiveForm</h2>
 
-		<h3>Vertical</h3>
+	<h3>Vertical</h3>
 
-		<?php /** @var BootActiveForm $form */
-		$form = $this->beginWidget('bootstrap.widgets.BootActiveForm', array(
-			'id'=>'verticalForm',
-			'htmlOptions'=>array('class'=>'well'),
+	<?php /** @var BootActiveForm $form */
+	$form = $this->beginWidget('bootstrap.widgets.BootActiveForm', array(
+		'id'=>'verticalForm',
+		'htmlOptions'=>array('class'=>'well'),
+	)); ?>
+
+	<?php echo $form->textFieldRow($model, 'textField', array('class'=>'span3')); ?>
+	<?php echo $form->passwordFieldRow($model, 'password', array('class'=>'span3')); ?>
+	<?php echo $form->checkboxRow($model, 'checkbox'); ?>
+	<?php echo CHtml::htmlButton('<i class="icon-ok"></i> Submit', array('class'=>'btn', 'type'=>'submit')); ?>
+
+	<?php $this->endWidget(); ?>
+
+	<h3>Search</h3>
+
+	<?php /** @var BootActiveForm $form */
+	$form = $this->beginWidget('bootstrap.widgets.BootActiveForm', array(
+		'id'=>'searchForm',
+		'type'=>'search',
+		'htmlOptions'=>array('class'=>'well'),
+	)); ?>
+
+	<?php echo $form->textFieldRow($model, 'textField', array('class'=>'input-medium')); ?>
+	<?php echo CHtml::htmlButton('<i class="icon-search"></i> Search', array('class'=>'btn', 'type'=>'submit')); ?>
+
+	<?php $this->endWidget(); ?>
+
+	<h3>Inline</h3>
+
+	<?php /** @var BootActiveForm $form */
+	$form = $this->beginWidget('bootstrap.widgets.BootActiveForm', array(
+		'id'=>'inlineForm',
+		'type'=>'inline',
+		'htmlOptions'=>array('class'=>'well'),
+	)); ?>
+
+	<?php echo $form->textFieldRow($model, 'textField', array('class'=>'input-small')); ?>
+	<?php echo $form->passwordFieldRow($model, 'password', array('class'=>'input-small')); ?>
+	<?php echo CHtml::htmlButton('Go', array('class'=>'btn', 'type'=>'submit')); ?>
+
+	<?php $this->endWidget(); ?>
+
+	<h3>Horizontal</h3>
+
+	<?php /** @var BootActiveForm $form */
+	$form = $this->beginWidget('bootstrap.widgets.BootActiveForm', array(
+		'id'=>'horizontalForm',
+		'type'=>'horizontal',
+	)); ?>
+
+	<fieldset>
+
+		<legend>Legend</legend>
+
+		<?php echo $form->textFieldRow($model, 'textField',
+				array('hint'=>'In addition to freeform text, any HTML5 text-based input appears like so.')); ?>
+		<?php echo $form->dropDownListRow($model, 'dropdown', array('Something ...', '1', '2', '3', '4', '5')); ?>
+		<?php echo $form->dropDownListRow($model, 'multiDropdown', array('1', '2', '3', '4', '5'),
+				array('multiple'=>true)); ?>
+		<?php echo $form->fileFieldRow($model, 'fileField'); ?>
+		<?php echo $form->textAreaRow($model, 'textarea', array('class'=>'span8', 'rows'=>5)); ?>
+		<?php echo $form->uneditableRow($model, 'uneditable'); ?>
+		<?php echo $form->textFieldRow($model, 'disabled', array('disabled'=>true)); ?>
+		<?php echo $form->checkBoxRow($model, 'disabledCheckbox', array('disabled'=>true)); ?>
+		<?php echo $form->checkBoxListInlineRow($model, 'inlineCheckboxes', array('1', '2', '3')); ?>
+		<?php echo $form->checkBoxListRow($model, 'checkboxes', array(
+			'Option one is this and that—be sure to include why it\'s great',
+			'Option two can also be checked and included in form results',
+			'Option three can—yes, you guessed it—also be checked and included in form results',
+		), array('hint'=>'<strong>Note:</strong> Labels surround all the options for much larger click areas.')); ?>
+		<?php echo $form->radioButtonRow($model, 'radioButton'); ?>
+		<?php echo $form->radioButtonListRow($model, 'radioButtons', array(
+			'Option one is this and that—be sure to include why it\'s great',
+			'Option two can is something else and selecting it will deselect option one',
 		)); ?>
+		<?php echo $form->captchaRow($model, 'captcha'); ?>
 
-		<?php echo $form->textFieldRow($model, 'textField', array('class'=>'span3')); ?>
-		<?php echo $form->passwordFieldRow($model, 'password', array('class'=>'span3')); ?>
-		<?php echo $form->checkboxRow($model, 'checkbox'); ?>
-		<?php echo CHtml::htmlButton('<i class="icon-ok"></i> Submit', array('class'=>'btn', 'type'=>'submit')); ?>
+	</fieldset>
 
-		<?php $this->endWidget(); ?>
+	<div class="form-actions">
+		<?php echo CHtml::htmlButton('<i class="icon-ok icon-white"></i> Submit', array('class'=>'btn btn-primary', 'type'=>'submit')); ?>
+		<?php echo CHtml::htmlButton('<i class="icon-ban-circle"></i> Reset', array('class'=>'btn', 'type'=>'reset')); ?>
+	</div>
 
-		<h3>Search</h3>
+	<?php $this->endWidget(); ?>
 
-		<?php /** @var BootActiveForm $form */
-		$form = $this->beginWidget('bootstrap.widgets.BootActiveForm', array(
-			'id'=>'searchForm',
-			'type'=>'search',
-			'htmlOptions'=>array('class'=>'well'),
-		)); ?>
-
-		<?php echo $form->textFieldRow($model, 'textField', array('class'=>'input-medium')); ?>
-		<?php echo CHtml::htmlButton('<i class="icon-search"></i> Search', array('class'=>'btn', 'type'=>'submit')); ?>
-
-		<?php $this->endWidget(); ?>
-
-		<h3>Inline</h3>
-
-		<?php /** @var BootActiveForm $form */
-		$form = $this->beginWidget('bootstrap.widgets.BootActiveForm', array(
-			'id'=>'inlineForm',
-			'type'=>'inline',
-			'htmlOptions'=>array('class'=>'well'),
-		)); ?>
-
-		<?php echo $form->textFieldRow($model, 'textField', array('class'=>'input-small')); ?>
-		<?php echo $form->passwordFieldRow($model, 'password', array('class'=>'input-small')); ?>
-		<?php echo CHtml::htmlButton('Go', array('class'=>'btn', 'type'=>'submit')); ?>
-
-		<?php $this->endWidget(); ?>
-
-		<h3>Horizontal</h3>
-
-		<?php /** @var BootActiveForm $form */
-		$form = $this->beginWidget('bootstrap.widgets.BootActiveForm', array(
-			'id'=>'horizontalForm',
-			'type'=>'horizontal',
-		)); ?>
-
-		<fieldset>
-
-			<legend>Legend</legend>
-
-			<?php echo $form->textFieldRow($model, 'textField',
-					array('hint'=>'In addition to freeform text, any HTML5 text-based input appears like so.')); ?>
-			<?php echo $form->dropDownListRow($model, 'dropdown', array('Something ...', '1', '2', '3', '4', '5')); ?>
-			<?php echo $form->dropDownListRow($model, 'multiDropdown', array('1', '2', '3', '4', '5'),
-					array('multiple'=>true)); ?>
-			<?php echo $form->fileFieldRow($model, 'fileField'); ?>
-			<?php echo $form->textAreaRow($model, 'textarea', array('class'=>'span8', 'rows'=>5)); ?>
-			<?php echo $form->uneditableRow($model, 'uneditable'); ?>
-			<?php echo $form->textFieldRow($model, 'disabled', array('disabled'=>true)); ?>
-			<?php echo $form->checkBoxRow($model, 'disabledCheckbox', array('disabled'=>true)); ?>
-			<?php echo $form->checkBoxListInlineRow($model, 'inlineCheckboxes', array('1', '2', '3')); ?>
-			<?php echo $form->checkBoxListRow($model, 'checkboxes', array(
-				'Option one is this and that—be sure to include why it\'s great',
-				'Option two can also be checked and included in form results',
-				'Option three can—yes, you guessed it—also be checked and included in form results',
-			), array('hint'=>'<strong>Note:</strong> Labels surround all the options for much larger click areas.')); ?>
-			<?php echo $form->radioButtonRow($model, 'radioButton'); ?>
-			<?php echo $form->radioButtonListRow($model, 'radioButtons', array(
-				'Option one is this and that—be sure to include why it\'s great',
-				'Option two can is something else and selecting it will deselect option one',
-			)); ?>
-			<?php echo $form->captchaRow($model, 'captcha'); ?>
-
-		</fieldset>
-
-		<div class="form-actions">
-			<?php echo CHtml::htmlButton('<i class="icon-ok icon-white"></i> Submit', array('class'=>'btn btn-primary', 'type'=>'submit')); ?>
-			<?php echo CHtml::htmlButton('<i class="icon-ban-circle"></i> Reset', array('class'=>'btn', 'type'=>'reset')); ?>
-		</div>
-
-		<?php $this->endWidget(); ?>
-
-		<h4>Source code</h4>
+	<h4>Source code</h4>
 
 <?php echo $parser->safeTransform("~~~
 [php]
 <?php \$this->endWidget(); ?>
 ~~~"); ?>
 
-		<a class="top" href="#top">Back to top &uarr;</a>
+	<a class="top" href="#top">Back to top &uarr;</a>
 
-	</section>
+</section>
+
+<div class="subnav subnav-fixed">
+
+	<?php $this->widget('BootMenu', array(
+		'type'=>'pills',
+		'scrollspy'=>array('spy'=>'.subnav', 'offset'=>50),
+		'items'=>array(
+			array('label'=>'BootAlert', 'url'=>'#bootAlert'),
+			array('label'=>'BootCrumb', 'url'=>'#bootCrumb'),
+			array('label'=>'BootNavbar', 'url'=>'#bootNavbar'),
+			array('label'=>'BootMenu', 'url'=>'#bootMenu'),
+			array('label'=>'BootTabbed', 'url'=>'#bootTabbed'),
+			array('label'=>'BootDetailView', 'url'=>'#bootDetailView'),
+			array('label'=>'BootGridView', 'url'=>'#bootGridView'),
+			array('label'=>'BootThumbs', 'url'=>'#bootThumbs'),
+			array('label'=>'BootTooltip', 'url'=>'#bootTooltip'),
+			array('label'=>'BootPopover', 'url'=>'#bootPopover'),
+			array('label'=>'BootModal', 'url'=>'#bootModal'),
+			array('label'=>'BootActiveForm', 'url'=>'#bootActiveForm'),
+		),
+	)); ?>
 
 </div>

widgets/BootMenu.php

 			$this->renderItems($this->items);
 			echo '</ul>';
 
-			/** @var Bootstrap $bootstrap */
-			$bootstrap = Yii::app()->bootstrap;
-			$bootstrap->registerDropdown();
+			Yii::app()->bootstrap->registerDropdown();
 
-			/*
-			if (isset($this->scrollspy))
+			if (isset($this->scrollspy) && is_array($this->scrollspy) && isset($this->scrollspy['spy']))
 			{
-				if (!is_array($this->scrollspy))
-					$this->scrollspy = array();
+				Yii::app()->bootstrap->registerScrollSpy();
 
-				if (!isset($this->scrollspy['target']))
-					$this->scrollspy['target'] = 'body';
+				if (!isset($this->scrollspy['subject']))
+					$this->scrollspy['subject'] = 'body';
 
 				if (!isset($this->scrollspy['offset']))
 					$this->scrollspy['offset'] = null;
 
-				$bootstrap->registerScrollSpy();
-				$bootstrap->spyOn($this->scrollspy['target'], '#'.$this->id, $this->scrollspy['offset']);
+				Yii::app()->bootstrap->spyOn($this->scrollspy['subject'], $this->scrollspy['spy'], $this->scrollspy['offset']);
 			}
-			*/
 		}
 	}
 
 	 */
 	protected function renderItem($item)
 	{
+		if (isset($item['icon'])) {
+			if (strpos($item['icon'], 'icon') === false)
+				$item['icon'] = 'icon-'.$item['icon'];
+
+			$item['label'] = '<i class="'.$item['icon'].'"></i> '.$item['label'];
+		}
+
 		if (isset($item['items']))
 		{
 			if (!isset($item['url']))
 		}
 
 		if (isset($item['url']))
-		{
-			if (isset($item['icon'])) {
-				if (strpos($item['icon'], 'icon') === false)
-					$item['icon'] = 'icon-'.$item['icon'];
-
-	            $item['label'] = '<i class="'.$item['icon'].'"></i> '.$item['label'];
-	        }
-
 			return CHtml::link($item['label'], $item['url'], isset($item['linkOptions']) ? $item['linkOptions'] : array());
-		}
 		else
 			return $item['label'];
 	}

widgets/BootNavbar.php

 	 */
 	public function init()
 	{
-		if (!$this->brand)
+		if ($this->brand !== false)
 		{
 			$this->brand = CHtml::encode(Yii::app()->name);
 

widgets/BootTabbed.php

 
 	    foreach ($tabs as $tab)
 	    {
-		    $i++;
 			$item = $tab;
 
-			if (!isset($item['id']))
-				$item['id'] = $id.'_tab_'.$i;
-
-			if (!isset($item['label']))
-				$item['label'] = '';
-
-			$item['url'] = '#'.$item['id'];
-
 			if (!isset($item['itemOptions']))
 				$item['itemOptions'] = array();
 
-		    if ($i === 1)
+		    if ($i === 0)
 		    {
 			    if (isset($item['itemOptions']['class']))
 	                $item['itemOptions']['class'] .= ' active';
 			$item['linkOptions']['data-toggle'] = 'tab';
 
 		    if (isset($tab['items']))
+				$item['items'] = $this->normalizeTabs($item['items'], $panes, $i);
+			else
 			{
-				$item['items'] = $this->normalizeTabs($item['items'], $panes, $i);
-				unset($item['url']);
+				if (!isset($item['id']))
+					$item['id'] = $id.'_tab_'.++$i;
+
+				$item['url'] = '#'.$item['id'];
+
+				if (!isset($item['content']))
+					$item['content'] = '';
+
+				$content = $item['content'];
+				unset($item['content']);
+
+				if (!isset($item['paneOptions']))
+					$item['paneOptions'] = array();
+
+				$paneOptions = $item['paneOptions'];
+				unset($item['paneOptions']);
+
+				$paneOptions['id'] = $item['id'];
+
+				if (isset($tab['paneOptions']['class']))
+					$paneOptions['class'] .= ' tab-pane';
+				else
+					$paneOptions['class'] = 'tab-pane';
+
+				if ($transitions)
+					$paneOptions['class'] .= ' fade';
+
+				if ($i === 1)
+				{
+					if ($transitions)
+						$paneOptions['class'] .= ' in';
+
+					$paneOptions['class'] .= ' active';
+				}
+
+				$panes[] = CHtml::tag('div', $paneOptions, $content);
 			}
 
-		    if (!isset($item['content']))
-			    $item['content'] = '';
-
-			$content = $item['content'];
-			unset($item['content']);
-
-		    if (!isset($item['paneOptions']))
-				$item['paneOptions'] = array();
-
-			$paneOptions = $item['paneOptions'];
-			unset($item['paneOptions']);
-
-			$paneOptions['id'] = $item['id'];
-
-		    if (isset($tab['paneOptions']['class']))
-				$paneOptions['class'] .= ' tab-pane';
-		    else
-				$paneOptions['class'] = 'tab-pane';
-
-		    if ($transitions)
-				$paneOptions['class'] .= ' fade';
-
-		    if ($i === 1)
-		    {
-			    if ($transitions)
-					$paneOptions['class'] .= ' in';
-
-				$paneOptions['class'] .= ' active';
-		    }
-
-		    $panes[] = CHtml::tag('div', $paneOptions, $content);
 			$items[] = $item;
 	    }