1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/limesurvey_ynh.git synced 2024-09-03 19:36:32 +02:00
limesurvey_ynh/sources/application/extensions/bootstrap/widgets/TbJsonCheckBoxColumn.php

115 lines
3.3 KiB
PHP

<?php
/**
* TbJsonCheckBoxColumn class
* Works in conjunction with TbJsonGridView. Renders HTML or returns JSON containing checkbox
* according to the request to the Grid.
*
* @author: Mikhail Kuklin <mikhail@clevertech.biz>
* @copyright Copyright &copy; Clevertech 2012-
* @license http://www.opensource.org/licenses/bsd-license.php New BSD License
* @package YiiBooster bootstrap.widgets
*/
class TbJsonCheckBoxColumn extends CCheckBoxColumn
{
/**
* Renders the header cell.
*/
public function renderHeaderCell()
{
if ($this->grid->json)
{
$this->headerHtmlOptions['id']=$this->id;
if ($this->grid->json)
{
return CMap::mergeArray(
$this->headerHtmlOptions,
array('content' => $this->renderHeaderCellContent())
);
}
}
parent::renderHeaderCell();
}
/**
* Renders the header cell content.
* This method will render a checkbox in the header when {@link selectableRows} is greater than 1
* or in case {@link selectableRows} is null when {@link CGridView::selectableRows} is greater than 1.
*/
protected function renderHeaderCellContent()
{
if ($this->grid->json)
{
if(trim($this->headerTemplate)==='')
{
return $this->grid->blankDisplay;
}
$item = '';
if($this->selectableRows===null && $this->grid->selectableRows>1)
$item = CHtml::checkBox($this->id.'_all',false,array('class'=>'select-on-check-all'));
else if($this->selectableRows>1)
$item = CHtml::checkBox($this->id.'_all',false);
else
{
ob_start();
parent::renderHeaderCellContent();
$item = ob_get_clean();
}
return strtr($this->headerTemplate,array(
'{item}'=>$item,
));
}
parent::renderHeaderCellContent();
}
/**
* Renders|returns the data cell.
* @param int $row
* @return array|void
*/
public function renderDataCell($row)
{
$data = $this->grid->dataProvider->data[$row];
$options = $this->htmlOptions;
if ($this->cssClassExpression !== null)
{
$class = $this->evaluateExpression($this->cssClassExpression, array('row' => $row, 'data' => $data));
if (!empty($class))
{
if (isset($options['class']))
$options['class'] .= ' ' . $class;
else
$options['class'] = $class;
}
}
if ($this->grid->json)
{
return CMap::mergeArray(
$options,
array('content' => $this->renderDataCellContent($row, $data))
);
}
parent::renderDataCell($row);
}
/**
* Renders|returns the data cell content
* @param int $row
* @return array|void
*/
protected function renderDataCellContent($row, $data)
{
ob_start();
parent::renderDataCellContent($row, $data);
$html = ob_get_contents();
ob_end_clean();
if ($this->grid->json)
return $html;
echo $html;
}
}