From 8b7001b5ef980de966e4784b764287531f49c57b Mon Sep 17 00:00:00 2001 From: Ibnu Maksum Date: Wed, 7 Sep 2022 14:44:04 +0700 Subject: [PATCH] tripay pg and list channels --- system/boot.php | 40 +++++++ system/controllers/community.php | 13 +++ system/controllers/order.php | 39 +++++++ system/controllers/paymentgateway.php | 77 +++++++++++++- system/controllers/prepaid.php | 4 +- system/controllers/register.php | 80 ++++++++++++-- system/controllers/routers.php | 30 +++++- system/controllers/settings.php | 12 +++ system/lan/indonesia/common.lan.php | 10 ++ system/paymentgateway/channel_midtrans.json | 82 ++++++++++++++ system/paymentgateway/channel_tripay.json | 92 ++++++++++++++++ system/paymentgateway/channel_xendit.json | 82 ++++++++++++++ ui/ui/app-midtrans.tpl | 16 ++- ui/ui/app-settings.tpl | 14 ++- ui/ui/app-tripay.tpl | 53 +++++++++ ui/ui/app-xendit.tpl | 8 ++ ui/ui/community.tpl | 112 ++++++++++++++++++++ ui/ui/dashboard.tpl | 14 +-- ui/ui/hotspot-add.tpl | 3 + ui/ui/sections/header.tpl | 14 +-- 20 files changed, 759 insertions(+), 36 deletions(-) create mode 100644 system/controllers/community.php create mode 100644 system/controllers/order.php create mode 100644 system/paymentgateway/channel_midtrans.json create mode 100644 system/paymentgateway/channel_tripay.json create mode 100644 system/paymentgateway/channel_xendit.json create mode 100644 ui/ui/app-tripay.tpl create mode 100644 ui/ui/community.tpl diff --git a/system/boot.php b/system/boot.php index 9d0fd4de..67fa438b 100644 --- a/system/boot.php +++ b/system/boot.php @@ -47,6 +47,13 @@ function _get($param, $defvalue = '') } } +class Lang { + public static function T($var) { + return Lang($var); + } +} + + require('system/orm.php'); ORM::configure("mysql:host=$db_host;dbname=$db_name"); @@ -175,6 +182,29 @@ function _log($description, $type = '', $userid = '0') $d->save(); } +function Lang($key){ + global $_L,$lan_file; + if(!empty($_L[$key])){ + return $_L[$key]; + } + $val = $key; + $key = alphanumeric($key," "); + if(!empty($_L[$key])){ + return $_L[$key]; + }else if(!empty($_L[str_replace(' ','_',$key)])){ + return $_L[str_replace(' ','_',$key)]; + }else{ + $key = str_replace(' ','_',$key); + file_put_contents($lan_file, "$"."_L['$key'] = '".addslashes($val)."';\n", FILE_APPEND); + return $val; + } +} + +function alphanumeric($str, $tambahan = "") +{ + return preg_replace("/[^a-zA-Z0-9" . $tambahan . "]+/", "", $str); +} + function sendTelegram($txt) { @@ -195,6 +225,16 @@ function sendSMS($phone, $txt) } } +function sendWhatsapp($phone, $txt) +{ + global $_c; + if(!empty($_c['wa_url'])){ + $waurl = str_replace('[number]',urlencode($phone),$_c['wa_url']); + $waurl = str_replace('[text]',urlencode($txt),$waurl); + file_get_contents($waurl); + } +} + function time_elapsed_string($datetime, $full = false) { diff --git a/system/controllers/community.php b/system/controllers/community.php new file mode 100644 index 00000000..6bcd10e8 --- /dev/null +++ b/system/controllers/community.php @@ -0,0 +1,13 @@ +assign('_title', 'Community - '. $config['CompanyName']); +$ui->assign('_system_menu', 'community'); + +$action = $routes['1']; +$admin = Admin::_info(); +$ui->assign('_admin', $admin); + +$ui->display('community.tpl'); \ No newline at end of file diff --git a/system/controllers/order.php b/system/controllers/order.php new file mode 100644 index 00000000..00f2b157 --- /dev/null +++ b/system/controllers/order.php @@ -0,0 +1,39 @@ +assign('_system_menu', 'order'); +$action = $routes['1']; +$user = User::_info(); +$ui->assign('_user', $user); + +//Client Page +$bill = User::_billing(); +$ui->assign('_bill', $bill); + + +switch ($action) { + case 'voucher': + $ui->assign('_title', $_L['Order_Voucher'].' - '. $config['CompanyName']); + $ui->display('user-order.tpl'); + break; + case 'ppoe': + $ui->assign('_title', 'Order PPOE Internet- '. $config['CompanyName']);$routers = ORM::for_table('tbl_routers')->find_many(); + $plans = ORM::for_table('tbl_plans')->where('type', 'PPPOE')->find_many(); + $ui->assign('routers',$routers); + $ui->assign('plans', $plans); + $ui->display('user-orderPPOE.tpl'); + break; + case 'hotspot': + $ui->assign('_title', 'Order Hotspot Internet- '. $config['CompanyName']); + $routers = ORM::for_table('tbl_routers')->find_many(); + $plans = ORM::for_table('tbl_plans')->where('type', 'Hotspot')->find_many(); + $ui->assign('routers',$routers); + $ui->assign('plans', $plans); + $ui->display('user-orderHotspot.tpl'); + break; + default: + $ui->display('404.tpl'); +} + diff --git a/system/controllers/paymentgateway.php b/system/controllers/paymentgateway.php index 52c0fff0..5421f4d9 100644 --- a/system/controllers/paymentgateway.php +++ b/system/controllers/paymentgateway.php @@ -12,6 +12,7 @@ $ui->assign('_admin', $admin); switch ($action) { case 'xendit': $ui->assign('_title', 'Xendit - Payment Gateway - '. $config['CompanyName']); + $ui->assign('channels', json_decode(file_get_contents('system/paymentgateway/channel_xendit.json'), true)); $ui->display('app-xendit.tpl'); break; case 'xendit-post': @@ -37,6 +38,16 @@ switch ($action) { $d->value = $xendit_verification_token; $d->save(); } + $d = ORM::for_table('tbl_appconfig')->where('setting', 'xendit_channel')->find_one(); + if($d){ + $d->value = implode(',',$_POST['xendit_channel']); + $d->save(); + }else{ + $d = ORM::for_table('tbl_appconfig')->create(); + $d->setting = 'xendit_channel'; + $d->value = implode(',',$_POST['xendit_channel']); + $d->save(); + } _log('[' . $admin['username'] . ']: Xendit ' . $_L['Settings_Saved_Successfully'], 'Admin', $admin['id']); @@ -44,7 +55,7 @@ switch ($action) { break; case 'midtrans': $ui->assign('_title', 'Midtrans - Payment Gateway - '. $config['CompanyName']); - + $ui->assign('channels', json_decode(file_get_contents('system/paymentgateway/channel_midtrans.json'), true)); $ui->display('app-midtrans.tpl'); break; case 'midtrans-post': @@ -81,9 +92,73 @@ switch ($action) { $d->value = $midtrans_server_key; $d->save(); } + $d = ORM::for_table('tbl_appconfig')->where('setting', 'midtrans_channel')->find_one(); + if($d){ + $d->value = implode(',',$_POST['midtrans_channel']); + $d->save(); + }else{ + $d = ORM::for_table('tbl_appconfig')->create(); + $d->setting = 'midtrans_channel'; + $d->value = implode(',',$_POST['midtrans_channel']); + $d->save(); + } _log('[' . $admin['username'] . ']: Midtrans ' . $_L['Settings_Saved_Successfully'], 'Admin', $admin['id']); r2(U . 'paymentgateway/midtrans', 's', $_L['Settings_Saved_Successfully']); break; + case 'tripay': + $ui->assign('_title', 'Tripay - Payment Gateway - '. $config['CompanyName']); + $ui->assign('channels', json_decode(file_get_contents('system/paymentgateway/channel_tripay.json'), true)); + $ui->display('app-tripay.tpl'); + break; + case 'tripay-post': + $tripay_merchant = _post('tripay_merchant'); + $tripay_api_key = _post('tripay_api_key'); + $tripay_secret_key = _post('tripay_secret_key'); + $d = ORM::for_table('tbl_appconfig')->where('setting', 'tripay_merchant')->find_one(); + if($d){ + $d->value = $tripay_merchant; + $d->save(); + }else{ + $d = ORM::for_table('tbl_appconfig')->create(); + $d->setting = 'tripay_merchant'; + $d->value = $tripay_merchant; + $d->save(); + } + $d = ORM::for_table('tbl_appconfig')->where('setting', 'tripay_api_key')->find_one(); + if($d){ + $d->value = $tripay_api_key; + $d->save(); + }else{ + $d = ORM::for_table('tbl_appconfig')->create(); + $d->setting = 'tripay_api_key'; + $d->value = $tripay_api_key; + $d->save(); + } + $d = ORM::for_table('tbl_appconfig')->where('setting', 'tripay_secret_key')->find_one(); + if($d){ + $d->value = $tripay_secret_key; + $d->save(); + }else{ + $d = ORM::for_table('tbl_appconfig')->create(); + $d->setting = 'tripay_secret_key'; + $d->value = $tripay_secret_key; + $d->save(); + } + $d = ORM::for_table('tbl_appconfig')->where('setting', 'tripay_channel')->find_one(); + if($d){ + $d->value = implode(',',$_POST['tripay_channel']); + $d->save(); + }else{ + $d = ORM::for_table('tbl_appconfig')->create(); + $d->setting = 'tripay_channel'; + $d->value = implode(',',$_POST['tripay_channel']); + $d->save(); + } + + _log('[' . $admin['username'] . ']: Tripay ' . $_L['Settings_Saved_Successfully'].json_encode($_POST['tripay_channel']), 'Admin', $admin['id']); + + r2(U . 'paymentgateway/tripay', 's', $_L['Settings_Saved_Successfully']); + break; } diff --git a/system/controllers/prepaid.php b/system/controllers/prepaid.php index 9306710d..eb74fb9d 100644 --- a/system/controllers/prepaid.php +++ b/system/controllers/prepaid.php @@ -406,7 +406,7 @@ switch ($action) { $in = ORM::for_table('tbl_transactions')->where('username', $c['username'])->order_by_desc('id')->find_one(); $ui->assign('in', $in); - sendSMS($c['username'], "*$_c[CompanyName]*\n". + sendWhatsapp($c['username'], "*$_c[CompanyName]*\n". "$_c[address]\n". "$_c[phone]\n". "\n\n". @@ -1050,7 +1050,7 @@ switch ($action) { $ui->assign('in', $in); - sendSMS($c['username'], "*$_c[CompanyName]*\n". + sendWhatsapp($c['username'], "*$_c[CompanyName]*\n". "$_c[address]\n". "$_c[phone]\n". "\n\n". diff --git a/system/controllers/register.php b/system/controllers/register.php index df71b937..7576e90a 100644 --- a/system/controllers/register.php +++ b/system/controllers/register.php @@ -18,9 +18,11 @@ use PEAR2\Net\RouterOS; require_once 'system/autoload/PEAR2/Autoload.php'; +$otpPath = 'system/uploads/sms/'; + switch ($do) { case 'post': - + $otp_code = _post('otp_code'); $username = _post('username'); $fullname = _post('fullname'); $password = _post('password'); @@ -41,6 +43,32 @@ switch ($do) { $msg .= $_L['PasswordsNotMatch'] . '
'; } + if(!empty($_c['sms_url'])){ + $otpPath .= sha1($username.$db_password).".txt"; + if(file_exists($otpPath) && time()-filemtime($otpPath)>300){ + unlink($otpPath); + r2(U . 'register', 's', 'Verification code expired'); + }else if(file_exists($otpPath)){ + $code = file_get_contents($otpPath); + if($code!=$otp_code){ + $ui->assign('username', $username); + $ui->assign('fullname', $fullname); + $ui->assign('address', $address); + $ui->assign('phonenumber', $phonenumber); + $ui->assign('notify', '
+ +
Verification code is Wrong
'); + $ui->display('register-otp.tpl'); + exit(); + }else{ + unlink($otpPath); + } + }else{ + r2(U . 'register', 's', 'No Verification code'); + } + } $d = ORM::for_table('tbl_customers')->where('username', $username)->find_one(); if ($d) { $msg .= $_L['account_already_exist'] . '
'; @@ -65,9 +93,8 @@ switch ($do) {
Failed to register
'); - $ui->display('register.tpl'); + r2(U . 'register', 's', 'Failed to register'); } - //r2(U . 'register', 's', $_L['account_created_successfully']); } else { $ui->assign('username', $username); $ui->assign('fullname', $fullname); @@ -83,10 +110,47 @@ switch ($do) { break; default: - $ui->assign('username', ""); - $ui->assign('fullname', ""); - $ui->assign('address', ""); - $ui->assign('phonenumber', ""); - $ui->display('register.tpl'); + if(!empty($_c['sms_url'])){ + $username = _post('username'); + if(!empty($username)){ + $d = ORM::for_table('tbl_customers')->where('username', $username)->find_one(); + if ($d) { + r2(U . 'register', 's', $_L['account_already_exist']); + } + if(!file_exists($otpPath)){ + mkdir($otpPath); + touch($otpPath.'index.html'); + } + $otpPath .= sha1($username.$db_password).".txt"; + if(file_exists($otpPath) && time()-filemtime($otpPath)<120){ + $ui->assign('username', $username); + $ui->assign('notify', '
+ +
Please wait '.(120-(time()-filemtime($otpPath))).' seconds before sending another SMS
'); + $ui->display('register-otp.tpl'); + }else{ + $otp = rand(100000,999999); + file_put_contents($otpPath, $otp); + sendSMS($username,$_c['CompanyName']."\nYour Verification code are: $otp"); + $ui->assign('username', $username); + $ui->assign('notify', '
+ +
Verification code has been sent to your phone
'); + $ui->display('register-otp.tpl'); + } + }else{ + $ui->display('register-rotp.tpl'); + } + }else{ + $ui->assign('username', ""); + $ui->assign('fullname', ""); + $ui->assign('address', ""); + $ui->assign('otp', false); + $ui->display('register.tpl'); + } break; } diff --git a/system/controllers/routers.php b/system/controllers/routers.php index 190c91ae..9acd9adf 100644 --- a/system/controllers/routers.php +++ b/system/controllers/routers.php @@ -130,9 +130,17 @@ switch ($action) { } if($d['name'] != $name){ - $c = ORM::for_table('tbl_routers')->where('ip_address',$ip_address)->find_one(); + $c = ORM::for_table('tbl_routers')->where('name',$name)->where_not_equal('id',$id)->find_one(); if($c){ - $msg .= $_L['Router_already_exist']. '
'; + $msg .= 'Name Already Exists
'; + } + } + $oldname = $d['name']; + + if($d['ip_address'] != $ip_address){ + $c = ORM::for_table('tbl_routers')->where('ip_address',$ip_address)->where_not_equal('id',$id)->find_one(); + if($c){ + $msg .= 'IP Already Exists
'; } } @@ -152,6 +160,24 @@ switch ($action) { $d->password = $password; $d->description = $description; $d->save(); + $p = ORM::for_table('tbl_plans')->where('routers',$oldname)->find_result_set(); + $p->set('routers',$name); + $p->save(); + $p = ORM::for_table('tbl_payment_gateway')->where('routers',$oldname)->find_result_set(); + $p->set('routers',$name); + $p->save(); + $p = ORM::for_table('tbl_pool')->where('routers',$oldname)->find_result_set(); + $p->set('routers',$name); + $p->save(); + $p = ORM::for_table('tbl_transactions')->where('routers',$oldname)->find_result_set(); + $p->set('routers',$name); + $p->save(); + $p = ORM::for_table('tbl_user_recharges')->where('routers',$oldname)->find_result_set(); + $p->set('routers',$name); + $p->save(); + $p = ORM::for_table('tbl_voucher')->where('routers',$oldname)->find_result_set(); + $p->set('routers',$name); + $p->save(); r2(U . 'routers/list', 's', $_L['Updated_Successfully']); }else{ r2(U . 'routers/edit/'.$id, 'e', $msg); diff --git a/system/controllers/settings.php b/system/controllers/settings.php index 8aa24954..74b5b160 100644 --- a/system/controllers/settings.php +++ b/system/controllers/settings.php @@ -203,6 +203,7 @@ switch ($action) { $telegram_bot = _post('telegram_bot'); $telegram_target_id = _post('telegram_target_id'); $sms_url = _post('sms_url'); + $wa_url = _post('wa_url'); $address = _post('address'); $payment_gateway = _post('payment_gateway'); if ($company == '') { @@ -254,6 +255,17 @@ switch ($action) { $d->save(); } + $d = ORM::for_table('tbl_appconfig')->where('setting', 'wa_url')->find_one(); + if($d){ + $d->value = $wa_url; + $d->save(); + }else{ + $d = ORM::for_table('tbl_appconfig')->create(); + $d->setting = 'wa_url'; + $d->value = $wa_url; + $d->save(); + } + $d = ORM::for_table('tbl_appconfig')->where('setting', 'payment_gateway')->find_one(); if($d){ $d->value = $payment_gateway; diff --git a/system/lan/indonesia/common.lan.php b/system/lan/indonesia/common.lan.php index a8fef15c..6259ed43 100644 --- a/system/lan/indonesia/common.lan.php +++ b/system/lan/indonesia/common.lan.php @@ -244,3 +244,13 @@ $_L['Name_Lang'] = 'Nama Bahasa'; $_L['Folder_Lang'] = 'Nama Folder'; $_L['Translator'] = 'Translator'; $_L['Lang_already_exist'] = 'Nama bahasa sudah ada'; +$_L['Payment_Gateway'] = 'Payment Gateway'; +$_L['Community'] = 'Community'; +$_L['Cannot_be_change_after_saved'] = 'Cannot be change after saved'; +$_L['1_user_can_be_used_for_many_devices'] = '1 user can be used for many devices?'; +$_L['Cannot_be_change_after_saved'] = 'Cannot be change after saved'; + +$_L['Explain_Coverage_of_router'] = 'Jelaskan Cakupan wilayah hotspot'; +$_L['Name_of_Area_that_router_operated'] = 'Nama Lokasi/Wilayah Router beroperasi'; +$_L['Payment_Notification_URL_Recurring_Notification_URL_Pay_Account_Notification_URL'] = 'Payment Notification URL, Recurring Notification URL, Pay Account Notification URL'; +$_L['Finish_Redirect_URL_Unfinish_Redirect_URL_Error_Redirect_URL'] = 'Finish Redirect URL, Unfinish Redirect URL, Error Redirect URL'; diff --git a/system/paymentgateway/channel_midtrans.json b/system/paymentgateway/channel_midtrans.json new file mode 100644 index 00000000..7794c156 --- /dev/null +++ b/system/paymentgateway/channel_midtrans.json @@ -0,0 +1,82 @@ +[ + { + "id": "credit_card", + "name": "Credit Card", + "min": 10000 + }, + { + "id": "bca_va", + "name": "BCA", + "min": 10000 + }, + { + "id": "permata_va", + "name": "Permata", + "min": 10000 + }, + { + "id": "bni_va", + "name": "BNI", + "min": 10000 + }, + { + "id": "bri_va", + "name": "BRI", + "min": 10000 + }, + { + "id": "echannel", + "name": "Mandiri Bill", + "min": 10000 + }, + { + "id": "gopay", + "name": "Gopay", + "min": 1000 + }, + { + "id": "bca_klikbca", + "name": "KLIKBCA", + "min": 10000 + }, + { + "id": "bca_klikpay", + "name": "BCA KLIKPAY", + "min": 10000 + }, + { + "id": "cimb_clicks", + "name": "CIMB Clicks", + "min": 10000 + }, + { + "id": "danamon_online", + "name": "Danamon", + "min": 5000 + }, + { + "id": "bri_epay", + "name": "BRImo", + "min": 10000 + }, + { + "id": "indomaret", + "name": "Indomaret", + "min": 5000 + }, + { + "id": "alfamart", + "name": "Alfamart", + "min": 5000 + }, + { + "id": "ShopeePay", + "name": "ShopeePay", + "min": 1000 + }, + { + "id": "uob_ezpay", + "name": "UOB EZ Pay", + "min": 1000 + } +] diff --git a/system/paymentgateway/channel_tripay.json b/system/paymentgateway/channel_tripay.json new file mode 100644 index 00000000..9f1d8b78 --- /dev/null +++ b/system/paymentgateway/channel_tripay.json @@ -0,0 +1,92 @@ +[ + { + "id": "PERMATAVA", + "name": "Permata Bank", + "min": 10000 + }, + { + "id": "MYBVA", + "name": "Maybank", + "min": 10000 + }, + { + "id": "BNIVA", + "name": "BNI", + "min": 10000 + }, + { + "id": "BRIVA", + "name": "BRI", + "min": 10000 + }, + { + "id": "MANDIRIVA", + "name": "Mandiri", + "min": 10000 + }, + { + "id": "BCAVA", + "name": "BCA", + "min": 10000 + }, + { + "id": "SMSVA", + "name": "Sinarmas", + "min": 10000 + }, + { + "id": "MUAMALATVA", + "name": "Muamalat", + "min": 10000 + }, + { + "id": "SAMPOERNAVA", + "name": "Sahabat Sampoerna", + "min": 10000 + }, + { + "id": "BSIVA", + "name": "BSI", + "min": 10000 + }, + { + "id": "ALFAMART", + "name": "Alfamart ", + "min": 5000 + }, + { + "id": "INDOMARET", + "name": "Indomaret ", + "min": 10000 + }, + { + "id": "ALFAMIDI", + "name": "Alfamidi ", + "min": 5000 + }, + { + "id": "OVO", + "name": "OVO", + "min": 1000 + }, + { + "id": "QRIS", + "name": "QRIS by ShopeePay", + "min": 1000 + }, + { + "id": "QRISC", + "name": "QRIS (Customizable)", + "min": 1000 + }, + { + "id": "QRIS2", + "name": "QRIS", + "min": 1000 + }, + { + "id": "SHOPEEPAY", + "name": "ShopeePay ", + "min": 1000 + } +] diff --git a/system/paymentgateway/channel_xendit.json b/system/paymentgateway/channel_xendit.json new file mode 100644 index 00000000..00afe33b --- /dev/null +++ b/system/paymentgateway/channel_xendit.json @@ -0,0 +1,82 @@ +[ + { + "id": "CREDIT_CARD", + "name": "CREDIT CARD", + "min": 10000 + }, + { + "id": "PERMATA", + "name": "Permata Bank", + "min": 10000 + }, + { + "id": "BNI", + "name": "BNI", + "min": 10000 + }, + { + "id": "BRI", + "name": "BRI", + "min": 10000 + }, + { + "id": "MANDIRI", + "name": "Mandiri", + "min": 10000 + }, + { + "id": "BCA", + "name": "BCA", + "min": 10000 + }, + { + "id": "BSI", + "name": "BSI", + "min": 10000 + }, + { + "id": "DD_BRI", + "name": "Direct Debit BRI", + "min": 10000 + }, + { + "id": "DD_BCA_KLIKPAY", + "name": "Direct Debit BCA KLIKPAY", + "min": 10000 + }, + { + "id": "ALFAMART", + "name": "Alfamart ", + "min": 5000 + }, + { + "id": "INDOMARET", + "name": "Indomaret ", + "min": 10000 + }, + { + "id": "OVO", + "name": "OVO", + "min": 1000 + }, + { + "id": "DANA", + "name": "DANA", + "min": 1000 + }, + { + "id": "LINKAJA", + "name": "LinkAja", + "min": 1000 + }, + { + "id": "SHOPEEPAY", + "name": "ShopeePay ", + "min": 1000 + }, + { + "id": "QRIS", + "name": "QRIS", + "min": 1000 + } +] diff --git a/ui/ui/app-midtrans.tpl b/ui/ui/app-midtrans.tpl index 7a19ce89..c3b7000d 100644 --- a/ui/ui/app-midtrans.tpl +++ b/ui/ui/app-midtrans.tpl @@ -28,8 +28,8 @@
- -

Payment Notification URL, Recurring Notification URL, Pay Account Notification URL

+ +

{Lang::T('Payment Notification URL, Recurring Notification URL, Pay Account Notification URL')}

https://dashboard.midtrans.com/settings/vtweb_configuration
@@ -37,11 +37,19 @@
- -

Finish Redirect URL, Unfinish Redirect URL, Error Redirect URL

+ +

{Lang::T('Finish Redirect URL, Unfinish Redirect URL, Error Redirect URL')}

https://dashboard.midtrans.com/settings/vtweb_configuration
+
+ +
+ {foreach $channels as $channel} + + {/foreach} +
+
diff --git a/ui/ui/app-settings.tpl b/ui/ui/app-settings.tpl index 500e35de..fec09055 100644 --- a/ui/ui/app-settings.tpl +++ b/ui/ui/app-settings.tpl @@ -52,12 +52,22 @@
+
SMS OTP Registration
+
+
+ +
+ +

Must include [text] & [number], it will be replaced.

+
+
+
Whatsapp Notification
- +
- +

Must include [text] & [number], it will be replaced.

diff --git a/ui/ui/app-tripay.tpl b/ui/ui/app-tripay.tpl new file mode 100644 index 00000000..c2d2f101 --- /dev/null +++ b/ui/ui/app-tripay.tpl @@ -0,0 +1,53 @@ +{include file="sections/header.tpl"} + +
+
+
+
+
Tripay
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ {foreach $channels as $channel} + + {/foreach} +
+
+
+
+ + Daftar Tripay +
+
+
+
+ +
+
+
+{include file="sections/footer.tpl"} diff --git a/ui/ui/app-xendit.tpl b/ui/ui/app-xendit.tpl index f1e4d693..a3f043af 100644 --- a/ui/ui/app-xendit.tpl +++ b/ui/ui/app-xendit.tpl @@ -28,6 +28,14 @@ https://dashboard.xendit.co/settings/developers#callbacks
+
+ +
+ {foreach $channels as $channel} + + {/foreach} +
+
diff --git a/ui/ui/community.tpl b/ui/ui/community.tpl new file mode 100644 index 00000000..bb20bb6a --- /dev/null +++ b/ui/ui/community.tpl @@ -0,0 +1,112 @@ +{include file="sections/header.tpl"} + +
+
+
+
Discussions
+
Get help from community
+ +
+
+
+
+
Feedback
+
+ Feedback and Bug Report +
+ +
+
+
+ +
+
+
+
Donasi
+
Untuk pengembangan lebih baik, donasi ke iBNuX, donasi akan membantu terus pengembangan aplikasi
+
+ + + + + + + + + + + + + + + +
BCA5410-454-825
Mandiri163-000-1855-793
Atas namaIbnu Maksum
+
+ +
+
+
+
+
Donations
+
+ Donations will help to continue phpmixbill development +
+
+ + + + + + + + + + + + + + + + + + + +
Bank Central Asia5410-454-825
SWIFT/BICCENAIDJA
JakartaIndonesia
Account NameIbnu Maksum
+
+ +
+
+
+
+
+
+
Chat with me
+
Paid Support?
donation confirmation?
Or ask any Donation Alternative
+ +
+
+
+
+
PHPMIXBILL
+
+ {$_L['Welcome_Text_Admin']} +
+
+
+
+ +{include file="sections/footer.tpl"} diff --git a/ui/ui/dashboard.tpl b/ui/ui/dashboard.tpl index b0481791..2ed62919 100644 --- a/ui/ui/dashboard.tpl +++ b/ui/ui/dashboard.tpl @@ -84,7 +84,7 @@
Vouchers Stock
-
+
@@ -137,7 +137,7 @@ - +
{$_L['Activity_Log']}
@@ -153,14 +153,8 @@
-
-
PHPMIXBILL
-
- {$_L['Welcome_Text_Admin']} -
-
- + {else}
@@ -204,7 +198,7 @@

{date($_c['date_format'], strtotime($_bill['expiration']))} {$_bill['time']}

- + diff --git a/ui/ui/hotspot-add.tpl b/ui/ui/hotspot-add.tpl index abaf8b5c..d3338abc 100644 --- a/ui/ui/hotspot-add.tpl +++ b/ui/ui/hotspot-add.tpl @@ -11,6 +11,7 @@
+

{Lang::T('Cannot be change after saved')}

@@ -79,6 +80,7 @@
+

{Lang::T('1 user can be used for many devices?')}

@@ -103,6 +105,7 @@ {/foreach} +

{Lang::T('Cannot be change after saved')}

diff --git a/ui/ui/sections/header.tpl b/ui/ui/sections/header.tpl index d320375c..2ef93717 100644 --- a/ui/ui/sections/header.tpl +++ b/ui/ui/sections/header.tpl @@ -23,7 +23,6 @@ - @@ -53,7 +52,7 @@
  • @@ -265,19 +264,20 @@
  • - Payment Gateway + {Lang::T('Payment Gateway')}
  • -
  • - - - Discussions +
  • + + + {Lang::T('Community')}
  • {/if}