diff --git a/src/CrudAsset.php b/src/CrudAsset.php
index 0f484e2..44d82fa 100644
--- a/src/CrudAsset.php
+++ b/src/CrudAsset.php
@@ -19,13 +19,7 @@ class CrudAsset extends AssetBundle
public $css = [
'ajaxcrud.css'
];
- public $js = [
- //'ModalRemote.js',
- //'ajaxcrud.js',
- 'ModalRemote.min.js',
- 'ajaxcrud.min.js',
- ];
public $depends = [
'yii\web\YiiAsset',
'yii\bootstrap\BootstrapAsset',
@@ -33,6 +27,16 @@ class CrudAsset extends AssetBundle
'kartik\grid\GridViewAsset',
];
-
-
+ public function init() {
+ // In dev mode use non-minified javascripts
+ $this->js = YII_DEBUG ? [
+ 'ModalRemote.js',
+ 'ajaxcrud.js',
+ ]:[
+ 'ModalRemote.min.js',
+ 'ajaxcrud.min.js',
+ ];
+
+ parent::init();
+ }
}
diff --git a/src/assets/ModalRemote.js b/src/assets/ModalRemote.js
index 9d49674..40a1d83 100644
--- a/src/assets/ModalRemote.js
+++ b/src/assets/ModalRemote.js
@@ -15,15 +15,15 @@
function ModalRemote(modalId){
- this.defauls = {
+ this.defaults = {
okLabel:"OK",
cancelLabel:"Cancel",
- loadingTitle:"Loading",
+ loadingTitle:"Loading"
};
this.modal = $(modalId);
- this.dialog - $(modalId).find('.modal-dialog');
+ this.dialog = $(modalId).find('.modal-dialog');
this.header = $(modalId).find('.modal-header');
@@ -140,7 +140,7 @@ function ModalRemote(modalId){
*/
this.displayLoading = function(){
this.setContent(this.loadingContent);
- this.setTitle(this.defauls.loadingTitle);
+ this.setTitle(this.defaults.loadingTitle);
}
/**
@@ -159,8 +159,8 @@ function ModalRemote(modalId){
if(message!==undefined){
this.setContent(message);
}
- this.addButton(okLabel===undefined?this.defauls.okLabel:okLabel,'btn btn-primary',okCallback);
- this.addButton(cancelLabel===undefined?this.defauls.cancelLabel:cancelLabel,'btn btn-default pull-left',cancelCallback);
+ this.addButton(okLabel===undefined?this.defaults.okLabel:okLabel,'btn btn-primary',okCallback);
+ this.addButton(cancelLabel===undefined?this.defaults.cancelLabel:cancelLabel,'btn btn-default pull-left',cancelCallback);
}
/**
@@ -276,8 +276,12 @@ function ModalRemote(modalId){
function successRemoteResponse(response){
// reload datatable if response contain forceReload field
- if(response.forceReload !== undefined && response.forceReload){
- $.pjax.reload({container:'#crud-datatable-pjax'});
+ if(response.forceReload !== undefined && response.forceReload) {
+ if (response.forceReload == 'true') {
+ $.pjax.reload({container: '#crud-datatable-pjax'});
+ } else {
+ $.pjax.reload({container: response.forceReload});
+ }
}
// close modal if response contain forceClose field
diff --git a/src/assets/ModalRemote.min.js b/src/assets/ModalRemote.min.js
index dd59430..921f8b6 100644
--- a/src/assets/ModalRemote.min.js
+++ b/src/assets/ModalRemote.min.js
@@ -1 +1 @@
-function ModalRemote(t){function i(t,i,n){var a=this;$.ajax({url:t,method:i,data:n,beforeSend:function(){o.call(a)},error:function(t){e.call(a,t)},success:function(t){s.call(a,t)}})}function o(){this.show(),this.displayLoading()}function e(t){this.setTitle(t.status+t.statusText),this.setContent(t.responseText),this.addButton("Close","btn btn-default",function(){this.hide()})}function s(t){if(void 0!==t.forceReload&&t.forceReload&&$.pjax.reload({container:"#crud-datatable-pjax"}),void 0!==t.forceClose&&t.forceClose)return void this.hide();if(void 0!==t.size&&this.setSize(t.size),void 0!==t.title&&this.setTitle(t.title),void 0!==t.content&&this.setContent(t.content),void 0!==t.footer&&this.setFooter(t.footer),void 0!==$(this.content).find("form")[0]){var i=$(this.content).find("form")[0],n=$(this.footer).find('[type="submit"]')[0];if(void 0===n)console.warn("Modal have form but have not any submit button");else{var a=this;$(n).click(function(){var t=$(i).attr("action"),n=$(i).hasAttr("method")?$(i).attr("method"):"GET",l=$(i).serializeArray();$.ajax({url:t,method:n,data:l,beforeSend:function(){o.call(a)},error:function(t){e.call(a,t)},success:function(t){s.call(a,t)}})})}}}this.defauls={okLabel:"OK",cancelLabel:"Cancel",loadingTitle:"Loading"},this.modal=$(t),this.dialog-$(t).find(".modal-dialog"),this.header=$(t).find(".modal-header"),this.content=$(t).find(".modal-body"),this.footer=$(t).find(".modal-footer"),this.loadingContent='
',this.show=function(){this.clear(),$(this.modal).modal("show")},this.hide=function(){$(this.modal).modal("hide")},this.toggle=function(){$(this.modal).modal("toggle")},this.clear=function(){$(this.modal).find(".modal-title").remove(),$(this.content).html(""),$(this.footer).html("")},this.setHeader=function(t){$(this.header).html(t)},this.setContent=function(t){$(this.content).html(t)},this.setFooter=function(t){$(this.footer).html(t)},this.setTitle=function(t){$(this.header).find("h4.modal-title").remove(),$(this.header).append(''+t+"
")},this.hidenCloseButton=function(){$(this.header).find("button.close").hide()},this.showCloseButton=function(){$(this.header).find("button.close").show()},this.addButton=function(t,i,o){buttonElm=document.createElement("button"),buttonElm.setAttribute("class",null===i?"btn btn-primary":i),buttonElm.innerHTML=t;var e=this;$(this.footer).append(buttonElm),null!==o&&$(buttonElm).click(function(event){o.call(e,this,event)})},this.displayLoading=function(){this.setContent(this.loadingContent),this.setTitle(this.defauls.loadingTitle)},this.confirm=function(t,i,o,e,s,n){void 0!==t&&this.setTitle(t),void 0!==i&&this.setContent(i),this.addButton(void 0===o?this.defauls.okLabel:o,"btn btn-primary",s),this.addButton(void 0===e?this.defauls.cancelLabel:e,"btn btn-default pull-left",n)},this.setSize=function(t){$(this.dialog).removeClass("modal-lg"),$(this.dialog).removeClass("modal-sm"),"large"==t?$(this.dialog).addClass("modal-lg"):"small"==t?$(this.dialog).addClass("modal-sm"):"normal"!==t&&console.warn("Not define size"+t)},this.remote=function(t,o){var e=$(t).attr($(t).hasAttr("href")?"href":"data-url"),s=$(t).hasAttr("data-request-method")?$(t).attr("data-request-method"):"GET",n=$(t).hasAttr("data-modal-size")?$(t).attr("data-modal-size"):"normal";if($(t).hasAttr("data-confirm-title")||$(t).hasAttr("data-confirm-message")){this.show(),this.setSize(n);var a=this;this.confirm($(t).attr("data-confirm-title"),$(t).attr("data-confirm-message"),$(t).attr("data-confirm-ok"),$(t).attr("data-confirm-cancel"),function(){i.call(a,e,s,o)},function(){this.hide()})}else i.call(this,e,s,o)}}!function(t){t.fn.hasAttr=function(t){return void 0!==this.attr(t)}}(jQuery);
\ No newline at end of file
+function ModalRemote(t){function i(t,i,n){var s=this;$.ajax({url:t,method:i,data:n,beforeSend:function(){o.call(s)},error:function(t){e.call(s,t)},success:function(t){a.call(s,t)}})}function o(){this.show(),this.displayLoading()}function e(t){this.setTitle(t.status+t.statusText),this.setContent(t.responseText),this.addButton("Close","btn btn-default",function(t,i){this.hide()})}function a(t){if(void 0!==t.forceReload&&t.forceReload&&("true"==t.forceReload?$.pjax.reload({container:"#crud-datatable-pjax"}):$.pjax.reload({container:t.forceReload})),void 0!==t.forceClose&&t.forceClose)return void this.hide();if(void 0!==t.size&&this.setSize(t.size),void 0!==t.title&&this.setTitle(t.title),void 0!==t.content&&this.setContent(t.content),void 0!==t.footer&&this.setFooter(t.footer),void 0!==$(this.content).find("form")[0]){var i=$(this.content).find("form")[0],n=$(this.footer).find('[type="submit"]')[0];if(void 0===n)console.warn("Modal have form but have not any submit button");else{var s=this;$(n).click(function(t){var n=$(i).attr("action"),l=$(i).hasAttr("method")?$(i).attr("method"):"GET",d=$(i).serializeArray();$.ajax({url:n,method:l,data:d,beforeSend:function(){o.call(s)},error:function(t){e.call(s,t)},success:function(t){a.call(s,t)}})})}}}this.defaults={okLabel:"OK",cancelLabel:"Cancel",loadingTitle:"Loading"},this.modal=$(t),this.dialog=$(t).find(".modal-dialog"),this.header=$(t).find(".modal-header"),this.content=$(t).find(".modal-body"),this.footer=$(t).find(".modal-footer"),this.loadingContent='',this.show=function(){this.clear(),$(this.modal).modal("show")},this.hide=function(){$(this.modal).modal("hide")},this.toggle=function(){$(this.modal).modal("toggle")},this.clear=function(){$(this.modal).find(".modal-title").remove(),$(this.content).html(""),$(this.footer).html("")},this.setHeader=function(t){$(this.header).html(t)},this.setContent=function(t){$(this.content).html(t)},this.setFooter=function(t){$(this.footer).html(t)},this.setTitle=function(t){$(this.header).find("h4.modal-title").remove(),$(this.header).append(''+t+"
")},this.hidenCloseButton=function(){$(this.header).find("button.close").hide()},this.showCloseButton=function(){$(this.header).find("button.close").show()},this.addButton=function(t,i,o){buttonElm=document.createElement("button"),buttonElm.setAttribute("class",null===i?"btn btn-primary":i),buttonElm.innerHTML=t;var e=this;$(this.footer).append(buttonElm),null!==o&&$(buttonElm).click(function(t){o.call(e,this,t)})},this.displayLoading=function(){this.setContent(this.loadingContent),this.setTitle(this.defaults.loadingTitle)},this.confirm=function(t,i,o,e,a,n){void 0!==t&&this.setTitle(t),void 0!==i&&this.setContent(i),this.addButton(void 0===o?this.defaults.okLabel:o,"btn btn-primary",a),this.addButton(void 0===e?this.defaults.cancelLabel:e,"btn btn-default pull-left",n)},this.setSize=function(t){$(this.dialog).removeClass("modal-lg"),$(this.dialog).removeClass("modal-sm"),"large"==t?$(this.dialog).addClass("modal-lg"):"small"==t?$(this.dialog).addClass("modal-sm"):"normal"!==t&&console.warn("Not define size"+t)},this.remote=function(t,o){var e=$(t).hasAttr("href")?$(t).attr("href"):$(t).attr("data-url"),a=$(t).hasAttr("data-request-method")?$(t).attr("data-request-method"):"GET",n=$(t).hasAttr("data-modal-size")?$(t).attr("data-modal-size"):"normal";if($(t).hasAttr("data-confirm-title")||$(t).hasAttr("data-confirm-message")){this.show(),this.setSize(n);var s=this;this.confirm($(t).attr("data-confirm-title"),$(t).attr("data-confirm-message"),$(t).attr("data-confirm-ok"),$(t).attr("data-confirm-cancel"),function(t){i.call(s,e,a,o)},function(t){this.hide()})}else i.call(this,e,a,o)}}!function(t){t.fn.hasAttr=function(t){return void 0!==this.attr(t)}}(jQuery);
\ No newline at end of file
diff --git a/src/assets/ajaxcrud.js b/src/assets/ajaxcrud.js
index 9cde446..7a0f722 100644
--- a/src/assets/ajaxcrud.js
+++ b/src/assets/ajaxcrud.js
@@ -8,13 +8,17 @@ $(document).ready(function(){
// Create instance of Modal Remote
// This instance will be controller all business logic of modal
- modal = new ModalRemote('#ajaxCrubModal');
+ // Backwards compatible lookup of ajaxCrubModal
+ if ($('#ajaxCrubModal').length>0 && $('#ajaxCrudModal').length == 0) {
+ modal = new ModalRemote('#ajaxCrubModal');
+ } else {
+ modal = new ModalRemote('#ajaxCrudModal');
+ }
-
// Catch click event of all button want to open modal
$(document).on('click','[role="modal-remote"]',function(event){
event.preventDefault();
- modal.remote(this,null);
+ modal.remote(this,null);
});
// Catch click event of all button want to open modal
@@ -30,8 +34,8 @@ $(document).ready(function(){
if(selectedIds.length==0){
modal.show();
- modal.setTitle('Have no selection');
- modal.setContent('You must select item for do this action');
+ modal.setTitle('No selection');
+ modal.setContent('You must select item(s) to use this action');
modal.addButton("Close",'btn btn-default',function(button,event){
this.hide();
});
diff --git a/src/assets/ajaxcrud.min.js b/src/assets/ajaxcrud.min.js
index 03915e0..22018e2 100644
--- a/src/assets/ajaxcrud.min.js
+++ b/src/assets/ajaxcrud.min.js
@@ -1 +1,2 @@
-$(document).ready(function(){modal=new ModalRemote("#ajaxCrubModal"),$(document).on("click",'[role="modal-remote"]',function(e){e.preventDefault(),modal.remote(this,null)}),$(document).on("click",'[role="modal-remote-bulk"]',function(e){e.preventDefault();var t=[];$('input:checkbox[name="selection[]"]').each(function(){this.checked&&t.push($(this).val())}),0==t.length?(modal.show(),modal.setTitle("Have no selection"),modal.setContent("You must select item for do this action"),modal.addButton("Close","btn btn-default",function(){this.hide()})):modal.remote(this,{pks:JSON.stringify(t)})})});
\ No newline at end of file
+$(document).ready(function(){modal=0<$("#ajaxCrubModal").length&&0==$("#ajaxCrudModal").length?new ModalRemote("#ajaxCrubModal"):new ModalRemote("#ajaxCrudModal");$(document).on("click",'[role="modal-remote"]',function(a){a.preventDefault();modal.remote(this,null)});$(document).on("click",'[role="modal-remote-bulk"]',function(a){a.preventDefault();var b=[];$('input:checkbox[name="selection[]"]').each(function(){this.checked&&b.push($(this).val())});0==b.length?(modal.show(),modal.setTitle("No selection"),
+ modal.setContent("You must select item(s) to use this action"),modal.addButton("Close","btn btn-default",function(a,b){this.hide()})):modal.remote(this,{pks:JSON.stringify(b)})})});
\ No newline at end of file
diff --git a/src/generators/default/controller.php b/src/generators/default/controller.php
index 93b97b2..81a7b96 100644
--- a/src/generators/default/controller.php
+++ b/src/generators/default/controller.php
@@ -101,7 +101,7 @@ public function actionView(= $actionParams ?>)
Yii::$app->response->format = Response::FORMAT_JSON;
return [
'title'=> "= $modelClass ?> #".= $actionParams ?>,
- 'content'=>$this->renderPartial('view', [
+ 'content'=>$this->renderAjax('view', [
'model' => $this->findModel(= $actionParams ?>),
]),
'footer'=> Html::button('Close',['class'=>'btn btn-default pull-left','data-dismiss'=>"modal"]).
@@ -133,7 +133,7 @@ public function actionCreate()
if($request->isGet){
return [
'title'=> "Create new = $modelClass ?>",
- 'content'=>$this->renderPartial('create', [
+ 'content'=>$this->renderAjax('create', [
'model' => $model,
]),
'footer'=> Html::button('Close',['class'=>'btn btn-default pull-left','data-dismiss'=>"modal"]).
@@ -142,7 +142,7 @@ public function actionCreate()
];
}else if($model->load($request->post()) && $model->save()){
return [
- 'forceReload'=>'true',
+ 'forceReload'=>'#crud-datatable-pjax',
'title'=> "Create new = $modelClass ?>",
'content'=>'Create = $modelClass ?> success',
'footer'=> Html::button('Close',['class'=>'btn btn-default pull-left','data-dismiss'=>"modal"]).
@@ -152,7 +152,7 @@ public function actionCreate()
}else{
return [
'title'=> "Create new = $modelClass ?>",
- 'content'=>$this->renderPartial('create', [
+ 'content'=>$this->renderAjax('create', [
'model' => $model,
]),
'footer'=> Html::button('Close',['class'=>'btn btn-default pull-left','data-dismiss'=>"modal"]).
@@ -195,7 +195,7 @@ public function actionUpdate(= $actionParams ?>)
if($request->isGet){
return [
'title'=> "Update = $modelClass ?> #".= $actionParams ?>,
- 'content'=>$this->renderPartial('update', [
+ 'content'=>$this->renderAjax('update', [
'model' => $model,
]),
'footer'=> Html::button('Close',['class'=>'btn btn-default pull-left','data-dismiss'=>"modal"]).
@@ -203,9 +203,9 @@ public function actionUpdate(= $actionParams ?>)
];
}else if($model->load($request->post()) && $model->save()){
return [
- 'forceReload'=>'true',
+ 'forceReload'=>'#crud-datatable-pjax',
'title'=> "= $modelClass ?> #".= $actionParams ?>,
- 'content'=>$this->renderPartial('view', [
+ 'content'=>$this->renderAjax('view', [
'model' => $model,
]),
'footer'=> Html::button('Close',['class'=>'btn btn-default pull-left','data-dismiss'=>"modal"]).
@@ -214,7 +214,7 @@ public function actionUpdate(= $actionParams ?>)
}else{
return [
'title'=> "Update = $modelClass ?> #".= $actionParams ?>,
- 'content'=>$this->renderPartial('update', [
+ 'content'=>$this->renderAjax('update', [
'model' => $model,
]),
'footer'=> Html::button('Close',['class'=>'btn btn-default pull-left','data-dismiss'=>"modal"]).
@@ -252,7 +252,7 @@ public function actionDelete(= $actionParams ?>)
* Process for ajax request
*/
Yii::$app->response->format = Response::FORMAT_JSON;
- return ['forceClose'=>true,'forceReload'=>true];
+ return ['forceClose'=>true,'forceReload'=>'#crud-datatable-pjax'];
}else{
/*
* Process for non-ajax request
@@ -284,7 +284,7 @@ public function actionBulkDelete()
* Process for ajax request
*/
Yii::$app->response->format = Response::FORMAT_JSON;
- return ['forceClose'=>true,'forceReload'=>true];
+ return ['forceClose'=>true,'forceReload'=>'#crud-datatable-pjax'];
}else{
/*
* Process for non-ajax request
diff --git a/src/generators/default/views/index.php b/src/generators/default/views/index.php
index e54c8b1..80f07db 100644
--- a/src/generators/default/views/index.php
+++ b/src/generators/default/views/index.php
@@ -74,7 +74,7 @@
='"ajaxCrubModal",
+ "id"=>"ajaxCrudModal",
"footer"=>"",// always need it for jquery plugin
])?>'."\n"?>
=''?>