* @copyright Copyright © Clevertech 2012-
* @license http://www.opensource.org/licenses/bsd-license.php New BSD License
* @package YiiBooster bootstrap.widgets
*/
Yii::import('zii.widgets.grid.CGridColumn');
class TbImageColumn extends CGridColumn
{
/**
* @var array the HTML options of the image tag
*/
public $imageOptions = array();
/**
* @var string $imagePathExpression is evaluated in every data cell and
* is used as the path of the image. The expression will have:
* $row
the row number
* $data
the data model of the row
* $this
the column object
*/
public $imagePathExpression;
/**
* @var string $emptyText renders if $imagePathExpression is null
*/
public $emptyText = '';
/**
* @var bool $userPlaceHoldIt whether to use a bogus image from placehold.it or not. If true, will render an image
* from placehold.it according to the size set at $placeHoldItSize. Defaults to false, now placehold.it only grants
* access for certain amount of time. You need to ask for permission :(
*/
public $usePlaceHoldIt = false;
/**
* @var bool $userPlaceKitten whether to use bogus image from placekitten.com or not. If true, will render an image
* from placekitten.com according to the size set at $placeKittenSize. Defaults to true (what can I say? I love kitten)
*/
public $usePlaceKitten = true;
/**
* @var string $placeHoldItSize the size of the image to render if $imagePathExpression is null and $userPlaceHoldIt
* is set to true
*/
public $placeHoldItSize = '48x48';
/**
* @var string $placeKittenSize the size of the image to render if $imagePathExpression is null and $usePlaceKitten
* is set to true
*/
public $placeKittenSize = '48/48';
/**
* Renders the data cell content
* @param int $row the row number (zero based)
* @param mixed $data teh data associated with the row
*/
protected function renderDataCellContent($row, $data)
{
$content = $this->emptyText;
if ($this->imagePathExpression && $imagePath = $this->evaluateExpression($this->imagePathExpression, array('row' => $row, 'data' => $data)))
{
$this->imageOptions['src'] = $imagePath;
$content = CHtml::tag('img', $this->imageOptions);
} elseif ($this->usePlaceHoldIt && !empty($this->placeHoldItSize))
{
$content = CHtml::tag('img', array('src'=>'http://placehold.it/' . $this->placeHoldItSize));
} elseif ($this->usePlaceKitten && !empty($this->placeKittenSize))
{
$content = CHtml::tag('img', array('src'=>'http://placekitten.com/' . $this->placeKittenSize));
}
echo $content;
}
}