89 lines
3.0 KiB
PHP
89 lines
3.0 KiB
PHP
<?php
|
|
/**
|
|
* TbButtonColumn class file.
|
|
* @author Antonio Ramirez <ramirez.cobos@gmail.com>
|
|
* @author Christoffer Niska <ChristofferNiska@gmail.com>
|
|
* @copyright Copyright © Christoffer Niska 2013-
|
|
* @license http://www.opensource.org/licenses/bsd-license.php New BSD License
|
|
* @package bootstrap.widgets
|
|
*/
|
|
|
|
Yii::import('zii.widgets.grid.CButtonColumn');
|
|
|
|
/**
|
|
* Bootstrap button column widget.
|
|
*/
|
|
class TbButtonColumn extends CButtonColumn
|
|
{
|
|
/**
|
|
* @var string the view button icon (defaults to TbHtml::ICON_EYE_OPEN).
|
|
*/
|
|
public $viewButtonIcon = TbHtml::ICON_EYE_OPEN;
|
|
/**
|
|
* @var string the update button icon (defaults to TbHtml::ICON_PENCIL).
|
|
*/
|
|
public $updateButtonIcon = TbHtml::ICON_PENCIL;
|
|
/**
|
|
* @var string the delete button icon (defaults to TbHtml::ICON_TRASH).
|
|
*/
|
|
public $deleteButtonIcon = TbHtml::ICON_TRASH;
|
|
|
|
/**
|
|
* Initializes the default buttons (view, update and delete).
|
|
*/
|
|
protected function initDefaultButtons()
|
|
{
|
|
parent::initDefaultButtons();
|
|
|
|
if ($this->viewButtonIcon !== false && !isset($this->buttons['view']['icon'])) {
|
|
$this->buttons['view']['icon'] = $this->viewButtonIcon;
|
|
}
|
|
if ($this->updateButtonIcon !== false && !isset($this->buttons['update']['icon'])) {
|
|
$this->buttons['update']['icon'] = $this->updateButtonIcon;
|
|
}
|
|
if ($this->deleteButtonIcon !== false && !isset($this->buttons['delete']['icon'])) {
|
|
$this->buttons['delete']['icon'] = $this->deleteButtonIcon;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Renders a link button.
|
|
* @param string $id the ID of the button
|
|
* @param array $button the button configuration which may contain 'label', 'url', 'imageUrl' and 'options' elements.
|
|
* @param integer $row the row number (zero-based)
|
|
* @param mixed $data the data object associated with the row
|
|
*/
|
|
protected function renderButton($id, $button, $row, $data)
|
|
{
|
|
if (isset($button['visible']) && !$this->evaluateExpression(
|
|
$button['visible'],
|
|
array('row' => $row, 'data' => $data)
|
|
)
|
|
) {
|
|
return;
|
|
}
|
|
|
|
$url = TbArray::popValue('url', $button);
|
|
if ($url !== '#') {
|
|
$url = $this->evaluateExpression($url, array('data' => $data, 'row' => $row));
|
|
}
|
|
|
|
$imageUrl = TbArray::popValue('imageUrl', $button, false);
|
|
$label = TbArray::popValue('label', $button, $id);
|
|
$options = TbArray::popValue('options', $button, array());
|
|
|
|
TbArray::defaultValue('title', $label, $options);
|
|
TbArray::defaultValue('rel', 'tooltip', $options);
|
|
|
|
if ($icon = TbArray::popValue('icon', $button, false)) {
|
|
echo CHtml::link(TbHtml::icon($icon), $url, $options);
|
|
} else {
|
|
if ($imageUrl && is_string($imageUrl)) {
|
|
echo CHtml::link(CHtml::image($imageUrl, $label), $url, $options);
|
|
} else {
|
|
echo CHtml::link($label, $url, $options);
|
|
}
|
|
}
|
|
}
|
|
}
|