id ;
$filter = [] ;
$params_action = ['parent_model' => $parent_classname, 'relation' => $grid_classname, 'in_modal' => 1] ;
if (isset( $grid_info['grid_filter'] ) && is_array($grid_info['grid_filter'])) {
foreach($grid_info['grid_filter'] as $pf_key => $pf_val) {
//error_log(date('Y-m-d H:i:s') . ": '${pf_key}' => \$model->" . substr($pf_val, 1) ."\n\n", 3, "/wamp/logs/my-errors.log");
$filter_property = (strcmp(substr($pf_val,0,1), "$") === 0) ? substr($pf_val, 1) : null ;
$filter[$grid_search][$pf_key] = is_null($filter_property) ? $pf_val : $model->$filter_property ;
$params_action[$pf_key] = $filter[$grid_search][$pf_key] ;
//error_log(date('Y-m-d H:i:s') . ": filter=". $filter[0] . "\n\n", 3, "/wamp/logs/my-errors.log");
}
};
error_log(date('Y-m-d H:i:s') . ": params_action=". serialize($params_action) . "\n\n", 3, "/wamp/logs/my-errors.log");
$insert_params = $update_params = $delete_params = $params_action ;
$cmd_guardar = '' ;
$agregar_button = '' ;
if ($grid_editar) {
if ($model->isNewRecord) {
$cmd_guardar = "alert('Es un nuevo registro, vamos a guardar el registro para continuar') ;
var action = $('form#${parent_model}-form-tabs').attr('action') ;
$('form#${parent_model}-form-tabs').attr('action', action + '&redir_update=1') ;
$('form#${parent_model}-form-tabs').submit();
return true;" ;
}
$insert_params[0] = "$grid_model/create" ;
$agregar_button = Html::button('', [
'insert-url' => Url::to($insert_params),
'class'=> 'glyphicon glyphicon-plus btn btn-success',
'id'=> 'modalAgrega' . $grid_classname . 'Button',
'data-pjax' => 0,
'onclick' => "
${cmd_guardar}
$('#${modal_name}').modal('show')
.find('#${modal_content}')
.load($(this).attr('insert-url'));
",
]) ;
$campos[] = [
'class' => '\kartik\grid\ActionColumn',
'header' => 'Acciones',
'hiddenFromExport' => true,
'template' => '{update}{delete}',
'buttons' => [
'update' => function ($url, $model) {
$parent_path = explode('/', $_GET['r']) ;
$parent_id = $parent_path[0] ;
$parent_model = StringHelper::basename(Inflector::id2camel($parent_id)) ;
$grid_classname = StringHelper::basename($model->ClassName()) ;
$grid_class_id = Inflector::camel2id($grid_classname ) ;
$update_params = [ $grid_class_id . "/update",
'parent_model' => $parent_model, 'relation' => $grid_classname,
'id' => $model->id, 'in_modal' => 1,
] ;
$modal_name = 'modalAction' . $parent_model . '_' . $grid_classname ; // Utilizar el mismo modal que el del insert
$modal_content = $modal_name . "Content" ;
return Html::a('', '' , [
'title' => 'Actualizar',
'update-url' => Url::to($update_params),
'id'=> 'modalActualiza' . $grid_classname . 'Button',
'data-pjax' => 0,
'onclick' => "
//alert('modal_name: ${modal_name}, modal_content = ${modal_content}') ;
$('#${modal_name}').modal('show')
.find('#${modal_content}')
.load($(this).attr('update-url'));
return false ;
"
]);
},
'delete' => function($url, $model) {
$parent_path = explode('/', $_GET['r']) ;
$parent_id = $parent_path[0] ;
$parent_model = Inflector::id2camel(StringHelper::basename($parent_id)) ;
$grid_classname = StringHelper::basename($model->className()) ;
$grid_class_id = Inflector::camel2id($grid_classname ) ;
$pjax_container = "${parent_id}-${grid_class_id}-gv-pjax";
$delete_params = [ Inflector::camel2id($grid_classname) ."/delete",
'id' => $model->id, 'in_modal' => 1,
] ;
return Html::a('', false, [
'id'=> 'modalElimina' . $grid_classname . 'Button',
'class' => "ajaxDelete-${parent_id}-${grid_class_id}" ,
'delete-url' => Url::to($delete_params),
'pjax-container' => $pjax_container,
'data-pjax' => 0,
'title' => 'Eliminar',
]);
}
],
];
}
$gvsearchModel1 = new $grid_searchfullname();
if ($model->isNewRecord) { // Si es nuevo registro entonces el grid va a ser vacĂo
error_log(date('Y-m-d H:i:s') . basename(__FILE__, '.php') . ":" . __LINE__ .
":Grid : Filter: es nuevo registro \n\n", 3, "/wamp/logs/my-errors.log");
$query = $grid_modelfullname::find()->where('1=2');
$gvdataProvider1 = new ActiveDataProvider([
'query' => $query,
]);
} else {
$gvdataProvider1 = $gvsearchModel1->search($filter, $campos);
}
$gvdataProvider1->pagination->pageSize = 1000 ;
echo GridView::widget([
'dataProvider' => $gvdataProvider1,
'id' => "$parent_model-$grid_model-gv",
// 'filterModel' => $searchModel,
'pjax' => true,
'columns' => $campos,
'responsive'=>true,
'hover'=>true,
'condensed'=>true,
'floatHeader'=>false,
'export' => false,
'toggleData' => false,
'panel' => [
'type'=>'info',
'before'=> $agregar_button,
'showFooter'=>false
],
'showPageSummary' => $grid_summary,
'pageSummaryRowOptions' => ['class' => 'kv-page-summary warning', 'id' => "$parent_model-$grid_model-SummaryRow"],
]);
?>
[], // default options
]);
$inject_js = isset($grid_info['inject_js']) ? $grid_info['inject_js'] : '' ;
$this->registerJs( <<< EOT_JS
$(document).on('ready pjax:success', function () {
// console.log("Entro pjax:success") ;
$(".ajaxDelete-$parent_model-$grid_model").on('click', function (e) {
e.preventDefault();
var deleteUrl = $(this).attr('delete-url');
var pjaxContainer = $(this).attr('pjax-container');
krajeeDialog.confirm("Quiere eliminar el registro?",
function (result) {
if (result) {
$.ajax({
url: deleteUrl,
type: 'post',
error: function (xhr, status, error) {
krajeeDialog.alert('Hubo un error al eliminar el registro.');
}
}).done(
function (data) {
$.pjax.reload({container: '#' + $.trim(pjaxContainer)});
}
);
}
}
);
});
$inject_js ;
});
EOT_JS
);
?>