create new display class, fixed and added same new feature

This commit is contained in:
2026-01-02 16:02:52 +07:00
parent 2aba10a694
commit 7c7d4d8f59
12 changed files with 119 additions and 34 deletions
-1
View File
@@ -85,7 +85,6 @@ button.tbl-rowbtn.normal {/* */
padding-top: 0; padding-top: 0;
padding-bottom: 0; padding-bottom: 0;
} }
.icon-tooltip { color: var(--bs-warning); }
/** navibar menu **/ /** navibar menu **/
+8 -8
View File
@@ -801,9 +801,9 @@ Request.JSONF = function(options){
var _cssb = (valb[1]=='') ? ' normal' : ' btn-'+valb[1]; var _cssb = (valb[1]=='') ? ' normal' : ' btn-'+valb[1];
if (ini.config.txtbutton === true) { if (ini.config.txtbutton === true) {
_tbtn1 += '<button class="btn tbl-rowbtn d-none d-lg-inline-block '+_link+_cssb+' me-2'+(val[0].button.length>1?' mb-2':'')+'" type="button">'+aTombol[valb[0]][0]+'</button>'; _tbtn1 += '<button class="btn tbl-rowbtn d-none d-lg-inline-block '+_link+_cssb+' me-2'+(val[0].button.length>1?' mb-2':'')+'" type="button">'+aTombol[valb[0]][0]+'</button>';
_tbtn2 += '<a class="table-icon d-lg-none '+_link+_cssa+'" tabindex="-1" title="'+aTombol[valb[0]][0]+'"><i class="icon bi-'+valb[0]+'"></i></a>'; _tbtn2 += '<a class="table-icon d-lg-none '+_link+_cssa+'" tabindex="-1" title="'+aTombol[valb[0]][0]+'"><i class="bi-'+valb[0]+'"></i></a>';
} else { } else {
_tbtn2 += '<a class="table-icon '+_link+_cssa+'" title="'+aTombol[valb[0]][0]+'"><i class="icon bi-'+valb[0]+'"></i></a>'; _tbtn2 += '<a class="table-icon '+_link+_cssa+'" title="'+aTombol[valb[0]][0]+'"><i class="bi-'+valb[0]+'"></i></a>';
} }
}) })
} }
@@ -859,9 +859,9 @@ Request.JSONF = function(options){
var _cssb = (valb[1]=='') ? ' normal' : ' btn-'+valb[1]; var _cssb = (valb[1]=='') ? ' normal' : ' btn-'+valb[1];
if (ini.config.txtbutton === true) { if (ini.config.txtbutton === true) {
_tbtn1 += '<button class="btn tbl-rowbtn d-none d-lg-inline-block '+_link+_cssb+' me-2'+(optval.button.length>1?' mb-2':'')+'" type="button">'+aTombol[valb[0]][0]+'</button>'; _tbtn1 += '<button class="btn tbl-rowbtn d-none d-lg-inline-block '+_link+_cssb+' me-2'+(optval.button.length>1?' mb-2':'')+'" type="button">'+aTombol[valb[0]][0]+'</button>';
_tbtn2 += '<a class="table-icon d-lg-none '+_link+_cssa+'" tabindex="-1" title="'+aTombol[valb[0]][0]+'"><i class="icon bi-'+valb[0]+'"></i></a>'; _tbtn2 += '<a class="table-icon d-lg-none '+_link+_cssa+'" tabindex="-1" title="'+aTombol[valb[0]][0]+'"><i class="bi-'+valb[0]+'"></i></a>';
} else { } else {
_tbtn2 += '<a class="table-icon '+_link+_cssa+'" title="'+aTombol[valb[0]][0]+'"><i class="icon bi-'+valb[0]+'"></i></a>'; _tbtn2 += '<a class="table-icon '+_link+_cssa+'" title="'+aTombol[valb[0]][0]+'"><i class="bi-'+valb[0]+'"></i></a>';
} }
}) })
} }
@@ -1113,10 +1113,10 @@ if (jQuery.fn.dataTable) {
"sSortDescending": ": aktifkan urutan kolom kebawah" "sSortDescending": ": aktifkan urutan kolom kebawah"
}, },
"oPaginate": { "oPaginate": {
"sFirst": "<i class=\"bi bi-skip-backward\"></i>", "sFirst": "<i class=\"bi-skip-backward\"></i>",
"sPrevious": "<i class=\"bi bi-rewind\"></i>", "sPrevious": "<i class=\"bi-rewind\"></i>",
"sNext": "<i class=\"bi bi-fast-forward\"></i>", "sNext": "<i class=\"bi-fast-forward\"></i>",
"sLast": "<i class=\"bi bi-skip-forward\"></i>" "sLast": "<i class=\"bi-skip-forward\"></i>"
}, },
"sEmptyTable": "Tidak ada data yang tersedia pada tabel ini", "sEmptyTable": "Tidak ada data yang tersedia pada tabel ini",
"sProcessing": "", "sProcessing": "",
+1 -1
View File
@@ -68,7 +68,7 @@ var cPRINTER = function(url, options){
'<div class="modal fade" id="winAPPPrint" tabindex="-1" role="dialog" data-bs-keyboard="false" data-bs-show="false" data-bs-backdrop="static" aria-labelledby="winAPPPrintLabel" aria-hidden="true">'+ '<div class="modal fade" id="winAPPPrint" tabindex="-1" role="dialog" data-bs-keyboard="false" data-bs-show="false" data-bs-backdrop="static" aria-labelledby="winAPPPrintLabel" aria-hidden="true">'+
'<div class="modal-dialog modal-dialog-centered modal-dialog-scrollable modal-fs" role="document">'+ '<div class="modal-dialog modal-dialog-centered modal-dialog-scrollable modal-fs" role="document">'+
'<div class="modal-content">'+ '<div class="modal-content">'+
'<div class="modal-header"><h5 class="modal-title" id="winAPPPrintLabel">Preview Laporan</h5><div class="ms-auto"><button class="btn me-2" id="tombCetak" type="button" aria-label="Cetak"><i class="bi bi-printer me-2"></i><span aria-hidden="true">Cetak</span></button><button class="btn" type="button" data-bs-dismiss="modal" aria-label="Tutup"><i class="bi bi-x-lg me-2"></i><span aria-hidden="true">Tutup</span></button></div></div>'+ '<div class="modal-header"><h5 class="modal-title" id="winAPPPrintLabel">Preview Laporan</h5><div class="ms-auto"><button class="btn me-2" id="tombCetak" type="button" aria-label="Cetak"><i class="bi-printer me-2"></i><span aria-hidden="true">Cetak</span></button><button class="btn" type="button" data-bs-dismiss="modal" aria-label="Tutup"><i class="bi-x-lg me-2"></i><span aria-hidden="true">Tutup</span></button></div></div>'+
'<div class="modal-body print-body" id="divPrintP">'+txt+'</div>'+ '<div class="modal-body print-body" id="divPrintP">'+txt+'</div>'+
'</div></div></div>'; '</div></div></div>';
if ($('#winAPPPrint')) $('#winAPPPrint').modal('dispose').remove(); if ($('#winAPPPrint')) $('#winAPPPrint').modal('dispose').remove();
+1 -1
View File
@@ -46,7 +46,7 @@ var cSIMULATOR = function(url, options){
'<div class="modal fade" id="winAPPSim" tabindex="-1" role="dialog" data-bs-keyboard="false" data-bs-show="false" data-bs-backdrop="static" aria-labelledby="winAPPSimLabel" aria-hidden="true">'+ '<div class="modal fade" id="winAPPSim" tabindex="-1" role="dialog" data-bs-keyboard="false" data-bs-show="false" data-bs-backdrop="static" aria-labelledby="winAPPSimLabel" aria-hidden="true">'+
'<div class="modal-dialog modal-dialog-centered modal-dialog-scrollable modal-fs" role="document">'+ '<div class="modal-dialog modal-dialog-centered modal-dialog-scrollable modal-fs" role="document">'+
'<div class="modal-content">'+ '<div class="modal-content">'+
'<div class="modal-header"><h5 class="modal-title" id="winAPPSimLabel">Code Simulator</h5><div class="ms-auto"><button class="btn me-2" id="tombSalin" type="button" aria-label="Salin Semua"><i class="bi bi-copy me-2"></i><span aria-hidden="true">Salin Semua</span></button><button class="btn" type="button" data-bs-dismiss="modal" aria-label="Tutup"><i class="bi bi-x-lg me-2"></i><span aria-hidden="true">Tutup</span></button></div></div>'+ '<div class="modal-header"><h5 class="modal-title" id="winAPPSimLabel">Code Simulator</h5><div class="ms-auto"><button class="btn me-2" id="tombSalin" type="button" aria-label="Salin Semua"><i class="bi-copy me-2"></i><span aria-hidden="true">Salin Semua</span></button><button class="btn" type="button" data-bs-dismiss="modal" aria-label="Tutup"><i class="bi-x-lg me-2"></i><span aria-hidden="true">Tutup</span></button></div></div>'+
'<div class="modal-body">'+_divd+'</div>'+ '<div class="modal-body">'+_divd+'</div>'+
'</div></div></div>'; '</div></div></div>';
if ($('#winAPPSim')) $('#winAPPSim').modal('dispose').remove(); if ($('#winAPPSim')) $('#winAPPSim').modal('dispose').remove();
+2 -2
View File
@@ -131,7 +131,7 @@ final class App {
foreach ($this->auser['MENU_MODUL'] as $modul) { foreach ($this->auser['MENU_MODUL'] as $modul) {
$href = $href1.$modul['APP_PATH'].$href2; $href = $href1.$modul['APP_PATH'].$href2;
$href .= '/?auth='.$_SESSION['APP_TOKEN']; $href .= '/?auth='.$_SESSION['APP_TOKEN'];
$t_modul .= '<a class="dropdown-item slink" href="'.$href.'"><i class="icon me-2 '.$modul['Icon'].'"></i> '.$modul['Judul'].'</a>'; $t_modul .= '<a class="dropdown-item slink" href="'.$href.'"><i class="'.$modul['Icon'].' me-2"></i> '.$modul['Judul'].'</a>';
} }
} }
// menu extra // menu extra
@@ -139,7 +139,7 @@ final class App {
if (count($amodul_ext) > 0) { if (count($amodul_ext) > 0) {
$t_modul .= '<div class="dropdown-divider"></div>'; $t_modul .= '<div class="dropdown-divider"></div>';
foreach ($amodul_ext as $modul) { foreach ($amodul_ext as $modul) {
$t_modul .= '<a class="dropdown-item slink" id="'.$modul['Id'].'"><i class="icon me-2 '.$modul['Icon'].'"></i> '.$modul['Judul'].'</a>'; $t_modul .= '<a class="dropdown-item slink" id="'.$modul['Id'].'"><i class="'.$modul['Icon'].' me-2"></i> '.$modul['Judul'].'</a>';
} }
} }
$buffer = str_replace("[_MENU_MODUL_]", $t_modul, $buffer); $buffer = str_replace("[_MENU_MODUL_]", $t_modul, $buffer);
+13 -9
View File
@@ -6,9 +6,9 @@
Desc. : v3 - Class cache aplikasi Desc. : v3 - Class cache aplikasi
Created By : Siau Pheng (siaupheng@3fonia.com). Created By : Siau Pheng (siaupheng@3fonia.com).
Created Date : March 16th, 2008. Created Date : March 16th, 2008.
Last Modified : August 3rd, 2023. Last Modified : January 1st, 2026.
(c) 2008 - 2023, 3FONIA Software; WWW.3FONIA.COM. (c) 2008 - 2026, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/ *******************************************************************/
@@ -26,7 +26,7 @@ final class Cache {
private $__jsdir = ""; private $__jsdir = "";
private $__jsapp = ""; private $__jsapp = "";
private $__realpath = ""; private $__realpath = "";
private $__ini = array(); private $__ini = [];
protected $__db = null; protected $__db = null;
public function __construct($db = null){ public function __construct($db = null){
@@ -41,14 +41,17 @@ final class Cache {
$this->__jsapp = $rootdir . 'apps/js/'; $this->__jsapp = $rootdir . 'apps/js/';
$this->__realpath = $rootdir; $this->__realpath = $rootdir;
if (!file_exists($this->__cachedir . "cache.ini")) { if (!file_exists($this->__cachedir . "cache.ini")) {
$this->__ini = array('css'=>array('login_stamp'=>"0",'login_file'=>"",'index_stamp'=>"0",'index_file'=>""), 'js'=>array('login_stamp'=>"0",'login_file'=>"",'index_stamp'=>"0",'index_file'=>"")); $this->__ini = [
'css' => ['login_stamp'=>"0",'login_file'=>"",'index_stamp'=>"0",'index_file'=>"",'display_stamp'=>"0",'display_file'=>""],
'js' => ['login_stamp'=>"0",'login_file'=>"",'index_stamp'=>"0",'index_file'=>"",'display_stamp'=>"0",'display_file'=>""]
];
$this->save_ini(); $this->save_ini();
} }
$this->__ini = parse_ini_file($this->__cachedir . "cache.ini", true); $this->__ini = parse_ini_file($this->__cachedir . "cache.ini", true);
} }
private function gen_file($type="css", $mode="index") { private function gen_file($type="css", $mode="index") {
$afile = array(); $afile = [];
if ($type == "css") { if ($type == "css") {
$_afile = array_unique($GLOBALS['A_CSS']); $_afile = array_unique($GLOBALS['A_CSS']);
foreach ($_afile as $__key => $val) { foreach ($_afile as $__key => $val) {
@@ -123,8 +126,8 @@ final class Cache {
return $lastmod; return $lastmod;
} }
private function create_cache($type="css", $mode="index", $afile=array(), $lastmod=0) { private function create_cache($type="css", $mode="index", $afile=[], $lastmod=0) {
$contents = ''; $contents = ''; $smini = null;
$bpublic = ($_SERVER['SERVER_ADDR'] == "127.0.0.1") ? false : true; $bpublic = ($_SERVER['SERVER_ADDR'] == "127.0.0.1") ? false : true;
if ($bpublic == true) { if ($bpublic == true) {
if ($type=="css") { if ($type=="css") {
@@ -163,8 +166,9 @@ final class Cache {
file_put_contents($this->__cachedir . "cache.ini", $content); file_put_contents($this->__cachedir . "cache.ini", $content);
} }
public function Main($type="css") { public function Main($type="css", $mode="") {
$mode = (($_SESSION['__WEB_USER']['UserID'] ?? 0) > 0) ? "index" : "login"; if ($mode == "") $mode = "login";
if (($_SESSION['__WEB_USER']['UserID'] ?? 0) > 0) $mode = "index";
$afile = $this->gen_file($type, $mode); $afile = $this->gen_file($type, $mode);
$lastmod = $this->check_file($afile); $lastmod = $this->check_file($afile);
if ($lastmod <> intval($this->__ini[$type][$mode.'_stamp']) || !file_exists($this->__cachedir . $this->__ini[$type][$mode.'_file'])) { if ($lastmod <> intval($this->__ini[$type][$mode.'_stamp']) || !file_exists($this->__cachedir . $this->__ini[$type][$mode.'_file'])) {
+82
View File
@@ -0,0 +1,82 @@
<?php
/*******************************************************************
Module : /App.php
Desc. : v3 - HTML5 Page Generator (jQuery & Bootstrap)
Created By : Siau Pheng (siaupheng@3fonia.com).
Created Date : January 10th, 2008.
Last Modified : January 1st, 2026.
(c) 2008 - 2026, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
declare(strict_types=1);
namespace siaupheng\fonia3;
final class Display {
public $version = "1.0.0";
private $apps = [];
private $cache = null;
protected $__db = null;
public function __construct($db = null){
if (is_resource($db)) { $this->__db = $db; }
else { $this->__db = new \siaupheng\fonia3\DB\MySQL(); }
$this->apps = $_SESSION['__WEB_APP'];
if (($this->apps['TEMPLATE'] ?? "") == "") $this->apps['TEMPLATE'] = "display.php";
$this->cache = new \siaupheng\fonia3\Data\Cache($this->__db);
}
public function TampilDisplay() {
// loading template file
$buffer = "";
if (file_exists($this->apps['REAL_PATH']."assets/templates/".$this->apps['TEMPLATE'])) {
$buffer = file_get_contents($this->apps['REAL_PATH']."assets/templates/".$this->apps['TEMPLATE']);
$compos = 0;
if (strpos(strtoupper($buffer), "<!DOCTYPE") !== false) {
$compos = strpos(strtoupper($buffer), "<!DOCTYPE");
}
$buffer = substr($buffer, $compos);
}
// penambahan file css + js + app-js
$headers = '<link rel="stylesheet" type="text/css" href="'.$this->cache->Main("css", "display").'">'."\n";
$headers .= '<script type="text/javascript" src="'.$this->cache->Main("js", "display").'"></script>'."\n";
$_secret = $this->apps['APP_DISPLAY'] .";". $this->apps['APP_SID'] .";". $_SERVER['HTTP_HOST'] .";". $this->apps['WEB_PATH'] .";". "http://".$_SERVER['HTTP_HOST'].$this->apps['WEB_PATH'] .";". isMobile() .";". ($this->apps['AUTH_LEVEL']?$this->apps['AUTH_LEVEL']:0) .";". $this->version;
$_suser = "nobody;999;999;9";
$headers .= '<script type="text/javascript" language="javascript">'."\n";
$headers .= 'FoniaJS.setConfig("'.base64_encode($_secret).'", "'.base64_encode($_suser).'");';
$headers .= '</script>'."\n";
// informasi tahun aplikasi dan pembuatan menu
if (strpos($buffer, '_CREATOR_YEAR_')===false) {
$this->apps['REG_YEAR'] = ($this->apps['REG_YEAR']!=date('Y')) ? $this->apps['REG_YEAR']." - ".date('Y') : $this->apps['REG_YEAR'];
} else {
$this->apps['CREATOR_YEAR'] = ($this->apps['CREATOR_YEAR']!=date('Y')) ? $this->apps['CREATOR_YEAR']." - ".date('Y') : $this->apps['CREATOR_YEAR'];
}
// perubahan variabel dari data konfigurasi
$asrc = ["[_CREATOR_NAME_]", "[_CREATOR_WEBSITE_]", "[_CREATOR_YEAR_]", "[_APP_NAME_VER_]", "[_APP_NAMES_VER_]", "[_APP_NAME_]", "[_APP_NAMES_]", "[_APP_NAMES_UP_]", "[_APP_VER_]", "[_APP_UPDATED_]", "[_REG_NAME_]", "[_REG_NAME_UP_]", "[_REG_ADDRESS_]", "[_REG_CITY_]", "[_REG_CITY_UP_]", "[_REG_PHONE_]", "[_REG_FAX_]", "[_REG_EMAIL_]", "[_REG_POSTCODE_]", "[_REG_WEBSITE_]", "[_REG_YEAR_]", "[_WEB_PATH_]"];
$adst = [$this->apps['CREATOR_NAME'], $this->apps['CREATOR_WEBSITE'], $this->apps['CREATOR_YEAR'], $this->apps['APP_NAME']." v".$this->apps['APP_VER'], $this->apps['APP_NAMES']." v".$this->apps['APP_VER'], $this->apps['APP_NAME'], $this->apps['APP_NAMES'], strtoupper($this->apps['APP_NAMES']??""), $this->apps['APP_VER'], $this->apps['APP_UPDATED'], $this->apps['REG_NAME'], strtoupper($this->apps['REG_NAME']??""), $this->apps['REG_ADDRESS'], $this->apps['REG_CITY'], strtoupper($this->apps['REG_CITY']??""), $this->apps['REG_PHONE'], $this->apps['REG_FAX'], $this->apps['REG_EMAIL'], $this->apps['REG_POSTCODE'], $this->apps['REG_WEBSITE'], $this->apps['REG_YEAR'], $this->apps['WEB_PATH']];
$buffer = str_replace($asrc, $adst, $buffer);
// penyisipan header
$headpos = 0;
if (strpos(strtolower($buffer), "</head>") !== false) {
$headpos = strpos(strtolower($buffer), "</head>");
}
$split_1_buffer = substr($buffer, 0, $headpos);
$split_2_buffer = substr($buffer, $headpos);
$buffer = $split_1_buffer.$headers.$split_2_buffer;
echo $buffer;
}
}
?>
+1 -1
View File
@@ -135,7 +135,7 @@ if (!function_exists('abjad')) {
if (!function_exists('checkbox')) { if (!function_exists('checkbox')) {
function checkbox($nilai = 0) { function checkbox($nilai = 0) {
$thasil = ((is_string($nilai) && ($nilai=="N" || $nilai=="0")) or (is_numeric($nilai) && $nilai==0) or (is_bool($nilai) && $nilai==false)) ? "circle text-secondary" : "check-circle text-info"; $thasil = ((is_string($nilai) && ($nilai=="N" || $nilai=="0")) or (is_numeric($nilai) && $nilai==0) or (is_bool($nilai) && $nilai==false)) ? "circle text-secondary" : "check-circle text-info";
return '<i class="fs-6 bi bi-'.$thasil.'"></i>'; return '<i class="fs-6 bi-'.$thasil.'"></i>';
} }
} }
+3 -5
View File
@@ -38,7 +38,7 @@ final class Auth {
} }
public function user_data($user) { public function user_data($user) {
$adata = array(); $adata = [];
$this->__db->Query("SELECT *,DECODE(Menu,'".$this->__id_reg."') Menu2 FROM app_operator WHERE Username='".$this->__db->SafeSQL($user)."'"); $this->__db->Query("SELECT *,DECODE(Menu,'".$this->__id_reg."') Menu2 FROM app_operator WHERE Username='".$this->__db->SafeSQL($user)."'");
if ($this->__db->Next()) { if ($this->__db->Next()) {
$adata = $this->__db->AllRow(); $adata = $this->__db->AllRow();
@@ -50,14 +50,14 @@ final class Auth {
$_SESSION['APP_TOKEN'] = $_token; $_SESSION['APP_TOKEN'] = $_token;
$this->__db->Query("INSERT INTO app_token SET Token='".$_token."',UserID='".$adata['UserID']."',IP='".$_SERVER['REMOTE_ADDR']."'"); $this->__db->Query("INSERT INTO app_token SET Token='".$_token."',UserID='".$adata['UserID']."',IP='".$_SERVER['REMOTE_ADDR']."'");
} }
if (intval($adata['Grup_MenuID']) > 0) $adata['Menu_Grup'] = $this->user_allmenu($adata['Grup_MenuID']);
$adata['UNIX'] = time(); $adata['UNIX'] = time();
$adata['LOCALE'] = $_SESSION['__WEB_APP']['DEF_LOCALE']; $adata['LOCALE'] = $_SESSION['__WEB_APP']['DEF_LOCALE'];
return $adata; return $adata;
} }
public function gen_module_menu() { public function gen_module_menu() {
$amodul = array(); $amodul = []; $aallow = [];
$aallow = array();
if ($_SESSION['__WEB_APP']['APP_MODULE']) { if ($_SESSION['__WEB_APP']['APP_MODULE']) {
$this->__db->Query("SELECT * FROM app_menu_grup WHERE Grup_MenuID='".$_SESSION['__WEB_USER']['Grup_MenuID']."' LIMIT 1"); $this->__db->Query("SELECT * FROM app_menu_grup WHERE Grup_MenuID='".$_SESSION['__WEB_USER']['Grup_MenuID']."' LIMIT 1");
if ($this->__db->Next()) $aallow = ($this->__db->Row("Modul_Akses")=="") ? array() : explode(",", $this->__db->Row("Modul_Akses")); if ($this->__db->Next()) $aallow = ($this->__db->Row("Modul_Akses")=="") ? array() : explode(",", $this->__db->Row("Modul_Akses"));
@@ -94,8 +94,6 @@ final class Auth {
if (count($a_hasil) > 0) { if (count($a_hasil) > 0) {
$this->__db->Query("UPDATE app_operator SET Last_IP='".$a_hasil['Last_IP']."',Last_Date='".$a_hasil['Last_Date']."' WHERE UserID='".user_id()."'"); $this->__db->Query("UPDATE app_operator SET Last_IP='".$a_hasil['Last_IP']."',Last_Date='".$a_hasil['Last_Date']."' WHERE UserID='".user_id()."'");
} }
//$tgl_lalu = tgl_sql2str(tgl_operasi(tgl_dmy(), 0, -3));
//$this->__db->Query("DELETE FROM app_logs WHERE UserID='".user_id()."' AND Last_Date<'".$tgl_lalu."'");
$this->__db->Query("INSERT IGNORE INTO app_logs SELECT UserID,Token,IP,DateStamp FROM app_token WHERE Token='".$_SESSION['APP_TOKEN']."'"); $this->__db->Query("INSERT IGNORE INTO app_logs SELECT UserID,Token,IP,DateStamp FROM app_token WHERE Token='".$_SESSION['APP_TOKEN']."'");
} }
+4 -4
View File
@@ -150,12 +150,12 @@ final class Form {
} }
public function switch($tlabel="", $tfield, $tvalue=null, $benable=true, $breq=false, $aarr=array(), $thelp="", $tchange=null) { public function switch($tlabel="", $tfield, $tvalue=null, $benable=true, $breq=false, $aarr=array(), $thelp="", $tchange=null) {
$_key = array_keys($aarr); $_val = array_values($aarr); $_val = array_values($aarr);
$_enab = ($benable==true) ? "" : ' disabled=true'; $_enab = ($benable==true) ? "" : ' disabled=true';
$_req = ($breq==true) ? " required=true" : ""; $_req = ($breq==true) ? " required=true" : "";
$_change = ($tchange==null) ? ' onchange="this.value=(this.checked)?\''.$_key[0].'\':\''.$_key[1].'\';"' : ' onchange="this.value=(this.checked)?\''.$_key[0].'\':\''.$_key[1].'\';'.$tchange.'"'; $_change = ($tchange==null) ? ' onchange="this.value=(this.checked)?\''.$_val[0].'\':\''.$_val[1].'\';"' : ' onchange="this.value=(this.checked)?\''.$_val[0].'\':\''.$_val[1].'\';'.$tchange.'"';
$tout = '<div class="form-check form-switch"><input class="form-check-input me-0" id="'.$tfield.'" name="'.$tfield.'" type="checkbox" role="switch" value="'.$tvalue.'"'.$_enab.$_change.$_req; $tout = '<div class="form-check form-switch"><input class="form-check-input me-0" id="'.$tfield.'" name="'.$tfield.'" type="checkbox" role="switch" value="'.$tvalue.'"'.$_enab.$_change.$_req;
$tout .= ($_key[0] == $tvalue) ? ' checked="checked"' : ''; $tout .= ($_val[0] == $tvalue) ? ' checked="checked"' : '';
$tout .= '></div>'; $tout .= '></div>';
$this->__aform[$tfield] = array('label'=>$tlabel, 'help'=>$thelp, 'form'=>$tout); $this->__aform[$tfield] = array('label'=>$tlabel, 'help'=>$thelp, 'form'=>$tout);
return $tout; return $tout;
@@ -226,7 +226,7 @@ final class Form {
if ($tvalue<>null) $tvalue = tgl_sql2str($tvalue); if ($tvalue<>null) $tvalue = tgl_sql2str($tvalue);
$tout = '<div class="input-group">'; $tout = '<div class="input-group">';
$tout .= $this->textbox($tlabel, $tfield, $tvalue, $benable, $breq, "pickdate", "dd-mm-yyyy", 12, $thelp, $tkeyup, $tblur); $tout .= $this->textbox($tlabel, $tfield, $tvalue, $benable, $breq, "pickdate", "dd-mm-yyyy", 12, $thelp, $tkeyup, $tblur);
$tout .= '<span class="input-group-text"><i class="bi bi-calendar4"></i></span></div>'; $tout .= '<span class="input-group-text"><i class="bi-calendar4"></i></span></div>';
$this->__aform[$tfield] = array('label'=>$tlabel, 'help'=>$thelp, 'form'=>$tout); $this->__aform[$tfield] = array('label'=>$tlabel, 'help'=>$thelp, 'form'=>$tout);
return $tout; return $tout;
} }
+1 -1
View File
@@ -60,7 +60,7 @@ final class Menu {
} }
$ticon = ($amodul[$i]['Icon']) ? '<i class="me-2 '.$amodul[$i]['Icon'].'"></i>' : ""; $ticon = ($amodul[$i]['Icon']) ? '<i class="me-2 '.$amodul[$i]['Icon'].'"></i>' : "";
if (($amodul[$i]['Level']>=0) && (isset($amodul[$i+1]) && ($amodul[$i+1]['Level']>$amodul[$i]['Level']))) { if (($amodul[$i]['Level']>=0) && (isset($amodul[$i+1]) && ($amodul[$i+1]['Level']>$amodul[$i]['Level']))) {
$thasil .= '<li class="nav-item has-submenu"><a class="nav-link" title="'.$amodul[$i]['Judul'].'">'.$ticon.$amodul[$i]['Menu'].'<i class="icon bi-caret-down float-end"></i></a><ul class="submenu collapse">'; $thasil .= '<li class="nav-item has-submenu"><a class="nav-link" title="'.$amodul[$i]['Judul'].'">'.$ticon.$amodul[$i]['Menu'].'<i class="bi-caret-down float-end"></i></a><ul class="submenu collapse">';
} else if (trim($amodul[$i]['Menu'])=="-") { } else if (trim($amodul[$i]['Menu'])=="-") {
$thasil .= '<li class="nav-divider"></li>'; $thasil .= '<li class="nav-divider"></li>';
} else { } else {
+2
View File
@@ -16,6 +16,8 @@ declare(strict_types=1);
namespace siaupheng\fonia3\Web; namespace siaupheng\fonia3\Web;
use Pdo\Mysql;
final class Table { final class Table {
private $__ttable = ""; private $__ttable = "";
private $__tfield = ""; private $__tfield = "";