diff --git a/ui/ui/.DS_Store b/ui/ui/.DS_Store new file mode 100644 index 0000000..896961e Binary files /dev/null and b/ui/ui/.DS_Store differ diff --git a/ui/ui/404.tpl b/ui/ui/404.tpl new file mode 100644 index 0000000..2820426 --- /dev/null +++ b/ui/ui/404.tpl @@ -0,0 +1,17 @@ +{include file="sections/user-header.tpl"} +
+
+
+
+
+ +

404

+ Go to Dashboard +
+
+
+
+
+ +{include file="sections/user-footer.tpl"} \ No newline at end of file diff --git a/ui/ui/a404.tpl b/ui/ui/a404.tpl new file mode 100644 index 0000000..7ee1754 --- /dev/null +++ b/ui/ui/a404.tpl @@ -0,0 +1,54 @@ + + + + + + + + + + + + + Admin Dashboard + + + + + + +
+
+
+
+
+
+ +

404

+ Go to Dashboard +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ui/ui/admin-login.tpl b/ui/ui/admin-login.tpl new file mode 100644 index 0000000..8107fc4 --- /dev/null +++ b/ui/ui/admin-login.tpl @@ -0,0 +1,58 @@ + + + + + + + + + + + + + {Lang::T('Login')} - {$_c['CompanyName']} + + + + + + + +
+ +
{$_c['CompanyName']} - Admin
+ {if isset($notify)} + {$notify} + {/if} +
+ + +
+
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ui/ui/alert.tpl b/ui/ui/alert.tpl new file mode 100644 index 0000000..04a5407 --- /dev/null +++ b/ui/ui/alert.tpl @@ -0,0 +1,75 @@ + + + + + + + + + + + + + {Lang::T('Login')} - {$_c['CompanyName']} + + + + + + + + + + +
+
+
+
+
+
+

{ucwords(Lang::T($type))}

+
{$text}
+ {Lang::T('Click Here')} ({$time}) + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ui/ui/app-localisation.tpl b/ui/ui/app-localisation.tpl new file mode 100644 index 0000000..6da3791 --- /dev/null +++ b/ui/ui/app-localisation.tpl @@ -0,0 +1,159 @@ +{include file="sections/header.tpl"} +
+
+
+
+
+
+
{Lang::T('Localisation')}
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+ {Lang::T('Keep it blank if you do not want to + show currency code')} +
+
+ +
+
+ + + +
+
+
+
+
+ +
+ +
+ {Lang::T('Change title in user Plan + order')} +
+
+ +
+ +
+ {Lang::T('Change title in user Plan + order')} +
+
+ +
+ +
+ {Lang::T('Change title in user Plan + order')} +
+
+
+ +
+
+
+
+
+
+
+
+
+{include file="sections/footer.tpl"} \ No newline at end of file diff --git a/ui/ui/app-notifications.tpl b/ui/ui/app-notifications.tpl new file mode 100644 index 0000000..b701f29 --- /dev/null +++ b/ui/ui/app-notifications.tpl @@ -0,0 +1,478 @@ +{include file="sections/header.tpl"} + + + + + +
+
+
+
+
+
+
+
+
+
{Lang::T('Messages Settings')}
+
+ +
+
+
+
+
+
+ {Lang::T('Expiration & Reminder Messages')} +
+
+ + + +
+
+ +
+ +
+
+ + +
+
+ + +
+
+ +

+ [[name]] Customer Name | [[username]] Customer username | [[package]] Package name | [[price]] Package price | [[plan_type]] Service type (Hotspot/PPPoE) | [[service_portal]] Hotspot portal URL | [[support_contact]] Support contact | [[expired_date]] Expiration date | [[bills]] Additional bills +

+
+
+ +
+
+ + +
+
+ + +
+
+

+ [[name]] Customer Name | [[username]] Customer username | [[package]] Package name | [[price]] Package price | [[expired_date]] Expiration date | [[service_portal]] Hotspot portal URL | [[support_contact]] Support contact | [[bills]] Additional bills +

+
+
+ +
+
+ + +
+
+ + +
+
+

+ [[name]] Customer Name | [[username]] Customer username | [[package]] Package name | [[price]] Package price | [[expired_date]] Expiration date | [[service_portal]] Hotspot portal URL | [[support_contact]] Support contact | [[bills]] Additional bills +

+
+
+ +
+
+ + +
+
+ + +
+
+

+ [[name]] Customer Name | [[username]] Customer username | [[package]] Package name | [[price]] Package price | [[expired_date]] Expiration date | [[service_portal]] Hotspot portal URL | [[support_contact]] Support contact | [[bills]] Additional bills +

+
+
+ + +
+
+ Debug Information +
+
+
+
Troubleshooting Expiry Messages
+

If expiry messages are not working, check the following:

+
    +
  • Cron Job: Ensure cron jobs are running: php system/cron.php
  • +
  • Notification Settings: Check that "Expired Notification" is enabled in App Settings
  • +
  • SMS/WhatsApp Configuration: Verify SMS/WhatsApp settings are properly configured
  • +
  • Phone Numbers: Ensure customers have valid phone numbers in their profiles
  • +
  • Plan Type Detection: Check that plans have correct 'type' field (Hotspot/PPPOE)
  • +
+
+
+ Current Notification Settings:
+ + Expired: {$_c['user_notification_expired']|default:'Not Set'}
+ Reminder: {$_c['user_notification_reminder']|default:'Not Set'}
+ SMS URL: {$_c['sms_url']|default:'Not Set'}
+ WhatsApp URL: {$_c['wa_url']|default:'Not Set'} +
+
+
+ Test Cron Job:
+ +
+
+
+
+ +
+
+ {Lang::T('Payment & Invoice Messages')} +
+
+
+ +
+ +
+

+ [[company_name]] Your Company Name at Settings. + [[address]] Your Company Address at Settings. + [[phone]] Your Company Phone at Settings. + [[invoice]] invoice number. + [[date]] Date invoice created. + [[payment_gateway]] Payment gateway user paid from. + [[payment_channel]] Payment channel user paid from. + [[type]] is Hotspot/PPPOE. + [[plan_name]] Internet Package. + [[plan_price]] Internet Package Prices. + [[name]] Receiver name. + [[user_name]] Username internet. + [[user_password]] User password. + [[expired_date]] Expired datetime. + [[footer]] Invoice Footer. + [[note]] For Notes by admin. +

+
+
+ +
+ +
+

+ [[company_name]] Your Company Name at Settings. + [[address]] Your Company Address at Settings. + [[phone]] Your Company Phone at Settings. + [[invoice]] invoice number. + [[date]] Date invoice created. + [[payment_gateway]] Payment gateway user paid from. + [[payment_channel]] Payment channel user paid from. + [[type]] is Hotspot/PPPOE. + [[plan_name]] Internet Package. + [[plan_price]] Internet Package Prices. + [[name]] Receiver name. + [[user_name]] Username internet. + [[user_password]] User password. + [[trx_date]] Transaction datetime. + [[balance_before]] Balance Before. + [[balance]] Balance After. + [[footer]] Invoice Footer. +

+
+ {if $_c['enable_balance'] == 'yes'} +
+
+ +
+ +
+

+ [[name]] Receiver name. + [[balance]] how much balance have been send. + [[current_balance]] Current Balance. +

+
+
+
+
+ +
+ +
+

+ [[name]] Sender name. + [[balance]] how much balance have been received. + [[current_balance]] Current Balance. +

+
+
+ {/if} +
+
+
+ {Lang::T('Registration Messages')} +
+
+
+ +
+ +
+

+ [[company_name]] Your Company Name from Settings. + [[name]] Customer's full name. + [[user_name]] Customer's username. + [[username]] Customer's username (alternative). + [[password]] Customer's password. + [[service_type]] Service type (Hotspot/PPPOE). + [[footer]] Company footer message. +

+
+
+
+ +
+
+
+
+
+
+ +
+{include file="sections/footer.tpl"} \ No newline at end of file diff --git a/ui/ui/app-settings.tpl b/ui/ui/app-settings.tpl new file mode 100644 index 0000000..51a9ed8 --- /dev/null +++ b/ui/ui/app-settings.tpl @@ -0,0 +1,709 @@ +{include file="sections/header.tpl"} +
+
+
+
+
+
+ +
+
{Lang::T('General Settings')}
+
+ +
+
+
+ +
+ +
+ +
+ {Lang::T('This Name will be shown on the Title')} +
+ +
+ +
+ + For PDF Reports | Best size 1078 x 200 | uploaded image will be autosize +
+ + + logo for PDF + + +
+ +
+ +
+ +
+ {Lang::T('Will show below user pages')} +
+ +
+ +
+ +
+ {Lang::T('You can use html tag')} +
+ +
+ +
+ +
+
+
+ +
+ +
+

{Lang::T('URL for hotspot user portal (used in notifications)')}

+
+ +
+ +
+ + {Lang::T('You can use html tag')} +
+
+ +
+ +
+ +
+ For invoice print using Thermal Printer +
+ +
+ +
+ +
+
+ +
+ +
+ +
+

edit at config.php

+
+
+
+ +
+ + +
+
+
Hide Dashboard Content
+
+ +
+
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+ +
+ + +
+
+
{Lang::T('Voucher')}
+
+ +
+
+
+
+ +
+ +
+

{Lang::T('Voucher activation menu will be hidden')}

+
+ +
+ +
+ +
+

UPPERCASE lowercase RaNdoM

+
+ + {if $_c['disable_voucher'] != 'yes'} +
+ +
+ +
+

+ {Lang::T('Customer just Login with Phone number and Voucher Code, Voucher will be password')} +

+
+ +
+ +
+ +
+

+ {Lang::T('After Customer activate voucher or login, customer will be redirected to this url')} +

+
+ {/if} +
+
+ +
+ + +
+
+
{Lang::T('FreeRadius')}
+
+ +
+
+
+ + +
+ +
+ +
+
+
+
+ +
+ + +
+
+
{Lang::T('Balance System')}
+
+ +
+
+
+
+ +
+ +
+

{Lang::T('Customer can deposit money to buy voucher')}

+
+ +
+ +
+ +
+

{Lang::T('Allow balance transfer between customers')}

+
+ +
+ +
+ +
+
+
+
+ +
+ + +
+
+
{Lang::T('Notification Settings')}
+
+ +
+
+
+ +
+
+
{Lang::T('Telegram Notification')}
+
+ Test TG +
+
+
+
+ +
+ +
+
+
+ +
+ +
+ You will get Payment and Error notification on you telegram +
+
+
+ + +
+
+
{Lang::T('SMS OTP Registration')}
+
+ Test SMS +
+
+
+
+ +
+ +
+

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

+
+
+ +
+ +
+

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

+
+
+ +
+ +
+

Customize the test message sent when testing SMS notifications

+
+
+
+ + +
+
+
{Lang::T('Whatsapp Notification')}
+
+ Test WA +
+
+
+
+ +
+ +
+

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

+
+
+ +
+ +
+

Customize the test message sent when testing WhatsApp notifications

+
+
+
+ + +
+
+
{Lang::T('Email Notification')}
+ +
+
+
+ +
+ +
+
+ +
+

Empty this to use internal mail() PHP

+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+

Customer will reply email to this address, empty if you want to use From Address

+
+
+
+ + +
+
+
{Lang::T('User Notification')}
+
+
+
+ +
+ +
+

{Lang::T('User will get notification when package expired')}

+
+
+ +
+ +
+

+ {Lang::T('User will get invoice notification when buy package or package refilled, and welcome notification when account is created')} +

+
+
+ +
+ +
+
+
+
+
+
+ +
+ + +
+
+
{Lang::T('Additional Settings')}
+
+ +
+
+
+ +
+
+
{Lang::T('Tawk.to Chat Widget')}
+
+
+
+ +
+ +
+

For Direct Chat Link with client from their Dashboard

+
+
+
+
+
+ Copy and paste in Terminal +

+ /ip hotspot walled-garden add dst-host=tawk.to add dst-host=*.tawk.to +

+
+
+
+
+
+
+ + +
+
+
Generate Your API Key
+
+
+
+ +
+ +
+

{Lang::T('This Token will act as SuperAdmin/Admin.')}

+

Empty this to randomly created API key that you can use to link this application to other services

+
+
+
+ + +
+
+
{Lang::T('Proxy')}
+
+
+
+ +
+ +
+

Enter Your Proxy Server IP Address or DNS IP or URl

+
+
+ +
+ +
+

Enter Your Proxy Server Login Password

+
+
+
+ + +
+
+
{Lang::T('Miscellaneous')}
+
+
+
+ +
+ +
+

{Lang::T('OTP is required when user want to change phone number')}

+
+
+ +
+ +
+

{Lang::T('The method which OTP will be sent to user')}

+
+
+
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+
+
+
+ Copy and paste in Terminal + /ip hotspot walled-garden add dst-host={$_domain} add dst-host=*.{$_domain} +
+
+
+
+
+
+ Cron Jobs +

# Expired Cronjob Every 5 Minutes

+
*/5 * * * * cd {$dir} && {$php} cron.php
+

# Expired Cronjob Every 1 Hour

+
0 * * * * cd {$dir} && {$php} cron.php
+

# Reminder Cronjob Every 7 AM

+
0 7 * * * cd {$dir} && {$php} cron_reminder.php
+
+
+
+
+
+
+
+
+
+ + + +
+{include file="sections/footer.tpl"} \ No newline at end of file diff --git a/ui/ui/autoload-pool.tpl b/ui/ui/autoload-pool.tpl new file mode 100644 index 0000000..64032c2 --- /dev/null +++ b/ui/ui/autoload-pool.tpl @@ -0,0 +1,4 @@ + +{foreach $d as $ds} + +{/foreach} \ No newline at end of file diff --git a/ui/ui/autoload-server.tpl b/ui/ui/autoload-server.tpl new file mode 100644 index 0000000..ce87d7c --- /dev/null +++ b/ui/ui/autoload-server.tpl @@ -0,0 +1,7 @@ + +{if $_c['radius_enable']} + +{/if} +{foreach $d as $ds} + +{/foreach} \ No newline at end of file diff --git a/ui/ui/autoload.tpl b/ui/ui/autoload.tpl new file mode 100644 index 0000000..fffe153 --- /dev/null +++ b/ui/ui/autoload.tpl @@ -0,0 +1,9 @@ + +{foreach $d as $ds} + +{/foreach} \ No newline at end of file diff --git a/ui/ui/balance-add.tpl b/ui/ui/balance-add.tpl new file mode 100644 index 0000000..676ffaa --- /dev/null +++ b/ui/ui/balance-add.tpl @@ -0,0 +1,51 @@ +{include file="sections/header.tpl"} +
+
+
+
+
+
{Lang::T('Add Service Plan')}
+
+
+
+
+ +
+ + +
+
+
+ +
+ +
+
+
+ +
+
+ {$_c['currency_code']} + +
+
+
+ +
+
+ + {Lang::T('Cancel')} +
+
+
+
+
+
+
+
+{include file="sections/footer.tpl"} \ No newline at end of file diff --git a/ui/ui/balance-edit.tpl b/ui/ui/balance-edit.tpl new file mode 100644 index 0000000..af8a1c0 --- /dev/null +++ b/ui/ui/balance-edit.tpl @@ -0,0 +1,51 @@ +{include file="sections/header.tpl"} +
+
+
+
+
+
{Lang::T('Edit Service Plan')}
+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+
+
+ +
+
+ {$_c['currency_code']} + +
+
+
+ +
+
+ + Or {Lang::T('Cancel')} +
+
+
+
+
+
+
+
+{include file="sections/footer.tpl"} \ No newline at end of file diff --git a/ui/ui/balance.tpl b/ui/ui/balance.tpl new file mode 100644 index 0000000..e0127fc --- /dev/null +++ b/ui/ui/balance.tpl @@ -0,0 +1,55 @@ +{include file="sections/header.tpl"} +
+
+
+
+
+
{Lang::T('Balance Plans')}
+
+
+
+
+ +
+   +
+
+ + + + + + + + + + {foreach $d as $ds} + + + + + + {/foreach} + +
{Lang::T('Plan Name')}{Lang::T('Plan Price')}{Lang::T('Manage')}
{$ds['name_plan']}{Lang::moneyFormat($ds['price'])} + {Lang::T('Edit')} + +
+
+ {include file="pagination.tpl"} +
+
+
+
+
+{include file="sections/footer.tpl"} \ No newline at end of file diff --git a/ui/ui/bandwidth-add.tpl b/ui/ui/bandwidth-add.tpl new file mode 100644 index 0000000..ff3d11d --- /dev/null +++ b/ui/ui/bandwidth-add.tpl @@ -0,0 +1,84 @@ +{include file="sections/header.tpl"} +
+
+
+
+
+
{Lang::T('Add New Bandwidth')}
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+
+
+ +
+ +
+
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ + Or {Lang::T('Cancel')} +
+
+
+ +
+
+
+
+
+{include file="sections/footer.tpl"} \ No newline at end of file diff --git a/ui/ui/bandwidth-edit.tpl b/ui/ui/bandwidth-edit.tpl new file mode 100644 index 0000000..0940638 --- /dev/null +++ b/ui/ui/bandwidth-edit.tpl @@ -0,0 +1,97 @@ +{include file="sections/header.tpl"} +
+
+
+
+
+
{Lang::T('Edit Bandwidth')}
+
+
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+
+ +
+
+
+ +
+ +
+
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ {Lang::T('Editing Bandwidth will not automatically update the plan, you need to edit the plan then save again')} +
+
+
+
+ + Or {Lang::T('Cancel')} +
+
+
+ +
+
+
+
+
+{include file="sections/footer.tpl"} \ No newline at end of file diff --git a/ui/ui/bandwidth.tpl b/ui/ui/bandwidth.tpl new file mode 100644 index 0000000..18c18f1 --- /dev/null +++ b/ui/ui/bandwidth.tpl @@ -0,0 +1,58 @@ +{include file="sections/header.tpl"} +
+
+
+
+
+
{Lang::T('Bandwidth Plans')}
+
+
+
+ +
+   +
+
+ + + + + + + + + + + {foreach $d as $ds} + + + + + + + {/foreach} + +
{Lang::T('Bandwidth Name')}{Lang::T('Rate')}{Lang::T('Burst')}{Lang::T('Manage')}
{$ds['name_bw']}{$ds['rate_down']} {$ds['rate_down_unit']} / {$ds['rate_up']} {$ds['rate_up_unit']}{$ds['burst']} + {Lang::T('Edit')} + +
+
+ {include file="pagination.tpl"} +
+
+
+
+
+{include file="sections/footer.tpl"} \ No newline at end of file diff --git a/ui/ui/banks-add.tpl b/ui/ui/banks-add.tpl new file mode 100644 index 0000000..84eaa52 --- /dev/null +++ b/ui/ui/banks-add.tpl @@ -0,0 +1,275 @@ +{include file="sections/header.tpl"} + +
+
+
+ + + + +
+
+

+ {Lang::T('Bank Information')} +

+
+
+
+ +
+
+ {Lang::T('Basic Information')} +
+ +
+ +
+
+
+ +
+ +
+ + {Lang::T('e.g., Safaricom M-Pesa, Equity Bank, KCB Bank')} + +
+
+ +
+ +
+
+
+ +
+ +
+ + {Lang::T('The account number for STK Push payments')} + +
+
+ +
+ +
+
+
+ +
+ +
+ + {Lang::T('Name of the account holder')} + +
+
+
+ + +
+
+ {Lang::T('Additional Information')} +
+ +
+ +
+
+
+ +
+ +
+ + {Lang::T('e.g., MPESA, EQTY, KCB')} + +
+
+ +
+ +
+
+
+ +
+ +
+ + {Lang::T('M-Pesa paybill number (if applicable)')} + +
+
+
+ + +
+
+ {Lang::T('Settings & Configuration')} +
+ +
+ +
+
+ + +
+ + {Lang::T('Only banks with STK Push support can be used for BankStkPush payments')} + +
+
+ +
+ +
+
+ + +
+ + {Lang::T('Only active banks can be used for payments')} + +
+
+ +
+ +
+
+ + +
+ + {Lang::T('This will make this bank the default selection for BankStkPush configuration')} + +
+
+
+ + +
+
+
+ + + {Lang::T('Back to List')} + +
+
+
+
+
+
+
+
+
+ + + +{include file="sections/footer.tpl"} diff --git a/ui/ui/banks-edit.tpl b/ui/ui/banks-edit.tpl new file mode 100644 index 0000000..ddc1963 --- /dev/null +++ b/ui/ui/banks-edit.tpl @@ -0,0 +1,123 @@ +{include file="sections/header.tpl"} + +
+
+
+
+
+

{Lang::T('Edit Bank')} - {$bank->name}

+
+
+
+ + +
+ +
+ + {Lang::T('e.g., Safaricom M-Pesa, Equity Bank, KCB Bank')} +
+
+ +
+ +
+ + {Lang::T('The account number for STK Push payments')} +
+
+ +
+ +
+ + {Lang::T('Name of the account holder')} +
+
+ +
+ +
+ + {Lang::T('e.g., MPESA, EQTY, KCB')} +
+
+ +
+ +
+ + {Lang::T('M-Pesa paybill number (if applicable)')} +
+
+ +
+ +
+
+ +
+ {Lang::T('Only banks with STK Push support can be used for BankStkPush payments')} +
+
+ +
+ +
+
+ +
+ {Lang::T('Only active banks can be used for payments')} +
+
+ +
+ +
+
+ +
+ {Lang::T('This will make this bank the default selection for BankStkPush configuration')} +
+
+ +
+ +
+
+
+
+
+
+
+ + +{include file="sections/footer.tpl"} diff --git a/ui/ui/banks.tpl b/ui/ui/banks.tpl new file mode 100644 index 0000000..ace533c --- /dev/null +++ b/ui/ui/banks.tpl @@ -0,0 +1,426 @@ +{include file="sections/header.tpl"} + +
+
+
+ + + + +
+
+
+
+

+ {Lang::T('Bank Accounts')} +

+
+
+ + {Lang::arrayCount($banks)} {Lang::T('Banks')} + +
+
+
+
+ +
+
+
+ {Lang::T('Search & Filter')} +
+
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+ +
+
+
+
+ + +
+ + + + + + + + + + + + + + + + {if $banks} + {foreach $banks as $bank} + + + + + + + + + + + + {/foreach} + {else} + + + + {/if} + +
+ {Lang::T('Bank Name')} + + {Lang::T('Account Number')} + + {Lang::T('Account Name')} + + {Lang::T('Bank Code')} + + {Lang::T('Paybill')} + + {Lang::T('STK Push')} + + {Lang::T('Status')} + + {Lang::T('Default')} + + {Lang::T('Actions')} +
+
+
+ +
+
+ {$bank->name} + {if $bank->is_default} +
+ {Lang::T('Default Bank')} + + {/if} +
+
+
+ {if $bank->account_number} + {$bank->account_number} + {else} + + {Lang::T('Not Set')} + + {/if} + + {if $bank->account_name} + {$bank->account_name} + {else} + + {Lang::T('Not Set')} + + {/if} + + {if $bank->bank_code} + {$bank->bank_code} + {else} + - + {/if} + + {if $bank->paybill} + {$bank->paybill} + {else} + - + {/if} + + {if $bank->supports_stk_push} + + {Lang::T('Yes')} + + {else} + + {Lang::T('No')} + + {/if} + + {if $bank->is_active} + + {Lang::T('Active')} + + {else} + + {Lang::T('Inactive')} + + {/if} + + {if $bank->is_default} + + {Lang::T('Default')} + + {else} + - + {/if} + +
+ + + + + {if $bank->supports_stk_push && $bank->is_active && !$bank->is_default} + + + + {/if} + + + + + + + + +
+
+
+ +
{Lang::T('No Banks Found')}
+

{Lang::T('No banks match your current filter criteria.')}

+ + {Lang::T('Add Your First Bank')} + +
+
+
+ + + {if Lang::arrayCount($banks)} +
+ {include file="pagination.tpl"} +
+ {/if} +
+
+
+
+
+ + + +{include file="sections/footer.tpl"} diff --git a/ui/ui/banks_basic.tpl b/ui/ui/banks_basic.tpl new file mode 100644 index 0000000..ba727b2 --- /dev/null +++ b/ui/ui/banks_basic.tpl @@ -0,0 +1,304 @@ +{include file="sections/header.tpl"} + +
+
+
+
+
+
+
+

Banks

+

Manage your bank accounts and configurations

+
+ +
+ + +
+
+
+
+
+
+ + + + +
+
+
+ +
+
+ +
+
+
+
+ + + Reset + +
+
+ + Showing {count($banks)} bank{if count($banks) != 1}s{/if} +
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + {if $banks} + {foreach $banks as $bank} + is_default}class="bg-light"{/if}> + + + + + + + + + + {/foreach} + {else} + + + + {/if} + +
IDBank NameAccount NumberAccount NameSTK PushStatusDefaultActions
{$bank->id} +
{$bank->name}
+ {if $bank->is_default} + Default Bank + {/if} +
+ {if $bank->account_number} + {$bank->account_number} + {else} + — + {/if} + + {if $bank->account_name} + {$bank->account_name} + {else} + — + {/if} + + {if $bank->supports_stk_push} + Yes + {else} + No + {/if} + + {if $bank->is_active} + Active + {else} + Inactive + {/if} + + {if $bank->is_default} + Yes + {else} + No + {/if} + + +
+ +
No banks found +
+
+
+
+
+
+
+ + + +{include file="sections/footer.tpl"} diff --git a/ui/ui/banks_clean.tpl b/ui/ui/banks_clean.tpl new file mode 100644 index 0000000..b894d73 --- /dev/null +++ b/ui/ui/banks_clean.tpl @@ -0,0 +1,203 @@ +{include file="sections/header.tpl"} + +
+
+
+ +
+
+

Bank Management

+

Manage your bank accounts and configurations

+
+ +
+ + +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + + Reset + +
+
+
+
+ + +
+
+
Banks ({count($banks)})
+
+ +
+
+
+ {if $banks} +
+ + + + + + + + + + + + {foreach $banks as $bank} + is_default}class="table-warning"{/if}> + + + + + + + {/foreach} + +
BankAccount DetailsFeaturesStatusActions
+
+
+
+ +
+
+
+
{$bank->name}
+ {if $bank->is_default} + + Default Bank + + {/if} +
+
+
+
+ {if $bank->account_number} +
Account Number
+ {$bank->account_number} + {else} + Not set + {/if} +
+ {if $bank->account_name} +
+
Account Name
+
{$bank->account_name}
+
+ {/if} +
+
+ + STK Push + + {if $bank->bank_code} + + {$bank->bank_code} + + {/if} +
+
+ + {if $bank->is_active}Active{else}Inactive{/if} + + + +
+
+ {else} +
+
+ +
+
No Banks Found
+

No banks match your search criteria.

+ + Add Your First Bank + +
+ {/if} +
+
+
+
+
+ + + +{include file="sections/footer.tpl"} diff --git a/ui/ui/banks_simple.tpl b/ui/ui/banks_simple.tpl new file mode 100644 index 0000000..e664dd0 --- /dev/null +++ b/ui/ui/banks_simple.tpl @@ -0,0 +1,268 @@ +{include file="sections/header.tpl"} + +
+
+
+
+
+
+
+

+ Bank Management +

+

Manage bank accounts and STK Push configurations

+
+
+ +
+ + {count($banks)} Banks + +
+
+
+
+
+ +
+
+
Search & Filter
+
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + + Reset + +
+
+
+
+
+
+
+ + + + + + + + + + + + + + {if $banks} + {foreach $banks as $bank} + is_default}class="table-warning"{/if}> + + + + + + + + + {/foreach} + {else} + + + + {/if} + +
Bank Name Account Number Account Name STK Push Status Default Actions
+
+
+ +
+
+ {$bank->name} + {if $bank->is_default} +
+ Default Bank + + {/if} +
+
+
+ {if $bank->account_number} + {$bank->account_number} + {else} + + Not Set + + {/if} + + {if $bank->account_name} + {$bank->account_name} + {else} + + Not Set + + {/if} + + {if $bank->supports_stk_push} + Yes + {else} + No + {/if} + + {if $bank->is_active} + Active + {else} + Inactive + {/if} + + {if $bank->is_default} + Yes + {else} + No + {/if} + + +
+
+ +
No Banks Found
+

No banks match your current filter criteria.

+ + Add Your First Bank + +
+
+
+
+
+
+
+
+ + + +{include file="sections/footer.tpl"} diff --git a/ui/ui/change-password.tpl b/ui/ui/change-password.tpl new file mode 100644 index 0000000..62ca505 --- /dev/null +++ b/ui/ui/change-password.tpl @@ -0,0 +1,42 @@ +{include file="sections/header.tpl"} +
+
+
+
+
+
{Lang::T('Change Password')}
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+
+ + Or {Lang::T('Cancel')} +
+
+
+ +
+
+
+
+
+{include file="sections/footer.tpl"} \ No newline at end of file diff --git a/ui/ui/community.tpl b/ui/ui/community.tpl new file mode 100644 index 0000000..8201d52 --- /dev/null +++ b/ui/ui/community.tpl @@ -0,0 +1,42 @@ +{include file="sections/header.tpl"} +
+
+
+
+
+

MikroPulse

+
+
+ MikroPulse is a Billing System for Hotspot and PPPOE in Mikrotik using PHP and Mikrotik API to comunicate with router. +
+
Current Version:
+
Latest Version:
+
+ +
+ If you Download manual the update file, sometime update change database, after uploading, click this button to update database structure. + Update Database +
+
+
+
+ +
+{include file="sections/footer.tpl"} \ No newline at end of file diff --git a/ui/ui/customers-add.tpl b/ui/ui/customers-add.tpl new file mode 100644 index 0000000..86bb844 --- /dev/null +++ b/ui/ui/customers-add.tpl @@ -0,0 +1,239 @@ +{include file="sections/header.tpl"} + {assign var="icmcode" value="Y{rand(100000,999999)}"} + {assign var="itcode" value="IT{rand(500,999)}"} +
+
+
+
+
+
+
{Lang::T('Add New Contact')}
+
+
+ +
+ +
+
+
+ +
+
+ + +
+
+
+
+ +
+ +
+
+
+ +
+
+ {if $_c['country_code_phone']!= ''} + + + {else} + + {/if} + +
+
+
+
+ +
+ +
+
+
+ +
+ + + {Lang::T('User Cannot change this, only admin. if it Empty it will use user password')} + +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+
+
+
+
{Lang::T('Attributes')}
+
+ +
+
+ +
+ +
+
+
+
+
+
+
+ +
+
+ +
{Lang::T('Cancel')} +
+
+ + {literal} + + + + + {/literal} +
+{include file="sections/footer.tpl"} \ No newline at end of file diff --git a/ui/ui/customers-edit.tpl b/ui/ui/customers-edit.tpl new file mode 100644 index 0000000..a99434b --- /dev/null +++ b/ui/ui/customers-edit.tpl @@ -0,0 +1,246 @@ +{include file="sections/header.tpl"} +
+
+
+
+
+
+
{Lang::T('Edit Contact')}
+
+
+ +
+ +
+ +
+
+
+ +
+
+ + +
+
+
+
+ +
+ +
+
+
+ +
+
+ {if $_c['country_code_phone']!= ''} + + + {else} + + {/if} + +
+
+
+
+ +
+ + {Lang::T('Keep Blank to do not change Password')} +
+
+
+ +
+ + + {Lang::T('User Cannot change this, only admin. if it Empty it will use user password')} + +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+
+
+
+
{Lang::T('Attributes')}
+
+ + {if $customFields} + {foreach $customFields as $customField} +
+ +
+ +
+ +
+ {/foreach} + {/if} + + +
+
+ +
+ +
+
+
+
+
+
+
+
+
+ +
{Lang::T('Cancel')} +
+
+ + {literal} + + + + + {/literal} + +
+{include file="sections/footer.tpl"} \ No newline at end of file diff --git a/ui/ui/customers-map.tpl b/ui/ui/customers-map.tpl new file mode 100644 index 0000000..3963d39 --- /dev/null +++ b/ui/ui/customers-map.tpl @@ -0,0 +1,64 @@ +{include file="sections/header.tpl"} +
+ +
+
+
+ {literal} + + {/literal} +
+{include file="sections/footer.tpl"} \ No newline at end of file diff --git a/ui/ui/customers-view.tpl b/ui/ui/customers-view.tpl new file mode 100644 index 0000000..da3f95f --- /dev/null +++ b/ui/ui/customers-view.tpl @@ -0,0 +1,263 @@ +{include file="sections/header.tpl"} +
+
+
+
+
+ avatar + +

{$d['fullname']}

+ +
    +
  • + {Lang::T('Username')} {$d['username']} +
  • +
  • + {Lang::T('Phone Number')} {$d['phonenumber']} +
  • +
  • + {Lang::T('Email')} {$d['email']} +
  • +
+ +
    +
  • + {Lang::T('Password')} +
  • + {if $d['pppoe_password'] != ''} +
  • + PPPOE {Lang::T('Password')} +
  • + {/if} + + {if $customFields} + {foreach $customFields as $customField} +
  • + {$customField.field_name} + {if strpos($customField.field_value, ':0') === false} + {$customField.field_value} + {else} + {Lang::T('Paid')} + {/if} + +
  • + {/foreach} + {/if} + +
  • + {Lang::T('Service Type')} {Lang::T($d['service_type'])} +
  • +
  • + {Lang::T('Account')} {Lang::T($d['account'])} +
  • +
  • + {Lang::T('Account Type')} {Lang::T($d['account_type'])} +
  • +
  • + {Lang::T('Balance')} {Lang::moneyFormat($d['balance'])} +
  • +
  • + {Lang::T('Auto Renewal')} {if + $d['auto_renewal']}yes{else}no + {/if} +
  • +
  • + {Lang::T('Created On')} {Lang::dateTimeFormat($d['created_at'])} +
  • +
  • + {Lang::T('Last Login')} {Lang::dateTimeFormat($d['last_login'])} +
  • + {if $d['coordinates']} +
  • + {Lang::T('Coordinates')} + Get + Directions + +
    +
  • + {/if} +
+
+
+ +
+ +
+
+
+ {foreach $packages as $package} +
+
+

{$package['type']} - {$package['namebp']}

+
    +
  • + {Lang::T('Active')} {if + $package['status']=='on'}yes{else}no + {/if} +
  • +
  • + {Lang::T('Type')} + {if $package['prepaid'] eq yes}Prepaid{else}Postpaid{/if} +
  • +
  • + {Lang::T('Created On')} {Lang::dateAndTimeFormat($package['recharged_on'],$package['recharged_time'])} +
  • +
  • + {Lang::T('Expires On')} {Lang::dateAndTimeFormat($package['expiration'], + $package['time'])} +
  • +
  • + {$package['routers']} {$package['method']} +
  • +
+ +
+
+ {/foreach} + +
+
+
+
+ +
+ + {if Lang::arrayCount($activation)} + + + + + + + + + + + + + + {foreach $activation as $ds} + + + + + + + + + + + {/foreach} + + {/if} + {if Lang::arrayCount($order)} + + + + + + + + + + + + + + + {foreach $order as $ds} + + + + + + + + + + + + {/foreach} + + {/if} +
{Lang::T('Invoice')}{Lang::T('Username')}{Lang::T('Plan Name')}{Lang::T('Plan Price')}{Lang::T('Type')}{Lang::T('Created On')}{Lang::T('Expires On')}{Lang::T('Method')}
{$ds['invoice']}{$ds['username']}{$ds['plan_name']}{Lang::moneyFormat($ds['price'])}{$ds['type']}{Lang::dateAndTimeFormat($ds['recharged_on'],$ds['recharged_time'])} + {Lang::dateAndTimeFormat($ds['expiration'],$ds['time'])}{$ds['method']}
{Lang::T('Plan Name')}{Lang::T('Gateway')}{Lang::T('Routers')}{Lang::T('Type')}{Lang::T('Plan Price')}{Lang::T('Created On')}{Lang::T('Expires On')}{Lang::T('Date Done')}{Lang::T('Method')}
{$ds['plan_name']}{$ds['gateway']}{$ds['routers']}{$ds['payment_channel']}{Lang::moneyFormat($ds['price'])}{Lang::dateTimeFormat($ds['created_date'])}{Lang::dateTimeFormat($ds['expired_date'])}{if $ds['status']!=1}{Lang::dateTimeFormat($ds['paid_date'])}{/if}{if $ds['status']==1}{Lang::T('UNPAID')} + {elseif $ds['status']==2}{Lang::T('PAID')} + {elseif $ds['status']==3}{$_L['FAILED']} + {elseif $ds['status']==4}{Lang::T('CANCELED')} + {elseif $ds['status']==5}{Lang::T('UNKNOWN')} + {/if}
+
+ {include file="pagination.tpl"} +
+
+
+
+ + {if $d['coordinates']} + {literal} + + + {/literal} + {/if} +
+{include file="sections/footer.tpl"} \ No newline at end of file diff --git a/ui/ui/customers.tpl b/ui/ui/customers.tpl new file mode 100644 index 0000000..811305f --- /dev/null +++ b/ui/ui/customers.tpl @@ -0,0 +1,115 @@ +{include file="sections/header.tpl"} +
+ +
+
+
+
+ {if in_array($_admin['user_type'],['SuperAdmin','Admin'])} +
+ CSV +
+ {/if} + {Lang::T('Manage Contact')} +
+
+
+
+
+
+ + +
+
+
+   +
+
+
+ {Lang::T('Showing')}: {count($d)} {Lang::T('customers')} + {if $filter != 'All'}({Lang::T('Status')}: {$filter}){/if} +
+ + + + + + + + + + + + + + + + {foreach $d as $ds} + + + + + + + + + + + + {/foreach} + +
{Lang::T('Full Name')}{Lang::T('Username')}{Lang::T('Acc Type')}{Lang::T('Area')}{Lang::T('Package')}{Lang::T('Service')}{Lang::T('Status')}{Lang::T('Manage')}
{$ds['fullname']}{$ds['username']}{$ds['account_type']}{$ds['address']} + + {$ds['service_type']} + + {$ds['status']} + + +   {Lang::T('View')}   +   {Lang::T('Edit')}   + {Lang::T('Recharge')} +
+
+
+
+
+
+ + + +
+{include file="sections/footer.tpl"} \ No newline at end of file diff --git a/ui/ui/dashboard.tpl b/ui/ui/dashboard.tpl new file mode 100644 index 0000000..7fafa80 --- /dev/null +++ b/ui/ui/dashboard.tpl @@ -0,0 +1,497 @@ + +{include file="sections/header.tpl"} +
+ +
+
+
+
+
+
+
+

{$_c['currency_code']}{number_format($iday,0,$_c['dec_point'],$_c['thousands_sep'])}

+

{Lang::T('Income Today')}

+
+
+ +
+
+ +
+
+
+
+
+
+
+
+
+

{$_c['currency_code']}{number_format($imonth,0,$_c['dec_point'],$_c['thousands_sep'])}

+

{Lang::T('Income This Month')}

+
+ +
+ +
+
+
+
+
+
+
+
+
+

{$u_act}/{$u_all}

+

{Lang::T('Users Active')}

+
+
+ +
+
+ +
+
+
+
+
+
+
+
+
+

{$c_all}

+

{Lang::T('Total Users')}

+
+
+ +
+
+ +
+
+
+
+
+
+
+
+
+
+
+

+

{Lang::T('Online Users')}

+
+
+ +
+
+
+
+
+
+
+
+
+
+
+

+

{Lang::T('Data Usage')}

+
+
+ +
+
+
+
+
+
+
+
+
+
+
+

+

{Lang::T('Online Hotspot Users')}

+
+
+ +
+
+
+
+
+
+
+
+
+
+
+

+

{Lang::T('Online PPPoE Users')}

+
+
+ +
+
+
+
+
+
+
+
+ + {if $_c['hide_mrc'] != 'yes'} +
+
+ +

{Lang::T('Monthly Customers')}

+
+ + + +
+
+ +
+ +
+
+ {/if} +
+
+ + {if $_c['hide_tms'] != 'yes'} +
+
+ +

{Lang::T('Total Monthly Sales')}

+
+ + +
+
+ +
+ +
+
+ {/if} +
+
+ {if $_c['hide_uet'] != 'yes'} +
+
+

{Lang::T('Expired Users')}

+
+
+ + + + + + + + + + + + + + {foreach $expire as $expired} + + + + + + + + + + + {/foreach} +
{Lang::T('Fullname')}{Lang::T('Username')}{Lang::T('Created On')}{Lang::T('Expires On')}{Lang::T('Router')}{Lang::T('Package')}{Lang::T('Action')}
{$expired['fullname']}{$expired['username']}{Lang::dateAndTimeFormat($expired['recharged_on'],$expired['recharged_time'])} + {Lang::dateAndTimeFormat($expired['expiration'],$expired['time'])} + {$expired['routers']}{$expired['namebp']} + {Lang::T('Recharge')} +
+
+   {include file="pagination.tpl"} +
+
+ {/if} +
+
+ {if $_c['disable_voucher'] != 'yes' && $stocks['unused']>0 || $stocks['used']>0} + {if $_c['hide_vs'] != 'yes'} +
+
Vouchers Stock
+
+ + + + + + + + + + {foreach $plans as $stok} + + + + + + + {/foreach} + + + + + +
{Lang::T('Plan Name')}unusedused
{$stok['name_plan']}{$stok['unused']}{$stok['used']}
Total{$stocks['unused']}{$stocks['used']}
+
+
+ {/if} + {/if} +
+
+
+
+ {if $_c['hide_aui'] != 'yes'} +
+

{Lang::T('All Users Insights')}

+
+ +
+
+ {/if} +
+
+ {if $_c['hide_al'] != 'yes'} +
+ +
+
+
    + {foreach $dlog as $dlogs} +
  • +
    +
    + + {Lang::timeElapsed($dlogs['date'],true)} +

    {$dlogs['description']}

    +
    +
  • + {/foreach} +
+
+
+
+ {/if} +
+
+ + + + + + {include file="sections/footer.tpl"} diff --git a/ui/ui/dbstatus.tpl b/ui/ui/dbstatus.tpl new file mode 100644 index 0000000..009ad6b --- /dev/null +++ b/ui/ui/dbstatus.tpl @@ -0,0 +1,61 @@ +{include file="sections/header.tpl"} +
+
+
+
+
Backup Database
+
+
+ + + + + + + + + + {foreach $tables as $tbl} + + + + + + {/foreach} + +
{Lang::T('Table Name')}{Lang::T('Rows')}Select
{$tbl['name']}{$tbl['rows']}
+
+
+
+
Dont select logs if it failed
+
+ +
+
+
+
+ +
+
+
+
+
Restore Database
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+{include file="sections/footer.tpl"} \ No newline at end of file diff --git a/ui/ui/deposit.tpl b/ui/ui/deposit.tpl new file mode 100644 index 0000000..2db7de4 --- /dev/null +++ b/ui/ui/deposit.tpl @@ -0,0 +1,183 @@ +{include file="sections/header.tpl"} +
+
+
+
+
{Lang::T('Refill Balance')}
+
+
+
+ +
+ + + {Lang::T('Start typing to search for customers')} + +
+
+
+ +
+ + + {Lang::T('Select a balance plan for the customer')} + +
+
+
+
+
+ + Or {Lang::T('Cancel')} +
+
+
+
+
+
+
+
+
+{include file="sections/footer.tpl"} + + \ No newline at end of file diff --git a/ui/ui/hotspot-add.tpl b/ui/ui/hotspot-add.tpl new file mode 100644 index 0000000..30f5f5d --- /dev/null +++ b/ui/ui/hotspot-add.tpl @@ -0,0 +1,222 @@ +{include file="sections/header.tpl"} +
+
+
+
+
{Lang::T('Add Service Plan')}
+
+
+
+ +
+ Enable + Disable +
+
+
+ +
+ Prepaid + Postpaid +
+
+ +
+ +
+ Personal + Business +
+
+ {if $_c['radius_enable']} +
+ +
+ +
+

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

+
+ {/if} +
+ +
+ +
+
+
+ +
+ + {Lang::T('Unlimited')} + {Lang::T('Limited')} +
+
+ + + +
+ +
+ +
+
+
+ +
+
+ {$_c['currency_code']} + +
+
+
+
+ +
+ +

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

+
+
+
+ +
+ +
+
+ +
+

{Lang::T('1 Period = 1 Month, Expires the 20th of each month')}

+
+ +
+ +
+ +

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

+
+
+
+ {Lang::T('Expired Action')} +
+ +
+ +
+
+ {*
+ +
+ +
+
*} +
+
+
+ + Or {Lang::T('Cancel')} +
+
+
+
+
+
+
+
+ + {if $_c['radius_enable']} + {literal} + + {/literal} + {/if} +
+{include file="sections/footer.tpl"} \ No newline at end of file diff --git a/ui/ui/hotspot-edit.tpl b/ui/ui/hotspot-edit.tpl new file mode 100644 index 0000000..f3cd4ed --- /dev/null +++ b/ui/ui/hotspot-edit.tpl @@ -0,0 +1,258 @@ +{include file="sections/header.tpl"} +
+
+
+
+
{Lang::T('Edit Service Plan')} || {$d['name_plan']}
+
+
+ +
+ +
+ Enable + Disable +
+
+ + +
+ +
+ + Prepaid + Postpaid +
+
+ +
+ +
+ + Personal + Business +
+
+ + + {if $_c['radius_enable'] and $d['is_radius']} +
+ +
+ +
+
+ {/if} +
+ +
+ +
+
+
+ +
+ {Lang::T('Unlimited')} + + {Lang::T('Limited')} +
+
+ + + +
+ +
+ +
+
+
+ +
+
+ {$_c['currency_code']} + +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+

{Lang::T('1 Period = 1 Month, Expires the 20th of each month')} +

+
+ + + + {Lang::T('Expired Action')} {Lang::T('Optional')} +
+ +
+ +
+
+ {*
+ +
+ +
+
*} +
+
+
+ + Or {Lang::T('Cancel')} +
+
+
+
+ +
+
+
+
+ + + + {if $_c['radius_enable'] && $d['is_radius']} + {literal} + + {/literal} + {/if} +
+{include file="sections/footer.tpl"} \ No newline at end of file diff --git a/ui/ui/hotspot.tpl b/ui/ui/hotspot.tpl new file mode 100644 index 0000000..26f5ab1 --- /dev/null +++ b/ui/ui/hotspot.tpl @@ -0,0 +1,95 @@ +{include file="sections/header.tpl"} +
+
+
+
+
+ {Lang::T('Hotspot Plans')} +
+ sync +
+
+
+
+
+ +
+   +
+
+ + + + + + + + + + + + + + + + + + + {foreach $d as $ds} + + + + + + + + + + + + + + + {/foreach} + +
{Lang::T('Plan Name')}{Lang::T('Plan Type')}{Lang::T('Bandwidth Plans')}{Lang::T('Plan Category')}{Lang::T('Plan Price')}{Lang::T('Time Limit')}{Lang::T('Data Limit')}{Lang::T('Plan Validity')}{Lang::T('Routers')}{Lang::T('Expired IP Pool')}{Lang::T('ID')}{Lang::T('Manage')}
{$ds['name_plan']}{$ds['plan_type']}{$ds['name_bw']}{$ds['typebp']}{Lang::moneyFormat($ds['price'])}{$ds['time_limit']} {$ds['time_unit']}{$ds['data_limit']} {$ds['data_unit']}{$ds['validity']} {$ds['validity_unit']} + {if $ds['is_radius']} + RADIUS + {else} + {if $ds['routers']!=''} + {$ds['routers']} + {/if} + {/if} + {$ds['pool_expired']}{if $ds['list_expired']}{if $ds['pool_expired']} | + {/if}{$ds['list_expired']}{/if}{$ds['id']} + {Lang::T('Edit')} + +
+
+ {include file="pagination.tpl"} +
+
+
+
+
+{include file="sections/footer.tpl"} \ No newline at end of file diff --git a/ui/ui/hotspot_users.tpl b/ui/ui/hotspot_users.tpl new file mode 100644 index 0000000..b537ed0 --- /dev/null +++ b/ui/ui/hotspot_users.tpl @@ -0,0 +1,69 @@ +{include file="sections/header.tpl"} +
+
+
+
+
{Lang::T('Hotspot Users')}
+
+
+ + + + + + + + + + + + + + + + + + +
{Lang::T('Username')}{Lang::T('Address')}{Lang::T('Uptime')}{Lang::T('Server')}{Lang::T('MAC Address')}{Lang::T('Session Time')}{Lang::T('Upload')}{Lang::T('Download')}{Lang::T('Total')}{Lang::T('Action')}
+
+
+
+ {include file="pagination.tpl"} +
+
+
+{include file="sections/footer.tpl"} + + + + + \ No newline at end of file diff --git a/ui/ui/index.html b/ui/ui/index.html new file mode 100644 index 0000000..9757970 --- /dev/null +++ b/ui/ui/index.html @@ -0,0 +1,8 @@ + + + 403 Forbidden + + +

Directory access is forbidden.

+ + \ No newline at end of file diff --git a/ui/ui/indexmain.tpl b/ui/ui/indexmain.tpl new file mode 100644 index 0000000..9fa8d97 --- /dev/null +++ b/ui/ui/indexmain.tpl @@ -0,0 +1,815 @@ +{include file="sections/header.tpl"} +
+ + +
+
+
+
+
+
+
+

78

+ Total Project Handled +
+ + + +
+
+
+
+
+
+
+
+
+
+

214

+ Contacts You Have +
+ + + + +
+
+
+
+
+
+
+
+
+
+

93

+ Total Unfinished Task +
+ + + + + +
+
+
+
+
+
+
+
+
+
+

12

+ Unread Messages +
+ + + +
+
+
+
+
+
+
+
+
+
+

Project Created

+ +
+
+ 25% +
+ + + + last month $563,443 +
+
+
+
+
+
+
+
+
+
+
+

New Clients

+ +
+
+
+
+
+
+
+
+
+

Monthly Target

+ +
+
+
+ 100 Projects/ monthy +
+
+
+
+
+
+
+ +
+
+
+

Project Released

+
+ + + + 4% +
+
+
+
+
+
+
+
+
+
+
+ 3/8 + 29% +
+
+

567

+

Contacts Added

+
+
+
+
+
+
+
+
+
+ +
+

Therichpost

+

Youtuber

+ Folllow +
+
+ + +
+
+
+
+
+
+

Recent Messages

+
+ + New + Message +
+
+
+
+ + +
+
+
+
Laura Chyan
+

Lorem ipsum dolor sit amet, consectetur + adipiscing elit, sed do eiusmod tempor incididunt ut

+ 5m ago +
+
+
+
+
+ +
+
+
+
Olivia Rellaq
+

Lorem ipsum dolor sit amet, consectetur + adipiscing elit, sed do eiusmod tempor incididunt ut

+ 41m ago +
+
+
+
+
+ + +
+
+
+
Keanu Tipes
+

Nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum...

+ 25m ago +
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Upcoming Projects

+
+
+
+
+ Yoast + Esac + +
Created on Sep 8th, 2020
+
+
+ +
+
+

Deadline

+ Tuesday, Sep 29th 2020 +
+
+
+
+ Yoast + Esac + +
Created on Sep 8th, 2020
+
+
+ +
+
+

Deadline

+ Tuesday, Sep 29th 2020 +
+
+
+
+ Yoast + Esac + +
Created on Sep 8th, 2020
+
+
+ +
+
+

Deadline

+ Tuesday, Sep 29th 2020 +
+
+
+
+
+
+
+
+
+
+
+

Quick To-Do List

+ Lorem ipsum dolor sit amet +
+ +
+
+ Graphic Deisgner +

Visual Graphic for + Presentation to Client

+
+
+ Aug 4, 2021 +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
+ +
+
+
+ Database Engineer +

Build Database Design + for Fasto Admin v2

+
+
+ Aug 4, 2021 +
+
    +
  • +
  • +
  • +
  • +
+
+
+
+ Digital Marketing +

Make Promotional Ads for + Instagram Fasto’s

+
+
+ Aug 4, 2021 +
+
    +
  • +
  • +
  • +
  • +
+
+ 2 Comment +
+
+
+
+ +
+
+
+ + + + + +

You don’t have badges yet

+ Earn Budges +
+
+
+
+
+
+
+ +
+
+ +
+
+
+

89 k

+

Friends

+
+
+
+
+

119 k

+

Followers

+
+
+
+
+
+
+
+ +
+
+
+

89 k

+

Friends

+
+
+
+
+

119 k

+

Followers

+
+
+
+
+
+
+
+ +
+
+
+

89 k

+

Friends

+
+
+
+
+

119 k

+

Followers

+
+
+
+
+
+
+
+ +
+
+
+

89 k

+

Friends

+
+
+
+
+

119 k

+

Followers

+
+
+
+
+
+
+
+{include file="sections/footer.tpl"} \ No newline at end of file diff --git a/ui/ui/invoice-customer.tpl b/ui/ui/invoice-customer.tpl new file mode 100644 index 0000000..777ec41 --- /dev/null +++ b/ui/ui/invoice-customer.tpl @@ -0,0 +1,21 @@ +{include file="sections/user-header.tpl"} + +
+
+
+
{$in['invoice']}
+
+
+
{$invoice}
+ + {Lang::T('Finish')} + + WhatsApp +
+
+
+
+
+{include file="sections/user-footer.tpl"} \ No newline at end of file diff --git a/ui/ui/invoice-print.tpl b/ui/ui/invoice-print.tpl new file mode 100644 index 0000000..f470f23 --- /dev/null +++ b/ui/ui/invoice-print.tpl @@ -0,0 +1,79 @@ + + + + + + + + + + + + + {Lang::T('Login')} - {$_c['CompanyName']} + + + + + + + + +
+
+ + + + +
+ {if $content} +
{$content}
{else} +
{Lang::pad($_c['CompanyName'],' ', 2)}
+                    {Lang::pad($_c['address'],' ', 2)}
+                    {Lang::pad($_c['phone'],' ', 2)}
+                    {Lang::pad("", '=')}
+                    {Lang::pads("Invoice", $in['invoice'], ' ')}
+                    {Lang::pads(Lang::T('Date'), $date, ' ')}
+                    {Lang::pads(Lang::T('Sales'), $_admin['fullname'], ' ')}
+                    {Lang::pad("", '=')}
+                    {Lang::pads(Lang::T('Type'), $in['type'], ' ')}
+                    {Lang::pads(Lang::T('Plan Name'), $in['plan_name'], ' ')}
+                    {Lang::pads(Lang::T('Plan Price'), Lang::moneyFormat($in['price']), ' ')}
+                    {Lang::pad($in['method'], ' ', 2)}
+
+                    {Lang::pads(Lang::T('Username'), $in['username'], ' ')}
+                    {Lang::pads(Lang::T('Password'), '**********', ' ')}
+                    {if $in['type'] != 'Balance'}
+                                    {Lang::pads(Lang::T('Created On'), Lang::dateAndTimeFormat($in['recharged_on'],$in['recharged_time']), ' ')}
+                                    {Lang::pads(Lang::T('Expires On'), Lang::dateAndTimeFormat($in['expiration'],$in['time']), ' ')}
+                    {/if}
+                    {Lang::pad("", '=')}
+                    {Lang::pad($_c['note'],' ', 2)}
+ {/if} +
+ {if $nuxprint} + + + Print Invoice + + +
+