71 lines
2.1 KiB
PHP
71 lines
2.1 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* TbThumbnails 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
|
||
|
* @package bootstrap.widgets
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Bootstrap thumbnails widget.
|
||
|
* http://twitter.github.com/bootstrap/components.html#thumbnails
|
||
|
*/
|
||
|
class TbThumbnails extends TbListView
|
||
|
{
|
||
|
/**
|
||
|
* @var mixed a PHP expression that is evaluated for every item and whose result is used
|
||
|
* as the URL for the thumbnail.
|
||
|
*/
|
||
|
public $url;
|
||
|
/**
|
||
|
* @var integer the number of grid columns that the thumbnails spans over.
|
||
|
*/
|
||
|
public $span;
|
||
|
|
||
|
/**
|
||
|
* Initializes the widget
|
||
|
*/
|
||
|
public function init()
|
||
|
{
|
||
|
parent::init();
|
||
|
|
||
|
if (isset($this->itemsCssClass)) {
|
||
|
TbHtml::addCssClass($this->itemsCssClass, $this->htmlOptions);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Renders the data items for the view.
|
||
|
* Each item is corresponding to a single data model instance.
|
||
|
*/
|
||
|
public function renderItems()
|
||
|
{
|
||
|
$thumbnails = array();
|
||
|
$data = $this->dataProvider->getData();
|
||
|
|
||
|
if (!empty($data)) {
|
||
|
$owner = $this->getOwner();
|
||
|
$render = $owner instanceof CController ? 'renderPartial' : 'render';
|
||
|
foreach ($data as $i => $row) {
|
||
|
$thumbnail = array();
|
||
|
$d = $this->viewData;
|
||
|
$d['index'] = $i;
|
||
|
$d['data'] = $row;
|
||
|
$d['widget'] = $this;
|
||
|
$thumbnail['caption'] = $owner->$render($this->itemView, $d, true);
|
||
|
if (isset($this->url)) {
|
||
|
$thumbnail['url'] = $this->evaluateExpression($this->url, array('data' => $row));
|
||
|
}
|
||
|
if (isset($this->span)) {
|
||
|
$thumbnail['span'] = $this->span;
|
||
|
}
|
||
|
$thumbnails[] = $thumbnail;
|
||
|
}
|
||
|
echo TbHtml::thumbnails($thumbnails, $this->htmlOptions);
|
||
|
} else {
|
||
|
$this->renderEmptyText();
|
||
|
}
|
||
|
}
|
||
|
}
|