/admincrud/extensions/bootstrap/widgets/TbJsonCheckBoxColumn.php
PHP | 120 lines | 74 code | 10 blank | 36 comment | 15 complexity | dce5dab375f191b4f69f6bdd83c08599 MD5 | raw file
Possible License(s): LGPL-2.1, BSD-3-Clause
- <?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 © Clevertech 2012-
- * @license http://www.opensource.org/licenses/bsd-license.php New BSD License
- * @package YiiBooster bootstrap.widgets
- */
- /**
- * @property TbJsonGridView $grid
- */
- 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;
- }
- 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
- * @param mixed $data
- *
- * @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;
- }
- }