75 lines
2.1 KiB
PHP
75 lines
2.1 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* TbBreadcrumbs class file.
|
||
|
* @author Christoffer Niska <christoffer.niska@gmail.com>
|
||
|
* @copyright Copyright © Christoffer Niska 2013-
|
||
|
* @license http://www.opensource.org/licenses/bsd-license.php New BSD License
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Bootstrap breadcrumb widget.
|
||
|
* @see http://twitter.github.com/bootstrap/components.html#breadcrumbs
|
||
|
* @package bootstrap.widgets
|
||
|
*/
|
||
|
class TbBreadcrumb extends CWidget
|
||
|
{
|
||
|
/**
|
||
|
* @var string the divider between links in the breadcrumbs.
|
||
|
*/
|
||
|
public $divider = '/';
|
||
|
/**
|
||
|
* @var boolean whether to HTML encode the link labels.
|
||
|
*/
|
||
|
public $encodeLabel = true;
|
||
|
/**
|
||
|
* @var string the label for the first link in the breadcrumb.
|
||
|
*/
|
||
|
public $homeLabel;
|
||
|
/**
|
||
|
* @var array the url for the first link in the breadcrumb
|
||
|
*/
|
||
|
public $homeUrl;
|
||
|
/**
|
||
|
* @var array the HTML attributes for the breadcrumbs.
|
||
|
*/
|
||
|
public $htmlOptions = array();
|
||
|
/**
|
||
|
* @var array list of links to appear in the breadcrumbs.
|
||
|
*/
|
||
|
public $links = array();
|
||
|
|
||
|
/**
|
||
|
* Initializes the widget.
|
||
|
*/
|
||
|
public function init()
|
||
|
{
|
||
|
$this->htmlOptions['divider'] = $this->divider;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Runs the widget.
|
||
|
*/
|
||
|
public function run()
|
||
|
{
|
||
|
// todo: consider adding control property for displaying breadcrumbs even when empty.
|
||
|
if (!empty($this->links)) {
|
||
|
$links = array();
|
||
|
if ($this->homeLabel !== false) {
|
||
|
$label = $this->homeLabel !== null ? $this->homeLabel : TbHtml::icon('home');
|
||
|
$links[$label] = $this->homeUrl !== null ? $this->homeUrl : Yii::app()->homeUrl;
|
||
|
}
|
||
|
foreach ($this->links as $label => $url) {
|
||
|
if (is_string($label)) {
|
||
|
if ($this->encodeLabel) {
|
||
|
$label = CHtml::encode($label);
|
||
|
}
|
||
|
$links[$label] = $url;
|
||
|
} else {
|
||
|
$links[] = $this->encodeLabel ? CHtml::encode($url) : $url;
|
||
|
}
|
||
|
}
|
||
|
echo TbHtml::breadcrumbs($links, $this->htmlOptions);
|
||
|
}
|
||
|
}
|
||
|
}
|