MINI
C:
/
xampp
/
htdocs
/
.backend
/
dev
/
Upload File:
files >> C:/xampp/htdocs/.backend/dev/modules.php
<?php defined( '_LANGSUNG' ) or die(''); if(!SuperAdmin()) { exit('Access Denied'); } include('.library/datatables.php'); function TitlePage(){ echo 'MODULES'; } function MainHeader(){ echo '<h1>DEVELOPER MODULES</h1>'; } function MainContent() { ?> <div class="row"> <div class="col-xs-12"> <div class="box"> <div class="box-header"> <h3 class="box-title">MODULES LIST</h3> </div> <div class="box-body"> <table id="example" class="table table-striped table-bordered table-responsive" cellspacing="0" width="100%"> <thead> <tr> <th>ID</th> <th>PARENT</th> <th>IS DT</th> <th>ORDER</th> <th>NAME</th> <th>BREADCRUMB</th> <th>TITLE</th> <th>ICON</th> <th>DEFAULT</th> </tr> </thead> <tbody> </tbody> <tfoot> <tr> <th>ID</th> <th>PARENT</th> <th>IS DT</th> <th>ORDER</th> <th>NAME</th> <th>BREADCRUMB</th> <th>TITLE</th> <th>ICON</th> <th>DEFAULT</th> </tr> </tfoot> </table> </div> </div> </div> </div> <?php } function HeaderCss(){ echo ' <link href="'.APP_URI.'/plugins/validationEngine/validationEngine.jquery.css" rel="stylesheet" type="text/css"/> <link href="'.APP_URI.'/plugins/datatables/datatables.css" rel="stylesheet" type="text/css"/> '; } function FooterJs(){ echo ' <script src="'.APP_URI.'/plugins/datatables/datatables.js" type="text/javascript"></script> <script src="'.APP_URI.'/plugins/accounting/accounting.js" type="text/javascript"></script> <script src="'.APP_URI.'/plugins/chained/jquery.chained.js" type="text/javascript"></script> <script src="'.APP_URI.'/plugins/validationEngine/jquery.validationEngine.js" type="text/javascript"></script> <script src="'.APP_URI.'/plugins/validationEngine/jquery.validationEngine-en.js" type="text/javascript"></script> '; } function FooterScript() { ?> <script type="text/javascript" language="javascript" class="init" > var base_ajax = "<?php echo APP_URI."/".APP_ADMINPATH."x/dev/".basename(__FILE__, '.php').".html"; ?>"; $(document).ready(function() { var SelectedRow = []; $.fn.dataTable.ext.errMode = "none"; $("#example tfoot th").each(function() { var title = $(this).text(); $(this).html("<input type=\"text\" class=\"col-lg-12\" placeholder=\"" + title + "\" />"); }); var oTable = $("#example") .on("error.dt", function(e, settings, techNote, message) { DtNotif("error", message, ""); }) .DataTable({ "paging": true, "pagingType": "full_numbers", "stateSave": true, "processing": true, // "select": true, "serverSide": true, "ajax": { "url": base_ajax, "type": "POST", "data": { "act": "read-data" } }, "rowCallback": function( row, data ) { if ( $.inArray(data.DT_RowId, SelectedRow) !== -1 ) { $(row).addClass('selected'); } }, "scrollX": "100%", "scrollXInner": "110%", "columnDefs": [{ className: "dt-hide", "targets": [0] }, { className: "dt-body-center", "targets": [0] }, { className: "dt-body-nowrap", "targets": [1] }], lengthMenu: [ [5, 10, 25, 50, -1], ["5 rows", "10 rows", "25 rows", "50 rows", "Show all"] ], dom: "<\"pull-left\"B><\"pull-right\"l>tr<\"pull-left\"i><\"pull-right\"p>", buttons: [ { text: "<i class=\"fa fa-file-pdf-o\"></i><span class=\"hidden-sm hidden-xs\"> PDF</span>", extend: "pdfHtml5", className: "btn btn-default", orientation: "landscape", pageSize: "A4", }, { text: "<i class=\"fa fa-file-excel-o\"></i><span class=\"hidden-sm hidden-xs\"> EXCEL</span>", extend: "excelHtml5", className: "btn btn-default", }, { text: "<i class=\"fa fa-plus\"></i> <span class=\"hidden-sm hidden-xs\">ADD</span>", className: "btn btn-primary", action: function ( e, dt, node, config ){$.ajax({ type:"POST", url :base_ajax,data: "act=add-cek",success: function(data){ if(data == "sukses"){ $.ajax({ type:"POST", url:base_ajax, data: "act=add", success: function(data){ $("#maction").html(data); $("#maction").removeClass().addClass("modal fade modal-primary"); $("#maction").modal("show"); $("#save").on("click", function(){ if($("#add").validationEngine("validate")){ var datasave = $("#add").serializeArray(); datasave.push({name: "act", value: "add-save"}); $.ajax({ type:"POST", url :base_ajax, data: datasave, success: function(data){ if (data==="sukses"){ $("#maction").modal("hide"); DtNotif("success","Success add data",""); oTable.draw(false); } else{ DtNotif("error",data,""); } } }); } }); $("#add").validationEngine({ showOneMessage:false, autoHidePrompt: true, autoHideDelay: 3000, promptPosition : "bottomLeft", fadeDuration: 200 }); $("#add").attr("autocomplete","off"); } }); } else{ DtNotif("error",data,""); } }, }); }, enabled: true }, { text: "<i class=\"fa fa-pencil\"></i> <span class=\"hidden-sm hidden-xs\">EDIT</span>", className: "btn btn-info", action: function ( e, dt, node, config ){ $.ajax({ type:"POST", url :base_ajax, data: "act=edit-cek&id="+SelectedRow, success: function(data){ if(data == "sukses"){ $.ajax({ type:"POST", url:base_ajax, data: "act=edit", success: function(data){ $("#maction").html(data); $("#maction").removeClass().addClass("modal fade modal-info"); $("#maction").modal("show"); $("#save").on("click", function(){ if($("#add").validationEngine("validate")){ var datasave = $("#edit").serializeArray(); datasave.push({name: "act", value: "edit-save"}); $.ajax({ type:"POST", url :base_ajax, data: datasave, success: function(data){ if (data==="sukses"){ $("#maction").modal("hide"); DtNotif("success","Success update data",""); oTable.draw(false); } else{ DtNotif("error",data,""); } } }); } }); $("#edit").validationEngine({ showOneMessage:false, autoHidePrompt: true, autoHideDelay: 3000, promptPosition : "bottomLeft", fadeDuration: 200 }); $("#edit").attr("autocomplete","off"); } }); } else{ DtNotif("error",data,""); } }, }); }, enabled: false }, { text: "<i class=\"fa fa-cog\"></i> <span class=\"hidden-sm hidden-xs\">GENERATE</span>", className: "btn btn-success", action: function(e, dt, node, config) { $.ajax({ type:"POST", url :base_ajax, data: "act=generate-cek&id="+SelectedRow, success: function(data){ var result = $.parseJSON(data); if(result.status === "success"){ $.ajax({ type:"POST", url :base_ajax, data: "act=generate", success: function(data){ var result = $.parseJSON(data); if (result.status==="success"){ DtNotif(result.status,result.message,""); oTable.draw(false); } else{ DtNotif(result.status,result.message,""); } } }); } else{ DtNotif(result.status,result.message,""); } }, }); }, enabled: false }, { text: "<i class=\"fa fa-trash\"></i> <span class=\"hidden-sm hidden-xs\">DELETE</span>", className: "btn btn-warning", action: function ( e, dt, node, config ){ if(SelectedRow.length>1){ $.ajax({ type:"POST", url :base_ajax,data: "act=deletem-cek&id="+SelectedRow, success: function(data){ if(data == "sukses"){ $.ajax({ type:"POST", url:base_ajax, data: "act=deletem", success: function(data){ $("#maction").html(data); $("#maction").removeClass().addClass("modal fade modal-warning"); $("#maction").modal("show"); $("#save").on("click", function(){ if($("#add").validationEngine("validate")){ var datasave = $("#delete").serializeArray(); datasave.push({name: "act", value: "deletem-save"}); $.ajax({ type:"POST", url :base_ajax, data: datasave, success: function(data){ if (data==="sukses"){ $("#maction").modal("hide"); DtNotif("success","Success delete data",""); oTable.draw(false); } else{ DtNotif("error",data,""); } } }); } }); $("#delete").validationEngine({ showOneMessage:false, autoHidePrompt: true, autoHideDelay: 3000, promptPosition : "bottomLeft", fadeDuration: 200 }); $("#delete").attr("autocomplete","off"); } }); } else{ DtNotif("error",data,""); } }, }); } else { $.ajax({ type:"POST", url :base_ajax,data: "act=delete-cek&id="+SelectedRow, success: function(data){ if(data == "sukses"){ $.ajax({ type:"POST", url:base_ajax, data: "act=delete", success: function(data){ $("#maction").html(data); $("#maction").removeClass().addClass("modal fade modal-warning"); $("#maction").modal("show"); $("#save").on("click", function(){ if($("#add").validationEngine("validate")){ var datasave = $("#delete").serializeArray(); datasave.push({name: "act", value: "delete-save"}); $.ajax({ type:"POST", url :base_ajax, data: datasave, success: function(data){ if (data==="sukses"){ $("#maction").modal("hide"); DtNotif("success","Success delete data",""); oTable.draw(false); } else{ DtNotif("error",data,""); } } }); } }); $("#delete").validationEngine({ showOneMessage:false, autoHidePrompt: true, autoHideDelay: 3000, promptPosition : "bottomLeft", fadeDuration: 200 }); $("#delete").attr("autocomplete","off"); } }); } else{ DtNotif("error",data,""); } }, }); } }, enabled: false }, { text: "<i class=\"fa fa-refresh\"><span class=\"hidden-sm hidden-xs\"> REFRESH</span</i>", className: "btn btn-default", action: function (e,dt,node,config){ function fnResetAllFilters(){ oTable.columns().eq(0).each(function(colIdx){ $("input", oTable.column(colIdx).footer()).val(""); oTable.columns(colIdx).search("", true ); }); oTable.search("", true ).draw(); } fnResetAllFilters(); } }, { text: "<i class=\"fa fa-table\"><span class=\"hidden-sm hidden-xs\"> COLUMN</span></i>", extend: "colvis", className: "btn btn-default", collectionLayout: "fixed two-column" }, ], language: { "emptyTable": "No data available in table", "info": "Showing page _PAGE_ of _PAGES_", "infoEmpty": "No entries to show", "infoFiltered": " - filtering from _MAX_ records", "decimal": ",", "thousands": ".", "lengthMenu": "Display _MENU_ records", "loadingRecords": "Please wait - loading...", "processing": "Please wait, processing....", "search": "Filter records:", "search": "Apply filter _INPUT_ to table", "zeroRecords": "No records to display", buttons: { colvis: "Atur Kolom" }, paginate: { "first": "<i class=\"fa fa-angle-double-left\"></i><span class=\"hidden-xs hidden-sm\"> First</span>", "last": "<i class=\"fa fa-angle-double-right\"></i><span class=\"hidden-xs hidden-sm\"> Last</span>", "next": "<span class=\"hidden-xs hidden-sm\">Next </span><i class=\"fa fa-angle-right\"></i>", "previous": "<i class=\"fa fa-angle-left\"></i><span class=\"hidden-xs hidden-sm\"> Previous</span>" } } }); oTable.columns().every(function() { var that = this; $("input", this.footer()).on("keyup change", function(e) { if (that.search() !== this.value && e.keyCode == 13) { that .search(this.value) .draw(); } }); }); $('#example tbody').on('click', 'tr', function () { var id = this.id; var index = $.inArray(id, SelectedRow); if ( index === -1 ) { SelectedRow.push( id ); } else { SelectedRow.splice( index, 1 ); } if(SelectedRow.length==0){ oTable.button(3).enable(false); oTable.button(4).enable(false); oTable.button(5).enable(false); } else if(SelectedRow.length==1){ oTable.button(3).enable(true); oTable.button(4).enable(true); oTable.button(5).enable(true); } else{ oTable.button(3).enable(false); oTable.button(4).enable(false); oTable.button(5).enable(true); } $(this).toggleClass('selected'); }); }); </script> <?php } if(isset($_POST['act']) && !empty($_POST['act'])){ if($_POST['act']=='add-cek'){ echo 'sukses'; } elseif($_POST['act']=='add'){ $q_parentdata = $sambungan->prepare("SELECT * FROM bet_modules WHERE parent_mod=0"); $q_parentdata->execute(); $q_icon = $sambungan->prepare("SELECT * FROM bet_icon"); $q_icon -> execute(); ?> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title">ADD NEW MODULE</h4> </div> <div class="modal-body"> <form id="add" name="add" method="post" class="form-horizontal" action=""> <div class="form-group"> <label class="control-label col-lg-4">Parent Modul</label> <div class="col-lg-8"> <select name="parent_mod" id="parent_mod" class="validate[required] form-control"> <option value="0">MAIN MENU</option> <?php while ($parentdata = $q_parentdata -> fetch (PDO::FETCH_ASSOC)) { ?> <option value="<?php echo $parentdata['id_mod']; ?>" ><?php echo $parentdata['title_mod']; ?></option> <?php } ?> </select> </div> </div> <div class="form-group"> <label class="control-label col-lg-4">Is Datatables Menu</label> <div class="col-lg-8"> <div class="checkbox"> <label> <input name="isdt_mod" id="isdt_mod" type="checkbox" value="1"> </label> </div> </div> </div> <div class="form-group"> <label class="control-label col-lg-4">Order Mod</label> <div class=" col-lg-8"> <input class="validate[required,custom[integer]] form-control" type="text" name="order_mod" id="order_mod" /> </div> </div> <div class="form-group"> <label class="control-label col-lg-4">Module Name</label> <div class=" col-lg-8"> <input class="validate[required] form-control" type="text" name="name_mod" id="name_mod" /> </div> </div> <div class="form-group"> <label class="control-label col-lg-4">Breadcrumb Title</label> <div class=" col-lg-8"> <input class="validate[required] form-control" type="text" name="breadcrumb_mod" id="breadcrumb_mod" /> </div> </div> <div class="form-group"> <label class="control-label col-lg-4">Modules Page Title</label> <div class=" col-lg-8"> <input class="validate[required] form-control" type="text" name="title_mod" id="title_mod" /> </div> </div> <div class="form-group"> <label class="control-label col-lg-4">Modul Icon</label> <div class="col-lg-8"> <select name="icon_mod" id="icon_mod" class="validate[required] form-control" style="font-family:'FontAwesome', Arial;"> <option value="">SELECT ICON</option> <?php while ($icon = $q_icon -> fetch (PDO::FETCH_ASSOC)) { ?> <option value="<?php echo $icon['icon_code'];?>"><?php echo $icon['icon_font'];?> <?php echo $icon['icon_name'];?> </option> <?php } ?> </select> </div> </div> <div class="form-group"> <label class="control-label col-lg-4">Default Access</label> <div class="col-lg-8"> <select name="default_mod" id="default_mod" class="validate[required] form-control"> <option value="0">Dissallow</option> <option value="1">Allow</option> </select> </div> </div> </form> </div> <div class="modal-footer"> <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button> <button id="save" type="button" class="btn btn-default">Save</button> </div> </div> </div> <?php } elseif($_POST['act']=='add-save'){ CekPost("parent_mod, order_mod, name_mod, breadcrumb_mod, title_mod, icon_mod, default_mod"); if(!isset($_POST['isdt_mod'])){$_POST['isdt_mod']=0;}else{$_POST['isdt_mod']=1;} $q_idata = $sambungan->prepare("INSERT INTO bet_modules(parent_mod, isdt_mod, order_mod, name_mod, breadcrumb_mod, title_mod, icon_mod, default_mod) VALUES (:parent_mod, :isdt_mod, :order_mod, :name_mod, :breadcrumb_mod, :title_mod, :icon_mod, :default_mod)"); $q_idata ->bindValue(':parent_mod', $_POST['parent_mod'], PDO::PARAM_INT); $q_idata ->bindValue(':isdt_mod', $_POST['isdt_mod'], PDO::PARAM_INT); $q_idata ->bindValue(':order_mod', $_POST['order_mod'], PDO::PARAM_INT); $q_idata ->bindValue(':name_mod', htmlentities($_POST['name_mod']), PDO::PARAM_STR); $q_idata ->bindValue(':breadcrumb_mod',htmlentities($_POST['breadcrumb_mod']), PDO::PARAM_STR); $q_idata ->bindValue(':title_mod', htmlentities($_POST['title_mod']), PDO::PARAM_STR); $q_idata ->bindValue(':icon_mod', htmlentities($_POST['icon_mod']), PDO::PARAM_STR); $q_idata ->bindValue(':default_mod', $_POST['default_mod'], PDO::PARAM_INT); $q_idata ->execute(); echo 'sukses'; } elseif($_POST['act']=='edit-cek'){ $q_rdata = $sambungan->prepare("SELECT * FROM bet_modules WHERE id_mod=:id_mod"); $q_rdata->bindValue(':id_mod', CleanId($_POST['id']), PDO::PARAM_INT); if($q_rdata->execute() && $q_rdata->rowCount()==1 ){ $rdata= $q_rdata->fetch(PDO::FETCH_ASSOC); if($rdata['id_mod']>=4){ $_SESSION['id_mod']=$rdata['id_mod']; echo 'sukses'; } else { echo 'Modul tidak dapat di edit'; } } else { echo 'Gagal membaca data'; } } elseif($_POST['act']=='edit'){ $q_rdata = $sambungan->prepare("SELECT * FROM bet_modules WHERE id_mod=:id_mod"); $q_rdata->bindValue(':id_mod', CleanId($_SESSION['id_mod']), PDO::PARAM_INT); $q_rdata->execute(); $rdata= $q_rdata->fetch(PDO::FETCH_ASSOC); $q_parentdata = $sambungan->prepare("SELECT * FROM bet_modules WHERE parent_mod=0"); $q_parentdata->execute(); $q_icon = $sambungan->prepare("SELECT * FROM bet_icon"); $q_icon -> execute(); ?> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title">EDIT MODULE</h4> </div> <div class="modal-body"> <form id="edit" name="edit" method="post" class="form-horizontal" action=""> <div class="form-group"> <label class="control-label col-lg-4">Parent Modul</label> <div class="col-lg-8"> <select name="parent_mod" id="parent_mod" class="validate[required] form-control"> <option value="0">MAIN MENU</option> <?php while ($parentdata = $q_parentdata -> fetch (PDO::FETCH_ASSOC)) { ?> <option value="<?php echo $parentdata['id_mod']; ?>" <?php if (!(strcmp(htmlentities($parentdata['id_mod']),htmlentities($rdata['parent_mod'])))) { echo 'SELECTED';} ?>><?php echo $parentdata['title_mod']; ?></option> <?php } ?> </select> </div> </div> <div class="form-group"> <label class="control-label col-lg-4">Is Datatables Menu</label> <div class="col-lg-8"> <div class="checkbox"> <label> <input name="isdt_mod" id="isdt_mod" type="checkbox" value="1" <?php if (!(strcmp(htmlentities($rdata['isdt_mod']),1))) { echo 'checked="checked"';} ?>> </label> </div> </div> </div> <div class="form-group"> <label class="control-label col-lg-4">Order Mod</label> <div class=" col-lg-8"> <input class="validate[required,custom[integer]] form-control" type="text" name="order_mod" id="order_mod" value="<?php echo $rdata['order_mod']; ?>"/> </div> </div> <div class="form-group"> <label class="control-label col-lg-4">Module Name</label> <div class=" col-lg-8"> <input class="validate[required] form-control" type="text" name="name_mod" id="name_mod" value="<?php echo $rdata['name_mod']; ?>"/> </div> </div> <div class="form-group"> <label class="control-label col-lg-4">Breadcrumb Title</label> <div class=" col-lg-8"> <input class="validate[required] form-control" type="text" name="breadcrumb_mod" id="breadcrumb_mod" value="<?php echo $rdata['breadcrumb_mod']; ?>"/> </div> </div> <div class="form-group"> <label class="control-label col-lg-4">Modules Page Title</label> <div class=" col-lg-8"> <input class="validate[required] form-control" type="text" name="title_mod" id="title_mod" value="<?php echo $rdata['title_mod']; ?>"/> </div> </div> <div class="form-group"> <label class="control-label col-lg-4">Modul Icon</label> <div class="col-lg-8"> <select name="icon_mod" id="icon_mod" class="validate[required] form-control" style="font-family:'FontAwesome', Arial;"> <option value="">SELECT ICON</option> <?php while ($icon = $q_icon -> fetch (PDO::FETCH_ASSOC)) { ?> <option value="<?php echo $icon['icon_code'];?>" <?php if (!(strcmp(htmlentities($icon['icon_code']),htmlentities($rdata['icon_mod'])))) { echo 'SELECTED';} ?>><?php echo $icon['icon_font'];?> <?php echo $icon['icon_name'];?> </option> <?php } ?> </select> </div> </div> <div class="form-group"> <label class="control-label col-lg-4">Default Access</label> <div class="col-lg-8"> <select name="default_mod" id="default_mod" class="validate[required] form-control"> <option value="0" <?php if (!(strcmp(htmlentities($rdata['default_mod']),0))) { echo 'SELECTED';} ?>>Dissallow</option> <option value="1" <?php if (!(strcmp(htmlentities($rdata['default_mod']),1))) { echo 'SELECTED';} ?>>Allow</option> </select> </div> </div> </form> </div> <div class="modal-footer"> <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button> <button id="save" type="button" class="btn btn-default">Save</button> </div> </div> </div> <?php } elseif($_POST['act']=='edit-save'){ CekPost("parent_mod, order_mod, name_mod, breadcrumb_mod, title_mod, icon_mod, default_mod"); if(!isset($_POST['isdt_mod'])){$_POST['isdt_mod']=0;}else{$_POST['isdt_mod']=1;} $q_udata = $sambungan->prepare("UPDATE bet_modules SET parent_mod=:parent_mod, isdt_mod=:isdt_mod, order_mod=:order_mod, name_mod=:name_mod, breadcrumb_mod=:breadcrumb_mod, title_mod=:title_mod, icon_mod=:icon_mod, default_mod=:default_mod WHERE id_mod=:id_mod"); $q_udata->bindValue(':parent_mod', $_POST['parent_mod'], PDO::PARAM_INT); $q_udata->bindValue(':isdt_mod', $_POST['isdt_mod'], PDO::PARAM_INT); $q_udata->bindValue(':order_mod', $_POST['order_mod'], PDO::PARAM_INT); $q_udata->bindValue(':name_mod', htmlentities($_POST['name_mod']), PDO::PARAM_STR); $q_udata->bindValue(':breadcrumb_mod', htmlentities($_POST['breadcrumb_mod']), PDO::PARAM_STR); $q_udata->bindValue(':title_mod', htmlentities($_POST['title_mod']), PDO::PARAM_STR); $q_udata->bindValue(':icon_mod', htmlentities($_POST['icon_mod']), PDO::PARAM_STR); $q_udata->bindValue(':default_mod', $_POST['default_mod'], PDO::PARAM_INT); $q_udata->bindValue(':id_mod', CleanId($_SESSION['id_mod']), PDO::PARAM_INT); $q_udata->execute(); unset($_SESSION['id_mod']); echo 'sukses'; } elseif($_POST['act']=='generate-cek'){ $q_rdata = $sambungan->prepare("SELECT * FROM bet_modules WHERE id_mod=:id_mod"); $q_rdata->bindValue(':id_mod', CleanId($_POST['id']), PDO::PARAM_INT); if($q_rdata->execute() && $q_rdata->rowCount()==1 ){ $rdata= $q_rdata->fetch(PDO::FETCH_ASSOC); if($rdata['id_mod']>=4){ $_SESSION['IdModGen']=$rdata['id_mod']; $response = array( 'status'=>'success', // 'message'=>'continune', // 'redirect'=> '/'.APP_ADMINPATH.'/dev/'.basename(__FILE__, '.php').'-generator.html' ); } else { $response = array( 'status'=>'error', 'message'=>'Modul tidak dapat di generate', ); } } else { $response = array( 'status'=>'error', 'message'=>'Error reading data', ); } echo json_encode($response); } elseif($_POST['act']=='generate'){ $q_rdata = $sambungan->prepare(" SELECT bm.id_mod, bm.name_mod, bm.title_mod, bm.breadcrumb_mod, bd.name_mod parent_mod FROM bet_modules AS bm LEFT JOIN bet_modules AS bd ON bm.parent_mod = bd.id_mod WHERE bm.id_mod=:id_mod"); $q_rdata->bindValue(':id_mod', CleanId($_SESSION['IdModGen']), PDO::PARAM_INT); $q_rdata->execute(); $rdata = $q_rdata -> fetch(PDO::FETCH_ASSOC); if($rdata['parent_mod'] == NULL){ $filefind = $_SERVER['CONTEXT_DOCUMENT_ROOT'].'/.backend/'.$rdata["name_mod"].'.php'; if(file_exists($dirfind)){ $response = array( 'status'=>'error', 'message'=>'Modul sudah ada', ); echo json_encode($response); exit; } } else{ $dirfind = $_SERVER['CONTEXT_DOCUMENT_ROOT'].'/.backend/'.$rdata["parent_mod"].'/'; $filefind = $_SERVER['CONTEXT_DOCUMENT_ROOT'].'/.backend/'.$rdata["parent_mod"].'/'.$rdata["name_mod"].'.php'; if(!is_dir($dirfind)){ //create folder mkdir($dirfind, 0755); } else{ if(file_exists($filefind)){ $response = array( 'status'=>'error', 'message'=>'Modul sudah ada', ); echo json_encode($response); exit; } } } $myfile = fopen($filefind, "w") or die("Unable to open file!"); $txt = ' <?php defined( \'_LANGSUNG\' ) or die(\'\');'; if($rdata['parent_mod'] == NULL){ $txt .= ' CekAkses(\''.$rdata["name_mod"].'\'); '; } else { $txt .= ' CekAkses(\''.$rdata["parent_mod"].'\'); CekAkses(\''.$rdata["name_mod"].'\'); '; } $txt .=' include(\'.library/crud.php\'); $table = \'test\'; $primaryKey = \'id_test\'; $columns = array( array( \'db\' => \'t.id_test\', \'dt\' => 0, \'field\' => \'id_test\', \'name\' => \'id_test\', \'type\' => \'int\', \'label\' => \'ID TEST\', \'skipupdate\' => true, \'skipinsert\'=>true, \'fhide\' => false ), array( \'db\' => \'t.nama_test\', \'dt\' => 1, \'field\' => \'nama_test\', \'name\' => \'nama_test\', \'type\'=>\'text\', \'label\'=>\'NAMA TEST\', \'fieldcol\' => 6, \'validation\'=>\'validate[required]\' ), ); $joinQuery = " FROM test t "; $extraWhere = ""; function TitlePage(){ echo "'.$rdata['title_mod'].'"; } function MainHeader(){ echo "<h1>'.$rdata['breadcrumb_mod'].'</h1>"; } function MainContent() { global $columns; ?> <div class="row"> <div class="col-xs-12"> <div class="box"> <div class="box-header"> <h3 class="box-title"></h3> </div> <div class="box-body"> <?php echo CRUD::TableView($columns); ?> </div> </div> </div> </div> <?php } function HeaderCss(){ echo \' <link href="\'.APP_URI.\'/plugins/validationEngine/validationEngine.jquery.css" rel="stylesheet" type="text/css"/> <link href="\'.APP_URI.\'/plugins/datatables/datatables.css" rel="stylesheet" type="text/css"/> <link href="\'.APP_URI.\'/plugins/select2/select2.min.css" rel="stylesheet" type="text/css"/> <link href="\'.APP_URI.\'/plugins/datepicker/datepicker3.css" rel="stylesheet" type="text/css"/> \'; } function FooterJs(){ echo \' <script src="\'.APP_URI.\'/plugins/datatables/datatables.js" type="text/javascript"></script> <script src="\'.APP_URI.\'/plugins/accounting/accounting.js" type="text/javascript"></script> <script src="\'.APP_URI.\'/plugins/chained/jquery.chained.js" type="text/javascript"></script> <script src="\'.APP_URI.\'/plugins/validationEngine/jquery.validationEngine.js" type="text/javascript"></script> <script src="\'.APP_URI.\'/plugins/validationEngine/jquery.validationEngine-en.js" type="text/javascript"></script> <script src="\'.APP_URI.\'/plugins/select2/select2.full.min.js" type="text/javascript"></script> <script src="\'.APP_URI.\'/plugins/datepicker/bootstrap-datepicker.js" type="text/javascript"></script> \'; } function FooterScript() { global $columns; ?> <script type="text/javascript" language="javascript" class="init" >'; if($rdata['parent_mod'] == NULL){ $txt .= ' var base_ajax = "<?php echo APP_URI."/".APP_ADMINPATH."x/".basename(__FILE__, \'.php\').".html"; ?>"; '; } else { $txt .= ' var base_ajax = "<?php echo APP_URI."/".APP_ADMINPATH."x/'.$rdata["parent_mod"].'/".basename(__FILE__, \'.php\').".html"; ?>"; '; } $txt .= ' $(document).ready(function() { $.fn.dataTable.ext.errMode = "none"; $("#example tfoot th").each(function() { var title = $(this).text(); $(this).html("<input type=\"text\" class=\"col-lg-12\" placeholder=\"" + title + "\" />"); }); var oTable = $("#example") .on("error.dt", function(e, settings, techNote, message) { DtNotif("warning", message, ""); }) .DataTable({ "autoWidth": false, "paging": true, "pagingType": "full_numbers", "stateSave": true, "processing": true, "select": true, "serverSide": true, "ajax": { "url": base_ajax, "type": "POST", "data": { "act": "read-data" } }, "scrollX": "100%", "scrollXInner": "105%", "columnDefs": [ { className: "dt-hide", "targets": [<?php CRUD::FHide($columns); ?>] }, { className: "dt-body-nowrap dt-head-nowrap", "targets": [<?php CRUD::FWrap($columns); ?>] } ], lengthMenu: [ [5, 10, 25, 50, -1], ["5 rows", "10 rows", "25 rows", "50 rows", "Show all"] ], dom: "<\"pull-left\"B><\"pull-right\"l>tr<\"pull-left\"i><\"pull-right\"p>", buttons: [ { text: "<i class=\"fa fa-file-pdf-o\"></i><span class=\"hidden-sm hidden-xs\"> PDF</span>", extend: "pdfHtml5", className: "btn btn-default", orientation: "landscape", pageSize: "A4", }, { text: "<i class=\"fa fa-file-excel-o\"></i><span class=\"hidden-sm hidden-xs\"> EXCEL</span>", extend: "excelHtml5", className: "btn btn-default", }, { text: "<i class=\"fa fa-plus\"></i> <span class=\"hidden-sm hidden-xs\">TAMBAH</span>", className: "btn btn-primary", action: function ( e, dt, node, config ){$.ajax({ type:"POST", url :base_ajax,data: "act=add-cek", success: function(data){ var result = $.parseJSON(data); if(result.status === "success"){ $.ajax({ type:"POST", url:base_ajax, data: "act=add", success: function(data){ $("#maction").html(data); $("#maction").removeClass().addClass("modal fade modal-primary"); $("#maction").modal("show"); $("#save").on("click", function(){ if($("#add").validationEngine("validate")){ var datasave = $("#add").serializeArray(); datasave.push({name: "act", value: "add-save"}); $.ajax({ type:"POST", url :base_ajax, data: datasave, success: function(data){ var result = $.parseJSON(data); if (result.status==="success"){ $("#maction").modal("hide"); DtNotif(result.status,result.message,""); oTable.draw(false); } else{ DtNotif(result.status,result.message,""); } } }); } }); $("#add").validationEngine({ showOneMessage:false, autoHidePrompt: true, autoHideDelay: 3000, promptPosition : "bottomLeft", fadeDuration: 200 }); $("#add").attr("autocomplete","off"); $(".datepicker").datepicker({autoclose: true,format: \'yyyy-mm-dd\'}); $(".select2").select2({ width: \'100%\' }); } }); } else{ DtNotif(result.status,result.message,""); } }, }); }, enabled: true }, { text: "<i class=\"fa fa-pencil\"></i> <span class=\"hidden-sm hidden-xs\">UBAH</span>", className: "btn btn-info", action: function ( e, dt, node, config ){ var yData = $.map(oTable.rows(".selected").data(), function (item) { return item[0] }); $.ajax({ type:"POST", url :base_ajax,data: "act=edit-cek&id="+yData, success: function(data){ var result = $.parseJSON(data); if(result.status === "success"){ $.ajax({ type:"POST", url:base_ajax, data: "act=edit", success: function(data){ $("#maction").html(data); $("#maction").removeClass().addClass("modal fade modal-info"); $("#maction").modal("show"); $("#save").on("click", function(){ if($("#edit").validationEngine("validate")){ var datasave = $("#edit").serializeArray(); datasave.push({name: "act", value: "edit-save"}); $.ajax({ type:"POST", url :base_ajax, data: datasave, success: function(data){ var result = $.parseJSON(data); if (result.status==="success"){ $("#maction").modal("hide"); DtNotif(result.status,result.message,""); oTable.draw(false); } else{ DtNotif(result.status,result.message,""); } } }); } }); $("#edit").validationEngine({ showOneMessage:false, autoHidePrompt: true, autoHideDelay: 3000, promptPosition : "bottomLeft", fadeDuration: 200 }); $("#edit").attr("autocomplete","off"); $(".datepicker").datepicker({autoclose: true,format: \'yyyy-mm-dd\'}); $(".select2").select2({ width: \'100%\' }); } }); } else{ DtNotif(result.status,result.message,""); } }, }); }, enabled: false }, { text: "<i class=\"fa fa-trash\"></i> <span class=\"hidden-sm hidden-xs\">HAPUS</span>", className: "btn btn-warning", action: function ( e, dt, node, config ){ if(oTable.rows(".selected").data().length>1){ var yData = $.map(oTable.rows(".selected").data(), function (item) { return item[0] }); $.ajax({ type:"POST", url :base_ajax,data: "act=deletem-cek&id="+yData, success: function(data){ var result = $.parseJSON(data); if(result.status == "success"){ $.ajax({ type:"POST", url:base_ajax, data: "act=delete", success: function(data){ $("#maction").html(data); $("#maction").removeClass().addClass("modal fade modal-warning"); $("#maction").modal("show"); $("#save").on("click", function(){ if($("#deletem").validationEngine("validate")){ var datasave = $("#delete").serializeArray(); datasave.push({name: "act", value: "deletem-save"}); $.ajax({ type:"POST", url :base_ajax, data: datasave, success: function(data){ var result = $.parseJSON(data); if (result.status==="success"){ $("#maction").modal("hide"); DtNotif(result.status,resut.message,""); oTable.draw(false); } else{ DtNotif(result.status,result.message,""); } } }); } }); $("#deletem").validationEngine({ showOneMessage:false, autoHidePrompt: true, autoHideDelay: 3000, promptPosition : "bottomLeft", fadeDuration: 200 }); $("#deletem").attr("autocomplete","off"); $(".select2").select2({ width: \'100%\' }); } }); } else{ DtNotif(result.status,result.message,""); } }, }); } else { var yData = $.map(oTable.rows(".selected").data(), function (item) { return item[0] }); $.ajax({ type:"POST", url :base_ajax,data: "act=delete-cek&id="+yData, success: function(data){ var result = $.parseJSON(data); if(result.status === "success"){ $.ajax({ type:"POST", url:base_ajax, data: "act=delete", success: function(data){ $("#maction").html(data); $("#maction").removeClass().addClass("modal fade modal-warning"); $("#maction").modal("show"); $("#save").on("click", function(){ if($("#delete").validationEngine("validate")){ var datasave = $("#delete").serializeArray(); datasave.push({name: "act", value: "delete-save"}); $.ajax({ type:"POST", url :base_ajax, data: datasave, success: function(data){ var result = $.parseJSON(data); if (result.status==="success"){ $("#maction").modal("hide"); DtNotif(result.status,result.message,""); oTable.draw(false); } else{ DtNotif(result.status,result.message,""); } } }); } }); $("#delete").validationEngine({ showOneMessage:false, autoHidePrompt: true, autoHideDelay: 3000, promptPosition : "bottomLeft", fadeDuration: 200 }); $("#delete").attr("autocomplete","off"); } }); } else{ DtNotif(result.status,result.message,""); } }, }); } }, enabled: false }, { text: "<i class=\"fa fa-refresh\"><span class=\"hidden-sm hidden-xs\"> REFRESH</span</i>", className: "btn btn-default", action: function (e,dt,node,config){ function fnResetAllFilters(){ oTable.columns().eq(0).each(function(colIdx){ $("input", oTable.column(colIdx).footer()).val(""); oTable.columns(colIdx).search("", true ); }); oTable.search("", true ).draw(); } fnResetAllFilters(); } }, { text: "<i class=\"fa fa-table\"><span class=\"hidden-sm hidden-xs\"> KOLOM</span></i>", extend: "colvis", className: "btn btn-default", collectionLayout: "fixed two-column" }, ], language: { "emptyTable": "Data tidak tersedia", "info": "Menampilkan _START_ - _END_ dari _TOTAL_ data", "infoEmpty": "Tidak ada data yang ditampilkan", "infoFiltered": " - di saring dari _MAX_ data", "decimal": ",", "thousands": ".", "lengthMenu": "Menampilkan _MENU_ data", "loadingRecords": "Silahkan tunggu - loading...", "processing": "Silahkan tunggu, processing....", "search": "Menyaring data</em>:", "search": "Apply filter _INPUT_ to table", "zeroRecords": "No records to display", buttons: { colvis: "Atur Kolom" }, paginate: { "first": "<i class=\"fa fa-angle-double-left\"></i><span class=\"hidden-xs hidden-sm\"> First page</span>", "last": "<i class=\"fa fa-angle-double-right\"></i><span class=\"hidden-xs hidden-sm\"> Last page</span>", "next": "<i class=\"fa fa-angle-right\"></i><span class=\"hidden-xs hidden-sm\"> Next page</span>", "previous": "<i class=\"fa fa-angle-left\"></i><span class=\"hidden-xs hidden-sm\"> Previous page</span>" } } }); oTable.on("select", function(){ if(oTable.rows(".selected").data().length==0){ oTable.button(3).enable(false); oTable.button(4).enable(false); } else if(oTable.rows(".selected").data().length==1){ oTable.button(3).enable(true); oTable.button(4).enable(true); } else{ oTable.button(3).enable(false); oTable.button(4).enable(false); } }); oTable.on("deselect", function(){ if(oTable.rows(".selected").data().length==0){ oTable.button(3).enable(false); oTable.button(4).enable(false); } else if(oTable.rows(".selected").data().length==1){ oTable.button(3).enable(true); oTable.button(4).enable(true); } else{ oTable.button(3).enable(false); oTable.button(4).enable(false); } }); oTable.columns().every(function() { var that = this; $("input", this.footer()).on("keyup change", function(e) { if (that.search() !== this.value && e.keyCode == 13) { that .search(this.value) .draw(); } }); }); }); </script> <?php } if(isset($_POST[\'act\']) && !empty($_POST[\'act\'])){ if($_POST[\'act\']==\'add-cek\'){ $response = array( \'status\' => \'success\' ); echo json_encode($response); } elseif($_POST[\'act\']==\'add\'){ CRUD::ModalAddForm2("INPUT DATA", $table, $primaryKey, \'\', \'int\', $columns, \'xl\', 1); } elseif($_POST[\'act\']==\'add-save\'){ CRUD::InsertData($table,$columns); } elseif($_POST[\'act\']==\'edit-cek\'){ $_SESSION[\'Edit\'.$table]=CleanId($_POST[\'id\']); $response = array( \'status\'=>\'success\' ); echo json_encode($response); } elseif($_POST[\'act\']==\'edit\'){ echo CRUD::ModalEditForm2("EDIT DATA", $table, $primaryKey, $_SESSION[\'Edit\'.$table], \'int\', $columns, \'xl\', 1); } elseif($_POST[\'act\']==\'edit-save\'){ if(CRUD::UpdateData($table,$primaryKey,$_SESSION[\'Edit\'.$table],\'int\',$columns)){ $response = array( \'status\' => \'success\', \'message\' => \'Success update data\' ); echo json_encode($response); }else{ CRUD::UpdateData($table,$primaryKey,$_SESSION[\'Edit\'.$table],\'int\',$columns); } } elseif($_POST[\'act\']==\'delete-cek\'){ $_SESSION[\'Delete\'.$table]=CleanId($_POST[\'id\']); $response = array( \'status\'=>\'success\' ); echo json_encode($response); } elseif($_POST[\'act\']==\'delete\'){ echo CRUD::ModalDeleteForm(\'DELETE DATA\',$table,$primaryKey,$_SESSION[\'Delete\'.$table],\'int\',$columns); } elseif($_POST[\'act\']==\'delete-save\'){ if(CRUD::DeleteData($table,$primaryKey,$_SESSION[\'Delete\'.$table],\'int\',$columns)){ $response = array( \'status\' => \'success\', \'message\' => \'Success delete data\' ); echo json_encode($response); }else{ CRUD::DeleteData($table,$primaryKey,$_SESSION[\'Delete\'.$table],\'int\',$columns); } } elseif($_POST[\'act\']==\'detail-cek\'){ $_SESSION[\'Detail\'.$table]=CleanId($_POST[\'id\']); $response = array( \'status\'=>\'success\' ); echo json_encode($response); } elseif($_POST[\'act\']==\'read-data\'){ $response = CRUD::simple($sql_details, $table, $primaryKey, $columns, $joinQuery, $extraWhere); echo json_encode($response); } else { $response = array( \'status\'=>\'error\', \'message\'=>\'Unknown action\' ); echo json_encode($response); } } ?> '; fwrite($myfile, $txt); fclose($myfile); $response = array( 'status'=>'success', 'message'=>'Modul generated', ); echo json_encode($response); } elseif($_POST['act']=='delete-cek'){ $q_rdata = $sambungan->prepare("SELECT * FROM bet_modules WHERE id_mod=:id_mod"); $q_rdata->bindValue(':id_mod', CleanId($_POST['id']), PDO::PARAM_INT); if($q_rdata->execute() && $q_rdata->rowCount()==1 ){ $rdata= $q_rdata->fetch(PDO::FETCH_ASSOC); if($rdata['id_mod']>=4){ $_SESSION['IdModDelete']=$rdata['id_mod']; echo 'sukses'; } else{ echo 'Modul tidak dapat dihapus'; } } else { echo 'Gagal membaca data'; } } elseif($_POST['act']=='delete'){ $q_rdata = $sambungan->prepare("SELECT * FROM bet_modules WHERE id_mod=:id_mod"); $q_rdata->bindValue(':id_mod', CleanId($_SESSION['IdModDelete']), PDO::PARAM_INT); $q_rdata->execute(); $rdata= $q_rdata->fetch(PDO::FETCH_ASSOC); $q_parentdata = $sambungan->prepare("SELECT * FROM bet_modules WHERE parent_mod=0"); $q_parentdata->execute(); $q_icon = $sambungan->prepare("SELECT * FROM bet_icon"); $q_icon -> execute(); ?> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title">DELETE MODULE ?</h4> </div> <div class="modal-body"> <form id="delete" name="delete" method="post" class="form-horizontal" action=""> <div class="form-group"> <label class="control-label col-lg-4">Parent Modul</label> <div class="col-lg-8"> <select name="parent_mod" id="parent_mod" class="validate[required] form-control" disabled="disabled"> <option value="0">MAIN MENU</option> <?php while ($parentdata = $q_parentdata -> fetch (PDO::FETCH_ASSOC)) { ?> <option value="<?php echo $parentdata['id_mod']; ?>" <?php if (!(strcmp(htmlentities($parentdata['id_mod']),htmlentities($rdata['parent_mod'])))) { echo 'SELECTED';} ?>><?php echo $parentdata['title_mod']; ?></option> <?php } ?> </select> </div> </div> <div class="form-group"> <label class="control-label col-lg-4">Is Datatables Menu</label> <div class="col-lg-8"> <div class="checkbox"> <label> <input name="isdt_mod" id="isdt_mod" type="checkbox" value="1" <?php if (!(strcmp(htmlentities($rdata['isdt_mod']),1))) { echo 'checked="checked"';} ?> disabled="disabled"> </label> </div> </div> </div> <div class="form-group"> <label class="control-label col-lg-4">Order Mod</label> <div class=" col-lg-8"> <input class="validate[required,custom[integer]] form-control" type="text" name="order_mod" id="order_mod" value="<?php echo $rdata['order_mod']; ?>" disabled="disabled"/> </div> </div> <div class="form-group"> <label class="control-label col-lg-4">Module Name</label> <div class=" col-lg-8"> <input name="name_mod" type="text" disabled="disabled" class="validate[required] form-control" id="name_mod" value="<?php echo $rdata['name_mod']; ?>"/> </div> </div> <div class="form-group"> <label class="control-label col-lg-4">Breadcrumb Title</label> <div class=" col-lg-8"> <input name="breadcrumb_mod" type="text" disabled="disabled" class="validate[required] form-control" id="breadcrumb_mod" value="<?php echo $rdata['breadcrumb_mod']; ?>"/> </div> </div> <div class="form-group"> <label class="control-label col-lg-4">Modules Page Title</label> <div class=" col-lg-8"> <input name="title_mod" type="text" disabled="disabled" class="validate[required] form-control" id="title_mod" value="<?php echo $rdata['title_mod']; ?>"/> </div> </div> <div class="form-group"> <label class="control-label col-lg-4">Modul Icon</label> <div class="col-lg-8"> <select name="icon_mod" id="icon_mod" class="validate[required] form-control" style="font-family:'FontAwesome', Arial;" disabled="disabled"> <option value="">SELECT ICON</option> <?php while ($icon = $q_icon -> fetch (PDO::FETCH_ASSOC)) { ?> <option value="<?php echo $icon['icon_code'];?>" <?php if (!(strcmp(htmlentities($icon['icon_code']),htmlentities($rdata['icon_mod'])))) { echo 'SELECTED';} ?>><?php echo $icon['icon_font'];?> <?php echo $icon['icon_name'];?> </option> <?php } ?> </select> </div> </div> <div class="form-group"> <label class="control-label col-lg-4">Default Access</label> <div class="col-lg-8"> <select name="default_mod" id="default_mod" class="validate[required] form-control" disabled="disabled"> <option value="0" <?php if (!(strcmp(htmlentities($rdata['default_mod']),0))) { echo 'SELECTED';} ?>>Dissallow</option> <option value="1" <?php if (!(strcmp(htmlentities($rdata['default_mod']),1))) { echo 'SELECTED';} ?>>Allow</option> </select> </div> </div> </form> </div> <div class="modal-footer"> ARE YOU SURE? <button type="button" class="btn btn-default" data-dismiss="modal">NO</button> <button id="save" type="button" class="btn btn-danger">YES</button> </div> </div> </div> <?php } elseif($_POST['act']=='delete-save'){ $q_rdata = $sambungan->prepare("DELETE FROM bet_modules WHERE id_mod=:id_mod"); $q_rdata->bindValue(':id_mod', CleanId($_SESSION['IdModDelete']), PDO::PARAM_INT); $q_rdata->execute(); echo 'sukses'; unset($_SESSION['IdModDelete']); } elseif($_POST['act']=='read-data'){ $table = 'bet_modules'; $primaryKey = 'id_mod'; $columns = array( array( 'db' => 'bm.id_mod', 'dt' => 'DT_RowId', 'field' => 'id_mod'), array( 'db' => 'bm.id_mod', 'dt' => 0, 'field' => 'id_mod' ), array( 'db' => 'if(bm.parent_mod=0,"MAIN MENU",bx.title_mod)', 'dt' => 1, 'field' => 'if(bm.parent_mod=0,"MAIN MENU",bx.title_mod)' ), array( 'db' => 'bm.isdt_mod', 'dt' => 2, 'field' => 'isdt_mod' ), array( 'db' => 'bm.order_mod', 'dt' => 3, 'field' => 'order_mod'), array( 'db' => 'bm.name_mod', 'dt' => 4, 'field' => 'name_mod' ), array( 'db' => 'bm.breadcrumb_mod', 'dt' => 5, 'field' => 'breadcrumb_mod' ), array( 'db' => 'bm.title_mod', 'dt' => 6, 'field' => 'title_mod' ), array( 'db' => 'bm.icon_mod', 'dt' => 7, 'field' => 'icon_mod', 'formatter' => function( $d, $row ) { return '<span class="fa '.$d.'"></span>'; } ), array( 'db' => 'bm.default_mod', 'dt' => 8, 'field' => 'default_mod', 'formatter' => function( $d, $row ) { if($d == 1){ return 'Allow'; } else{ return 'Disallow'; } } ) ); $joinQuery = "FROM bet_modules AS bm LEFT OUTER JOIN bet_modules AS bx ON bm.parent_mod = bx.id_mod"; $extraWhere = ""; echo json_encode( SSP::simple( $_POST, $sql_details, $table, $primaryKey, $columns, $joinQuery, $extraWhere ) ); } else { echo 'Unknown action'; } } ?>
Copyright ©2021 || Defacer Indonesia