File: /var/www/apklausos/application/extensions/yiiwheels/widgets/grid/WhImageColumn.php
<?php
/**
* WhImageColumn class
*
* Displays images in a column
*
* @author Antonio Ramirez <amigo.cobos@gmail.com>
* @copyright Copyright © 2amigos.us 2013-
* @license http://www.opensource.org/licenses/bsd-license.php New BSD License
* @package YiiWheels.widgets.grid
* @uses Yiistrap.widgets.TbDataColumn
*/
Yii::import('zii.widgets.grid.CGridColumn');
class WhImageColumn 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:
* <code>$row</code> the row number
* <code>$data</code> the data model of the row
* <code>$this</code> 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;
}
}