%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/libs/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/libs/DropDownGridColumn.php |
<?php /** * @link https://www.humhub.org/ * @copyright Copyright (c) 2017 HumHub GmbH & Co. KG * @license https://www.humhub.com/licences */ namespace humhub\libs; use Yii; use yii\grid\DataColumn; use yii\web\JsExpression; /** * DropDown Grid Column * * @author luke */ class DropDownGridColumn extends DataColumn { /** * @var array list of attributes which should be aditionally submitted (e.g. id) */ public $submitAttributes = ['id']; /** * @var array html options */ public $htmlOptions = []; /** * @var array dropdown options */ public $dropDownOptions = []; /** * @var array ajax options */ public $ajaxOptions = []; public $readonly = false; /** * @inheritdoc */ public function init() { if (!isset($this->ajaxOptions['type'])) { $this->ajaxOptions['type'] = 'POST'; } $this->ajaxOptions['data'] = new JsExpression('data'); $this->ajaxOptions['success'] = new JsExpression('function() { humhub.modules.ui.status.success("' . Yii::t('base', 'Saved') . '"); }'); $this->grid->view->registerJs("$('.editableCell').change(function() { data = {}; data[$(this).attr('name')] = $(this).val(); submitAttributes = $(this).data('submit-attributes').split(', '); for (var i in submitAttributes) { data[submitAttributes[i]] = $(this).data('attribute'+i); } data['dropDownColumnSubmit'] = true; $.ajax(" . \yii\helpers\Json::encode($this->ajaxOptions) . "); });"); return parent::init(); } /** * @inheritdoc */ protected function renderDataCellContent($model, $key, $index) { if (isset($this->htmlOptions['class'])) { $this->htmlOptions['class'] .= 'editableCell form-control'; } else { $this->htmlOptions['class'] = 'editableCell form-control'; } // Fixes: https://github.com/yiisoft/yii2/issues/19534 $this->htmlOptions['strict'] = true; // We need to number the submit attributes because data attribute is not case sensitive $this->htmlOptions['data-submit-attributes'] = implode(', ', $this->submitAttributes); $i = 0; foreach ($this->submitAttributes as $attribute) { $this->htmlOptions['data-attribute' . $i] = $model[$attribute]; $i++; } if (is_array($this->dropDownOptions)) { $options = $this->dropDownOptions; } else { $options = $model[$this->dropDownOptions]; } $inputName = (is_array($model)) ? $this->attribute : Html::getInputName($model, $this->attribute); $readonly = $this->readonly; if (!is_bool($readonly)) { $readonly = call_user_func($this->readonly, $model, $key, $index, $this); } if ($readonly) { if (isset($options[$model[$this->attribute]])) { return Html::dropDownList($inputName, $model[$this->attribute], $options, array_merge($this->htmlOptions, ['readonly' => true, 'disabled' => true])); } return $model[$this->attribute]; } return Html::dropDownList($inputName, $model[$this->attribute], $options, $this->htmlOptions); } }