diff --git a/action/adapter/gridView/handler/Model.php b/action/adapter/gridView/handler/Model.php index 68f17fb..ae72754 100644 --- a/action/adapter/gridView/handler/Model.php +++ b/action/adapter/gridView/handler/Model.php @@ -40,19 +40,25 @@ public function run() { $arguments[] = ['id' => $ids]; if (is_array($method)) { $class = $method[0]; - $count = $class::$method(...$arguments); + $result = $class::$method(...$arguments); } else if (is_callable($method)) { - $count = $method(...$arguments); + $result = $method(...$arguments); } else { - $count = $class::$method(...$arguments); + $result = $class::$method(...$arguments); } $response = new \execut\actions\action\Response(); - $flashes = [ - 'kv-detail-success' => strtr($this->successMessage, ['#' => $count]), - ]; - $response->content = \yii::$app->response->redirect($this->getReferer()); - $response->flashes = $flashes; + if (is_array($result)) { + $response->format = 'json'; + $response->content = $result; + } else { + $count = $result; + $flashes = [ + 'kv-detail-success' => strtr($this->successMessage, ['#' => $count]), + ]; + $response->content = \yii::$app->response->redirect($this->getReferer()); + $response->flashes = $flashes; + } return $response; } diff --git a/widgets/HandlersButton.php b/widgets/HandlersButton.php index a0f335e..e1b9974 100644 --- a/widgets/HandlersButton.php +++ b/widgets/HandlersButton.php @@ -9,6 +9,7 @@ namespace execut\actions\widgets; use execut\yii\jui\Widget; +use yii\bootstrap\Modal; use yii\helpers\Html; use yii\helpers\Url; @@ -33,6 +34,11 @@ public function run() 'idAttribute' => $this->idAttribute, ]; $this->registerWidget(); + Modal::begin([ + 'header' => '', + 'id' => $this->id . '-modal', + ]); + Modal::end(); return Html::tag('i', '', [ 'id' => $this->id, 'class' => 'btn btn-' . $this->type . ' glyphicon glyphicon-' . $this->icon, diff --git a/widgets/assets/HandlersButton.js b/widgets/assets/HandlersButton.js index d3de9a7..a466327 100644 --- a/widgets/assets/HandlersButton.js +++ b/widgets/assets/HandlersButton.js @@ -10,6 +10,7 @@ var t = this, el = t.element; t._gridEl = $(t.options.gridSelector); + t._modalEl = $('#' + el.attr('id') + '-modal'); }, _initEvents: function () { var t = this, @@ -28,7 +29,20 @@ url += '&' + t.options.idAttribute + '[]=' + selectedIds[key]; } - $.get(url); + $.get(url, function (r) { + var resultError = []; + for (var modelName in r) { + for (var attribute in r[modelName]) { + for (var errorKey in r[modelName][attribute]) { + var error = r[modelName][attribute][errorKey]; + resultError[resultError.length] = modelName + ': ' + error; + } + } + } + + t._modalEl.find('.modal-body').html(resultError.join('
')); + t._modalEl.modal('show'); + }); } }); }, diff --git a/widgets/assets/HandlersButton.min.js b/widgets/assets/HandlersButton.min.js index efea702..8e02940 100644 --- a/widgets/assets/HandlersButton.min.js +++ b/widgets/assets/HandlersButton.min.js @@ -1 +1 @@ -(function(){$.widget("execut.HandlersButton",{_gridEl:null,_create:function(){var a=this;a._initElements();a._initEvents()},_initElements:function(){var a=this,b=a.element;a._gridEl=$(a.options.gridSelector)},_initEvents:function(){var a=this,b=a.element;b.click(function(){var c=a._gridEl.yiiGridView("getSelectedRows"),f=a._getMessage(c.length||a.options.totalCount);if(confirm(f)){var d=a.options.url;if(d.search("\\?")==-1){d+="?"}for(var e=0;e"));a._modalEl.modal("show")})}})},_getMessage:function(a){var b=this,c=b.element;return b.options.confirmMessage.replace("#",a)}})})(); \ No newline at end of file