Compare commits
134 Commits
2023.12.19
...
2024.2.20
Author | SHA1 | Date | |
---|---|---|---|
7ea118ec1e | |||
ae83cbeef4 | |||
8047ed9555 | |||
c907a4044f | |||
f12c7724fd | |||
c8696f8d1a | |||
63bba0efb0 | |||
2063ae4159 | |||
349a1d3250 | |||
cfb81596ae | |||
91c90f05f8 | |||
abefcf4a73 | |||
f9ad13b746 | |||
fe082258cd | |||
ade714e2ae | |||
ce649220f5 | |||
de4a783dba | |||
f550af257a | |||
2c16bb289e | |||
61060c4173 | |||
e7c715f1b3 | |||
aa8fa3f436 | |||
941c723193 | |||
cb23ddb912 | |||
e1272ec531 | |||
8e3e715c8c | |||
850ae079f4 | |||
21bea606c3 | |||
11c226caf5 | |||
98fb853591 | |||
d17c434c7b | |||
a06d7db0b1 | |||
84138bd02e | |||
9d1f05735f | |||
c91cc0470b | |||
459b9b30f1 | |||
8baf977a9a | |||
1022674780 | |||
3c9b05468e | |||
e9f5d56f91 | |||
792b1367d3 | |||
bf6ec9d4cd | |||
9543ee6e34 | |||
66432eda56 | |||
92eee8245d | |||
f62f07d102 | |||
671154d146 | |||
ac84e4b235 | |||
db7c6014dc | |||
21b57ef471 | |||
79e5c72ca2 | |||
5921fef67e | |||
1e0b246d74 | |||
009c890ab6 | |||
f3d7687cdb | |||
80cecabfb0 | |||
00ac91903f | |||
500f3de6a9 | |||
6c2658bf03 | |||
59de353353 | |||
d5ea56d078 | |||
7cc8034b8c | |||
c3a76bab90 | |||
8f32a7cfa9 | |||
cbe2602b69 | |||
771bc9d8d9 | |||
788e558171 | |||
4ab32bc68d | |||
bba09ca647 | |||
adbac642ca | |||
7e7b70ba75 | |||
72fbc27f97 | |||
d386dc5eec | |||
41481880ab | |||
f8a879dc0f | |||
da44e3f6da | |||
afdd7edafa | |||
4e1a10d814 | |||
7046aa5ed1 | |||
d81ba5d5fb | |||
a35506db1b | |||
96945ab813 | |||
2b8ca5fd85 | |||
2d095aef08 | |||
c906d47674 | |||
5dd430f9b2 | |||
7c88be8865 | |||
b45f5a5587 | |||
10e788e9a2 | |||
7ceb883826 | |||
80e78d9796 | |||
534d62d944 | |||
1857c145d1 | |||
12cdef4f66 | |||
b4bec8964d | |||
64f52d6c1c | |||
b504723e7c | |||
470c219e61 | |||
5867a0c9ca | |||
f38da8d3c0 | |||
7e0e09f9bf | |||
90e6283426 | |||
24df116003 | |||
db240131e2 | |||
2fdc3c9567 | |||
a953157b68 | |||
4ba38485a0 | |||
dfef6807a5 | |||
5ef0520c74 | |||
263a1b6722 | |||
f4c5b6a8bb | |||
05ed37d3d8 | |||
055b855bc1 | |||
b862a759d0 | |||
41cc04cffb | |||
1d29f8111e | |||
081dd1b1b9 | |||
9804bcb9e8 | |||
19e39dbefc | |||
b5c29f6c3d | |||
fe94ae3011 | |||
a25112a37f | |||
9d1d287e9a | |||
4bddaf0260 | |||
43ed5e452e | |||
12c339898c | |||
d087c9625d | |||
98223c1abe | |||
402660e3e1 | |||
f42f410867 | |||
df28e2b1c2 | |||
74b5c47640 | |||
5f5213527f | |||
c1f04c17a5 |
3
.github/ISSUE_TEMPLATE/bug_report.md
vendored
3
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -7,6 +7,9 @@ assignees: ibnux
|
||||
|
||||
---
|
||||
|
||||
Please Remember, this project is free and open source, and @ibnux don't get any money from this project, and if you post something not a bug, just you dont understand how to install it, you will get blocked from this Repository.
|
||||
Post it in Discussion if you don't understand. Except you pay for $50 for support
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is. Error connecting to router is not a bug, is your router port is not accessable, ask community for help, go to discussion or telegram group
|
||||
|
||||
|
2
.github/ISSUE_TEMPLATE/feature_request.md
vendored
2
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@ -7,6 +7,8 @@ assignees: ''
|
||||
|
||||
---
|
||||
|
||||
Please Remember, this project is free and open source, and @ibnux don't get any money from this project, any Feature Request will cost you $50-$5000
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
|
11
.gitignore
vendored
11
.gitignore
vendored
@ -4,6 +4,7 @@ config.php
|
||||
ui/compiled/*.php
|
||||
ui/cache/*.php
|
||||
test.php
|
||||
sms.php
|
||||
pages/
|
||||
system/cache/**
|
||||
system/plugin/*
|
||||
@ -28,4 +29,12 @@ system/uploads/system/**
|
||||
!system/uploads/system/index.html
|
||||
ui/themes/**
|
||||
!ui/themes/index.html
|
||||
!ui/themes/README.md
|
||||
!ui/themes/README.md
|
||||
scanLang.php
|
||||
system/lan/**
|
||||
!system/lan/index.html
|
||||
!system/lan/indonesia.json
|
||||
!system/lan/spanish.json
|
||||
!system/lan/turkish.json
|
||||
!system/lan/english.json
|
||||
!system/lan/country.json
|
96
CHANGELOG.md
96
CHANGELOG.md
@ -2,6 +2,100 @@
|
||||
|
||||
# CHANGELOG
|
||||
|
||||
## 2024.2.20
|
||||
|
||||
- Fix list admin
|
||||
- Burst Limit
|
||||
- Pace Loading by @Focuslinkstech
|
||||
|
||||
## 2024.2.19
|
||||
|
||||
- Start API Development
|
||||
- Multiple Admin Level
|
||||
- Customer Attributes by @Focuslinkstech
|
||||
- Radius Menu
|
||||
|
||||
## 2024.2.13
|
||||
|
||||
- Auto translate language
|
||||
- change language structur to json
|
||||
- save collapse menu
|
||||
|
||||
## 2024.2.12
|
||||
|
||||
- Admin Level : SuperAdmin,Admin,Report,Agent,Sales
|
||||
- Export Customers to CSV
|
||||
- Session using Cookie
|
||||
|
||||
## 2024.2.7
|
||||
|
||||
- Hide Dashboard content
|
||||
|
||||
## 2024.2.6
|
||||
|
||||
- Cache graph for faster opening graph
|
||||
|
||||
## 2024.2.5
|
||||
|
||||
- Admin Dashboard Update
|
||||
- Add Monthly Registered Customers
|
||||
- Total Monthly Sales
|
||||
- Active Users
|
||||
|
||||
## 2024.2.2
|
||||
|
||||
- Fix edit plan for user
|
||||
|
||||
## 2024.1.24
|
||||
|
||||
- Add Send test for SMS, Whatsapp and Telegram
|
||||
|
||||
## 2024.1.19
|
||||
|
||||
- Paid Plugin, Theme, and payment gateway marketplace using codecanyon.net
|
||||
- Fix Plugin manager List
|
||||
|
||||
## 2024.1.18
|
||||
|
||||
- fix(mikrotik): set pool $poolId always empty
|
||||
|
||||
## 2024.1.17
|
||||
|
||||
- Add minor change, for plugin, menu can have notifications by @Focuslinkstech
|
||||
|
||||
## 2024.1.16
|
||||
|
||||
- Add yellow color to table for plan not allowed to purchase
|
||||
- Fix Radius pool select
|
||||
- add price to reminder notification
|
||||
- Support thermal printer for invoice
|
||||
|
||||
## 2024.1.15
|
||||
|
||||
- Fix cron job for Plan only for admin by @Focuslinkstech
|
||||
|
||||
## 2024.1.11
|
||||
|
||||
- Add Plan only for admin by @Focuslinkstech
|
||||
- Fix Plugin Manager
|
||||
|
||||
## 2024.1.9
|
||||
|
||||
- Add Prefix when generate Voucher
|
||||
|
||||
## 2024.1.8
|
||||
|
||||
- User Expired Order by Expired Date
|
||||
|
||||
## 2024.1.2
|
||||
|
||||
- Pagination User Expired by @Focuslinkstech
|
||||
|
||||
## 2023.12.21
|
||||
|
||||
- Modern AdminLTE by @sabtech254
|
||||
- Update user-dashboard.tpl by @Focuslinkstech
|
||||
|
||||
## 2023.12.19
|
||||
|
||||
- Fix Search Customer
|
||||
@ -149,7 +243,7 @@ Customer can be move to expired pool after plan expired by cron
|
||||
- Fix PDF Export by Period
|
||||
- Add pppoe_password for Customer, this pppoe_password only admin can change
|
||||
- Country Code Number Settings
|
||||
- Customer Meta Table for Custom Fields
|
||||
- Customer Meta Table for Customers Attributess
|
||||
- Fix Add and Edit Customer Form for admin
|
||||
- add Notification Message Editor
|
||||
- cron reminder
|
||||
|
@ -15,7 +15,7 @@
|
||||
- Hotspot & PPPOE
|
||||
- Easy Installation
|
||||
- Multi Language
|
||||
- Payment Gateway Midtrans, Xendit and Tripay
|
||||
- Payment Gateway
|
||||
- SMS validation for login
|
||||
- Whatsapp Notification to Consumer
|
||||
- Telegram Notification for Admin
|
||||
|
225
init.php
Normal file
225
init.php
Normal file
@ -0,0 +1,225 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHP Mikrotik Billing (https://github.com/hotspotbilling/phpnuxbill/)
|
||||
* by https://t.me/ibnux
|
||||
**/
|
||||
|
||||
if (realpath(__FILE__) == realpath($_SERVER['SCRIPT_FILENAME'])) {
|
||||
header('HTTP/1.0 403 Forbidden', TRUE, 403);
|
||||
header('location: ../');
|
||||
die();
|
||||
}
|
||||
$root_path = realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR;
|
||||
$isApi = false;
|
||||
// on some server, it getting error because of slash is backwards
|
||||
function _autoloader($class)
|
||||
{
|
||||
global $root_path;
|
||||
if (strpos($class, '_') !== false) {
|
||||
$class = str_replace('_', DIRECTORY_SEPARATOR, $class);
|
||||
if (file_exists($root_path . DIRECTORY_SEPARATOR . 'system' . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php')) {
|
||||
include $root_path . DIRECTORY_SEPARATOR . 'system' . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php';
|
||||
} else {
|
||||
$class = str_replace("\\", DIRECTORY_SEPARATOR, $class);
|
||||
if (file_exists($root_path . DIRECTORY_SEPARATOR . 'system' . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php'))
|
||||
include $root_path . DIRECTORY_SEPARATOR . 'system' . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php';
|
||||
}
|
||||
} else {
|
||||
if (file_exists($root_path . DIRECTORY_SEPARATOR . 'system' . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php')) {
|
||||
include $root_path . DIRECTORY_SEPARATOR . 'system' . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php';
|
||||
} else {
|
||||
$class = str_replace("\\", DIRECTORY_SEPARATOR, $class);
|
||||
if (file_exists($root_path . DIRECTORY_SEPARATOR . 'system' . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php'))
|
||||
include $root_path . DIRECTORY_SEPARATOR . 'system' . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php';
|
||||
}
|
||||
}
|
||||
}
|
||||
spl_autoload_register('_autoloader');
|
||||
|
||||
|
||||
if (!file_exists($root_path . 'config.php')) {
|
||||
$root_path .= '..' . DIRECTORY_SEPARATOR;
|
||||
if (!file_exists($root_path . 'config.php')) {
|
||||
die("config.php file not found");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!file_exists($root_path . File::pathFixer('system/orm.php'))) {
|
||||
die($root_path . "orm.php file not found");
|
||||
}
|
||||
|
||||
if (!file_exists($root_path . File::pathFixer('system/uploads/notifications.default.json'))) {
|
||||
die($root_path . File::pathFixer("system/uploads/notifications.default.json file not found"));
|
||||
}
|
||||
|
||||
require_once $root_path . 'config.php';
|
||||
require_once $root_path . File::pathFixer('system/orm.php');
|
||||
require_once $root_path . File::pathFixer('system/autoload/PEAR2/Autoload.php');
|
||||
include $root_path . File::pathFixer('system/autoload/Hookers.php');
|
||||
|
||||
ORM::configure("mysql:host=$db_host;dbname=$db_name");
|
||||
ORM::configure('username', $db_user);
|
||||
ORM::configure('password', $db_password);
|
||||
ORM::configure('return_result_sets', true);
|
||||
if ($_app_stage != 'Live') {
|
||||
ORM::configure('logging', true);
|
||||
}
|
||||
|
||||
define('U', APP_URL . '/index.php?_route=');
|
||||
|
||||
// notification message
|
||||
if (file_exists($root_path . File::pathFixer("system/uploads/notifications.json"))) {
|
||||
$_notifmsg = json_decode(file_get_contents($root_path . File::pathFixer('system/uploads/notifications.json')), true);
|
||||
}
|
||||
$_notifmsg_default = json_decode(file_get_contents($root_path . File::pathFixer('system/uploads/notifications.default.json')), true);
|
||||
|
||||
//register all plugin
|
||||
foreach (glob(File::pathFixer($root_path . File::pathFixer("system/plugin/*.php"))) as $filename) {
|
||||
try {
|
||||
include $filename;
|
||||
} catch (Throwable $e) {
|
||||
//ignore plugin error
|
||||
} catch (Exception $e) {
|
||||
//ignore plugin error
|
||||
}
|
||||
}
|
||||
|
||||
$result = ORM::for_table('tbl_appconfig')->find_many();
|
||||
foreach ($result as $value) {
|
||||
$config[$value['setting']] = $value['value'];
|
||||
}
|
||||
if (empty($http_proxy) && !empty($config['http_proxy'])) {
|
||||
$http_proxy = $config['http_proxy'];
|
||||
if (empty($http_proxyauth) && !empty($config['http_proxyauth'])) {
|
||||
$http_proxyauth = $config['http_proxyauth'];
|
||||
}
|
||||
}
|
||||
date_default_timezone_set($config['timezone']);
|
||||
|
||||
if ((!empty($radius_user) && $config['radius_enable']) || _post('radius_enable')) {
|
||||
ORM::configure("mysql:host=$radius_host;dbname=$radius_name", null, 'radius');
|
||||
ORM::configure('username', $radius_user, 'radius');
|
||||
ORM::configure('password', $radius_pass, 'radius');
|
||||
ORM::configure('driver_options', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'), 'radius');
|
||||
ORM::configure('return_result_sets', true, 'radius');
|
||||
}
|
||||
|
||||
|
||||
if (empty($config['language'])) {
|
||||
$config['language'] = 'english';
|
||||
}
|
||||
$lan_file = $root_path .File::pathFixer('system/lan/' . $config['language'] . '.json');
|
||||
if (file_exists($lan_file)) {
|
||||
$_L = json_decode(file_get_contents($lan_file), true);
|
||||
$_SESSION['Lang'] = $_L;
|
||||
} else {
|
||||
$_L['author'] = 'Auto Generated by iBNuX Script';
|
||||
$_SESSION['Lang'] = $_L;
|
||||
file_put_contents($lan_file, json_encode($_L));
|
||||
}
|
||||
|
||||
|
||||
function safedata($value)
|
||||
{
|
||||
$value = trim($value);
|
||||
return $value;
|
||||
}
|
||||
|
||||
function _post($param, $defvalue = '')
|
||||
{
|
||||
if (!isset($_POST[$param])) {
|
||||
return $defvalue;
|
||||
} else {
|
||||
return safedata($_POST[$param]);
|
||||
}
|
||||
}
|
||||
|
||||
function _get($param, $defvalue = '')
|
||||
{
|
||||
if (!isset($_GET[$param])) {
|
||||
return $defvalue;
|
||||
} else {
|
||||
return safedata($_GET[$param]);
|
||||
}
|
||||
}
|
||||
|
||||
function _req($param, $defvalue = '')
|
||||
{
|
||||
if (!isset($_REQUEST[$param])) {
|
||||
return $defvalue;
|
||||
} else {
|
||||
return safedata($_REQUEST[$param]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function _auth($login = true)
|
||||
{
|
||||
if (User::getID()) {
|
||||
return true;
|
||||
} else {
|
||||
if ($login) {
|
||||
r2(U . 'login');
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function _admin($login = true)
|
||||
{
|
||||
if (Admin::getID()) {
|
||||
return true;
|
||||
} else {
|
||||
if ($login) {
|
||||
r2(U . 'login');
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function _log($description, $type = '', $userid = '0')
|
||||
{
|
||||
$d = ORM::for_table('tbl_logs')->create();
|
||||
$d->date = date('Y-m-d H:i:s');
|
||||
$d->type = $type;
|
||||
$d->description = $description;
|
||||
$d->userid = $userid;
|
||||
$d->ip = $_SERVER["REMOTE_ADDR"];
|
||||
$d->save();
|
||||
}
|
||||
|
||||
function Lang($key)
|
||||
{
|
||||
return Lang::T($key);
|
||||
}
|
||||
|
||||
function alphanumeric($str, $tambahan = "")
|
||||
{
|
||||
return preg_replace("/[^a-zA-Z0-9" . $tambahan . "]+/", "", $str);
|
||||
}
|
||||
|
||||
|
||||
function sendTelegram($txt)
|
||||
{
|
||||
Message::sendTelegram($txt);
|
||||
}
|
||||
|
||||
function sendSMS($phone, $txt)
|
||||
{
|
||||
Message::sendSMS($phone, $txt);
|
||||
}
|
||||
|
||||
function sendWhatsapp($phone, $txt)
|
||||
{
|
||||
Message::sendWhatsapp($phone, $txt);
|
||||
}
|
||||
|
||||
|
||||
if(!isset($api_secret)){
|
||||
$api_secret = $db_password;
|
||||
}
|
@ -33,13 +33,6 @@ CREATE TABLE `tbl_customers` (
|
||||
`last_login` datetime DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
|
||||
DROP TABLE IF EXISTS `tbl_customers_meta`;
|
||||
CREATE TABLE `tbl_customers_meta` (
|
||||
`id` int(11) NOT NULL,
|
||||
`customer_id` int(11) NOT NULL,
|
||||
`meta_key` varchar(64) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
|
||||
`meta_value` longtext COLLATE utf8mb4_general_ci
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
|
||||
DROP TABLE IF EXISTS `tbl_logs`;
|
||||
CREATE TABLE `tbl_logs` (
|
||||
@ -104,7 +97,8 @@ CREATE TABLE `tbl_plans` (
|
||||
`is_radius` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1 is radius',
|
||||
`pool` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
||||
`pool_expired` varchar(40) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
|
||||
`enabled` tinyint(1) NOT NULL DEFAULT '1' COMMENT '0 disabled\r\n'
|
||||
`enabled` tinyint(1) NOT NULL DEFAULT '1' COMMENT '0 disabled\r\n',
|
||||
`allow_purchase` enum('yes','no') DEFAULT 'yes' COMMENT 'allow to show package in buy package page'
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
|
||||
DROP TABLE IF EXISTS `tbl_pool`;
|
||||
@ -188,6 +182,15 @@ CREATE TABLE `tb_languages` (
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
|
||||
|
||||
ALTER TABLE `tbl_voucher` ADD `generated_by` INT NOT NULL DEFAULT '0' COMMENT 'id admin' AFTER `status`;
|
||||
ALTER TABLE `tbl_users` ADD `root` INT NOT NULL DEFAULT '0' COMMENT 'for sub account' AFTER `id`;
|
||||
ALTER TABLE `tbl_users` CHANGE `user_type` `user_type` ENUM('SuperAdmin','Admin','Report','Agent','Sales') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;
|
||||
ALTER TABLE `tbl_users` CHANGE `password` `password` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;
|
||||
ALTER TABLE `tbl_users` ADD `phone` VARCHAR(32) NOT NULL DEFAULT '' AFTER `password`, ADD `email` VARCHAR(128) NOT NULL DEFAULT '' AFTER `phone`, ADD `city` VARCHAR(64) NOT NULL DEFAULT '' COMMENT 'kota' AFTER `email`, ADD `subdistrict` VARCHAR(64) NOT NULL DEFAULT '' COMMENT 'kecamatan' AFTER `city`, ADD `ward` VARCHAR(64) NOT NULL DEFAULT '' COMMENT 'kelurahan' AFTER `subdistrict`;
|
||||
ALTER TABLE `tbl_customers` ADD `created_by` INT NOT NULL DEFAULT '0' AFTER `auto_renewal`;
|
||||
ALTER TABLE `tbl_plans` ADD `list_expired` VARCHAR(32) NOT NULL DEFAULT '' COMMENT 'address list' AFTER `pool_expired`;
|
||||
ALTER TABLE `tbl_bandwidth` ADD `burst` VARCHAR(128) NOT NULL DEFAULT '' AFTER `rate_up_unit`;
|
||||
|
||||
ALTER TABLE `tbl_appconfig`
|
||||
ADD PRIMARY KEY (`id`);
|
||||
|
||||
@ -305,8 +308,17 @@ VALUES (
|
||||
'admin',
|
||||
'Administrator',
|
||||
'd033e22ae348aeb5660fc2140aec35850c4da997',
|
||||
'Admin',
|
||||
'SuperAdmin',
|
||||
'Active',
|
||||
'2022-09-06 16:09:50',
|
||||
'2014-06-23 01:43:07'
|
||||
);
|
||||
);
|
||||
|
||||
DROP TABLE IF EXISTS `tbl_customers_fields`;
|
||||
CREATE TABLE tbl_customers_fields (
|
||||
id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
customer_id INT NOT NULL,
|
||||
field_name VARCHAR(255) NOT NULL,
|
||||
field_value VARCHAR(255) NOT NULL,
|
||||
FOREIGN KEY (customer_id) REFERENCES tbl_customers(id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
|
@ -102,6 +102,13 @@ CREATE TABLE `radusergroup` (
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS `nasreload`;
|
||||
CREATE TABLE `nasreload` (
|
||||
nasipaddress varchar(15) NOT NULL,
|
||||
reloadtime datetime NOT NULL,
|
||||
PRIMARY KEY (nasipaddress)
|
||||
) ENGINE = INNODB;
|
||||
|
||||
ALTER TABLE `nas`
|
||||
ADD PRIMARY KEY (`id`),
|
||||
ADD KEY `nasname` (`nasname`);
|
||||
|
105
system/api.php
Normal file
105
system/api.php
Normal file
@ -0,0 +1,105 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHP Mikrotik Billing (https://github.com/hotspotbilling/phpnuxbill/)
|
||||
* by https://t.me/ibnux
|
||||
*
|
||||
* This File is for API Access
|
||||
**/
|
||||
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] === "OPTIONS" || $_SERVER['REQUEST_METHOD'] === "HEAD") {
|
||||
header('Access-Control-Allow-Origin: *');
|
||||
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method, Access-Control-Request-Headers, Authorization");
|
||||
header("HTTP/1.1 200 OK");
|
||||
die();
|
||||
}
|
||||
|
||||
include "../init.php";
|
||||
|
||||
$isApi = true;
|
||||
|
||||
// Dummy Class
|
||||
$ui = new class($key)
|
||||
{
|
||||
var $assign = [];
|
||||
function display($key)
|
||||
{
|
||||
}
|
||||
function assign($key, $value)
|
||||
{
|
||||
$this->assign[$key] = $value;
|
||||
}
|
||||
|
||||
function get($key, )
|
||||
{
|
||||
if(isset($this->assign[$key])){
|
||||
return $this->assign[$key];
|
||||
}
|
||||
return '';
|
||||
}
|
||||
};
|
||||
|
||||
$req = _get('r');
|
||||
# a/c.id.time.md5
|
||||
# md5(a/c.id.time.$api_secret)
|
||||
$token = _get('token');
|
||||
$routes = explode('/', $req);
|
||||
$handler = $routes[0];
|
||||
if ($handler == '') {
|
||||
$handler = 'default';
|
||||
}
|
||||
|
||||
if(empty($token)){
|
||||
showResult(false, Lang::T("Token is invalid"));
|
||||
}
|
||||
|
||||
if($token == $config['api_key']){
|
||||
$admin = ORM::for_table('tbl_users')->where('user_type','SuperAdmin')->find_one($id);
|
||||
if(empty($admin)){
|
||||
$admin = ORM::for_table('tbl_users')->where('user_type','Admin')->find_one($id);
|
||||
if(empty($admin)){
|
||||
showResult(false, Lang::T("Token is invalid"));
|
||||
}
|
||||
}
|
||||
}else{
|
||||
# validate token
|
||||
list($tipe, $uid, $time, $md5) = explode('.', $token);
|
||||
if ($md5 != md5($uid . '.' . $time . '.' . $api_secret)) {
|
||||
showResult(false, Lang::T("Token is invalid"));
|
||||
}
|
||||
|
||||
#cek token expiration
|
||||
if ($time != 0 && time() > $time) {
|
||||
showResult(false, Lang::T("Token Expired"), [], ['login' => true]);
|
||||
}
|
||||
|
||||
if($tipe=='a'){
|
||||
$_SESSION['aid'] = $uid;
|
||||
}else if($tipe=='c'){
|
||||
$_SESSION['uid'] = $uid;
|
||||
}else{
|
||||
showResult(false, Lang::T("Unknown Token"), [], ['login' => true]);
|
||||
}
|
||||
}
|
||||
|
||||
if($handler == 'isValid'){
|
||||
showResult(true, Lang::T("Token is valid"));
|
||||
}
|
||||
|
||||
function showResult($success, $message = '', $result = [], $meta = [])
|
||||
{
|
||||
header("Content-Type: Application/json; charset=utf-8");
|
||||
die(json_encode(array('success' => $success, 'message' => $message, 'result' => $result, 'meta' => $meta)));
|
||||
}
|
||||
|
||||
try {
|
||||
$sys_render = File::pathFixer($root_path.'system/controllers/' . $handler . '.php');
|
||||
if (file_exists($sys_render)) {
|
||||
include($sys_render);
|
||||
}else{
|
||||
showResult(false, Lang::T('Command not found'));
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
showResult(false, $e->getMessage());
|
||||
}
|
@ -6,8 +6,40 @@
|
||||
|
||||
|
||||
Class Admin{
|
||||
|
||||
public static function getID(){
|
||||
global $db_password;
|
||||
if(isset($_SESSION['aid'])){
|
||||
return $_SESSION['aid'];
|
||||
}else if(isset($_COOKIE['aid'])){
|
||||
// id.time.sha1
|
||||
$tmp = explode('.',$_COOKIE['aid']);
|
||||
if(sha1($tmp[0].$tmp[1].$db_password)==$tmp[2]){
|
||||
if($tmp[1] < 86400*7){
|
||||
$_SESSION['aid'] = $tmp[0];
|
||||
return $tmp[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static function setCookie($aid){
|
||||
global $db_password;
|
||||
if(isset($aid)){
|
||||
$time = time();
|
||||
setcookie('aid', $aid.'.'.$time.'.'.sha1($aid.'.'.$time.'.'.$db_password), time()+86400*7);
|
||||
}
|
||||
}
|
||||
|
||||
public static function removeCookie(){
|
||||
if(isset($_COOKIE['aid'])){
|
||||
setcookie('aid', '', time()-86400);
|
||||
}
|
||||
}
|
||||
|
||||
public static function _info(){
|
||||
$id = $_SESSION['aid'];
|
||||
$id = Admin::getID();
|
||||
$d = ORM::for_table('tbl_users')->find_one($id);
|
||||
return $d;
|
||||
}
|
||||
|
@ -16,8 +16,10 @@ $menu_registered = array();
|
||||
* Admin/Sales menu: AFTER_DASHBOARD, CUSTOMERS, PREPAID, SERVICES, REPORTS, VOUCHER, AFTER_ORDER, NETWORK, SETTINGS, AFTER_PAYMENTGATEWAY
|
||||
* | Customer menu: AFTER_DASHBOARD, ORDER, HISTORY, ACCOUNTS
|
||||
* @param string icon from ion icon, ion-person, only for AFTER_
|
||||
* @param string label for showing label or number of notification or update
|
||||
* @param string color Label color
|
||||
*/
|
||||
function register_menu($name, $admin, $function, $position, $icon = '')
|
||||
function register_menu($name, $admin, $function, $position, $icon = '', $label = '', $color = 'success')
|
||||
{
|
||||
global $menu_registered;
|
||||
$menu_registered[] = [
|
||||
@ -25,7 +27,9 @@ function register_menu($name, $admin, $function, $position, $icon = '')
|
||||
"admin" => $admin,
|
||||
"position" => $position,
|
||||
"icon" => $icon,
|
||||
"function" => $function
|
||||
"function" => $function,
|
||||
"label" => $label,
|
||||
"color" => $color
|
||||
];
|
||||
}
|
||||
|
||||
@ -48,4 +52,3 @@ function run_hook($action){
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -8,9 +8,49 @@
|
||||
|
||||
class Lang
|
||||
{
|
||||
public static function T($var)
|
||||
public static function T($key)
|
||||
{
|
||||
return Lang($var);
|
||||
global $_L, $lan_file, $config;
|
||||
$_L = $_SESSION['Lang'];
|
||||
if (!empty($_L[$key])) {
|
||||
return $_L[$key];
|
||||
}
|
||||
$val = $key;
|
||||
$key = Lang::sanitize($key);
|
||||
if (isset($_L[$key])) {
|
||||
return $_L[$key];
|
||||
} else if (isset($_L[$key])) {
|
||||
return $_L[$key];
|
||||
} else {
|
||||
$iso = Lang::getIsoLang()[$config['language']];
|
||||
if (empty($iso)) {
|
||||
return $val;
|
||||
}
|
||||
if (!empty($iso) && !empty($val)) {
|
||||
$temp = Lang::translate($val, $iso);
|
||||
if (!empty($temp)) {
|
||||
$val = $temp;
|
||||
}
|
||||
}
|
||||
$_L[$key] = $val;
|
||||
$_SESSION['Lang'][$key] = $val;
|
||||
file_put_contents($lan_file, json_encode($_SESSION['Lang'], JSON_PRETTY_PRINT));
|
||||
return $val;
|
||||
}
|
||||
}
|
||||
|
||||
public static function sanitize($str)
|
||||
{
|
||||
return preg_replace("/[^A-Za-z0-9]/", '_', $str);;
|
||||
}
|
||||
|
||||
public static function getIsoLang()
|
||||
{
|
||||
global $isolang;
|
||||
if (empty($isolang) || count($isolang) == 0) {
|
||||
$isolang = json_decode(file_get_contents(File::pathFixer("system/lan/country.json")), true);
|
||||
}
|
||||
return $isolang;
|
||||
}
|
||||
|
||||
public static function htmlspecialchars($var)
|
||||
@ -56,6 +96,37 @@ class Lang
|
||||
return date($config['date_format'] . ' H:i', strtotime("$date $time"));
|
||||
}
|
||||
|
||||
public static function timeElapsed($datetime, $full = false)
|
||||
{
|
||||
$now = new DateTime;
|
||||
$ago = new DateTime($datetime);
|
||||
$diff = $now->diff($ago);
|
||||
|
||||
$diff->w = floor($diff->d / 7);
|
||||
$diff->d -= $diff->w * 7;
|
||||
|
||||
$string = array(
|
||||
'y' => Lang::T('year'),
|
||||
'm' => Lang::T('month'),
|
||||
'w' => Lang::T('week'),
|
||||
'd' => Lang::T('day'),
|
||||
'h' => Lang::T('hour'),
|
||||
'i' => Lang::T('minute'),
|
||||
's' => Lang::T('second'),
|
||||
);
|
||||
foreach ($string as $k => &$v) {
|
||||
if ($diff->$k) {
|
||||
$v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
|
||||
} else {
|
||||
unset($string[$k]);
|
||||
}
|
||||
}
|
||||
|
||||
if (!$full)
|
||||
$string = array_slice($string, 0, 1);
|
||||
return $string ? implode(', ', $string) . ' ago' : 'just now';
|
||||
}
|
||||
|
||||
public static function nl2br($text)
|
||||
{
|
||||
return nl2br($text);
|
||||
@ -87,16 +158,88 @@ class Lang
|
||||
return ucwords(str_replace('_', ' ', $text));
|
||||
}
|
||||
|
||||
public static function randomUpLowCase($text){
|
||||
public static function randomUpLowCase($text)
|
||||
{
|
||||
$jml = strlen($text);
|
||||
$result = '';
|
||||
for($i = 0; $i < $jml;$i++){
|
||||
if(rand(0,99)%2){
|
||||
$result .= strtolower(substr($text,$i,1));
|
||||
}else{
|
||||
$result .= substr($text,$i,1);
|
||||
for ($i = 0; $i < $jml; $i++) {
|
||||
if (rand(0, 99) % 2) {
|
||||
$result .= strtolower(substr($text, $i, 1));
|
||||
} else {
|
||||
$result .= substr($text, $i, 1);
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* $pad_type
|
||||
* 0 Left
|
||||
* 1 right
|
||||
* 2 center
|
||||
* */
|
||||
public static function pad($text, $pad_string = ' ', $pad_type = 0)
|
||||
{
|
||||
global $config;
|
||||
$cols = 37;
|
||||
if ($config['printer_cols']) {
|
||||
$cols = $config['printer_cols'];
|
||||
}
|
||||
$text = trim($text);
|
||||
$texts = explode("\n", $text);
|
||||
if (count($texts) > 1) {
|
||||
$text = '';
|
||||
foreach ($texts as $t) {
|
||||
$text .= self::pad(trim($t), $pad_string, $pad_type) . "\n";
|
||||
}
|
||||
return $text;
|
||||
} else {
|
||||
return str_pad(trim($text), $cols, $pad_string, $pad_type);
|
||||
}
|
||||
}
|
||||
|
||||
public static function pads($textLeft, $textRight, $pad_string = ' ')
|
||||
{
|
||||
global $config;
|
||||
$cols = 37;
|
||||
if ($config['printer_cols']) {
|
||||
$cols = $config['printer_cols'];
|
||||
}
|
||||
return $textLeft . str_pad($textRight, $cols - strlen($textLeft), $pad_string, 0);
|
||||
}
|
||||
|
||||
public static function translate($txt, $to = 'id')
|
||||
{
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL, "https://translate.google.com/m?hl=en&sl=en&tl=$to&ie=UTF-8&prev=_m&q=" . urlencode($txt));
|
||||
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
|
||||
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (iPhone; CPU OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) FxiOS/28.1 Mobile/15E148 Safari/605.1.15");
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
|
||||
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
|
||||
curl_setopt($ch, CURLOPT_HEADER, 0);
|
||||
$hasil = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
$temp = explode('<div class="result-container">', $hasil);
|
||||
if (count($temp) > 0) {
|
||||
$temp = explode("</div", $temp[1]);
|
||||
if (!empty($temp[0])) {
|
||||
return $temp[0];
|
||||
}
|
||||
}
|
||||
return $txt;
|
||||
}
|
||||
|
||||
public static function maskText($text){
|
||||
$len = strlen($text);
|
||||
if($len < 3){
|
||||
return "***";
|
||||
}else if($len<5){
|
||||
return substr($text,0,1)."***".substr($text,-1,1);
|
||||
}else if($len<8){
|
||||
return substr($text,0,2)."***".substr($text,-2,2);
|
||||
}else{
|
||||
return substr($text,0,4)."******".substr($text,-3,3);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
32
system/autoload/Log.php
Normal file
32
system/autoload/Log.php
Normal file
@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHP Mikrotik Billing (https://github.com/hotspotbilling/phpnuxbill/)
|
||||
* by https://t.me/ibnux
|
||||
**/
|
||||
|
||||
|
||||
class Log{
|
||||
public static function put($type, $description, $userid = '', $username = '')
|
||||
{
|
||||
$d = ORM::for_table('tbl_logs')->create();
|
||||
$d->date = date('Y-m-d H:i:s');
|
||||
$d->type = $type;
|
||||
$d->description = $description;
|
||||
$d->userid = $userid;
|
||||
$d->ip = (empty($username)) ? $_SERVER["REMOTE_ADDR"] : $username;
|
||||
$d->save();
|
||||
}
|
||||
|
||||
public static function arrayToText($array, $start = '', $result = '')
|
||||
{
|
||||
foreach ($array as $k => $v) {
|
||||
if (is_array($v)) {
|
||||
$result = Log::arrayToText($v, "$start$k.", $result);
|
||||
} else {
|
||||
$result .= $start.$k ." : ". strval($v) ."\n";
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
@ -14,7 +14,7 @@ class Message
|
||||
global $config;
|
||||
run_hook('send_telegram'); #HOOK
|
||||
if (!empty($config['telegram_bot']) && !empty($config['telegram_target_id'])) {
|
||||
Http::getData('https://api.telegram.org/bot' . $config['telegram_bot'] . '/sendMessage?chat_id=' . $config['telegram_target_id'] . '&text=' . urlencode($txt));
|
||||
return Http::getData('https://api.telegram.org/bot' . $config['telegram_bot'] . '/sendMessage?chat_id=' . $config['telegram_target_id'] . '&text=' . urlencode($txt));
|
||||
}
|
||||
}
|
||||
|
||||
@ -27,17 +27,17 @@ class Message
|
||||
if (strlen($config['sms_url']) > 4 && substr($config['sms_url'], 0, 4) != "http") {
|
||||
if (strlen($txt) > 160) {
|
||||
$txts = str_split($txt, 160);
|
||||
foreach ($txts as $txt) {
|
||||
try {
|
||||
$mikrotik = Mikrotik::info($config['sms_url']);
|
||||
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
|
||||
try {
|
||||
$mikrotik = Mikrotik::info($config['sms_url']);
|
||||
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
|
||||
foreach ($txts as $txt) {
|
||||
Mikrotik::sendSMS($client, $phone, $txt);
|
||||
} catch (Exception $e) {
|
||||
// ignore, add to logs
|
||||
_log("Failed to send SMS using Mikrotik.\n" . $e->getMessage(), 'SMS', 0);
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
// ignore, add to logs
|
||||
_log("Failed to send SMS using Mikrotik.\n" . $e->getMessage(), 'SMS', 0);
|
||||
}
|
||||
}else{
|
||||
} else {
|
||||
try {
|
||||
$mikrotik = Mikrotik::info($config['sms_url']);
|
||||
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
|
||||
@ -50,7 +50,7 @@ class Message
|
||||
} else {
|
||||
$smsurl = str_replace('[number]', urlencode($phone), $config['sms_url']);
|
||||
$smsurl = str_replace('[text]', urlencode($txt), $smsurl);
|
||||
Http::getData($smsurl);
|
||||
return Http::getData($smsurl);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -62,14 +62,15 @@ class Message
|
||||
if (!empty($config['wa_url'])) {
|
||||
$waurl = str_replace('[number]', urlencode($phone), $config['wa_url']);
|
||||
$waurl = str_replace('[text]', urlencode($txt), $waurl);
|
||||
Http::getData($waurl);
|
||||
return Http::getData($waurl);
|
||||
}
|
||||
}
|
||||
|
||||
public static function sendPackageNotification($phone, $name, $package, $message, $via)
|
||||
public static function sendPackageNotification($phone, $name, $package, $price, $message, $via)
|
||||
{
|
||||
$msg = str_replace('[[name]]', "*$name*", $message);
|
||||
$msg = str_replace('[[package]]', "*$package*", $msg);
|
||||
$msg = str_replace('[[name]]', $name, $message);
|
||||
$msg = str_replace('[[package]]', $package, $msg);
|
||||
$msg = str_replace('[[price]]', $price, $msg);
|
||||
if (
|
||||
!empty($phone) && strlen($phone) > 5
|
||||
&& !empty($message) && in_array($via, ['sms', 'wa'])
|
||||
@ -85,9 +86,9 @@ class Message
|
||||
|
||||
public static function sendBalanceNotification($phone, $name, $balance, $balance_now, $message, $via)
|
||||
{
|
||||
$msg = str_replace('[[name]]', "*$name*", $message);
|
||||
$msg = str_replace('[[name]]', $name, $message);
|
||||
$msg = str_replace('[[current_balance]]', Lang::moneyFormat($balance_now), $msg);
|
||||
$msg = str_replace('[[balance]]', "*" . Lang::moneyFormat($balance) . "*", $msg);
|
||||
$msg = str_replace('[[balance]]', Lang::moneyFormat($balance), $msg);
|
||||
if (
|
||||
!empty($phone) && strlen($phone) > 5
|
||||
&& !empty($message) && in_array($via, ['sms', 'wa'])
|
||||
@ -110,8 +111,9 @@ class Message
|
||||
$textInvoice = str_replace('[[phone]]', $config['phone'], $textInvoice);
|
||||
$textInvoice = str_replace('[[invoice]]', $trx['invoice'], $textInvoice);
|
||||
$textInvoice = str_replace('[[date]]', Lang::dateAndTimeFormat($trx['recharged_on'], $trx['recharged_time']), $textInvoice);
|
||||
$textInvoice = str_replace('[[payment_gateway]]', $config['gateway'], $textInvoice);
|
||||
$textInvoice = str_replace('[[payment_channel]]', $config['channel'], $textInvoice);
|
||||
$gc = explode("-", $trx['method']);
|
||||
$textInvoice = str_replace('[[payment_gateway]]', trim($gc[0]), $textInvoice);
|
||||
$textInvoice = str_replace('[[payment_channel]]', trim($gc[1]), $textInvoice);
|
||||
$textInvoice = str_replace('[[type]]', $trx['type'], $textInvoice);
|
||||
$textInvoice = str_replace('[[plan_name]]', $trx['plan_name'], $textInvoice);
|
||||
$textInvoice = str_replace('[[plan_price]]', Lang::moneyFormat($trx['price']), $textInvoice);
|
||||
|
@ -427,7 +427,7 @@ class Mikrotik
|
||||
'/ip pool print .proplist=.id',
|
||||
RouterOS\Query::where('name', $name)
|
||||
);
|
||||
$poolID = $client->sendSync($printRequest)->getProperty('id');
|
||||
$poolID = $client->sendSync($printRequest)->getProperty('.id');
|
||||
|
||||
if (empty($poolID)) {
|
||||
self::addPool($client, $name, $ip_address);
|
||||
@ -514,4 +514,49 @@ class Mikrotik
|
||||
->setArgument('message', $message);
|
||||
$client->sendSync($smsRequest);
|
||||
}
|
||||
|
||||
public static function getIpHotspotUser($client, $username){
|
||||
global $_app_stage;
|
||||
if ($_app_stage == 'demo') {
|
||||
return null;
|
||||
}
|
||||
$printRequest = new RouterOS\Request(
|
||||
'/ip hotspot active print',
|
||||
RouterOS\Query::where('user', $username)
|
||||
);
|
||||
return $client->sendSync($printRequest)->getProperty('address');
|
||||
}
|
||||
|
||||
public static function addIpToAddressList($client, $ip, $listName, $comment = '')
|
||||
{
|
||||
global $_app_stage;
|
||||
if ($_app_stage == 'demo') {
|
||||
return null;
|
||||
}
|
||||
$addRequest = new RouterOS\Request('/ip/firewall/address-list/add');
|
||||
$client->sendSync(
|
||||
$addRequest
|
||||
->setArgument('address', $ip)
|
||||
->setArgument('comment', $comment)
|
||||
->setArgument('list', $listName)
|
||||
);
|
||||
}
|
||||
|
||||
public static function removeIpFromAddressList($client, $ip)
|
||||
{
|
||||
global $_app_stage;
|
||||
if ($_app_stage == 'demo') {
|
||||
return null;
|
||||
}
|
||||
$printRequest = new RouterOS\Request(
|
||||
'/ip firewall address-list print .proplist=.id',
|
||||
RouterOS\Query::where('address', $ip)
|
||||
);
|
||||
$id = $client->sendSync($printRequest)->getProperty('.id');
|
||||
$removeRequest = new RouterOS\Request('/ip/firewall/address-list/remove');
|
||||
$client->sendSync(
|
||||
$removeRequest
|
||||
->setArgument('numbers', $id)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -59,8 +59,8 @@ class Package
|
||||
$textInvoice = str_replace('[[phone]]', $_c['phone'], $textInvoice);
|
||||
$textInvoice = str_replace('[[invoice]]', $inv, $textInvoice);
|
||||
$textInvoice = str_replace('[[date]]', Lang::dateTimeFormat($date_now), $textInvoice);
|
||||
$textInvoice = str_replace('[[payment_gateway]]', $_c['gateway'], $textInvoice);
|
||||
$textInvoice = str_replace('[[payment_channel]]', $_c['channel'], $textInvoice);
|
||||
$textInvoice = str_replace('[[payment_gateway]]', $gateway, $textInvoice);
|
||||
$textInvoice = str_replace('[[payment_channel]]', $channel, $textInvoice);
|
||||
$textInvoice = str_replace('[[type]]', 'Balance', $textInvoice);
|
||||
$textInvoice = str_replace('[[plan_name]]', $p['name_plan'], $textInvoice);
|
||||
$textInvoice = str_replace('[[plan_price]]', Lang::moneyFormat($p['price']), $textInvoice);
|
||||
@ -80,8 +80,14 @@ class Package
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
$b = ORM::for_table('tbl_user_recharges')->where('customer_id', $id_customer)->where('routers', $router_name)->find_one();
|
||||
/**
|
||||
* 1 Customer only can have 1 PPPOE and 1 Hotspot Plan
|
||||
*/
|
||||
$b = ORM::for_table('tbl_user_recharges')
|
||||
->where('customer_id', $id_customer)
|
||||
->where('routers', $router_name)
|
||||
->where('Type', $p['type'])
|
||||
->find_one();
|
||||
|
||||
$mikrotik = Mikrotik::info($router_name);
|
||||
if ($p['validity_unit'] == 'Months') {
|
||||
@ -100,17 +106,6 @@ class Package
|
||||
|
||||
if ($p['type'] == 'Hotspot') {
|
||||
if ($b) {
|
||||
if ($p['is_radius']) {
|
||||
Radius::customerAddPlan($c, $p, "$date_exp $time");
|
||||
}else{
|
||||
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
|
||||
Mikrotik::removeHotspotUser($client, $c['username']);
|
||||
Mikrotik::removePpoeUser($client, $c['username']);
|
||||
Mikrotik::removeHotspotActiveUser($client, $c['username']);
|
||||
Mikrotik::removePpoeActive($client, $c['username']);
|
||||
Mikrotik::addHotspotUser($client, $p, $c);
|
||||
}
|
||||
|
||||
if ($b['namebp'] == $p['name_plan'] && $b['status'] == 'on') {
|
||||
// if it same internet plan, expired will extend
|
||||
if ($p['validity_unit'] == 'Months') {
|
||||
@ -130,6 +125,15 @@ class Package
|
||||
}
|
||||
}
|
||||
|
||||
if ($p['is_radius']) {
|
||||
Radius::customerAddPlan($c, $p, "$date_exp $time");
|
||||
}else{
|
||||
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
|
||||
Mikrotik::removeHotspotUser($client, $c['username']);
|
||||
Mikrotik::removeHotspotActiveUser($client, $c['username']);
|
||||
Mikrotik::addHotspotUser($client, $p, $c);
|
||||
}
|
||||
|
||||
$b->customer_id = $id_customer;
|
||||
$b->username = $c['username'];
|
||||
$b->plan_id = $plan_id;
|
||||
@ -164,9 +168,7 @@ class Package
|
||||
}else{
|
||||
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
|
||||
Mikrotik::removeHotspotUser($client, $c['username']);
|
||||
Mikrotik::removePpoeUser($client, $c['username']);
|
||||
Mikrotik::removeHotspotActiveUser($client, $c['username']);
|
||||
Mikrotik::removePpoeActive($client, $c['username']);
|
||||
Mikrotik::addHotspotUser($client, $p, $c);
|
||||
}
|
||||
|
||||
@ -208,18 +210,6 @@ class Package
|
||||
} else {
|
||||
|
||||
if ($b) {
|
||||
if ($p['is_radius']) {
|
||||
Radius::customerAddPlan($c, $p, "$date_exp $time");
|
||||
}else{
|
||||
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
|
||||
Mikrotik::removeHotspotUser($client, $c['username']);
|
||||
Mikrotik::removePpoeUser($client, $c['username']);
|
||||
Mikrotik::removeHotspotActiveUser($client, $c['username']);
|
||||
Mikrotik::removePpoeActive($client, $c['username']);
|
||||
Mikrotik::addPpoeUser($client, $p, $c);
|
||||
}
|
||||
|
||||
|
||||
if ($b['namebp'] == $p['name_plan'] && $b['status'] == 'on') {
|
||||
// if it same internet plan, expired will extend
|
||||
if ($p['validity_unit'] == 'Months') {
|
||||
@ -239,6 +229,15 @@ class Package
|
||||
}
|
||||
}
|
||||
|
||||
if ($p['is_radius']) {
|
||||
Radius::customerAddPlan($c, $p, "$date_exp $time");
|
||||
}else{
|
||||
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
|
||||
Mikrotik::removePpoeUser($client, $c['username']);
|
||||
Mikrotik::removePpoeActive($client, $c['username']);
|
||||
Mikrotik::addPpoeUser($client, $p, $c);
|
||||
}
|
||||
|
||||
$b->customer_id = $id_customer;
|
||||
$b->username = $c['username'];
|
||||
$b->plan_id = $plan_id;
|
||||
@ -272,9 +271,7 @@ class Package
|
||||
Radius::customerAddPlan($c, $p, "$date_exp $time");
|
||||
}else{
|
||||
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
|
||||
Mikrotik::removeHotspotUser($client, $c['username']);
|
||||
Mikrotik::removePpoeUser($client, $c['username']);
|
||||
Mikrotik::removeHotspotActiveUser($client, $c['username']);
|
||||
Mikrotik::removePpoeActive($client, $c['username']);
|
||||
Mikrotik::addPpoeUser($client, $p, $c);
|
||||
}
|
||||
@ -316,8 +313,7 @@ class Package
|
||||
"\nPrice: " . Lang::moneyFormat($p['price']));
|
||||
}
|
||||
|
||||
$in = ORM::for_table('tbl_transactions')->where('username', $c['username'])->order_by_desc('id')->find_one();
|
||||
Message::sendInvoice($c, $in);
|
||||
Message::sendInvoice($c, $t);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -337,34 +333,26 @@ class Package
|
||||
if (!$p['is_radius']) {
|
||||
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
|
||||
Mikrotik::removeHotspotUser($client, $c['username']);
|
||||
Mikrotik::removePpoeUser($client, $c['username']);
|
||||
Mikrotik::removeHotspotActiveUser($client, $c['username']);
|
||||
Mikrotik::removePpoeActive($client, $c['username']);
|
||||
}
|
||||
} else {
|
||||
if (!$p['is_radius']) {
|
||||
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
|
||||
Mikrotik::removeHotspotUser($client, $c['username']);
|
||||
Mikrotik::removePpoeUser($client, $c['username']);
|
||||
Mikrotik::removeHotspotActiveUser($client, $c['username']);
|
||||
Mikrotik::removePpoeActive($client, $c['username']);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if ($b) {
|
||||
if (!$p['is_radius']) {
|
||||
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
|
||||
Mikrotik::removeHotspotUser($client, $c['username']);
|
||||
Mikrotik::removePpoeUser($client, $c['username']);
|
||||
Mikrotik::removeHotspotActiveUser($client, $c['username']);
|
||||
Mikrotik::removePpoeActive($client, $c['username']);
|
||||
}
|
||||
} else {
|
||||
if (!$p['is_radius']) {
|
||||
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
|
||||
Mikrotik::removeHotspotUser($client, $c['username']);
|
||||
Mikrotik::removePpoeUser($client, $c['username']);
|
||||
Mikrotik::removeHotspotActiveUser($client, $c['username']);
|
||||
Mikrotik::removePpoeActive($client, $c['username']);
|
||||
}
|
||||
}
|
||||
|
@ -18,10 +18,14 @@ class Paginator
|
||||
$page = (int)(empty(_get('p')) ? 1 : _get('p'));
|
||||
$pagination = "";
|
||||
foreach($colVal as $k=>$v) {
|
||||
if(strpos($v,'%') === false) {
|
||||
if(!is_array($v) && strpos($v,'%') === false) {
|
||||
$table = $table->where($k, $v);
|
||||
}else{
|
||||
$table = $table->where_like($k, $v);
|
||||
if(is_array($v)){
|
||||
$table = $table->where_in($k, $v);
|
||||
}else{
|
||||
$table = $table->where_like($k, $v);
|
||||
}
|
||||
}
|
||||
}
|
||||
$totalReq = $table->count();
|
||||
@ -78,11 +82,11 @@ class Paginator
|
||||
}
|
||||
|
||||
if ($page < $counter - 1) {
|
||||
$pagination .= "<li><a href='{$url}&p=$next&q=$query'>" . $_L['Next'] . "</a></li>";
|
||||
$pagination .= "<li><a href='{$url}&p=$lastpage&q=$query'>" . $_L['Last'] . "</a></li>";
|
||||
$pagination .= "<li><a href='{$url}&p=$next&q=$query'>" . Lang::T('Next') . "</a></li>";
|
||||
$pagination .= "<li><a href='{$url}&p=$lastpage&q=$query'>" . Lang::T('Last') . "</a></li>";
|
||||
} else {
|
||||
$pagination .= "<li class='disabled'><a class='disabled'>" . $_L['Next'] . "</a></li>";
|
||||
$pagination .= "<li class='disabled'><a class='disabled'>" . $_L['Last'] . "</a></li>";
|
||||
$pagination .= "<li class='disabled'><a class='disabled'>" . Lang::T('Next') . "</a></li>";
|
||||
$pagination .= "<li class='disabled'><a class='disabled'>" . Lang::T('Last') . "</a></li>";
|
||||
}
|
||||
$pagination .= "</ul>";
|
||||
|
||||
@ -184,11 +188,11 @@ class Paginator
|
||||
}
|
||||
|
||||
if ($page < $counter - 1) {
|
||||
$pagination .= "<li><a href='{$url}$next'>" . $_L['Next'] . "</a></li>";
|
||||
$pagination .= "<li><a href='{$url}$lastpage'>" . $_L['Last'] . "</a></li>";
|
||||
$pagination .= "<li><a href='{$url}$next'>" . Lang::T('Next') . "</a></li>";
|
||||
$pagination .= "<li><a href='{$url}$lastpage'>" . Lang::T('Last') . "</a></li>";
|
||||
} else {
|
||||
$pagination .= "<li class='disabled'><a class='disabled'>" . $_L['Next'] . "</a></li>";
|
||||
$pagination .= "<li class='disabled'><a class='disabled'>" . $_L['Last'] . "</a></li>";
|
||||
$pagination .= "<li class='disabled'><a class='disabled'>" . Lang::T('Next') . "</a></li>";
|
||||
$pagination .= "<li class='disabled'><a class='disabled'>" . Lang::T('Last') . "</a></li>";
|
||||
}
|
||||
$pagination .= "</ul>";
|
||||
|
||||
@ -278,11 +282,11 @@ class Paginator
|
||||
}
|
||||
|
||||
if ($page < $counter - 1) {
|
||||
$pagination .= "<li><a href='{$url}$next'>" . $_L['Next'] . "</a></li>";
|
||||
$pagination .= "<li><a href='{$url}$lastpage'>" . $_L['Last'] . "</a></li>";
|
||||
$pagination .= "<li><a href='{$url}$next'>" . Lang::T('Next') . "</a></li>";
|
||||
$pagination .= "<li><a href='{$url}$lastpage'>" . Lang::T('Last') . "</a></li>";
|
||||
} else {
|
||||
$pagination .= "<li class='disabled'><a class='disabled'>" . $_L['Next'] . "</a></li>";
|
||||
$pagination .= "<li class='disabled'><a class='disabled'>" . $_L['Last'] . "</a></li>";
|
||||
$pagination .= "<li class='disabled'><a class='disabled'>" . Lang::T('Next') . "</a></li>";
|
||||
$pagination .= "<li class='disabled'><a class='disabled'>" . Lang::T('Last') . "</a></li>";
|
||||
}
|
||||
$pagination .= "</ul>";
|
||||
|
||||
|
@ -8,9 +8,40 @@
|
||||
|
||||
class User
|
||||
{
|
||||
public static function getID(){
|
||||
global $db_password;
|
||||
if(isset($_SESSION['uid'])){
|
||||
return $_SESSION['uid'];
|
||||
}else if(isset($_COOKIE['uid'])){
|
||||
// id.time.sha1
|
||||
$tmp = explode('.',$_COOKIE['uid']);
|
||||
if(sha1($tmp[0].$tmp[1].$db_password)==$tmp[2]){
|
||||
if($tmp[1] < 86400*30){
|
||||
$_SESSION['uid'] = $tmp[0];
|
||||
return $tmp[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static function setCookie($uid){
|
||||
global $db_password;
|
||||
if(isset($uid)){
|
||||
$time = time();
|
||||
setcookie('uid', $uid.'.'.$time.'.'.sha1($uid.'.'.$time.'.'.$db_password), time()+86400*30);
|
||||
}
|
||||
}
|
||||
|
||||
public static function removeCookie(){
|
||||
if(isset($_COOKIE['uid'])){
|
||||
setcookie('uid', '', time()-86400);
|
||||
}
|
||||
}
|
||||
|
||||
public static function _info()
|
||||
{
|
||||
$id = $_SESSION['uid'];
|
||||
$id = User::getID();
|
||||
$d = ORM::for_table('tbl_customers')->find_one($id);
|
||||
|
||||
if(empty($d['username'])){
|
||||
@ -21,7 +52,7 @@ class User
|
||||
|
||||
public static function _billing()
|
||||
{
|
||||
$id = $_SESSION['uid'];
|
||||
$id = User::getID();
|
||||
$d = ORM::for_table('tbl_user_recharges')->where('customer_id', $id)->find_many();
|
||||
return $d;
|
||||
}
|
||||
|
@ -20,7 +20,7 @@ class Validator
|
||||
* @param array $hits
|
||||
* @return void
|
||||
*/
|
||||
private static function textHit($string, $exclude = "")
|
||||
public static function textHit($string, $exclude = "")
|
||||
{
|
||||
if (empty($exclude)) return false;
|
||||
if (is_array($exclude)) {
|
||||
|
260
system/boot.php
260
system/boot.php
@ -5,32 +5,6 @@
|
||||
|
||||
**/
|
||||
|
||||
|
||||
// on some server, it getting error because of slash is backwards
|
||||
function _autoloader($class)
|
||||
{
|
||||
if (strpos($class, '_') !== false) {
|
||||
$class = str_replace('_', DIRECTORY_SEPARATOR, $class);
|
||||
if (file_exists('autoload' . DIRECTORY_SEPARATOR . $class . '.php')) {
|
||||
include 'autoload' . DIRECTORY_SEPARATOR . $class . '.php';
|
||||
} else {
|
||||
$class = str_replace("\\", DIRECTORY_SEPARATOR, $class);
|
||||
if (file_exists(__DIR__ . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php'))
|
||||
include __DIR__ . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php';
|
||||
}
|
||||
} else {
|
||||
if (file_exists('autoload' . DIRECTORY_SEPARATOR . $class . '.php')) {
|
||||
include 'autoload' . DIRECTORY_SEPARATOR . $class . '.php';
|
||||
} else {
|
||||
$class = str_replace("\\", DIRECTORY_SEPARATOR, $class);
|
||||
if (file_exists(__DIR__ . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php'))
|
||||
include __DIR__ . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
spl_autoload_register('_autoloader');
|
||||
|
||||
function r2($to, $ntype = 'e', $msg = '')
|
||||
{
|
||||
if ($msg == '') {
|
||||
@ -49,65 +23,23 @@ if (file_exists('config.php')) {
|
||||
r2('install');
|
||||
}
|
||||
|
||||
|
||||
function safedata($value)
|
||||
{
|
||||
$value = trim($value);
|
||||
return $value;
|
||||
}
|
||||
|
||||
function _post($param, $defvalue = '')
|
||||
{
|
||||
if (!isset($_POST[$param])) {
|
||||
return $defvalue;
|
||||
} else {
|
||||
return safedata($_POST[$param]);
|
||||
}
|
||||
}
|
||||
|
||||
function _get($param, $defvalue = '')
|
||||
{
|
||||
if (!isset($_GET[$param])) {
|
||||
return $defvalue;
|
||||
} else {
|
||||
return safedata($_GET[$param]);
|
||||
}
|
||||
}
|
||||
try {
|
||||
|
||||
require_once File::pathFixer('system/orm.php');
|
||||
|
||||
ORM::configure("mysql:host=$db_host;dbname=$db_name");
|
||||
ORM::configure('username', $db_user);
|
||||
ORM::configure('password', $db_password);
|
||||
ORM::configure('driver_options', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
|
||||
ORM::configure('return_result_sets', true);
|
||||
if ($_app_stage != 'Live') {
|
||||
ORM::configure('logging', true);
|
||||
}
|
||||
|
||||
$result = ORM::for_table('tbl_appconfig')->find_many();
|
||||
foreach ($result as $value) {
|
||||
$config[$value['setting']] = $value['value'];
|
||||
}
|
||||
|
||||
date_default_timezone_set($config['timezone']);
|
||||
$_c = $config;
|
||||
|
||||
// check if proxy setup in database
|
||||
if (empty($http_proxy) && !empty($config['http_proxy'])) {
|
||||
$http_proxy = $config['http_proxy'];
|
||||
if (empty($http_proxyauth) && !empty($config['http_proxyauth'])) {
|
||||
$http_proxyauth = $config['http_proxyauth'];
|
||||
}
|
||||
}
|
||||
if ((!empty($radius_user) && $config['radius_enable']) || _post('radius_enable')) {
|
||||
ORM::configure("mysql:host=$radius_host;dbname=$radius_name", null, 'radius');
|
||||
ORM::configure('username', $radius_user, 'radius');
|
||||
ORM::configure('password', $radius_pass, 'radius');
|
||||
ORM::configure('driver_options', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'), 'radius');
|
||||
ORM::configure('return_result_sets', true, 'radius');
|
||||
require_once 'init.php';
|
||||
} catch (Throwable $e) {
|
||||
$ui = new Smarty();
|
||||
$ui->setTemplateDir(['custom' => File::pathFixer('ui/ui_custom/'), 'default' => File::pathFixer('ui/ui/')]);
|
||||
$ui->assign('_url', APP_URL . '/index.php?_route=');
|
||||
$ui->setCompileDir(File::pathFixer('ui/compiled/'));
|
||||
$ui->setConfigDir(File::pathFixer('ui/conf/'));
|
||||
$ui->setCacheDir(File::pathFixer('ui/cache/'));
|
||||
$ui->assign("error_title", "PHPNuxBill Crash");
|
||||
if (_auth()) {
|
||||
$ui->assign("error_message", $e->getMessage() . '<br>');
|
||||
} else {
|
||||
$ui->assign("error_message", $e->getMessage() . '<br><pre>' . $e->getTraceAsString() . '</pre>');
|
||||
}
|
||||
$ui->display('router-error.tpl');
|
||||
die();
|
||||
} catch (Exception $e) {
|
||||
$ui = new Smarty();
|
||||
$ui->setTemplateDir(['custom' => File::pathFixer('ui/ui_custom/'), 'default' => File::pathFixer('ui/ui/')]);
|
||||
@ -116,9 +48,9 @@ try {
|
||||
$ui->setConfigDir(File::pathFixer('ui/conf/'));
|
||||
$ui->setCacheDir(File::pathFixer('ui/cache/'));
|
||||
$ui->assign("error_title", "PHPNuxBill Crash");
|
||||
if (isset($_SESSION['uid'])) {
|
||||
if (_auth()) {
|
||||
$ui->assign("error_message", $e->getMessage() . '<br>');
|
||||
}else{
|
||||
} else {
|
||||
$ui->assign("error_message", $e->getMessage() . '<br><pre>' . $e->getTraceAsString() . '</pre>');
|
||||
}
|
||||
$ui->display('router-error.tpl');
|
||||
@ -130,18 +62,9 @@ function _notify($msg, $type = 'e')
|
||||
$_SESSION['ntype'] = $type;
|
||||
$_SESSION['notify'] = $msg;
|
||||
}
|
||||
if(empty($config['language'])){
|
||||
$config['language'] = 'english';
|
||||
}
|
||||
$lan_file = File::pathFixer('system/lan/' . $config['language'] . '/common.lan.php');
|
||||
if(file_exists($lan_file)){
|
||||
require $lan_file;
|
||||
}else{
|
||||
die("$lan_file not found");
|
||||
}
|
||||
|
||||
$ui = new Smarty();
|
||||
|
||||
$ui->assign('_kolaps', $_COOKIE['kolaps']);
|
||||
if (!empty($config['theme']) && $config['theme'] != 'default') {
|
||||
$_theme = APP_URL . '/ui/themes/' . $config['theme'];
|
||||
$ui->setTemplateDir(['custom' => File::pathFixer('ui/ui_custom/'), 'theme' => File::pathFixer('ui/themes/' . $config['theme']), 'default' => File::pathFixer('ui/ui/')]);
|
||||
@ -157,13 +80,11 @@ $ui->setConfigDir(File::pathFixer('ui/conf/'));
|
||||
$ui->setCacheDir(File::pathFixer('ui/cache/'));
|
||||
$ui->assign('app_url', APP_URL);
|
||||
$ui->assign('_domain', str_replace('www.', '', parse_url(APP_URL, PHP_URL_HOST)));
|
||||
define('U', APP_URL . '/index.php?_route=');
|
||||
$ui->assign('_url', APP_URL . '/index.php?_route=');
|
||||
$ui->assign('_path', __DIR__);
|
||||
$ui->assign('_c', $config);
|
||||
$ui->assign('_L', $_L);
|
||||
$ui->assign('_system_menu', 'dashboard');
|
||||
$ui->assign('_title', $config['CompanyName']);
|
||||
|
||||
function _msglog($type, $msg)
|
||||
{
|
||||
@ -180,128 +101,6 @@ if (isset($_SESSION['notify'])) {
|
||||
unset($_SESSION['ntype']);
|
||||
}
|
||||
|
||||
include "autoload/Hookers.php";
|
||||
|
||||
// notification message
|
||||
if (file_exists(File::pathFixer("system/uploads/notifications.json"))) {
|
||||
$_notifmsg = json_decode(file_get_contents(File::pathFixer('system/uploads/notifications.json')), true);
|
||||
}
|
||||
$_notifmsg_default = json_decode(file_get_contents(File::pathFixer('system/uploads/notifications.default.json')), true);
|
||||
|
||||
//register all plugin
|
||||
foreach (glob(File::pathFixer("system/plugin/*.php")) as $filename) {
|
||||
include $filename;
|
||||
}
|
||||
|
||||
|
||||
function _auth($login = true)
|
||||
{
|
||||
if (isset($_SESSION['uid'])) {
|
||||
return true;
|
||||
} else {
|
||||
if ($login) {
|
||||
r2(U . 'login');
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function _admin($login = true)
|
||||
{
|
||||
if (isset($_SESSION['aid'])) {
|
||||
return true;
|
||||
} else {
|
||||
if ($login) {
|
||||
r2(U . 'login');
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function _log($description, $type = '', $userid = '0')
|
||||
{
|
||||
$d = ORM::for_table('tbl_logs')->create();
|
||||
$d->date = date('Y-m-d H:i:s');
|
||||
$d->type = $type;
|
||||
$d->description = $description;
|
||||
$d->userid = $userid;
|
||||
$d->ip = $_SERVER["REMOTE_ADDR"];
|
||||
$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)
|
||||
{
|
||||
Message::sendTelegram($txt);
|
||||
}
|
||||
|
||||
function sendSMS($phone, $txt)
|
||||
{
|
||||
Message::sendSMS($phone, $txt);
|
||||
}
|
||||
|
||||
function sendWhatsapp($phone, $txt)
|
||||
{
|
||||
Message::sendWhatsapp($phone, $txt);
|
||||
}
|
||||
|
||||
|
||||
function time_elapsed_string($datetime, $full = false)
|
||||
{
|
||||
$now = new DateTime;
|
||||
$ago = new DateTime($datetime);
|
||||
$diff = $now->diff($ago);
|
||||
|
||||
$diff->w = floor($diff->d / 7);
|
||||
$diff->d -= $diff->w * 7;
|
||||
|
||||
$string = array(
|
||||
'y' => 'year',
|
||||
'm' => 'month',
|
||||
'w' => 'week',
|
||||
'd' => 'day',
|
||||
'h' => 'hour',
|
||||
'i' => 'minute',
|
||||
's' => 'second',
|
||||
);
|
||||
foreach ($string as $k => &$v) {
|
||||
if ($diff->$k) {
|
||||
$v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
|
||||
} else {
|
||||
unset($string[$k]);
|
||||
}
|
||||
}
|
||||
|
||||
if (!$full) $string = array_slice($string, 0, 1);
|
||||
return $string ? implode(', ', $string) . ' ago' : 'just now';
|
||||
}
|
||||
|
||||
// Routing Engine
|
||||
$req = _get('_route');
|
||||
@ -312,8 +111,7 @@ if ($handler == '') {
|
||||
$handler = 'default';
|
||||
}
|
||||
try {
|
||||
|
||||
$sys_render = File::pathFixer('system/controllers/' . $handler . '.php');
|
||||
$sys_render = $root_path.File::pathFixer('system/controllers/' . $handler . '.php');
|
||||
if (file_exists($sys_render)) {
|
||||
$menus = array();
|
||||
// "name" => $name,
|
||||
@ -327,12 +125,20 @@ try {
|
||||
if (!empty($menu['icon'])) {
|
||||
$menus[$menu['position']] .= '<i class="' . $menu['icon'] . '"></i>';
|
||||
}
|
||||
if (!empty($menu['label'])) {
|
||||
$menus[$menu['position']] .= '<span class="pull-right-container">';
|
||||
$menus[$menu['position']] .= '<small class="label pull-right bg-' . $menu['color'] . '">' . $menu['label'] . '</small></span>';
|
||||
}
|
||||
$menus[$menu['position']] .= '<span class="text">' . $menu['name'] . '</span></a></li>';
|
||||
} else if (!$menu['admin'] && _auth(false)) {
|
||||
$menus[$menu['position']] .= '<li' . (($routes[1] == $menu['function']) ? ' class="active"' : '') . '><a href="' . U . 'plugin/' . $menu['function'] . '">';
|
||||
if (!empty($menu['icon'])) {
|
||||
$menus[$menu['position']] .= '<i class="' . $menu['icon'] . '"></i>';
|
||||
}
|
||||
if (!empty($menu['label'])) {
|
||||
$menus[$menu['position']] .= '<span class="pull-right-container">';
|
||||
$menus[$menu['position']] .= '<small class="label pull-right bg-' . $menu['color'] . '">' . $menu['label'] . '</small></span>';
|
||||
}
|
||||
$menus[$menu['position']] .= '<span class="text">' . $menu['name'] . '</span></a></li>';
|
||||
}
|
||||
}
|
||||
@ -344,9 +150,17 @@ try {
|
||||
} else {
|
||||
r2(U . 'dashboard', 'e', 'not found');
|
||||
}
|
||||
} catch (Throwable $e) {
|
||||
if (!Admin::getID()) {
|
||||
r2(U . 'home', 'e', $e->getMessage());
|
||||
}
|
||||
$ui->assign("error_message", $e->getMessage() . '<br><pre>' . $e->getTraceAsString() . '</pre>');
|
||||
$ui->assign("error_title", "PHPNuxBill Crash");
|
||||
$ui->display('router-error.tpl');
|
||||
die();
|
||||
} catch (Exception $e) {
|
||||
if (!isset($_SESSION['aid']) || empty($_SESSION['aid'])) {
|
||||
r2(U . 'home' , 'e', $e->getMessage());
|
||||
if (!Admin::getID()) {
|
||||
r2(U . 'home', 'e', $e->getMessage());
|
||||
}
|
||||
$ui->assign("error_message", $e->getMessage() . '<br><pre>' . $e->getTraceAsString() . '</pre>');
|
||||
$ui->assign("error_title", "PHPNuxBill Crash");
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
|
||||
_auth();
|
||||
$ui->assign('_title', $_L['My_Account']);
|
||||
$ui->assign('_title', Lang::T('My Account'));
|
||||
$ui->assign('_system_menu', 'accounts');
|
||||
|
||||
$action = $routes['1'];
|
||||
@ -62,18 +62,18 @@ switch ($action) {
|
||||
$d->password = $npass;
|
||||
$d->save();
|
||||
|
||||
_msglog('s', $_L['Password_Changed_Successfully']);
|
||||
_msglog('s', Lang::T('Password changed successfully, Please login again'));
|
||||
_log('[' . $user['username'] . ']: Password changed successfully', 'User', $user['id']);
|
||||
|
||||
r2(U . 'login');
|
||||
} else {
|
||||
r2(U . 'accounts/change-password', 'e', $_L['Incorrect_Current_Password']);
|
||||
r2(U . 'accounts/change-password', 'e', Lang::T('Incorrect Current Password'));
|
||||
}
|
||||
} else {
|
||||
r2(U . 'accounts/change-password', 'e', $_L['Incorrect_Current_Password']);
|
||||
r2(U . 'accounts/change-password', 'e', Lang::T('Incorrect Current Password'));
|
||||
}
|
||||
} else {
|
||||
r2(U . 'accounts/change-password', 'e', $_L['Incorrect_Current_Password']);
|
||||
r2(U . 'accounts/change-password', 'e', Lang::T('Incorrect Current Password'));
|
||||
}
|
||||
break;
|
||||
|
||||
@ -105,7 +105,7 @@ switch ($action) {
|
||||
$d = ORM::for_table('tbl_customers')->find_one($user['id']);
|
||||
if ($d) {
|
||||
} else {
|
||||
$msg .= $_L['Data_Not_Found'] . '<br>';
|
||||
$msg .= Lang::T('Data Not Found') . '<br>';
|
||||
}
|
||||
|
||||
if ($msg == '') {
|
||||
@ -115,8 +115,8 @@ switch ($action) {
|
||||
$d->phonenumber = $phonenumber;
|
||||
$d->save();
|
||||
|
||||
_log('[' . $user['username'] . ']: ' . $_L['User_Updated_Successfully'], 'User', $user['id']);
|
||||
r2(U . 'accounts/profile', 's', $_L['User_Updated_Successfully']);
|
||||
_log('[' . $user['username'] . ']: ' . Lang::T('User Updated Successfully'), 'User', $user['id']);
|
||||
r2(U . 'accounts/profile', 's', Lang::T('User Updated Successfully'));
|
||||
} else {
|
||||
r2(U . 'accounts/profile', 'e', $msg);
|
||||
}
|
||||
|
@ -22,21 +22,22 @@ switch ($do) {
|
||||
$d_pass = $d['password'];
|
||||
if (Password::_verify($password, $d_pass) == true) {
|
||||
$_SESSION['aid'] = $d['id'];
|
||||
Admin::setCookie($d['id']);
|
||||
$d->last_login = date('Y-m-d H:i:s');
|
||||
$d->save();
|
||||
_log($username . ' ' . $_L['Login_Successful'], 'Admin', $d['id']);
|
||||
_log($username . ' ' . Lang::T('Login Successful'), $d['user_type'], $d['id']);
|
||||
r2(U . 'dashboard');
|
||||
} else {
|
||||
_msglog('e', $_L['Invalid_Username_or_Password']);
|
||||
_log($username . ' ' . $_L['Failed_Login'], 'Admin');
|
||||
_msglog('e', Lang::T('Invalid Username or Password'));
|
||||
_log($username . ' ' . Lang::T('Failed Login'), $d['user_type']);
|
||||
r2(U . 'admin');
|
||||
}
|
||||
} else {
|
||||
_msglog('e', $_L['Invalid_Username_or_Password']);
|
||||
_msglog('e', Lang::T('Invalid Username or Password'));
|
||||
r2(U . 'admin');
|
||||
}
|
||||
} else {
|
||||
_msglog('e', $_L['Invalid_Username_or_Password']);
|
||||
_msglog('e', Lang::T('Invalid Username or Password'));
|
||||
r2(U . 'admin');
|
||||
}
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
||||
**/
|
||||
|
||||
_admin();
|
||||
$ui->assign('_title', $_L['Network']);
|
||||
$ui->assign('_title', Lang::T('Network'));
|
||||
$ui->assign('_system_menu', 'network');
|
||||
|
||||
$action = $routes['1'];
|
||||
|
@ -5,15 +5,15 @@
|
||||
**/
|
||||
|
||||
_admin();
|
||||
$ui->assign('_title', $_L['Bandwidth_Plans']);
|
||||
$ui->assign('_title', Lang::T('Bandwidth Plans'));
|
||||
$ui->assign('_system_menu', 'services');
|
||||
|
||||
$action = $routes['1'];
|
||||
$admin = Admin::_info();
|
||||
$ui->assign('_admin', $admin);
|
||||
|
||||
if($admin['user_type'] != 'Admin' AND $admin['user_type'] != 'Sales'){
|
||||
r2(U."dashboard",'e',$_L['Do_Not_Access']);
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
r2(U."dashboard",'e',Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
|
||||
switch ($action) {
|
||||
@ -57,7 +57,7 @@ switch ($action) {
|
||||
$d = ORM::for_table('tbl_bandwidth')->find_one($id);
|
||||
if($d){
|
||||
$d->delete();
|
||||
r2(U . 'bandwidth/list', 's', $_L['Delete_Successfully']);
|
||||
r2(U . 'bandwidth/list', 's', Lang::T('Data Deleted Successfully'));
|
||||
}
|
||||
break;
|
||||
|
||||
@ -67,6 +67,7 @@ switch ($action) {
|
||||
$rate_down_unit = _post('rate_down_unit');
|
||||
$rate_up = _post('rate_up');
|
||||
$rate_up_unit = _post('rate_up_unit');
|
||||
$burst = _post('burst');
|
||||
run_hook('add_bandwidth'); #HOOK
|
||||
$msg = '';
|
||||
if(Validator::Length($name,16,4) == false){
|
||||
@ -78,7 +79,7 @@ switch ($action) {
|
||||
|
||||
$d = ORM::for_table('tbl_bandwidth')->where('name_bw',$name)->find_one();
|
||||
if($d){
|
||||
$msg .= $_L['BW_already_exist']. '<br>';
|
||||
$msg .= Lang::T('Name Bandwidth Already Exist'). '<br>';
|
||||
}
|
||||
|
||||
if($msg == ''){
|
||||
@ -88,9 +89,10 @@ switch ($action) {
|
||||
$d->rate_down_unit = $rate_down_unit;
|
||||
$d->rate_up = $rate_up;
|
||||
$d->rate_up_unit = $rate_up_unit;
|
||||
$d->burst = $burst;
|
||||
$d->save();
|
||||
|
||||
r2(U . 'bandwidth/list', 's', $_L['Created_Successfully']);
|
||||
r2(U . 'bandwidth/list', 's', Lang::T('Data Created Successfully'));
|
||||
}else{
|
||||
r2(U . 'bandwidth/add', 'e', $msg);
|
||||
}
|
||||
@ -102,6 +104,7 @@ switch ($action) {
|
||||
$rate_down_unit = _post('rate_down_unit');
|
||||
$rate_up = _post('rate_up');
|
||||
$rate_up_unit = _post('rate_up_unit');
|
||||
$burst = _post('burst');
|
||||
run_hook('edit_bandwidth'); #HOOK
|
||||
$msg = '';
|
||||
if(Validator::Length($name,16,4) == false){
|
||||
@ -112,13 +115,13 @@ switch ($action) {
|
||||
$d = ORM::for_table('tbl_bandwidth')->find_one($id);
|
||||
if($d){
|
||||
}else{
|
||||
$msg .= $_L['Data_Not_Found']. '<br>';
|
||||
$msg .= Lang::T('Data Not Found'). '<br>';
|
||||
}
|
||||
|
||||
if($d['name_bw'] != $name){
|
||||
$c = ORM::for_table('tbl_bandwidth')->where('name_bw',$name)->find_one();
|
||||
if($c){
|
||||
$msg .= $_L['BW_already_exist']. '<br>';
|
||||
$msg .= Lang::T('Name Bandwidth Already Exist'). '<br>';
|
||||
}
|
||||
}
|
||||
|
||||
@ -128,9 +131,10 @@ switch ($action) {
|
||||
$d->rate_down_unit = $rate_down_unit;
|
||||
$d->rate_up = $rate_up;
|
||||
$d->rate_up_unit = $rate_up_unit;
|
||||
$d->burst = $burst;
|
||||
$d->save();
|
||||
|
||||
r2(U . 'bandwidth/list', 's', $_L['Updated_Successfully']);
|
||||
r2(U . 'bandwidth/list', 's', Lang::T('Data Updated Successfully'));
|
||||
}else{
|
||||
r2(U . 'bandwidth/edit/'.$id, 'e', $msg);
|
||||
}
|
||||
|
126
system/controllers/codecanyon.php
Normal file
126
system/controllers/codecanyon.php
Normal file
@ -0,0 +1,126 @@
|
||||
<?php
|
||||
/**
|
||||
* PHP Mikrotik Billing (https://github.com/hotspotbilling/phpnuxbill/)
|
||||
* by https://t.me/ibnux
|
||||
**/
|
||||
|
||||
_admin();
|
||||
$ui->assign('_title', 'CodeCanyon.net');
|
||||
$ui->assign('_system_menu', 'settings');
|
||||
|
||||
$plugin_repository = 'https://hotspotbilling.github.io/Plugin-Repository/repository.json';
|
||||
|
||||
$action = $routes['1'];
|
||||
$admin = Admin::_info();
|
||||
$ui->assign('_admin', $admin);
|
||||
$cache = File::pathFixer('system/cache/codecanyon.json');
|
||||
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
if (empty($config['envato_token'])) {
|
||||
r2(U . 'settings/app', 'w', '<a href="' . U . 'settings/app#envato' . '">Envato Personal Access Token</a> is not set');
|
||||
}
|
||||
|
||||
switch ($action) {
|
||||
|
||||
case 'install':
|
||||
if (!is_writeable(File::pathFixer('system/cache/'))) {
|
||||
r2(U . "codecanyon", 'e', 'Folder system/cache/ is not writable');
|
||||
}
|
||||
if (!is_writeable(File::pathFixer('system/plugin/'))) {
|
||||
r2(U . "codecanyon", 'e', 'Folder system/plugin/ is not writable');
|
||||
}
|
||||
if (!is_writeable(File::pathFixer('system/paymentgateway/'))) {
|
||||
r2(U . "codecanyon", 'e', 'Folder system/paymentgateway/ is not writable');
|
||||
}
|
||||
set_time_limit(-1);
|
||||
$item_id = $routes['2'];
|
||||
$tipe = $routes['3'];
|
||||
$result = Http::getData('https://api.envato.com/v3/market/buyer/download?item_id=' . $item_id, ['Authorization: Bearer ' . $config['envato_token']]);
|
||||
$json = json_decode($result, true);
|
||||
if (!isset($json['download_url'])) {
|
||||
r2(U . 'codecanyon', 'e', 'Failed to get download url. ' . $json['description']);
|
||||
}
|
||||
$file = File::pathFixer('system/cache/codecanyon/');
|
||||
if (!file_exists($file)) {
|
||||
mkdir($file);
|
||||
}
|
||||
$file .= $item_id . '.zip';
|
||||
if (file_exists($file))
|
||||
unlink($file);
|
||||
//download
|
||||
$fp = fopen($file, 'w+');
|
||||
$ch = curl_init($json['download_url']);
|
||||
curl_setopt($ch, CURLOPT_POST, 0);
|
||||
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
|
||||
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
|
||||
curl_setopt($ch, CURLOPT_FILE, $fp);
|
||||
curl_exec($ch);
|
||||
curl_close($ch);
|
||||
fclose($fp);
|
||||
//extract
|
||||
$target = File::pathFixer('system/cache/codecanyon/' . $item_id . '/');
|
||||
$zip = new ZipArchive();
|
||||
$zip->open($file);
|
||||
$zip->extractTo($target);
|
||||
$zip->close();
|
||||
//moving
|
||||
if (file_exists($target . 'plugin')) {
|
||||
File::copyFolder($target . 'plugin', File::pathFixer('system/plugin/'));
|
||||
} else if (file_exists($target . 'paymentgateway')) {
|
||||
File::copyFolder($target . 'paymentgateway', File::pathFixer('system/paymentgateway/'));
|
||||
} else if (file_exists($target . 'theme')) {
|
||||
File::copyFolder($target . 'theme', File::pathFixer('ui/themes/'));
|
||||
}
|
||||
//Cleaning
|
||||
File::deleteFolder($target);
|
||||
unlink($file);
|
||||
r2(U . "codecanyon", 's', 'Installation success');
|
||||
case 'reload':
|
||||
if (file_exists($cache))
|
||||
unlink($cache);
|
||||
default:
|
||||
if (class_exists('ZipArchive')) {
|
||||
$zipExt = true;
|
||||
} else {
|
||||
$zipExt = false;
|
||||
}
|
||||
$ui->assign('zipExt', $zipExt);
|
||||
|
||||
if (file_exists($cache) && time() - filemtime($cache) < (24 * 60 * 60)) {
|
||||
$txt = file_get_contents($cache);
|
||||
$plugins = json_decode($txt, true);
|
||||
$ui->assign('chached_until', date($config['date_format'] . ' H:i', filemtime($cache) + (24 * 60 * 60)));
|
||||
if (count($plugins) == 0) {
|
||||
unlink($cache);
|
||||
r2(U . 'codecanyon');
|
||||
}
|
||||
} else {
|
||||
$plugins = [];
|
||||
$page = _get('page', 1);
|
||||
back:
|
||||
$result = Http::getData('https://api.envato.com/v3/market/buyer/list-purchases?&page=' . $page, ['Authorization: Bearer ' . $config['envato_token']]);
|
||||
$items = json_decode($result, true);
|
||||
if ($items && count($items['results']) > 0) {
|
||||
foreach ($items['results'] as $item) {
|
||||
$name = strtolower($item['item']['name']);
|
||||
if (strpos($name, 'phpnuxbill') !== false) {
|
||||
$plugins[] = $item;
|
||||
}
|
||||
}
|
||||
$page++;
|
||||
goto back;
|
||||
}
|
||||
if (count($plugins) > 0) {
|
||||
file_put_contents($cache, json_encode($plugins));
|
||||
if (file_exists($cache)) {
|
||||
$ui->assign('chached_until', date($config['date_format'] . ' H:i', filemtime($cache) + (24 * 60 * 60)));
|
||||
}
|
||||
}
|
||||
}
|
||||
$ui->assign('plugins', $plugins);
|
||||
$ui->display('codecanyon.tpl');
|
||||
}
|
@ -6,7 +6,7 @@
|
||||
**/
|
||||
|
||||
_admin();
|
||||
$ui->assign('_title', $_L['Customers']);
|
||||
$ui->assign('_title', Lang::T('Customer'));
|
||||
$ui->assign('_system_menu', 'customers');
|
||||
|
||||
$action = $routes['1'];
|
||||
@ -14,13 +14,8 @@ $admin = Admin::_info();
|
||||
$ui->assign('_admin', $admin);
|
||||
|
||||
|
||||
if ($admin['user_type'] != 'Admin' and $admin['user_type'] != 'Sales') {
|
||||
r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
|
||||
}
|
||||
|
||||
switch ($action) {
|
||||
case 'list':
|
||||
$ui->assign('xfooter', '<script type="text/javascript" src="ui/lib/c/customers.js"></script>');
|
||||
$search = _post('search');
|
||||
run_hook('list_customers'); #HOOK
|
||||
if ($search != '') {
|
||||
@ -49,6 +44,45 @@ switch ($action) {
|
||||
$ui->display('customers.tpl');
|
||||
break;
|
||||
|
||||
case 'csv':
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
$cs = ORM::for_table('tbl_customers')
|
||||
->select('tbl_customers.id', 'id')
|
||||
->select('tbl_customers.username', 'username')
|
||||
->select('fullname')
|
||||
->select('phonenumber')
|
||||
->select('email')
|
||||
->select('balance')
|
||||
->select('namebp')
|
||||
->select('routers')
|
||||
->select('status')
|
||||
->select('method', 'Payment')
|
||||
->join('tbl_user_recharges', array('tbl_customers.id', '=', 'tbl_user_recharges.customer_id'))
|
||||
->order_by_asc('tbl_customers.id')->find_array();
|
||||
$h = false;
|
||||
set_time_limit(-1);
|
||||
header('Pragma: public');
|
||||
header('Expires: 0');
|
||||
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
|
||||
header("Content-type: text/csv");
|
||||
header('Content-Disposition: attachment;filename="phpnuxbill_customers_' . date('Y-m-d_H_i') . '.csv"');
|
||||
header('Content-Transfer-Encoding: binary');
|
||||
foreach ($cs as $c) {
|
||||
$ks = [];
|
||||
$vs = [];
|
||||
foreach ($c as $k => $v) {
|
||||
$ks[] = $k;
|
||||
$vs[] = $v;
|
||||
}
|
||||
if (!$h) {
|
||||
echo '"' . implode('";"', $ks) . "\"\n";
|
||||
$h = true;
|
||||
}
|
||||
echo '"' . implode('";"', $vs) . "\"\n";
|
||||
}
|
||||
break;
|
||||
case 'add':
|
||||
run_hook('view_add_customer'); #HOOK
|
||||
$ui->display('customers-add.tpl');
|
||||
@ -65,6 +99,9 @@ switch ($action) {
|
||||
}
|
||||
r2(U . 'customers/view/' . $id_customer, 'e', 'Cannot find active plan');
|
||||
case 'deactivate':
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
$id_customer = $routes['2'];
|
||||
$b = ORM::for_table('tbl_user_recharges')->where('customer_id', $id_customer)->find_one();
|
||||
if ($b) {
|
||||
@ -102,7 +139,7 @@ switch ($action) {
|
||||
$p = ORM::for_table('tbl_plans')->where('id', $b['plan_id'])->where('enabled', '1')->find_one();
|
||||
if ($p) {
|
||||
if ($p['is_radius']) {
|
||||
Radius::customerAddPlan($c, $p, $p['expiration'].' '.$p['time']);
|
||||
Radius::customerAddPlan($c, $p, $p['expiration'] . ' ' . $p['time']);
|
||||
r2(U . 'customers/view/' . $id_customer, 's', 'Success sync customer to Radius');
|
||||
} else {
|
||||
$mikrotik = Mikrotik::info($b['routers']);
|
||||
@ -129,10 +166,17 @@ switch ($action) {
|
||||
$customer = ORM::for_table('tbl_customers')->find_one($id);
|
||||
}
|
||||
if ($customer) {
|
||||
|
||||
|
||||
// Fetch the Customers Attributes values from the tbl_customer_custom_fields table
|
||||
$customFields = ORM::for_table('tbl_customers_fields')
|
||||
->where('customer_id', $customer['id'])
|
||||
->find_many();
|
||||
|
||||
$v = $routes['3'];
|
||||
if (empty($v) || $v == 'order') {
|
||||
$v = 'order';
|
||||
$paginator = Paginator::build(ORM::for_table('tbl_payment_gateway'),['username'=>$customer['username']]);
|
||||
$paginator = Paginator::build(ORM::for_table('tbl_payment_gateway'), ['username' => $customer['username']]);
|
||||
$order = ORM::for_table('tbl_payment_gateway')
|
||||
->where('username', $customer['username'])
|
||||
->offset($paginator['startpoint'])
|
||||
@ -142,7 +186,7 @@ switch ($action) {
|
||||
$ui->assign('paginator', $paginator);
|
||||
$ui->assign('order', $order);
|
||||
} else if ($v == 'activation') {
|
||||
$paginator = Paginator::build(ORM::for_table('tbl_transactions'),['username'=>$customer['username']]);
|
||||
$paginator = Paginator::build(ORM::for_table('tbl_transactions'), ['username' => $customer['username']]);
|
||||
$activation = ORM::for_table('tbl_transactions')
|
||||
->where('username', $customer['username'])
|
||||
->offset($paginator['startpoint'])
|
||||
@ -156,6 +200,7 @@ switch ($action) {
|
||||
$ui->assign('package', $package);
|
||||
$ui->assign('v', $v);
|
||||
$ui->assign('d', $customer);
|
||||
$ui->assign('customFields', $customFields);
|
||||
$ui->display('customers-view.tpl');
|
||||
} else {
|
||||
r2(U . 'customers/list', 'e', $_L['Account_Not_Found']);
|
||||
@ -165,8 +210,13 @@ switch ($action) {
|
||||
$id = $routes['2'];
|
||||
run_hook('edit_customer'); #HOOK
|
||||
$d = ORM::for_table('tbl_customers')->find_one($id);
|
||||
// Fetch the Customers Attributes values from the tbl_customers_fields table
|
||||
$customFields = ORM::for_table('tbl_customers_fields')
|
||||
->where('customer_id', $id)
|
||||
->find_many();
|
||||
if ($d) {
|
||||
$ui->assign('d', $d);
|
||||
$ui->assign('customFields', $customFields);
|
||||
$ui->display('customers-edit.tpl');
|
||||
} else {
|
||||
r2(U . 'customers/list', 'e', $_L['Account_Not_Found']);
|
||||
@ -174,10 +224,15 @@ switch ($action) {
|
||||
break;
|
||||
|
||||
case 'delete':
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
$id = $routes['2'];
|
||||
run_hook('delete_customer'); #HOOK
|
||||
$d = ORM::for_table('tbl_customers')->find_one($id);
|
||||
if ($d) {
|
||||
// Delete the associated Customers Attributes records from tbl_customer_custom_fields table
|
||||
ORM::for_table('tbl_customers_fields')->where('customer_id', $id)->delete_many();
|
||||
$c = ORM::for_table('tbl_user_recharges')->where('username', $d['username'])->find_one();
|
||||
if ($c) {
|
||||
$p = ORM::for_table('tbl_plans')->find_one($c['plan_id']);
|
||||
@ -217,7 +272,7 @@ switch ($action) {
|
||||
}
|
||||
}
|
||||
|
||||
r2(U . 'customers/list', 's', $_L['User_Delete_Ok']);
|
||||
r2(U . 'customers/list', 's', Lang::T('User deleted Successfully'));
|
||||
}
|
||||
break;
|
||||
|
||||
@ -230,6 +285,10 @@ switch ($action) {
|
||||
$address = _post('address');
|
||||
$phonenumber = _post('phonenumber');
|
||||
$service_type = _post('service_type');
|
||||
//post Customers Attributes
|
||||
$custom_field_names = (array) $_POST['custom_field_name'];
|
||||
$custom_field_values = (array) $_POST['custom_field_value'];
|
||||
|
||||
run_hook('add_customer'); #HOOK
|
||||
$msg = '';
|
||||
if (Validator::Length($username, 35, 2) == false) {
|
||||
@ -238,13 +297,13 @@ switch ($action) {
|
||||
if (Validator::Length($fullname, 36, 2) == false) {
|
||||
$msg .= 'Full Name should be between 3 to 25 characters' . '<br>';
|
||||
}
|
||||
if (!Validator::Length($password, 35, 2)) {
|
||||
if (!Validator::Length($password, 36, 2)) {
|
||||
$msg .= 'Password should be between 3 to 35 characters' . '<br>';
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_customers')->where('username', $username)->find_one();
|
||||
if ($d) {
|
||||
$msg .= $_L['account_already_exist'] . '<br>';
|
||||
$msg .= Lang::T('Account already axist') . '<br>';
|
||||
}
|
||||
|
||||
if ($msg == '') {
|
||||
@ -255,10 +314,30 @@ switch ($action) {
|
||||
$d->email = $email;
|
||||
$d->fullname = $fullname;
|
||||
$d->address = $address;
|
||||
$d->created_by = $admin['id'];
|
||||
$d->phonenumber = Lang::phoneFormat($phonenumber);
|
||||
$d->service_type = $service_type;
|
||||
$d->save();
|
||||
r2(U . 'customers/list', 's', $_L['account_created_successfully']);
|
||||
|
||||
// Retrieve the customer ID of the newly created customer
|
||||
$customerId = $d->id();
|
||||
// Save Customers Attributes details
|
||||
if (!empty($custom_field_names) && !empty($custom_field_values)) {
|
||||
$totalFields = min(count($custom_field_names), count($custom_field_values));
|
||||
for ($i = 0; $i < $totalFields; $i++) {
|
||||
$name = $custom_field_names[$i];
|
||||
$value = $custom_field_values[$i];
|
||||
|
||||
if (!empty($name)) {
|
||||
$customField = ORM::for_table('tbl_customers_fields')->create();
|
||||
$customField->customer_id = $customerId;
|
||||
$customField->field_name = $name;
|
||||
$customField->field_value = $value;
|
||||
$customField->save();
|
||||
}
|
||||
}
|
||||
}
|
||||
r2(U . 'customers/list', 's', Lang::T('Account Created Successfully'));
|
||||
} else {
|
||||
r2(U . 'customers/add', 'e', $msg);
|
||||
}
|
||||
@ -275,22 +354,28 @@ switch ($action) {
|
||||
$service_type = _post('service_type');
|
||||
run_hook('edit_customer'); #HOOK
|
||||
$msg = '';
|
||||
if (Validator::Length($username, 16, 2) == false) {
|
||||
if (Validator::Length($username, 35, 2) == false) {
|
||||
$msg .= 'Username should be between 3 to 15 characters' . '<br>';
|
||||
}
|
||||
if (Validator::Length($fullname, 26, 1) == false) {
|
||||
if (Validator::Length($fullname, 36, 1) == false) {
|
||||
$msg .= 'Full Name should be between 2 to 25 characters' . '<br>';
|
||||
}
|
||||
if ($password != '') {
|
||||
if (!Validator::Length($password, 15, 2)) {
|
||||
if (!Validator::Length($password, 36, 2)) {
|
||||
$msg .= 'Password should be between 3 to 15 characters' . '<br>';
|
||||
}
|
||||
}
|
||||
|
||||
$id = _post('id');
|
||||
$d = ORM::for_table('tbl_customers')->find_one($id);
|
||||
|
||||
//lets find user Customers Attributes using id
|
||||
$customFields = ORM::for_table('tbl_customers_fields')
|
||||
->where('customer_id', $id)
|
||||
->find_many();
|
||||
|
||||
if (!$d) {
|
||||
$msg .= $_L['Data_Not_Found'] . '<br>';
|
||||
$msg .= Lang::T('Data Not Found') . '<br>';
|
||||
}
|
||||
|
||||
$oldusername = $d['username'];
|
||||
@ -302,7 +387,7 @@ switch ($action) {
|
||||
if ($oldusername != $username) {
|
||||
$c = ORM::for_table('tbl_customers')->where('username', $username)->find_one();
|
||||
if ($c) {
|
||||
$msg .= $_L['account_already_exist'] . '<br>';
|
||||
$msg .= Lang::T('Account already exist') . '<br>';
|
||||
}
|
||||
$userDiff = true;
|
||||
}
|
||||
@ -327,6 +412,52 @@ switch ($action) {
|
||||
$d->phonenumber = $phonenumber;
|
||||
$d->service_type = $service_type;
|
||||
$d->save();
|
||||
|
||||
|
||||
// Update Customers Attributes values in tbl_customers_fields table
|
||||
foreach ($customFields as $customField) {
|
||||
$fieldName = $customField['field_name'];
|
||||
if (isset($_POST['custom_fields'][$fieldName])) {
|
||||
$customFieldValue = $_POST['custom_fields'][$fieldName];
|
||||
$customField->set('field_value', $customFieldValue);
|
||||
$customField->save();
|
||||
}
|
||||
}
|
||||
|
||||
// Add new Customers Attributess
|
||||
if (isset($_POST['custom_field_name']) && isset($_POST['custom_field_value'])) {
|
||||
$newCustomFieldNames = $_POST['custom_field_name'];
|
||||
$newCustomFieldValues = $_POST['custom_field_value'];
|
||||
|
||||
// Check if the number of field names and values match
|
||||
if (count($newCustomFieldNames) == count($newCustomFieldValues)) {
|
||||
$numNewFields = count($newCustomFieldNames);
|
||||
|
||||
for ($i = 0; $i < $numNewFields; $i++) {
|
||||
$fieldName = $newCustomFieldNames[$i];
|
||||
$fieldValue = $newCustomFieldValues[$i];
|
||||
|
||||
// Insert the new Customers Attributes
|
||||
$newCustomField = ORM::for_table('tbl_customers_fields')->create();
|
||||
$newCustomField->set('customer_id', $id);
|
||||
$newCustomField->set('field_name', $fieldName);
|
||||
$newCustomField->set('field_value', $fieldValue);
|
||||
$newCustomField->save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Delete Customers Attributess
|
||||
if (isset($_POST['delete_custom_fields'])) {
|
||||
$fieldsToDelete = $_POST['delete_custom_fields'];
|
||||
foreach ($fieldsToDelete as $fieldName) {
|
||||
// Delete the Customers Attributes with the given field name
|
||||
ORM::for_table('tbl_customers_fields')
|
||||
->where('field_name', $fieldName)
|
||||
->delete_many();
|
||||
}
|
||||
}
|
||||
|
||||
if ($userDiff || $pppoeDiff || $passDiff) {
|
||||
$c = ORM::for_table('tbl_user_recharges')->where('username', ($userDiff) ? $oldusername : $username)->find_one();
|
||||
if ($c) {
|
||||
@ -334,11 +465,11 @@ switch ($action) {
|
||||
$c->save();
|
||||
$p = ORM::for_table('tbl_plans')->find_one($c['plan_id']);
|
||||
if ($p['is_radius']) {
|
||||
if($userDiff){
|
||||
if ($userDiff) {
|
||||
Radius::customerChangeUsername($oldusername, $username);
|
||||
}
|
||||
Radius::customerAddPlan($d, $p, $p['expiration'].' '.$p['time']);
|
||||
}else{
|
||||
Radius::customerAddPlan($d, $p, $p['expiration'] . ' ' . $p['time']);
|
||||
} else {
|
||||
$mikrotik = Mikrotik::info($c['routers']);
|
||||
if ($c['type'] == 'Hotspot') {
|
||||
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
|
||||
|
@ -6,12 +6,9 @@
|
||||
**/
|
||||
|
||||
_admin();
|
||||
$ui->assign('_title', $_L['Dashboard']);
|
||||
$ui->assign('_title', Lang::T('Dashboard'));
|
||||
$admin = Admin::_info();
|
||||
$ui->assign('_admin', $admin);
|
||||
if (!in_array($admin['user_type'], ['Admin', 'Sales'])) {
|
||||
r2(U . "home", 'e', $_L['Do_Not_Access']);
|
||||
}
|
||||
|
||||
$fdate = date('Y-m-01');
|
||||
$tdate = date('Y-m-t');
|
||||
@ -51,9 +48,28 @@ if (empty($c_all)) {
|
||||
}
|
||||
$ui->assign('c_all', $c_all);
|
||||
|
||||
//user expire
|
||||
$expire = ORM::for_table('tbl_user_recharges')->whereLte('expiration', $mdate)->order_by_desc('id')->limit(30)->find_many();
|
||||
$ui->assign('expire', $expire);
|
||||
if($config['hide_uet'] != 'yes'){
|
||||
//user expire
|
||||
$paginator = Paginator::build(ORM::for_table('tbl_user_recharges'));
|
||||
$expire = ORM::for_table('tbl_user_recharges')
|
||||
->where_lte('expiration', $mdate)
|
||||
->offset($paginator['startpoint'])
|
||||
->limit($paginator['limit'])
|
||||
->order_by_desc('expiration')
|
||||
->find_many();
|
||||
|
||||
// Get the total count of expired records for pagination
|
||||
$totalCount = ORM::for_table('tbl_user_recharges')
|
||||
->where_lte('expiration', $mdate)
|
||||
->count();
|
||||
|
||||
// Pass the total count and current page to the paginator
|
||||
$paginator['total_count'] = $totalCount;
|
||||
|
||||
// Assign the pagination HTML to the template variable
|
||||
$ui->assign('paginator', $paginator);
|
||||
$ui->assign('expire', $expire);
|
||||
}
|
||||
|
||||
//activity log
|
||||
$dlog = ORM::for_table('tbl_logs')->limit(5)->order_by_desc('id')->find_many();
|
||||
@ -61,28 +77,113 @@ $ui->assign('dlog', $dlog);
|
||||
$log = ORM::for_table('tbl_logs')->count();
|
||||
$ui->assign('log', $log);
|
||||
|
||||
// Count stock
|
||||
$tmp = $v = ORM::for_table('tbl_plans')->select('id')->select('name_plan')->find_many();
|
||||
$plans = array();
|
||||
$stocks = array("used" => 0, "unused" => 0);
|
||||
$n = 0;
|
||||
foreach ($tmp as $plan) {
|
||||
$unused = ORM::for_table('tbl_voucher')
|
||||
->where('id_plan', $plan['id'])
|
||||
->where('status', 0)->count();
|
||||
$used = ORM::for_table('tbl_voucher')
|
||||
->where('id_plan', $plan['id'])
|
||||
->where('status', 1)->count();
|
||||
if($unused>0 || $used>0){
|
||||
$plans[$n]['name_plan'] = $plan['name_plan'];
|
||||
$plans[$n]['unused'] = $unused;
|
||||
$plans[$n]['used'] = $used;
|
||||
$stocks["unused"] += $unused;
|
||||
$stocks["used"] += $used;
|
||||
$n++;
|
||||
|
||||
if($config['hide_vs'] != 'yes'){
|
||||
$cacheStocksfile = File::pathFixer('system/cache/VoucherStocks.temp');
|
||||
$cachePlanfile = File::pathFixer('system/cache/VoucherPlans.temp');
|
||||
//Cache for 5 minutes
|
||||
if(file_exists($cacheStocksfile) && time()- filemtime($cacheStocksfile) < 600){
|
||||
$stocks = json_decode(file_get_contents($cacheStocksfile), true);
|
||||
$plans = json_decode(file_get_contents($cachePlanfile), true);
|
||||
}else{
|
||||
// Count stock
|
||||
$tmp = $v = ORM::for_table('tbl_plans')->select('id')->select('name_plan')->find_many();
|
||||
$plans = array();
|
||||
$stocks = array("used" => 0, "unused" => 0);
|
||||
$n = 0;
|
||||
foreach ($tmp as $plan) {
|
||||
$unused = ORM::for_table('tbl_voucher')
|
||||
->where('id_plan', $plan['id'])
|
||||
->where('status', 0)->count();
|
||||
$used = ORM::for_table('tbl_voucher')
|
||||
->where('id_plan', $plan['id'])
|
||||
->where('status', 1)->count();
|
||||
if ($unused > 0 || $used > 0) {
|
||||
$plans[$n]['name_plan'] = $plan['name_plan'];
|
||||
$plans[$n]['unused'] = $unused;
|
||||
$plans[$n]['used'] = $used;
|
||||
$stocks["unused"] += $unused;
|
||||
$stocks["used"] += $used;
|
||||
$n++;
|
||||
}
|
||||
}
|
||||
file_put_contents($cacheStocksfile, json_encode($stocks));
|
||||
file_put_contents($cachePlanfile, json_encode($plans));
|
||||
}
|
||||
}
|
||||
|
||||
$cacheMRfile = File::pathFixer('system/cache/monthlyRegistered.temp');
|
||||
//Cache for 1 hour
|
||||
if(file_exists($cacheMRfile) && time()- filemtime($cacheMRfile) < 3600){
|
||||
$monthlyRegistered = json_decode(file_get_contents($cacheMRfile), true);
|
||||
}else{
|
||||
//Monthly Registered Customers
|
||||
$result = ORM::for_table('tbl_customers')
|
||||
->select_expr('MONTH(created_at)', 'month')
|
||||
->select_expr('COUNT(*)', 'count')
|
||||
->where_raw('YEAR(created_at) = YEAR(NOW())')
|
||||
->group_by_expr('MONTH(created_at)')
|
||||
->find_many();
|
||||
|
||||
$monthlyRegistered = [];
|
||||
foreach ($result as $row) {
|
||||
$monthlyRegistered[] = [
|
||||
'date' => $row->month,
|
||||
'count' => $row->count
|
||||
];
|
||||
}
|
||||
file_put_contents($cacheMRfile, json_encode($monthlyRegistered));
|
||||
}
|
||||
|
||||
$cacheMSfile = File::pathFixer('system/cache/monthlySales.temp');
|
||||
//Cache for 12 hours
|
||||
if(file_exists($cacheMSfile) && time()- filemtime($cacheMSfile) < 43200){
|
||||
$monthlySales = json_decode(file_get_contents($cacheMSfile), true);
|
||||
}else{
|
||||
// Query to retrieve monthly data
|
||||
$results = ORM::for_table('tbl_transactions')
|
||||
->select_expr('MONTH(recharged_on)', 'month')
|
||||
->select_expr('SUM(price)', 'total')
|
||||
->where_raw("YEAR(recharged_on) = YEAR(CURRENT_DATE())") // Filter by the current year
|
||||
->group_by_expr('MONTH(recharged_on)')
|
||||
->find_many();
|
||||
|
||||
// Create an array to hold the monthly sales data
|
||||
$monthlySales = array();
|
||||
|
||||
// Iterate over the results and populate the array
|
||||
foreach ($results as $result) {
|
||||
$month = $result->month;
|
||||
$totalSales = $result->total;
|
||||
|
||||
$monthlySales[$month] = array(
|
||||
'month' => $month,
|
||||
'totalSales' => $totalSales
|
||||
);
|
||||
}
|
||||
|
||||
// Fill in missing months with zero sales
|
||||
for ($month = 1; $month <= 12; $month++) {
|
||||
if (!isset($monthlySales[$month])) {
|
||||
$monthlySales[$month] = array(
|
||||
'month' => $month,
|
||||
'totalSales' => 0
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Sort the array by month
|
||||
ksort($monthlySales);
|
||||
|
||||
// Reindex the array
|
||||
$monthlySales = array_values($monthlySales);
|
||||
file_put_contents($cacheMSfile, json_encode($monthlySales));
|
||||
}
|
||||
|
||||
// Assign the monthly sales data to Smarty
|
||||
$ui->assign('monthlySales', $monthlySales);
|
||||
$ui->assign('xfooter', '');
|
||||
$ui->assign('monthlyRegistered', $monthlyRegistered);
|
||||
$ui->assign('stocks', $stocks);
|
||||
$ui->assign('plans', $plans);
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
**/
|
||||
|
||||
_admin();
|
||||
$ui->assign('_title', $_L['Reports']);
|
||||
$ui->assign('_title', Lang::T('Reports'));
|
||||
$ui->assign('_sysfrm_menu', 'reports');
|
||||
|
||||
$action = $routes['1'];
|
||||
@ -75,21 +75,21 @@ switch ($action) {
|
||||
<div id="address">
|
||||
<h3>' . $config['CompanyName'] . '</h3>
|
||||
' . $config['address'] . '<br>
|
||||
' . $_L['Phone_Number'] . ': ' . $config['phone'] . '<br>
|
||||
' . Lang::T('Phone Number') . ': ' . $config['phone'] . '<br>
|
||||
</div>
|
||||
<div id="logo"><img id="image" src="'.$logo.'" alt="logo" /></div>
|
||||
</div>
|
||||
<div id="header">' . $_L['All_Transactions_at_Date'] . ': ' . date($config['date_format'], strtotime($mdate)) . '</div>
|
||||
<div id="header">' . Lang::T('All Transactions at Date') . ': ' . date($config['date_format'], strtotime($mdate)) . '</div>
|
||||
<table id="customers">
|
||||
<tr>
|
||||
<th>' . $_L['Username'] . '</th>
|
||||
<th>' . $_L['Plan_Name'] . '</th>
|
||||
<th>' . $_L['Type'] . '</th>
|
||||
<th>' . $_L['Plan_Price'] . '</th>
|
||||
<th>' . $_L['Created_On'] . '</th>
|
||||
<th>' . $_L['Expires_On'] . '</th>
|
||||
<th>' . $_L['Method'] . '</th>
|
||||
<th>' . $_L['Routers'] . '</th>
|
||||
<th>' . Lang::T('Username') . '</th>
|
||||
<th>' . Lang::T('Plan Name') . '</th>
|
||||
<th>' . Lang::T('Type') . '</th>
|
||||
<th>' . Lang::T('Plan Price') . '</th>
|
||||
<th>' . Lang::T('Created On') . '</th>
|
||||
<th>' . Lang::T('Expires On') . '</th>
|
||||
<th>' . Lang::T('Method') . '</th>
|
||||
<th>' . Lang::T('Routers') . '</th>
|
||||
</tr>';
|
||||
$c = true;
|
||||
foreach ($x as $value) {
|
||||
@ -116,7 +116,7 @@ switch ($action) {
|
||||
</tr>";
|
||||
}
|
||||
$html .= '</table>
|
||||
<h4 class="text-uppercase text-bold">' . $_L['Total_Income'] . ':</h4>
|
||||
<h4 class="text-uppercase text-bold">' . Lang::T('Total Income') . ':</h4>
|
||||
<h3 class="sum">' . $config['currency_code'] . ' ' . number_format($xy, 2, $config['dec_point'], $config['thousands_sep']) . '</h3>';
|
||||
run_hook('print_pdf_by_date'); #HOOK
|
||||
|
||||
@ -247,21 +247,21 @@ EOF;
|
||||
<div id="address">
|
||||
<h3>' . $config['CompanyName'] . '</h3>
|
||||
' . $config['address'] . '<br>
|
||||
' . $_L['Phone_Number'] . ': ' . $config['phone'] . '<br>
|
||||
' . Lang::T('Phone Number') . ': ' . $config['phone'] . '<br>
|
||||
</div>
|
||||
<div id="logo"><img id="image" src="'.$logo.'" alt="logo" /></div>
|
||||
</div>
|
||||
<div id="header">' . $_L['All_Transactions_at_Date'] . ': ' . date($config['date_format'], strtotime($fdate)) . ' - ' . date($config['date_format'], strtotime($tdate)) . '</div>
|
||||
<div id="header">' . Lang::T('All Transactions at Date') . ': ' . date($config['date_format'], strtotime($fdate)) . ' - ' . date($config['date_format'], strtotime($tdate)) . '</div>
|
||||
<table id="customers">
|
||||
<tr>
|
||||
<th>' . $_L['Username'] . '</th>
|
||||
<th>' . $_L['Plan_Name'] . '</th>
|
||||
<th>' . $_L['Type'] . '</th>
|
||||
<th>' . $_L['Plan_Price'] . '</th>
|
||||
<th>' . $_L['Created_On'] . '</th>
|
||||
<th>' . $_L['Expires_On'] . '</th>
|
||||
<th>' . $_L['Method'] . '</th>
|
||||
<th>' . $_L['Routers'] . '</th>
|
||||
<th>' . Lang::T('Username') . '</th>
|
||||
<th>' . Lang::T('Plan Name') . '</th>
|
||||
<th>' . Lang::T('Type') . '</th>
|
||||
<th>' . Lang::T('Plan Price') . '</th>
|
||||
<th>' . Lang::T('Created On') . '</th>
|
||||
<th>' . Lang::T('Expires On') . '</th>
|
||||
<th>' . Lang::T('Method') . '</th>
|
||||
<th>' . Lang::T('Routers') . '</th>
|
||||
</tr>';
|
||||
$c = true;
|
||||
foreach ($x as $value) {
|
||||
@ -288,7 +288,7 @@ EOF;
|
||||
</tr>";
|
||||
}
|
||||
$html .= '</table>
|
||||
<h4 class="text-uppercase text-bold">' . $_L['Total_Income'] . ':</h4>
|
||||
<h4 class="text-uppercase text-bold">' . Lang::T('Total Income') . ':</h4>
|
||||
<h3 class="sum">' . $config['currency_code'] . ' ' . number_format($xy, 2, $config['dec_point'], $config['thousands_sep']) . '</h3>';
|
||||
|
||||
run_hook('pdf_by_period'); #HOOK
|
||||
|
@ -6,7 +6,7 @@
|
||||
**/
|
||||
|
||||
_auth();
|
||||
$ui->assign('_title', $_L['Dashboard']);
|
||||
$ui->assign('_title', Lang::T('Dashboard'));
|
||||
|
||||
$user = User::_info();
|
||||
$ui->assign('_user', $user);
|
||||
@ -90,29 +90,35 @@ if (_post('send') == 'balance') {
|
||||
|
||||
$ui->assign('_bills', User::_billing());
|
||||
|
||||
if(isset($_GET['recharge']) && !empty($_GET['recharge'])){
|
||||
if (isset($_GET['recharge']) && !empty($_GET['recharge'])) {
|
||||
$bill = ORM::for_table('tbl_user_recharges')->where('id', $_GET['recharge'])->where('username', $user['username'])->findOne();
|
||||
if ($bill) {
|
||||
$router = ORM::for_table('tbl_routers')->where('name', $bill['routers'])->find_one();
|
||||
if ($config['enable_balance'] == 'yes') {
|
||||
$plan = ORM::for_table('tbl_plans')->find_one($bill['plan_id']);
|
||||
if($user['balance']>$plan['price']){
|
||||
if(!$plan['enabled']){
|
||||
r2(U . "home", 'e', 'Plan is not exists');
|
||||
}
|
||||
if($plan['allow_purchase'] != 'yes'){
|
||||
r2(U . "home", 'e', 'Cannot recharge this plan');
|
||||
}
|
||||
if ($user['balance'] > $plan['price']) {
|
||||
r2(U . "order/pay/$router[id]/$bill[plan_id]", 'e', 'Order Plan');
|
||||
}else{
|
||||
} else {
|
||||
r2(U . "order/buy/$router[id]/$bill[plan_id]", 'e', 'Order Plan');
|
||||
}
|
||||
}else{
|
||||
} else {
|
||||
r2(U . "order/buy/$router[id]/$bill[plan_id]", 'e', 'Order Plan');
|
||||
}
|
||||
}
|
||||
}else if(isset($_GET['deactivate']) && !empty($_GET['deactivate'])){
|
||||
} else if (isset($_GET['deactivate']) && !empty($_GET['deactivate'])) {
|
||||
$bill = ORM::for_table('tbl_user_recharges')->where('id', $_GET['deactivate'])->where('username', $user['username'])->findOne();
|
||||
if ($bill) {
|
||||
$p = ORM::for_table('tbl_plans')->where('id', $bill['plan_id'])->find_one();
|
||||
if($p['is_radius']){
|
||||
if ($p['is_radius']) {
|
||||
Radius::customerDeactivate($user['username']);
|
||||
}else{
|
||||
try{
|
||||
} else {
|
||||
try {
|
||||
$mikrotik = Mikrotik::info($bill['routers']);
|
||||
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
|
||||
if ($bill['type'] == 'Hotspot') {
|
||||
@ -122,7 +128,7 @@ if(isset($_GET['recharge']) && !empty($_GET['recharge'])){
|
||||
Mikrotik::removePpoeUser($client, $bill['username']);
|
||||
Mikrotik::removePpoeActive($client, $bill['username']);
|
||||
}
|
||||
}catch(Exception $e){
|
||||
} catch (Exception $e) {
|
||||
//ignore it maybe mikrotik has been deleted
|
||||
}
|
||||
}
|
||||
@ -130,10 +136,10 @@ if(isset($_GET['recharge']) && !empty($_GET['recharge'])){
|
||||
$bill->expiration = date('Y-m-d');
|
||||
$bill->time = date('H:i:s');
|
||||
$bill->save();
|
||||
_log('User ' . $bill['username'] . ' Deactivate '.$bill['namebp'], 'User', $bill['customer_id']);
|
||||
Message::sendTelegram('User u' . $bill['username'] . ' Deactivate '.$bill['namebp']);
|
||||
r2(U . 'home', 's', 'Success deactivate '.$bill['namebp']);
|
||||
}else{
|
||||
_log('User ' . $bill['username'] . ' Deactivate ' . $bill['namebp'], 'User', $bill['customer_id']);
|
||||
Message::sendTelegram('User u' . $bill['username'] . ' Deactivate ' . $bill['namebp']);
|
||||
r2(U . 'home', 's', 'Success deactivate ' . $bill['namebp']);
|
||||
} else {
|
||||
r2(U . 'home', 'e', 'No Active Plan');
|
||||
}
|
||||
}
|
||||
|
@ -22,21 +22,22 @@ switch ($do) {
|
||||
$d_pass = $d['password'];
|
||||
if (Password::_uverify($password, $d_pass) == true) {
|
||||
$_SESSION['uid'] = $d['id'];
|
||||
User::setCookie($d['id']);
|
||||
$d->last_login = date('Y-m-d H:i:s');
|
||||
$d->save();
|
||||
_log($username . ' ' . $_L['Login_Successful'], 'User', $d['id']);
|
||||
_log($username . ' ' . Lang::T('Login Successful'), 'User', $d['id']);
|
||||
r2(U . 'home');
|
||||
} else {
|
||||
_msglog('e', $_L['Invalid_Username_or_Password']);
|
||||
_log($username . ' ' . $_L['Failed_Login'], 'User');
|
||||
_msglog('e', Lang::T('Invalid Username or Password'));
|
||||
_log($username . ' ' . Lang::T('Failed Login'), 'User');
|
||||
r2(U . 'login');
|
||||
}
|
||||
} else {
|
||||
_msglog('e', $_L['Invalid_Username_or_Password']);
|
||||
_msglog('e', Lang::T('Invalid Username or Password'));
|
||||
r2(U . 'login');
|
||||
}
|
||||
} else {
|
||||
_msglog('e', $_L['Invalid_Username_or_Password']);
|
||||
_msglog('e', Lang::T('Invalid Username or Password'));
|
||||
r2(U . 'login');
|
||||
}
|
||||
|
||||
@ -47,7 +48,7 @@ switch ($do) {
|
||||
$username = _post('username');
|
||||
$v1 = ORM::for_table('tbl_voucher')->where('code', $voucher)->find_one();
|
||||
if ($v1) {
|
||||
// coucher exists, check customer exists or not
|
||||
// voucher exists, check customer exists or not
|
||||
$user = ORM::for_table('tbl_customers')->where('username', $username)->find_one();
|
||||
if (!$user) {
|
||||
$d = ORM::for_table('tbl_customers')->create();
|
||||
@ -63,7 +64,7 @@ switch ($do) {
|
||||
r2(U . 'login', 'e', Lang::T('Voucher activation failed'));
|
||||
}
|
||||
} else {
|
||||
r2(U . 'login', 'e', Lang::T('Voucher activation failed').'.');
|
||||
r2(U . 'login', 'e', Lang::T('Voucher activation failed') . '.');
|
||||
}
|
||||
}
|
||||
if ($v1['status'] == 0) {
|
||||
@ -72,32 +73,34 @@ switch ($do) {
|
||||
$user->password = $voucher;
|
||||
$user->save();
|
||||
// voucher activation
|
||||
if (Package::rechargeUser($user['id'], $v1['routers'], $v1['id_plan'], "Activation", "Voucher")) {
|
||||
if (Package::rechargeUser($user['id'], $v1['routers'], $v1['id_plan'], "Voucher", $voucher)) {
|
||||
$v1->status = "1";
|
||||
$v1->user = $user['username'];
|
||||
$v1->save();
|
||||
$user->last_login = date('Y-m-d H:i:s');
|
||||
$user->save();
|
||||
// add customer to mikrotik
|
||||
if (!empty($_SESSION['nux-mac']) && !empty($_SESSION['nux-ip'])) {
|
||||
try{
|
||||
try {
|
||||
$m = Mikrotik::info($v1['routers']);
|
||||
$c = Mikrotik::getClient($m['ip_address'], $m['username'], $m['password']);
|
||||
Mikrotik::logMeIn($c, $user['username'], $user['password'], $_SESSION['nux-ip'], $_SESSION['nux-mac']);
|
||||
if(!empty($config['voucher_redirect'])){
|
||||
if (!empty($config['voucher_redirect'])) {
|
||||
r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, you are connected to internet"));
|
||||
}else{
|
||||
} else {
|
||||
r2(U . "login", 's', Lang::T("Voucher activation success, you are connected to internet"));
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
if(!empty($config['voucher_redirect'])){
|
||||
if (!empty($config['voucher_redirect'])) {
|
||||
r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, now you can login"));
|
||||
}else{
|
||||
} else {
|
||||
r2(U . "login", 's', Lang::T("Voucher activation success, now you can login"));
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!empty($config['voucher_redirect'])){
|
||||
if (!empty($config['voucher_redirect'])) {
|
||||
r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, now you can login"));
|
||||
}else{
|
||||
} else {
|
||||
r2(U . "login", 's', Lang::T("Voucher activation success, now you can login"));
|
||||
}
|
||||
} else {
|
||||
@ -110,44 +113,46 @@ switch ($do) {
|
||||
// used voucher
|
||||
// check if voucher used by this username
|
||||
if ($v1['user'] == $user['username']) {
|
||||
$user->last_login = date('Y-m-d H:i:s');
|
||||
$user->save();
|
||||
if (!empty($_SESSION['nux-mac']) && !empty($_SESSION['nux-ip'])) {
|
||||
try{
|
||||
try {
|
||||
$m = Mikrotik::info($v1['routers']);
|
||||
$c = Mikrotik::getClient($m['ip_address'], $m['username'], $m['password']);
|
||||
Mikrotik::logMeIn($c, $user['username'], $user['password'], $_SESSION['nux-ip'], $_SESSION['nux-mac']);
|
||||
if(!empty($config['voucher_redirect'])){
|
||||
if (!empty($config['voucher_redirect'])) {
|
||||
r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, you are connected to internet"));
|
||||
}else{
|
||||
} else {
|
||||
r2(U . "login", 's', Lang::T("Voucher activation success, now you can login"));
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
if(!empty($config['voucher_redirect'])){
|
||||
if (!empty($config['voucher_redirect'])) {
|
||||
r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, now you can login"));
|
||||
}else{
|
||||
} else {
|
||||
r2(U . "login", 's', Lang::T("Voucher activation success, now you can login"));
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if(!empty($config['voucher_redirect'])){
|
||||
} else {
|
||||
if (!empty($config['voucher_redirect'])) {
|
||||
r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, you are connected to internet"));
|
||||
}else{
|
||||
} else {
|
||||
r2(U . "login", 's', Lang::T("Voucher activation success, now you can login"));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// voucher used by other customer
|
||||
r2(U . 'login', 'e', $_L['Voucher_Not_Valid']);
|
||||
r2(U . 'login', 'e', Lang::T('Voucher Not Valid'));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// voucher not found
|
||||
r2(U . 'login', 'e', $_L['Voucher_Not_Valid']);
|
||||
_msglog('e', Lang::T('Invalid Username or Password'));
|
||||
r2(U . 'login');
|
||||
}
|
||||
default:
|
||||
run_hook('customer_view_login'); #HOOK
|
||||
if($config['disable_registration']=='yes'){
|
||||
if ($config['disable_registration'] == 'yes') {
|
||||
$ui->display('user-login-noreg.tpl');
|
||||
}else{
|
||||
} else {
|
||||
$ui->display('user-login.tpl');
|
||||
}
|
||||
break;
|
||||
|
@ -6,5 +6,7 @@
|
||||
|
||||
run_hook('customer_logout'); #HOOK
|
||||
if (session_status() == PHP_SESSION_NONE) session_start();
|
||||
Admin::removeCookie();
|
||||
User::removeCookie();
|
||||
session_destroy();
|
||||
header('location: index.php');
|
@ -13,8 +13,8 @@ $action = $routes['1'];
|
||||
$admin = Admin::_info();
|
||||
$ui->assign('_admin', $admin);
|
||||
|
||||
if ($admin['user_type'] != 'Admin') {
|
||||
r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@ switch ($action) {
|
||||
$q = (_post('q') ? _post('q') : _get('q'));
|
||||
$keep = _post('keep');
|
||||
if (!empty($keep)) {
|
||||
ORM::raw_execute("DELETE FROM tbl_logs WHERE date < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL $keep DAY))");
|
||||
ORM::raw_execute("DELETE FROM tbl_logs WHERE UNIX_TIMESTAMP(date) < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL $keep DAY))");
|
||||
r2(U . "logs/list/", 's', "Delete logs older than $keep days");
|
||||
}
|
||||
if ($q != '') {
|
||||
|
@ -13,7 +13,7 @@ $ui->assign('_user', $user);
|
||||
switch ($action) {
|
||||
case 'voucher':
|
||||
$ui->assign('_system_menu', 'voucher');
|
||||
$ui->assign('_title', $_L['Order_Voucher']);
|
||||
$ui->assign('_title', Lang::T('Order Voucher'));
|
||||
run_hook('customer_view_order'); #HOOK
|
||||
$ui->display('user-order.tpl');
|
||||
break;
|
||||
@ -37,7 +37,7 @@ switch ($action) {
|
||||
}
|
||||
$ui->assign('_title', 'Top Up');
|
||||
$ui->assign('_system_menu', 'balance');
|
||||
$plans_balance = ORM::for_table('tbl_plans')->where('enabled', '1')->where('type', 'Balance')->find_many();
|
||||
$plans_balance = ORM::for_table('tbl_plans')->where('enabled', '1')->where('type', 'Balance')->where('allow_purchase', 'yes')->find_many();
|
||||
$ui->assign('plans_balance', $plans_balance);
|
||||
$ui->display('user-orderBalance.tpl');
|
||||
break;
|
||||
@ -49,24 +49,24 @@ switch ($action) {
|
||||
$ui->assign('_system_menu', 'package');
|
||||
if (!empty($_SESSION['nux-router'])) {
|
||||
if ($_SESSION['nux-router'] == 'radius') {
|
||||
$radius_pppoe = ORM::for_table('tbl_plans')->where('enabled', '1')->where('is_radius', 1)->where('type', 'PPPOE')->find_many();
|
||||
$radius_hotspot = ORM::for_table('tbl_plans')->where('enabled', '1')->where('is_radius', 1)->where('type', 'Hotspot')->find_many();
|
||||
$radius_pppoe = ORM::for_table('tbl_plans')->where('enabled', '1')->where('is_radius', 1)->where('type', 'PPPOE')->where('allow_purchase', 'yes')->find_many();
|
||||
$radius_hotspot = ORM::for_table('tbl_plans')->where('enabled', '1')->where('is_radius', 1)->where('type', 'Hotspot')->where('allow_purchase', 'yes')->find_many();
|
||||
} else {
|
||||
$routers = ORM::for_table('tbl_routers')->where('id', $_SESSION['nux-router'])->find_many();
|
||||
$rs = [];
|
||||
foreach ($routers as $r) {
|
||||
$rs[] = $r['name'];
|
||||
}
|
||||
$plans_pppoe = ORM::for_table('tbl_plans')->where('enabled', '1')->where_in('routers', $rs)->where('is_radius', 0)->where('type', 'PPPOE')->find_many();
|
||||
$plans_hotspot = ORM::for_table('tbl_plans')->where('enabled', '1')->where_in('routers', $rs)->where('is_radius', 0)->where('type', 'Hotspot')->find_many();
|
||||
$plans_pppoe = ORM::for_table('tbl_plans')->where('enabled', '1')->where_in('routers', $rs)->where('is_radius', 0)->where('type', 'PPPOE')->where('allow_purchase', 'yes')->find_many();
|
||||
$plans_hotspot = ORM::for_table('tbl_plans')->where('enabled', '1')->where_in('routers', $rs)->where('is_radius', 0)->where('type', 'Hotspot')->where('allow_purchase', 'yes')->find_many();
|
||||
}
|
||||
} else {
|
||||
$radius_pppoe = ORM::for_table('tbl_plans')->where('enabled', '1')->where('is_radius', 1)->where('type', 'PPPOE')->find_many();
|
||||
$radius_hotspot = ORM::for_table('tbl_plans')->where('enabled', '1')->where('is_radius', 1)->where('type', 'Hotspot')->find_many();
|
||||
$radius_pppoe = ORM::for_table('tbl_plans')->where('enabled', '1')->where('is_radius', 1)->where('type', 'PPPOE')->where('allow_purchase', 'yes')->find_many();
|
||||
$radius_hotspot = ORM::for_table('tbl_plans')->where('enabled', '1')->where('is_radius', 1)->where('type', 'Hotspot')->where('allow_purchase', 'yes')->find_many();
|
||||
|
||||
$routers = ORM::for_table('tbl_routers')->find_many();
|
||||
$plans_pppoe = ORM::for_table('tbl_plans')->where('enabled', '1')->where('is_radius', 0)->where('type', 'PPPOE')->find_many();
|
||||
$plans_hotspot = ORM::for_table('tbl_plans')->where('enabled', '1')->where('is_radius', 0)->where('type', 'Hotspot')->find_many();
|
||||
$plans_pppoe = ORM::for_table('tbl_plans')->where('enabled', '1')->where('is_radius', 0)->where('type', 'PPPOE')->where('allow_purchase', 'yes')->find_many();
|
||||
$plans_hotspot = ORM::for_table('tbl_plans')->where('enabled', '1')->where('is_radius', 0)->where('type', 'Hotspot')->where('allow_purchase', 'yes')->find_many();
|
||||
}
|
||||
$ui->assign('routers', $routers);
|
||||
$ui->assign('radius_pppoe', $radius_pppoe);
|
||||
@ -149,6 +149,12 @@ switch ($action) {
|
||||
if (empty($plan)) {
|
||||
r2(U . "order/package", 'e', Lang::T("Plan Not found"));
|
||||
}
|
||||
if(!$plan['enabled']){
|
||||
r2(U . "home", 'e', 'Plan is not exists');
|
||||
}
|
||||
if($plan['allow_purchase'] != 'yes'){
|
||||
r2(U . "home", 'e', 'Cannot recharge this plan');
|
||||
}
|
||||
if ($routes['2'] == 'radius') {
|
||||
$router_name = 'radius';
|
||||
} else {
|
||||
@ -166,7 +172,7 @@ switch ($action) {
|
||||
"\nPrice: " . $p['price']);
|
||||
}
|
||||
} else {
|
||||
echo "no renewall | plan enabled: $p[enabled] | User balance: $c[balance] | price $p[price]\n";
|
||||
r2(U . "home", 'e', 'Plan is not exists');
|
||||
}
|
||||
break;
|
||||
case 'send':
|
||||
@ -179,6 +185,12 @@ switch ($action) {
|
||||
if (empty($plan)) {
|
||||
r2(U . "order/package", 'e', Lang::T("Plan Not found"));
|
||||
}
|
||||
if(!$plan['enabled']){
|
||||
r2(U . "home", 'e', 'Plan is not exists');
|
||||
}
|
||||
if($plan['allow_purchase'] != 'yes'){
|
||||
r2(U . "home", 'e', 'Cannot recharge this plan');
|
||||
}
|
||||
if ($routes['2'] == 'radius') {
|
||||
$router_name = 'radius';
|
||||
} else {
|
||||
@ -277,7 +289,7 @@ switch ($action) {
|
||||
$router['id'] = 0;
|
||||
$router['name'] = 'balance';
|
||||
}
|
||||
$plan = ORM::for_table('tbl_plans')->where('enabled', '1')->find_one($routes['3']);
|
||||
$plan = ORM::for_table('tbl_plans')->where('enabled', '1')->where('allow_purchase', 'yes')->find_one($routes['3']);
|
||||
if (empty($router) || empty($plan)) {
|
||||
r2(U . "order/package", 'e', Lang::T("Plan Not found"));
|
||||
}
|
||||
|
@ -5,7 +5,7 @@
|
||||
**/
|
||||
|
||||
_auth();
|
||||
$ui->assign('_title', $_L['Order_Voucher']);
|
||||
$ui->assign('_title', Lang::T('Order Voucher'));
|
||||
$ui->assign('_system_menu', 'order');
|
||||
|
||||
$action = $routes['1'];
|
||||
|
@ -54,9 +54,9 @@ if(strpos($action,"-reset")!==false){
|
||||
$html = _post("html");
|
||||
run_hook('save_pages'); #HOOK
|
||||
if(file_put_contents($path, str_replace(["<div","</div>"],"",$html))){
|
||||
r2(U . 'pages/'.$action, 's', $_L['Success_Save_Page']);
|
||||
r2(U . 'pages/'.$action, 's', Lang::T("Saving page success"));
|
||||
}else{
|
||||
r2(U . 'pages/'.$action, 'e', $_L['Failed_Save_Page']);
|
||||
r2(U . 'pages/'.$action, 'e', Lang::T("Failed to save page, make sure i can write to folder pages, <i>chmod 664 pages/*.html<i>"));
|
||||
}
|
||||
}else
|
||||
$ui->display('a404.tpl');
|
||||
|
@ -5,7 +5,7 @@
|
||||
**/
|
||||
|
||||
_admin();
|
||||
$ui->assign('_title', $_L['Plugin Manager']);
|
||||
$ui->assign('_title', 'Plugin Manager');
|
||||
$ui->assign('_system_menu', 'settings');
|
||||
|
||||
$plugin_repository = 'https://hotspotbilling.github.io/Plugin-Repository/repository.json';
|
||||
@ -15,8 +15,8 @@ $admin = Admin::_info();
|
||||
$ui->assign('_admin', $admin);
|
||||
|
||||
|
||||
if ($admin['user_type'] != 'Admin') {
|
||||
r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
|
||||
$cache = File::pathFixer('system/cache/plugin_repository.json');
|
||||
|
@ -6,15 +6,15 @@
|
||||
**/
|
||||
|
||||
_admin();
|
||||
$ui->assign('_title', $_L['Network']);
|
||||
$ui->assign('_title', Lang::T('Network'));
|
||||
$ui->assign('_system_menu', 'network');
|
||||
|
||||
$action = $routes['1'];
|
||||
$admin = Admin::_info();
|
||||
$ui->assign('_admin', $admin);
|
||||
|
||||
if ($admin['user_type'] != 'Admin') {
|
||||
r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
|
||||
|
||||
@ -68,11 +68,13 @@ switch ($action) {
|
||||
Mikrotik::removePool($client, $d['pool_name']);
|
||||
} catch (Exception $e) {
|
||||
//ignore exception, it means router has already deleted
|
||||
} catch(Throwable $e){
|
||||
//ignore exception, it means router has already deleted
|
||||
}
|
||||
}
|
||||
$d->delete();
|
||||
|
||||
r2(U . 'pool/list', 's', $_L['Delete_Successfully']);
|
||||
r2(U . 'pool/list', 's', Lang::T('Data Deleted Successfully'));
|
||||
}
|
||||
break;
|
||||
|
||||
@ -99,12 +101,12 @@ switch ($action) {
|
||||
$msg .= 'Name should be between 3 to 30 characters' . '<br>';
|
||||
}
|
||||
if ($ip_address == '' or $routers == '') {
|
||||
$msg .= $_L['All_field_is_required'] . '<br>';
|
||||
$msg .= Lang::T('All field is required') . '<br>';
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_pool')->where('pool_name', $name)->find_one();
|
||||
if ($d) {
|
||||
$msg .= $_L['Pool_already_exist'] . '<br>';
|
||||
$msg .= Lang::T('Pool Name Already Exist') . '<br>';
|
||||
}
|
||||
if ($msg == '') {
|
||||
if ($routers != 'radius') {
|
||||
@ -119,7 +121,7 @@ switch ($action) {
|
||||
$b->routers = $routers;
|
||||
$b->save();
|
||||
|
||||
r2(U . 'pool/list', 's', $_L['Created_Successfully']);
|
||||
r2(U . 'pool/list', 's', Lang::T('Data Created Successfully'));
|
||||
} else {
|
||||
r2(U . 'pool/add', 'e', $msg);
|
||||
}
|
||||
@ -133,14 +135,14 @@ switch ($action) {
|
||||
$msg = '';
|
||||
|
||||
if ($ip_address == '' or $routers == '') {
|
||||
$msg .= $_L['All_field_is_required'] . '<br>';
|
||||
$msg .= Lang::T('All field is required') . '<br>';
|
||||
}
|
||||
|
||||
$id = _post('id');
|
||||
$d = ORM::for_table('tbl_pool')->find_one($id);
|
||||
if ($d) {
|
||||
} else {
|
||||
$msg .= $_L['Data_Not_Found'] . '<br>';
|
||||
$msg .= Lang::T('Data Not Found') . '<br>';
|
||||
}
|
||||
|
||||
if ($msg == '') {
|
||||
@ -154,7 +156,7 @@ switch ($action) {
|
||||
$d->routers = $routers;
|
||||
$d->save();
|
||||
|
||||
r2(U . 'pool/list', 's', $_L['Updated_Successfully']);
|
||||
r2(U . 'pool/list', 's', Lang::T('Data Updated Successfully'));
|
||||
} else {
|
||||
r2(U . 'pool/edit/' . $id, 'e', $msg);
|
||||
}
|
||||
|
@ -6,17 +6,13 @@
|
||||
**/
|
||||
|
||||
_admin();
|
||||
$ui->assign('_title', $_L['Recharge_Account']);
|
||||
$ui->assign('_title', Lang::T('Recharge Account'));
|
||||
$ui->assign('_system_menu', 'prepaid');
|
||||
|
||||
$action = $routes['1'];
|
||||
$admin = Admin::_info();
|
||||
$ui->assign('_admin', $admin);
|
||||
|
||||
if ($admin['user_type'] != 'Admin' and $admin['user_type'] != 'Sales') {
|
||||
r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
|
||||
}
|
||||
|
||||
$select2_customer = <<<EOT
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function(event) {
|
||||
@ -38,6 +34,9 @@ EOT;
|
||||
|
||||
switch ($action) {
|
||||
case 'sync':
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
set_time_limit(-1);
|
||||
$plans = ORM::for_table('tbl_user_recharges')->where('status', 'on')->find_many();
|
||||
$log = '';
|
||||
@ -61,23 +60,28 @@ switch ($action) {
|
||||
}
|
||||
$log .= "DONE : $plan[username], $plan[namebp], $plan[type], $plan[routers]<br>";
|
||||
}
|
||||
if ($isApi) {
|
||||
showResult(true, $log);
|
||||
}
|
||||
r2(U . 'prepaid/list', 's', $log);
|
||||
case 'list':
|
||||
$ui->assign('xfooter', '<script type="text/javascript" src="ui/lib/c/prepaid.js"></script>');
|
||||
$ui->assign('_title', $_L['Customers']);
|
||||
$username = _post('username');
|
||||
if ($username != '') {
|
||||
$paginator = Paginator::build(ORM::for_table('tbl_user_recharges'), ['username' => '%' . $username . '%'], $username);
|
||||
$d = ORM::for_table('tbl_user_recharges')->where_like('username', '%' . $username . '%')->offset($paginator['startpoint'])->limit($paginator['limit'])->order_by_desc('id')->find_many();
|
||||
$ui->assign('_title', Lang::T('Customer'));
|
||||
$search = _post('search');
|
||||
if ($search != '') {
|
||||
$paginator = Paginator::build(ORM::for_table('tbl_user_recharges'), ['username' => '%' . $search . '%'], $search);
|
||||
$d = ORM::for_table('tbl_user_recharges')->where_like('username', '%' . $search . '%')->offset($paginator['startpoint'])->limit($paginator['limit'])->order_by_desc('id')->find_many();
|
||||
} else {
|
||||
$paginator = Paginator::build(ORM::for_table('tbl_user_recharges'));
|
||||
$d = ORM::for_table('tbl_user_recharges')->offset($paginator['startpoint'])->limit($paginator['limit'])->order_by_desc('id')->find_many();
|
||||
$d = ORM::for_table('tbl_user_recharges')->offset($paginator['startpoint'])->limit($paginator['limit'])->order_by_desc('id')->find_array();
|
||||
}
|
||||
|
||||
$ui->assign('d', $d);
|
||||
$ui->assign('cari', $username);
|
||||
$ui->assign('paginator', $paginator);
|
||||
run_hook('view_list_billing'); #HOOK
|
||||
if ($isApi) {
|
||||
showResult(true, $action, $d, ['search' => $search]);
|
||||
}
|
||||
$ui->assign('d', $d);
|
||||
$ui->assign('search', $search);
|
||||
$ui->assign('paginator', $paginator);
|
||||
$ui->display('prepaid.tpl');
|
||||
break;
|
||||
|
||||
@ -128,7 +132,7 @@ switch ($action) {
|
||||
$ui->assign('in', $in);
|
||||
$ui->assign('date', date("Y-m-d H:i:s"));
|
||||
$ui->display('invoice.tpl');
|
||||
_log('[' . $admin['username'] . ']: ' . 'Recharge ' . $c['username'] . ' [' . $in['plan_name'] . '][' . Lang::moneyFormat($in['price']) . ']', 'Admin', $admin['id']);
|
||||
_log('[' . $admin['username'] . ']: ' . 'Recharge ' . $c['username'] . ' [' . $in['plan_name'] . '][' . Lang::moneyFormat($in['price']) . ']', $admin['user_type'], $admin['id']);
|
||||
} else {
|
||||
r2(U . 'prepaid/recharge', 'e', "Failed to recharge account");
|
||||
}
|
||||
@ -157,16 +161,24 @@ switch ($action) {
|
||||
|
||||
|
||||
case 'print':
|
||||
$id = _post('id');
|
||||
$d = ORM::for_table('tbl_transactions')->where('id', $id)->find_one();
|
||||
$ui->assign('d', $d);
|
||||
$content = $_POST['content'];
|
||||
if (!empty($content)) {
|
||||
$ui->assign('content', $content);
|
||||
} else {
|
||||
$id = _post('id');
|
||||
$d = ORM::for_table('tbl_transactions')->where('id', $id)->find_one();
|
||||
$ui->assign('in', $d);
|
||||
$ui->assign('date', Lang::dateAndTimeFormat($d['recharged_on'], $d['recharged_time']));
|
||||
}
|
||||
|
||||
$ui->assign('date', Lang::dateAndTimeFormat($d['recharged_on'], $d['recharged_time']));
|
||||
run_hook('print_invoice'); #HOOK
|
||||
$ui->display('invoice-print.tpl');
|
||||
break;
|
||||
|
||||
case 'edit':
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin', 'Agent'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
$id = $routes['2'];
|
||||
$d = ORM::for_table('tbl_user_recharges')->find_one($id);
|
||||
if ($d) {
|
||||
@ -174,6 +186,7 @@ switch ($action) {
|
||||
$p = ORM::for_table('tbl_plans')->where('enabled', '1')->where_not_equal('type', 'Balance')->find_many();
|
||||
$ui->assign('p', $p);
|
||||
run_hook('view_edit_customer_plan'); #HOOK
|
||||
$ui->assign('_title', 'Edit Plan');
|
||||
$ui->display('prepaid-edit.tpl');
|
||||
} else {
|
||||
r2(U . 'services/list', 'e', $_L['Account_Not_Found']);
|
||||
@ -181,6 +194,9 @@ switch ($action) {
|
||||
break;
|
||||
|
||||
case 'delete':
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
$id = $routes['2'];
|
||||
$d = ORM::for_table('tbl_user_recharges')->find_one($id);
|
||||
if ($d) {
|
||||
@ -201,12 +217,15 @@ switch ($action) {
|
||||
}
|
||||
}
|
||||
$d->delete();
|
||||
_log('[' . $admin['username'] . ']: ' . 'Delete Plan for Customer ' . $c['username'] . ' [' . $in['plan_name'] . '][' . Lang::moneyFormat($in['price']) . ']', 'Admin', $admin['id']);
|
||||
r2(U . 'prepaid/list', 's', $_L['Delete_Successfully']);
|
||||
_log('[' . $admin['username'] . ']: ' . 'Delete Plan for Customer ' . $c['username'] . ' [' . $in['plan_name'] . '][' . Lang::moneyFormat($in['price']) . ']', $admin['user_type'], $admin['id']);
|
||||
r2(U . 'prepaid/list', 's', Lang::T('Data Deleted Successfully'));
|
||||
}
|
||||
break;
|
||||
|
||||
case 'edit-post':
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
$username = _post('username');
|
||||
$id_plan = _post('id_plan');
|
||||
$recharged_on = _post('recharged_on');
|
||||
@ -217,7 +236,7 @@ switch ($action) {
|
||||
$d = ORM::for_table('tbl_user_recharges')->find_one($id);
|
||||
if ($d) {
|
||||
} else {
|
||||
$msg .= $_L['Data_Not_Found'] . '<br>';
|
||||
$msg .= Lang::T('Data Not Found') . '<br>';
|
||||
}
|
||||
$p = ORM::for_table('tbl_plans')->where('id', $id_plan)->where('enabled', '1')->find_one();
|
||||
if ($d) {
|
||||
@ -228,53 +247,114 @@ switch ($action) {
|
||||
run_hook('edit_customer_plan'); #HOOK
|
||||
$d->username = $username;
|
||||
$d->plan_id = $id_plan;
|
||||
$d->namebp = $p['name_plan'];
|
||||
//$d->recharged_on = $recharged_on;
|
||||
$d->expiration = $expiration;
|
||||
$d->time = $time;
|
||||
if($p['is_radius']){
|
||||
if ($d['status'] == 'off') {
|
||||
if (strtotime($expiration . ' ' . $time) > time()) {
|
||||
$d->status = 'on';
|
||||
}
|
||||
}
|
||||
if ($p['is_radius']) {
|
||||
$d->routers = 'radius';
|
||||
}else{
|
||||
} else {
|
||||
$d->routers = $p['routers'];
|
||||
}
|
||||
$d->save();
|
||||
Package::changeTo($username, $id_plan, $id);
|
||||
_log('[' . $admin['username'] . ']: ' . 'Edit Plan for Customer ' . $d['username'] . ' to [' . $d['plan_name'] . '][' . Lang::moneyFormat($d['price']) . ']', 'Admin', $admin['id']);
|
||||
r2(U . 'prepaid/list', 's', $_L['Updated_Successfully']);
|
||||
if ($d['status'] == 'on') {
|
||||
Package::changeTo($username, $id_plan, $id);
|
||||
}
|
||||
_log('[' . $admin['username'] . ']: ' . 'Edit Plan for Customer ' . $d['username'] . ' to [' . $d['namebp'] . '][' . Lang::moneyFormat($p['price']) . ']', $admin['user_type'], $admin['id']);
|
||||
r2(U . 'prepaid/list', 's', Lang::T('Data Updated Successfully'));
|
||||
} else {
|
||||
r2(U . 'prepaid/edit/' . $id, 'e', $msg);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'voucher':
|
||||
$ui->assign('xfooter', '<script type="text/javascript" src="ui/lib/c/voucher.js"></script>');
|
||||
$ui->assign('_title', $_L['Prepaid_Vouchers']);
|
||||
$code = _post('code');
|
||||
if ($code != '') {
|
||||
$ui->assign('code', $code);
|
||||
$paginator = Paginator::build(ORM::for_table('tbl_voucher'), ['code' => '%' . $code . '%'], $code);
|
||||
$d = ORM::for_table('tbl_plans')->where('enabled', '1')
|
||||
->join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan'))
|
||||
->where_like('tbl_voucher.code', '%' . $code . '%')
|
||||
->offset($paginator['startpoint'])
|
||||
->limit($paginator['limit'])
|
||||
->find_many();
|
||||
$ui->assign('_title', Lang::T('Prepaid Vouchers'));
|
||||
$limit = 10;
|
||||
$page = _get('p', 0);
|
||||
$pageNow = $page * $limit;
|
||||
$search = _req('search');
|
||||
if ($search != '') {
|
||||
if (in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
$d = ORM::for_table('tbl_plans')->where('enabled', '1')
|
||||
->join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan'))
|
||||
->where_like('tbl_voucher.code', '%' . $search . '%')
|
||||
->offset($pageNow)
|
||||
->limit($limit)
|
||||
->findArray();
|
||||
} else if ($admin['user_type'] == 'Agent') {
|
||||
$sales = [];
|
||||
$sls = ORM::for_table('tbl_users')->select('id')->where('root', $admin['id'])->findArray();
|
||||
foreach ($sls as $s) {
|
||||
$sales[] = $s['id'];
|
||||
}
|
||||
$sales[] = $admin['id'];
|
||||
$d = ORM::for_table('tbl_plans')
|
||||
->join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan'))
|
||||
->where_in('generated_by', $sales)
|
||||
->where_like('tbl_voucher.code', '%' . $search . '%')
|
||||
->offset($pageNow)
|
||||
->limit($limit)
|
||||
->findArray();
|
||||
}
|
||||
} else {
|
||||
$paginator = Paginator::build(ORM::for_table('tbl_voucher'));
|
||||
$d = ORM::for_table('tbl_plans')->where('enabled', '1')
|
||||
->join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan'))
|
||||
->offset($paginator['startpoint'])
|
||||
->limit($paginator['limit'])->find_many();
|
||||
if (in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
$d = ORM::for_table('tbl_plans')->where('enabled', '1')
|
||||
->join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan'))
|
||||
->offset($pageNow)
|
||||
->limit($limit)
|
||||
->findArray();
|
||||
} else if ($admin['user_type'] == 'Agent') {
|
||||
$sales = [];
|
||||
$sls = ORM::for_table('tbl_users')->select('id')->where('root', $admin['id'])->findArray();
|
||||
foreach ($sls as $s) {
|
||||
$sales[] = $s['id'];
|
||||
}
|
||||
$sales[] = $admin['id'];
|
||||
$d = ORM::for_table('tbl_plans')
|
||||
->join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan'))
|
||||
->where_in('generated_by', $sales)
|
||||
->offset($pageNow)
|
||||
->limit($limit)
|
||||
->findArray();
|
||||
}
|
||||
}
|
||||
|
||||
// extract admin
|
||||
$admins = [];
|
||||
foreach ($d as $k) {
|
||||
if (!empty($k['generated_by'])) {
|
||||
$admins[] = $k['generated_by'];
|
||||
}
|
||||
}
|
||||
if (count($admins) > 0) {
|
||||
$adms = ORM::for_table('tbl_users')->where_in('id', $admins)->find_many();
|
||||
unset($admins);
|
||||
foreach ($adms as $adm) {
|
||||
$tipe = $adm['user_type'];
|
||||
if ($tipe == 'Sales') {
|
||||
$tipe = ' [S]';
|
||||
} else if ($tipe == 'Agent') {
|
||||
$tipe = ' [A]';
|
||||
} else {
|
||||
$tipe == '';
|
||||
}
|
||||
$admins[$adm['id']] = $adm['fullname'] . $tipe;
|
||||
}
|
||||
}
|
||||
$ui->assign('admins', $admins);
|
||||
$ui->assign('d', $d);
|
||||
$ui->assign('_code', $code);
|
||||
$ui->assign('paginator', $paginator);
|
||||
$ui->assign('search', $search);
|
||||
$ui->assign('page', $page);
|
||||
run_hook('view_list_voucher'); #HOOK
|
||||
$ui->display('voucher.tpl');
|
||||
break;
|
||||
|
||||
case 'add-voucher':
|
||||
$ui->assign('_title', $_L['Add_Voucher']);
|
||||
$ui->assign('_title', Lang::T('Add Vouchers'));
|
||||
$c = ORM::for_table('tbl_customers')->find_many();
|
||||
$ui->assign('c', $c);
|
||||
$p = ORM::for_table('tbl_plans')->where('enabled', '1')->find_many();
|
||||
@ -286,10 +366,19 @@ switch ($action) {
|
||||
break;
|
||||
|
||||
case 'remove-voucher':
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
$d = ORM::for_table('tbl_voucher')->where_equal('status', '1')->findMany();
|
||||
if ($d) {
|
||||
$d->delete();
|
||||
r2(U . 'prepaid/voucher', 's', $_L['Delete_Successfully']);
|
||||
$jml = 0;
|
||||
foreach ($d as $v) {
|
||||
if (!ORM::for_table('tbl_user_recharges')->where_equal("method", 'Voucher - ' . $v['code'])->findOne()) {
|
||||
$v->delete();
|
||||
$jml++;
|
||||
}
|
||||
}
|
||||
r2(U . 'prepaid/voucher', 's', "$jml " . Lang::T('Data Deleted Successfully'));
|
||||
}
|
||||
case 'print-voucher':
|
||||
$from_id = _post('from_id');
|
||||
@ -313,53 +402,58 @@ switch ($action) {
|
||||
->where('tbl_voucher.status', '0')
|
||||
->where('tbl_plans.id', $planid)
|
||||
->where_gt('tbl_voucher.id', $from_id)
|
||||
->limit($limit)
|
||||
->find_many();
|
||||
->limit($limit);
|
||||
$vc = ORM::for_table('tbl_plans')
|
||||
->join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan'))
|
||||
->where('tbl_voucher.status', '0')
|
||||
->where('tbl_plans.id', $planid)
|
||||
->where_gt('tbl_voucher.id', $from_id)
|
||||
->count();
|
||||
->where_gt('tbl_voucher.id', $from_id);
|
||||
} else if ($from_id == 0 && $planid > 0) {
|
||||
$v = ORM::for_table('tbl_plans')
|
||||
->join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan'))
|
||||
->where('tbl_voucher.status', '0')
|
||||
->where('tbl_plans.id', $planid)
|
||||
->limit($limit)
|
||||
->find_many();
|
||||
->limit($limit);
|
||||
$vc = ORM::for_table('tbl_plans')
|
||||
->join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan'))
|
||||
->where('tbl_voucher.status', '0')
|
||||
->where('tbl_plans.id', $planid)
|
||||
->count();
|
||||
->where('tbl_plans.id', $planid);
|
||||
} else if ($from_id > 0 && $planid == 0) {
|
||||
$v = ORM::for_table('tbl_plans')
|
||||
->join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan'))
|
||||
->where('tbl_voucher.status', '0')
|
||||
->where_gt('tbl_voucher.id', $from_id)
|
||||
->limit($limit)
|
||||
->find_many();
|
||||
->limit($limit);
|
||||
$vc = ORM::for_table('tbl_plans')
|
||||
->join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan'))
|
||||
->where('tbl_voucher.status', '0')
|
||||
->where_gt('tbl_voucher.id', $from_id)
|
||||
->count();
|
||||
->where_gt('tbl_voucher.id', $from_id);
|
||||
} else {
|
||||
$v = ORM::for_table('tbl_plans')
|
||||
->join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan'))
|
||||
->where('tbl_voucher.status', '0')
|
||||
->limit($limit)
|
||||
->find_many();
|
||||
->limit($limit);
|
||||
$vc = ORM::for_table('tbl_plans')
|
||||
->join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan'))
|
||||
->where('tbl_voucher.status', '0')
|
||||
->count();
|
||||
->where('tbl_voucher.status', '0');
|
||||
}
|
||||
if (in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
$v = $v->find_many();
|
||||
$vc = $vc->count();
|
||||
} else {
|
||||
$sales = [];
|
||||
$sls = ORM::for_table('tbl_users')->select('id')->where('root', $admin['id'])->findArray();
|
||||
foreach ($sls as $s) {
|
||||
$sales[] = $s['id'];
|
||||
}
|
||||
$sales[] = $admin['id'];
|
||||
$v = $v->where_in('generated_by', $sales)->find_many();
|
||||
$vc = $vc->where_in('generated_by', $sales)->count();
|
||||
}
|
||||
$template = file_get_contents("pages/Voucher.html");
|
||||
$template = str_replace('[[company_name]]', $config['CompanyName'], $template);
|
||||
|
||||
$ui->assign('_title', $_L['Voucher_Hotspot']);
|
||||
$ui->assign('_title', Lang::T('Hotspot Voucher'));
|
||||
$ui->assign('from_id', $from_id);
|
||||
$ui->assign('vpl', $vpl);
|
||||
$ui->assign('pagebreak', $pagebreak);
|
||||
@ -393,13 +487,15 @@ switch ($action) {
|
||||
case 'voucher-post':
|
||||
$type = _post('type');
|
||||
$plan = _post('plan');
|
||||
$voucher_format = _post('voucher_format');
|
||||
$prefix = _post('prefix');
|
||||
$server = _post('server');
|
||||
$numbervoucher = _post('numbervoucher');
|
||||
$lengthcode = _post('lengthcode');
|
||||
|
||||
$msg = '';
|
||||
if ($type == '' or $plan == '' or $server == '' or $numbervoucher == '' or $lengthcode == '') {
|
||||
$msg .= $_L['All_field_is_required'] . '<br>';
|
||||
$msg .= Lang::T('All field is required') . '<br>';
|
||||
}
|
||||
if (Validator::UnsignedNumber($numbervoucher) == false) {
|
||||
$msg .= 'The Number of Vouchers must be a number' . '<br>';
|
||||
@ -408,43 +504,117 @@ switch ($action) {
|
||||
$msg .= 'The Length Code must be a number' . '<br>';
|
||||
}
|
||||
if ($msg == '') {
|
||||
if (!empty($prefix)) {
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'voucher_prefix')->find_one();
|
||||
if ($d) {
|
||||
$d->value = $prefix;
|
||||
$d->save();
|
||||
} else {
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = 'voucher_prefix';
|
||||
$d->value = $prefix;
|
||||
$d->save();
|
||||
}
|
||||
}
|
||||
run_hook('create_voucher'); #HOOK
|
||||
for ($i = 0; $i < $numbervoucher; $i++) {
|
||||
$code = strtoupper(substr(md5(time() . rand(10000, 99999)), 0, $lengthcode));
|
||||
if ($config['voucher_format'] == 'low') {
|
||||
if ($voucher_format == 'low') {
|
||||
$code = strtolower($code);
|
||||
} else if ($config['voucher_format'] == 'rand') {
|
||||
} else if ($voucher_format == 'rand') {
|
||||
$code = Lang::randomUpLowCase($code);
|
||||
}
|
||||
$d = ORM::for_table('tbl_voucher')->create();
|
||||
$d->type = $type;
|
||||
$d->routers = $server;
|
||||
$d->id_plan = $plan;
|
||||
$d->code = $code;
|
||||
$d->code = $prefix . $code;
|
||||
$d->user = '0';
|
||||
$d->status = '0';
|
||||
$d->generated_by = $admin['id'];
|
||||
$d->save();
|
||||
}
|
||||
if ($numbervoucher == 1) {
|
||||
r2(U . 'prepaid/voucher-view/' . $d->id(), 's', Lang::T('Create Vouchers Successfully'));
|
||||
}
|
||||
|
||||
r2(U . 'prepaid/voucher', 's', $_L['Voucher_Successfully']);
|
||||
r2(U . 'prepaid/voucher', 's', Lang::T('Create Vouchers Successfully'));
|
||||
} else {
|
||||
r2(U . 'prepaid/add-voucher/' . $id, 'e', $msg);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'voucher-view':
|
||||
$id = $routes[2];
|
||||
if (in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
$voucher = ORM::for_table('tbl_voucher')->find_one($id);
|
||||
} else {
|
||||
$sales = [];
|
||||
$sls = ORM::for_table('tbl_users')->select('id')->where('root', $admin['id'])->findArray();
|
||||
foreach ($sls as $s) {
|
||||
$sales[] = $s['id'];
|
||||
}
|
||||
$sales[] = $admin['id'];
|
||||
$voucher = ORM::for_table('tbl_voucher')
|
||||
->find_one($id);
|
||||
if (!in_array($voucher['generated_by'], $sales)) {
|
||||
r2(U . 'prepaid/voucher/', 'e', Lang::T('Voucher Not Found'));
|
||||
}
|
||||
}
|
||||
if (!$voucher) {
|
||||
r2(U . 'prepaid/voucher/', 'e', Lang::T('Voucher Not Found'));
|
||||
}
|
||||
$plan = ORM::for_table('tbl_plans')->find_one($d['id_plan']);
|
||||
if ($voucher && $plan) {
|
||||
$content = Lang::pad($config['CompanyName'], ' ', 2) . "\n";
|
||||
$content .= Lang::pad($config['address'], ' ', 2) . "\n";
|
||||
$content .= Lang::pad($config['phone'], ' ', 2) . "\n";
|
||||
$content .= Lang::pad("", '=') . "\n";
|
||||
$content .= Lang::pads('ID', $voucher['id'], ' ') . "\n";
|
||||
$content .= Lang::pads(Lang::T('Code'), $voucher['code'], ' ') . "\n";
|
||||
$content .= Lang::pads(Lang::T('Plan Name'), $plan['name_plan'], ' ') . "\n";
|
||||
$content .= Lang::pads(Lang::T('Type'), $voucher['type'], ' ') . "\n";
|
||||
$content .= Lang::pads(Lang::T('Plan Price'), Lang::moneyFormat($plan['price']), ' ') . "\n";
|
||||
$content .= Lang::pads(Lang::T('Sales'), $admin['fullname'] . ' #' . $admin['id'], ' ') . "\n";
|
||||
$content .= Lang::pad("", '=') . "\n";
|
||||
$content .= Lang::pad($config['note'], ' ', 2) . "\n";
|
||||
$ui->assign('print', $content);
|
||||
$config['printer_cols'] = 30;
|
||||
$content = Lang::pad($config['CompanyName'], ' ', 2) . "\n";
|
||||
$content .= Lang::pad($config['address'], ' ', 2) . "\n";
|
||||
$content .= Lang::pad($config['phone'], ' ', 2) . "\n";
|
||||
$content .= Lang::pad("", '=') . "\n";
|
||||
$content .= Lang::pads('ID', $voucher['id'], ' ') . "\n";
|
||||
$content .= Lang::pads(Lang::T('Code'), $voucher['code'], ' ') . "\n";
|
||||
$content .= Lang::pads(Lang::T('Plan Name'), $plan['name_plan'], ' ') . "\n";
|
||||
$content .= Lang::pads(Lang::T('Type'), $voucher['type'], ' ') . "\n";
|
||||
$content .= Lang::pads(Lang::T('Plan Price'), Lang::moneyFormat($plan['price']), ' ') . "\n";
|
||||
$content .= Lang::pads(Lang::T('Sales'), $admin['fullname'] . ' #' . $admin['id'], ' ') . "\n";
|
||||
$content .= Lang::pad("", '=') . "\n";
|
||||
$content .= Lang::pad($config['note'], ' ', 2) . "\n";
|
||||
$ui->assign('_title', Lang::T('View'));
|
||||
$ui->assign('wa', urlencode("```$content```"));
|
||||
$ui->display('voucher-view.tpl');
|
||||
} else {
|
||||
r2(U . 'prepaid/voucher/', 'e', Lang::T('Voucher Not Found'));
|
||||
}
|
||||
break;
|
||||
case 'voucher-delete':
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
$id = $routes['2'];
|
||||
run_hook('delete_voucher'); #HOOK
|
||||
$d = ORM::for_table('tbl_voucher')->find_one($id);
|
||||
if ($d) {
|
||||
$d->delete();
|
||||
r2(U . 'prepaid/voucher', 's', $_L['Delete_Successfully']);
|
||||
r2(U . 'prepaid/voucher', 's', Lang::T('Data Deleted Successfully'));
|
||||
}
|
||||
break;
|
||||
|
||||
case 'refill':
|
||||
$ui->assign('xfooter', $select2_customer);
|
||||
$ui->assign('_title', $_L['Refill_Account']);
|
||||
$ui->assign('_title', Lang::T('Refill Account'));
|
||||
run_hook('view_refill'); #HOOK
|
||||
$ui->display('refill.tpl');
|
||||
|
||||
@ -457,7 +627,7 @@ switch ($action) {
|
||||
|
||||
run_hook('refill_customer'); #HOOK
|
||||
if ($v1) {
|
||||
if (Package::rechargeUser($user['id'], $v1['routers'], $v1['id_plan'], "Refill", "Voucher")) {
|
||||
if (Package::rechargeUser($user['id'], $v1['routers'], $v1['id_plan'], "Voucher", $code)) {
|
||||
$v1->status = "1";
|
||||
$v1->user = $user['username'];
|
||||
$v1->save();
|
||||
@ -469,7 +639,7 @@ switch ($action) {
|
||||
r2(U . 'prepaid/refill', 'e', "Failed to refill account");
|
||||
}
|
||||
} else {
|
||||
r2(U . 'prepaid/refill', 'e', $_L['Voucher_Not_Valid']);
|
||||
r2(U . 'prepaid/refill', 'e', Lang::T('Voucher Not Valid'));
|
||||
}
|
||||
break;
|
||||
case 'deposit':
|
||||
|
@ -12,14 +12,14 @@ $admin = Admin::_info();
|
||||
$ui->assign('_admin', $admin);
|
||||
|
||||
|
||||
if ($admin['user_type'] != 'Admin') {
|
||||
r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
|
||||
switch ($action) {
|
||||
|
||||
case 'nas-add':
|
||||
$ui->assign('_system_menu', 'network');
|
||||
$ui->assign('_system_menu', 'radius');
|
||||
$ui->assign('_title', "Network Access Server");
|
||||
$ui->assign('routers', ORM::for_table('tbl_routers')->find_many());
|
||||
$ui->display('radius-nas-add.tpl');
|
||||
@ -67,7 +67,7 @@ switch ($action) {
|
||||
}
|
||||
break;
|
||||
case 'nas-edit':
|
||||
$ui->assign('_system_menu', 'network');
|
||||
$ui->assign('_system_menu', 'radius');
|
||||
$ui->assign('_title', "Network Access Server");
|
||||
|
||||
$id = $routes['2'];
|
||||
@ -131,7 +131,7 @@ switch ($action) {
|
||||
r2(U . 'radius/nas-list', 'e', 'NAS Not found');
|
||||
}
|
||||
default:
|
||||
$ui->assign('_system_menu', 'network');
|
||||
$ui->assign('_system_menu', 'radius');
|
||||
$ui->assign('_title', "Network Access Server");
|
||||
$name = _post('name');
|
||||
if (empty($name)) {
|
||||
|
@ -41,7 +41,7 @@ switch ($do) {
|
||||
$msg .= 'Email is not Valid<br>';
|
||||
}
|
||||
if ($password != $cpassword) {
|
||||
$msg .= $_L['PasswordsNotMatch'] . '<br>';
|
||||
$msg .= Lang::T('Passwords does not match') . '<br>';
|
||||
}
|
||||
|
||||
if(!empty($config['sms_url'])){
|
||||
@ -72,7 +72,7 @@ switch ($do) {
|
||||
}
|
||||
$d = ORM::for_table('tbl_customers')->where('username', $username)->find_one();
|
||||
if ($d) {
|
||||
$msg .= $_L['account_already_exist'] . '<br>';
|
||||
$msg .= Lang::T('Account already axist') . '<br>';
|
||||
}
|
||||
if ($msg == '') {
|
||||
run_hook('register_user'); #HOOK
|
||||
@ -85,7 +85,7 @@ switch ($do) {
|
||||
$d->phonenumber = $phonenumber;
|
||||
if ($d->save()) {
|
||||
$user = $d->id();
|
||||
r2(U . 'login', 's', $_L['Register_Success']);
|
||||
r2(U . 'login', 's', Lang::T('Register Success! You can login now'));
|
||||
} else {
|
||||
$ui->assign('username', $username);
|
||||
$ui->assign('fullname', $fullname);
|
||||
@ -115,7 +115,7 @@ switch ($do) {
|
||||
if(!empty($username)){
|
||||
$d = ORM::for_table('tbl_customers')->where('username', $username)->find_one();
|
||||
if ($d) {
|
||||
r2(U . 'register', 's', $_L['account_already_exist']);
|
||||
r2(U . 'register', 's', Lang::T('Account already axist'));
|
||||
}
|
||||
if(!file_exists($otpPath)){
|
||||
mkdir($otpPath);
|
||||
|
@ -6,17 +6,13 @@
|
||||
**/
|
||||
|
||||
_admin();
|
||||
$ui->assign('_title', $_L['Reports']);
|
||||
$ui->assign('_title', Lang::T('Reports'));
|
||||
$ui->assign('_system_menu', 'reports');
|
||||
|
||||
$action = $routes['1'];
|
||||
$admin = Admin::_info();
|
||||
$ui->assign('_admin', $admin);
|
||||
|
||||
if ($admin['user_type'] != 'Admin' and $admin['user_type'] != 'Sales') {
|
||||
r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
|
||||
}
|
||||
|
||||
$mdate = date('Y-m-d');
|
||||
$mtime = date('H:i:s');
|
||||
$tdate = date('Y-m-d', strtotime('today - 30 days'));
|
||||
|
@ -6,7 +6,7 @@
|
||||
**/
|
||||
|
||||
_admin();
|
||||
$ui->assign('_title', $_L['Network']);
|
||||
$ui->assign('_title', Lang::T('Network'));
|
||||
$ui->assign('_system_menu', 'network');
|
||||
|
||||
$action = $routes['1'];
|
||||
@ -17,8 +17,8 @@ use PEAR2\Net\RouterOS;
|
||||
|
||||
require_once 'system/autoload/PEAR2/Autoload.php';
|
||||
|
||||
if ($admin['user_type'] != 'Admin') {
|
||||
r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
|
||||
switch ($action) {
|
||||
@ -66,7 +66,7 @@ switch ($action) {
|
||||
$d = ORM::for_table('tbl_routers')->find_one($id);
|
||||
if ($d) {
|
||||
$d->delete();
|
||||
r2(U . 'routers/list', 's', $_L['Delete_Successfully']);
|
||||
r2(U . 'routers/list', 's', Lang::T('Data Deleted Successfully'));
|
||||
}
|
||||
break;
|
||||
|
||||
@ -83,12 +83,12 @@ switch ($action) {
|
||||
$msg .= 'Name should be between 5 to 30 characters' . '<br>';
|
||||
}
|
||||
if ($ip_address == '' or $username == '') {
|
||||
$msg .= $_L['All_field_is_required'] . '<br>';
|
||||
$msg .= Lang::T('All field is required') . '<br>';
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_routers')->where('ip_address', $ip_address)->find_one();
|
||||
if ($d) {
|
||||
$msg .= $_L['Router_already_exist'] . '<br>';
|
||||
$msg .= Lang::T('IP Router Already Exist') . '<br>';
|
||||
}
|
||||
if (strtolower($name) == 'radius') {
|
||||
$msg .= '<b>Radius</b> name is reserved<br>';
|
||||
@ -106,7 +106,7 @@ switch ($action) {
|
||||
$d->enabled = $enabled;
|
||||
$d->save();
|
||||
|
||||
r2(U . 'routers/list', 's', $_L['Created_Successfully']);
|
||||
r2(U . 'routers/list', 's', Lang::T('Data Created Successfully'));
|
||||
} else {
|
||||
r2(U . 'routers/add', 'e', $msg);
|
||||
}
|
||||
@ -125,14 +125,14 @@ switch ($action) {
|
||||
$msg .= 'Name should be between 5 to 30 characters' . '<br>';
|
||||
}
|
||||
if ($ip_address == '' or $username == '') {
|
||||
$msg .= $_L['All_field_is_required'] . '<br>';
|
||||
$msg .= Lang::T('All field is required') . '<br>';
|
||||
}
|
||||
|
||||
$id = _post('id');
|
||||
$d = ORM::for_table('tbl_routers')->find_one($id);
|
||||
if ($d) {
|
||||
} else {
|
||||
$msg .= $_L['Data_Not_Found'] . '<br>';
|
||||
$msg .= Lang::T('Data Not Found') . '<br>';
|
||||
}
|
||||
|
||||
if ($d['name'] != $name) {
|
||||
@ -185,7 +185,7 @@ switch ($action) {
|
||||
$p->set('routers', $name);
|
||||
$p->save();
|
||||
}
|
||||
r2(U . 'routers/list', 's', $_L['Updated_Successfully']);
|
||||
r2(U . 'routers/list', 's', Lang::T('Data Updated Successfully'));
|
||||
} else {
|
||||
r2(U . 'routers/edit/' . $id, 'e', $msg);
|
||||
}
|
||||
|
@ -5,15 +5,15 @@
|
||||
* by https://t.me/ibnux
|
||||
**/
|
||||
_admin();
|
||||
$ui->assign('_title', $_L['Hotspot_Plans']);
|
||||
$ui->assign('_title', Lang::T('Hotspot Plans'));
|
||||
$ui->assign('_system_menu', 'services');
|
||||
|
||||
$action = $routes['1'];
|
||||
$admin = Admin::_info();
|
||||
$ui->assign('_admin', $admin);
|
||||
|
||||
if ($admin['user_type'] != 'Admin' and $admin['user_type'] != 'Sales') {
|
||||
r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
|
||||
use PEAR2\Net\RouterOS;
|
||||
@ -173,12 +173,14 @@ switch ($action) {
|
||||
Mikrotik::removeHotspotPlan($client, $d['name_plan']);
|
||||
} catch (Exception $e) {
|
||||
//ignore exception, it means router has already deleted
|
||||
} catch (Throwable $e) {
|
||||
//ignore exception, it means router has already deleted
|
||||
}
|
||||
}
|
||||
|
||||
$d->delete();
|
||||
|
||||
r2(U . 'services/hotspot', 's', $_L['Delete_Successfully']);
|
||||
r2(U . 'services/hotspot', 's', Lang::T('Data Deleted Successfully'));
|
||||
}
|
||||
break;
|
||||
|
||||
@ -198,7 +200,9 @@ switch ($action) {
|
||||
$validity_unit = _post('validity_unit');
|
||||
$routers = _post('routers');
|
||||
$pool_expired = _post('pool_expired');
|
||||
$list_expired = _post('list_expired');
|
||||
$enabled = _post('enabled');
|
||||
$allow_purchase = _post('allow_purchase');
|
||||
|
||||
$msg = '';
|
||||
if (Validator::UnsignedNumber($validity) == false) {
|
||||
@ -208,16 +212,16 @@ switch ($action) {
|
||||
$msg .= 'The price must be a number' . '<br>';
|
||||
}
|
||||
if ($name == '' or $id_bw == '' or $price == '' or $validity == '') {
|
||||
$msg .= $_L['All_field_is_required'] . '<br>';
|
||||
$msg .= Lang::T('All field is required') . '<br>';
|
||||
}
|
||||
if (empty($radius)) {
|
||||
if ($routers == '') {
|
||||
$msg .= $_L['All_field_is_required'] . '<br>';
|
||||
$msg .= Lang::T('All field is required') . '<br>';
|
||||
}
|
||||
}
|
||||
$d = ORM::for_table('tbl_plans')->where('name_plan', $name)->where('type', 'Hotspot')->find_one();
|
||||
if ($d) {
|
||||
$msg .= $_L['Plan_already_exist'] . '<br>';
|
||||
$msg .= Lang::T('Name Plan Already Exist') . '<br>';
|
||||
}
|
||||
|
||||
run_hook('add_plan'); #HOOK
|
||||
@ -240,6 +244,7 @@ switch ($action) {
|
||||
}
|
||||
$rate = $b['rate_up'] . $unitup . "/" . $b['rate_down'] . $unitdown;
|
||||
$radiusRate = $b['rate_up'] . $radup . '/' . $b['rate_down'] . $raddown;
|
||||
$rate = trim($rate . " " . $b['burst']);
|
||||
|
||||
$d = ORM::for_table('tbl_plans')->create();
|
||||
$d->name_plan = $name;
|
||||
@ -261,9 +266,11 @@ switch ($action) {
|
||||
} else {
|
||||
$d->is_radius = 0;
|
||||
$d->routers = $routers;
|
||||
$d->pool_expired = $pool_expired;
|
||||
}
|
||||
$d->pool_expired = $pool_expired;
|
||||
$d->list_expired = $list_expired;
|
||||
$d->enabled = $enabled;
|
||||
$d->allow_purchase = $allow_purchase;
|
||||
$d->save();
|
||||
$plan_id = $d->id();
|
||||
|
||||
@ -279,7 +286,7 @@ switch ($action) {
|
||||
}
|
||||
|
||||
|
||||
r2(U . 'services/hotspot', 's', $_L['Created_Successfully']);
|
||||
r2(U . 'services/hotspot', 's', Lang::T('Data Created Successfully'));
|
||||
} else {
|
||||
r2(U . 'services/add', 'e', $msg);
|
||||
}
|
||||
@ -301,7 +308,9 @@ switch ($action) {
|
||||
$validity = _post('validity');
|
||||
$validity_unit = _post('validity_unit');
|
||||
$pool_expired = _post('pool_expired');
|
||||
$list_expired = _post('list_expired');
|
||||
$enabled = _post('enabled');
|
||||
$allow_purchase = _post('allow_purchase');
|
||||
$routers = _post('routers');
|
||||
$msg = '';
|
||||
if (Validator::UnsignedNumber($validity) == false) {
|
||||
@ -311,12 +320,12 @@ switch ($action) {
|
||||
$msg .= 'The price must be a number' . '<br>';
|
||||
}
|
||||
if ($name == '' or $id_bw == '' or $price == '' or $validity == '') {
|
||||
$msg .= $_L['All_field_is_required'] . '<br>';
|
||||
$msg .= Lang::T('All field is required') . '<br>';
|
||||
}
|
||||
$d = ORM::for_table('tbl_plans')->where('id', $id)->find_one();
|
||||
if ($d) {
|
||||
} else {
|
||||
$msg .= $_L['Data_Not_Found'] . '<br>';
|
||||
$msg .= Lang::T('Data Not Found') . '<br>';
|
||||
}
|
||||
run_hook('edit_plan'); #HOOK
|
||||
if ($msg == '') {
|
||||
@ -338,6 +347,8 @@ switch ($action) {
|
||||
$rate = $b['rate_up'] . $unitup . "/" . $b['rate_down'] . $unitdown;
|
||||
$radiusRate = $b['rate_up'] . $radup . '/' . $b['rate_down'] . $raddown;
|
||||
|
||||
$rate = trim($rate . " " . $b['burst']);
|
||||
|
||||
if ($d['is_radius']) {
|
||||
Radius::planUpSert($id, $radiusRate);
|
||||
} else {
|
||||
@ -362,17 +373,19 @@ switch ($action) {
|
||||
$d->validity_unit = $validity_unit;
|
||||
$d->shared_users = $sharedusers;
|
||||
$d->pool_expired = $pool_expired;
|
||||
$d->list_expired = $list_expired;
|
||||
$d->enabled = $enabled;
|
||||
$d->allow_purchase = $allow_purchase;
|
||||
$d->save();
|
||||
|
||||
r2(U . 'services/hotspot', 's', $_L['Updated_Successfully']);
|
||||
r2(U . 'services/hotspot', 's', Lang::T('Data Updated Successfully'));
|
||||
} else {
|
||||
r2(U . 'services/edit/' . $id, 'e', $msg);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'pppoe':
|
||||
$ui->assign('_title', $_L['PPPOE_Plans']);
|
||||
$ui->assign('_title', Lang::T('PPPOE Plans'));
|
||||
$ui->assign('xfooter', '<script type="text/javascript" src="ui/lib/c/pppoe.js"></script>');
|
||||
|
||||
$name = _post('name');
|
||||
@ -391,7 +404,7 @@ switch ($action) {
|
||||
break;
|
||||
|
||||
case 'pppoe-add':
|
||||
$ui->assign('_title', $_L['PPPOE_Plans']);
|
||||
$ui->assign('_title', Lang::T('PPPOE Plans'));
|
||||
$d = ORM::for_table('tbl_bandwidth')->find_many();
|
||||
$ui->assign('d', $d);
|
||||
$r = ORM::for_table('tbl_routers')->find_many();
|
||||
@ -401,7 +414,7 @@ switch ($action) {
|
||||
break;
|
||||
|
||||
case 'pppoe-edit':
|
||||
$ui->assign('_title', $_L['PPPOE_Plans']);
|
||||
$ui->assign('_title', Lang::T('PPPOE Plans'));
|
||||
$id = $routes['2'];
|
||||
$d = ORM::for_table('tbl_plans')->find_one($id);
|
||||
if ($d) {
|
||||
@ -437,11 +450,13 @@ switch ($action) {
|
||||
Mikrotik::removePpoePlan($client, $d['name_plan']);
|
||||
} catch (Exception $e) {
|
||||
//ignore exception, it means router has already deleted
|
||||
} catch (Throwable $e) {
|
||||
//ignore exception, it means router has already deleted
|
||||
}
|
||||
}
|
||||
$d->delete();
|
||||
|
||||
r2(U . 'services/pppoe', 's', $_L['Delete_Successfully']);
|
||||
r2(U . 'services/pppoe', 's', Lang::T('Data Deleted Successfully'));
|
||||
}
|
||||
break;
|
||||
|
||||
@ -455,7 +470,10 @@ switch ($action) {
|
||||
$routers = _post('routers');
|
||||
$pool = _post('pool_name');
|
||||
$pool_expired = _post('pool_expired');
|
||||
$list_expired = _post('list_expired');
|
||||
$enabled = _post('enabled');
|
||||
$allow_purchase = _post('allow_purchase');
|
||||
|
||||
|
||||
$msg = '';
|
||||
if (Validator::UnsignedNumber($validity) == false) {
|
||||
@ -465,17 +483,17 @@ switch ($action) {
|
||||
$msg .= 'The price must be a number' . '<br>';
|
||||
}
|
||||
if ($name == '' or $id_bw == '' or $price == '' or $validity == '' or $pool == '') {
|
||||
$msg .= $_L['All_field_is_required'] . '<br>';
|
||||
$msg .= Lang::T('All field is required') . '<br>';
|
||||
}
|
||||
if (empty($radius)) {
|
||||
if ($routers == '') {
|
||||
$msg .= $_L['All_field_is_required'] . '<br>';
|
||||
$msg .= Lang::T('All field is required') . '<br>';
|
||||
}
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_plans')->where('name_plan', $name)->find_one();
|
||||
if ($d) {
|
||||
$msg .= $_L['Plan_already_exist'] . '<br>';
|
||||
$msg .= Lang::T('Name Plan Already Exist') . '<br>';
|
||||
}
|
||||
run_hook('add_ppoe'); #HOOK
|
||||
if ($msg == '') {
|
||||
@ -496,6 +514,7 @@ switch ($action) {
|
||||
}
|
||||
$rate = $b['rate_up'] . $unitup . "/" . $b['rate_down'] . $unitdown;
|
||||
$radiusRate = $b['rate_up'] . $radup . '/' . $b['rate_down'] . $raddown;
|
||||
$rate = trim($rate . " " . $b['burst']);
|
||||
|
||||
$d = ORM::for_table('tbl_plans')->create();
|
||||
$d->type = 'PPPOE';
|
||||
@ -511,9 +530,11 @@ switch ($action) {
|
||||
} else {
|
||||
$d->is_radius = 0;
|
||||
$d->routers = $routers;
|
||||
$d->pool_expired = $pool_expired;
|
||||
}
|
||||
$d->pool_expired = $pool_expired;
|
||||
$d->list_expired = $list_expired;
|
||||
$d->enabled = $enabled;
|
||||
$d->allow_purchase = $allow_purchase;
|
||||
$d->save();
|
||||
$plan_id = $d->id();
|
||||
|
||||
@ -528,7 +549,7 @@ switch ($action) {
|
||||
}
|
||||
}
|
||||
|
||||
r2(U . 'services/pppoe', 's', $_L['Created_Successfully']);
|
||||
r2(U . 'services/pppoe', 's', Lang::T('Data Created Successfully'));
|
||||
} else {
|
||||
r2(U . 'services/pppoe-add', 'e', $msg);
|
||||
}
|
||||
@ -544,7 +565,9 @@ switch ($action) {
|
||||
$routers = _post('routers');
|
||||
$pool = _post('pool_name');
|
||||
$pool_expired = _post('pool_expired');
|
||||
$list_expired = _post('list_expired');
|
||||
$enabled = _post('enabled');
|
||||
$allow_purchase = _post('allow_purchase');
|
||||
|
||||
$msg = '';
|
||||
if (Validator::UnsignedNumber($validity) == false) {
|
||||
@ -554,13 +577,13 @@ switch ($action) {
|
||||
$msg .= 'The price must be a number' . '<br>';
|
||||
}
|
||||
if ($name == '' or $id_bw == '' or $price == '' or $validity == '' or $pool == '') {
|
||||
$msg .= $_L['All_field_is_required'] . '<br>';
|
||||
$msg .= Lang::T('All field is required') . '<br>';
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_plans')->where('id', $id)->find_one();
|
||||
if ($d) {
|
||||
} else {
|
||||
$msg .= $_L['Data_Not_Found'] . '<br>';
|
||||
$msg .= Lang::T('Data Not Found') . '<br>';
|
||||
}
|
||||
run_hook('edit_ppoe'); #HOOK
|
||||
if ($msg == '') {
|
||||
@ -581,6 +604,7 @@ switch ($action) {
|
||||
}
|
||||
$rate = $b['rate_up'] . $unitup . "/" . $b['rate_down'] . $unitdown;
|
||||
$radiusRate = $b['rate_up'] . $radup . '/' . $b['rate_down'] . $raddown;
|
||||
$rate = trim($rate . " " . $b['burst']);
|
||||
|
||||
if ($d['is_radius']) {
|
||||
Radius::planUpSert($id, $radiusRate, $pool);
|
||||
@ -601,10 +625,12 @@ switch ($action) {
|
||||
$d->routers = $routers;
|
||||
$d->pool = $pool;
|
||||
$d->pool_expired = $pool_expired;
|
||||
$d->list_expired = $list_expired;
|
||||
$d->enabled = $enabled;
|
||||
$d->allow_purchase = $allow_purchase;
|
||||
$d->save();
|
||||
|
||||
r2(U . 'services/pppoe', 's', $_L['Updated_Successfully']);
|
||||
r2(U . 'services/pppoe', 's', Lang::T('Data Updated Successfully'));
|
||||
} else {
|
||||
r2(U . 'services/pppoe-edit/' . $id, 'e', $msg);
|
||||
}
|
||||
@ -645,7 +671,7 @@ switch ($action) {
|
||||
if ($d) {
|
||||
run_hook('delete_balance'); #HOOK
|
||||
$d->delete();
|
||||
r2(U . 'services/balance', 's', $_L['Delete_Successfully']);
|
||||
r2(U . 'services/balance', 's', Lang::T('Data Deleted Successfully'));
|
||||
}
|
||||
break;
|
||||
case 'balance-edit-post':
|
||||
@ -653,28 +679,30 @@ switch ($action) {
|
||||
$name = _post('name');
|
||||
$price = _post('price');
|
||||
$enabled = _post('enabled');
|
||||
$allow_purchase = _post('allow_purchase');
|
||||
|
||||
$msg = '';
|
||||
if (Validator::UnsignedNumber($price) == false) {
|
||||
$msg .= 'The price must be a number' . '<br>';
|
||||
}
|
||||
if ($name == '') {
|
||||
$msg .= $_L['All_field_is_required'] . '<br>';
|
||||
$msg .= Lang::T('All field is required') . '<br>';
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_plans')->where('id', $id)->find_one();
|
||||
if ($d) {
|
||||
} else {
|
||||
$msg .= $_L['Data_Not_Found'] . '<br>';
|
||||
$msg .= Lang::T('Data Not Found') . '<br>';
|
||||
}
|
||||
run_hook('edit_ppoe'); #HOOK
|
||||
if ($msg == '') {
|
||||
$d->name_plan = $name;
|
||||
$d->price = $price;
|
||||
$d->enabled = $enabled;
|
||||
$d->allow_purchase = $allow_purchase;
|
||||
$d->save();
|
||||
|
||||
r2(U . 'services/balance', 's', $_L['Updated_Successfully']);
|
||||
r2(U . 'services/balance', 's', Lang::T('Data Updated Successfully'));
|
||||
} else {
|
||||
r2(U . 'services/balance-edit/' . $id, 'e', $msg);
|
||||
}
|
||||
@ -683,18 +711,19 @@ switch ($action) {
|
||||
$name = _post('name');
|
||||
$price = _post('price');
|
||||
$enabled = _post('enabled');
|
||||
$allow_purchase = _post('allow_purchase');
|
||||
|
||||
$msg = '';
|
||||
if (Validator::UnsignedNumber($price) == false) {
|
||||
$msg .= 'The price must be a number' . '<br>';
|
||||
}
|
||||
if ($name == '') {
|
||||
$msg .= $_L['All_field_is_required'] . '<br>';
|
||||
$msg .= Lang::T('All field is required') . '<br>';
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_plans')->where('name_plan', $name)->find_one();
|
||||
if ($d) {
|
||||
$msg .= $_L['Plan_already_exist'] . '<br>';
|
||||
$msg .= Lang::T('Name Plan Already Exist') . '<br>';
|
||||
}
|
||||
run_hook('add_ppoe'); #HOOK
|
||||
if ($msg == '') {
|
||||
@ -708,9 +737,10 @@ switch ($action) {
|
||||
$d->routers = '';
|
||||
$d->pool = '';
|
||||
$d->enabled = $enabled;
|
||||
$d->allow_purchase = $allow_purchase;
|
||||
$d->save();
|
||||
|
||||
r2(U . 'services/balance', 's', $_L['Created_Successfully']);
|
||||
r2(U . 'services/balance', 's', Lang::T('Data Created Successfully'));
|
||||
} else {
|
||||
r2(U . 'services/balance-add', 'e', $msg);
|
||||
}
|
||||
|
@ -5,7 +5,7 @@
|
||||
* by https://t.me/ibnux
|
||||
**/
|
||||
_admin();
|
||||
$ui->assign('_title', $_L['Settings']);
|
||||
$ui->assign('_title', Lang::T('Settings'));
|
||||
$ui->assign('_system_menu', 'settings');
|
||||
|
||||
$action = $routes['1'];
|
||||
@ -14,9 +14,23 @@ $ui->assign('_admin', $admin);
|
||||
|
||||
switch ($action) {
|
||||
case 'app':
|
||||
if ($admin['user_type'] != 'Admin') {
|
||||
r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
|
||||
if (!empty(_get('testWa'))) {
|
||||
$result = Message::sendWhatsapp(_get('testWa'), 'PHPNuxBill Test Whatsapp');
|
||||
r2(U . "settings/app", 's', 'Test Whatsapp has been send<br>Result: ' . $result);
|
||||
}
|
||||
if (!empty(_get('testSms'))) {
|
||||
$result = Message::sendSMS(_get('testSms'), 'PHPNuxBill Test SMS');
|
||||
r2(U . "settings/app", 's', 'Test SMS has been send<br>Result: ' . $result);
|
||||
}
|
||||
if (!empty(_get('testTg'))) {
|
||||
$result = Message::sendTelegram('PHPNuxBill Test Telegram');
|
||||
r2(U . "settings/app", 's', 'Test Telegram has been send<br>Result: ' . $result);
|
||||
}
|
||||
|
||||
if (file_exists('system/uploads/logo.png')) {
|
||||
$logo = 'system/uploads/logo.png?' . time();
|
||||
} else {
|
||||
@ -48,6 +62,20 @@ switch ($action) {
|
||||
} else {
|
||||
$php = 'php';
|
||||
}
|
||||
if (empty($config['api_key'])) {
|
||||
$config['api_key'] = sha1(uniqid(rand(), true));
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'api_key')->find_one();
|
||||
if ($d) {
|
||||
$d->value = $config['api_key'];
|
||||
$d->save();
|
||||
} else {
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = 'api_key';
|
||||
$d->value = $config['api_key'];
|
||||
$d->save();
|
||||
}
|
||||
}
|
||||
$ui->assign('_c', $config);
|
||||
$ui->assign('php', $php);
|
||||
$ui->assign('dir', str_replace('controllers', '', __DIR__));
|
||||
$ui->assign('themes', $themes);
|
||||
@ -55,193 +83,6 @@ switch ($action) {
|
||||
$ui->display('app-settings.tpl');
|
||||
break;
|
||||
|
||||
case 'localisation':
|
||||
if ($admin['user_type'] != 'Admin') {
|
||||
r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
|
||||
}
|
||||
$folders = [];
|
||||
$files = scandir('system/lan/');
|
||||
foreach ($files as $file) {
|
||||
if (is_dir('system/lan/' . $file) && !in_array($file, ['.', '..'])) {
|
||||
$folders[] = $file;
|
||||
}
|
||||
}
|
||||
$ui->assign('lan', $folders);
|
||||
$timezonelist = Timezone::timezoneList();
|
||||
$ui->assign('tlist', $timezonelist);
|
||||
$ui->assign('xjq', ' $("#tzone").select2(); ');
|
||||
run_hook('view_localisation'); #HOOK
|
||||
$ui->display('app-localisation.tpl');
|
||||
break;
|
||||
|
||||
case 'users':
|
||||
if ($admin['user_type'] != 'Admin') {
|
||||
r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
|
||||
}
|
||||
|
||||
$ui->assign('xfooter', '<script type="text/javascript" src="ui/lib/c/users.js"></script>');
|
||||
|
||||
$username = _post('username');
|
||||
if ($username != '') {
|
||||
$paginator = Paginator::build(ORM::for_table('tbl_users'), ['username' => '%' . $username . '%'], $username);
|
||||
$d = ORM::for_table('tbl_users')->where_like('username', '%' . $username . '%')->offset($paginator['startpoint'])->limit($paginator['limit'])->order_by_asc('id')->find_many();
|
||||
} else {
|
||||
$paginator = Paginator::build(ORM::for_table('tbl_users'));
|
||||
$d = ORM::for_table('tbl_users')->offset($paginator['startpoint'])->limit($paginator['limit'])->order_by_asc('id')->find_many();
|
||||
}
|
||||
|
||||
$ui->assign('d', $d);
|
||||
$ui->assign('paginator', $paginator);
|
||||
run_hook('view_list_admin'); #HOOK
|
||||
$ui->display('users.tpl');
|
||||
break;
|
||||
|
||||
case 'users-add':
|
||||
if ($admin['user_type'] != 'Admin') {
|
||||
r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
|
||||
}
|
||||
run_hook('view_add_admin'); #HOOK
|
||||
$ui->display('users-add.tpl');
|
||||
break;
|
||||
|
||||
case 'users-edit':
|
||||
if ($admin['user_type'] != 'Admin') {
|
||||
r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
|
||||
}
|
||||
|
||||
$id = $routes['2'];
|
||||
$d = ORM::for_table('tbl_users')->find_one($id);
|
||||
if ($d) {
|
||||
$ui->assign('d', $d);
|
||||
run_hook('view_edit_admin'); #HOOK
|
||||
$ui->display('users-edit.tpl');
|
||||
} else {
|
||||
r2(U . 'settings/users', 'e', $_L['Account_Not_Found']);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'users-delete':
|
||||
if ($admin['user_type'] != 'Admin') {
|
||||
r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
|
||||
}
|
||||
|
||||
$id = $routes['2'];
|
||||
if (($admin['id']) == $id) {
|
||||
r2(U . 'settings/users', 'e', 'Sorry You can\'t delete yourself');
|
||||
}
|
||||
$d = ORM::for_table('tbl_users')->find_one($id);
|
||||
if ($d) {
|
||||
run_hook('delete_admin'); #HOOK
|
||||
$d->delete();
|
||||
r2(U . 'settings/users', 's', $_L['User_Delete_Ok']);
|
||||
} else {
|
||||
r2(U . 'settings/users', 'e', $_L['Account_Not_Found']);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'users-post':
|
||||
$username = _post('username');
|
||||
$fullname = _post('fullname');
|
||||
$password = _post('password');
|
||||
$cpassword = _post('cpassword');
|
||||
$user_type = _post('user_type');
|
||||
$msg = '';
|
||||
if (Validator::Length($username, 16, 2) == false) {
|
||||
$msg .= 'Username should be between 3 to 15 characters' . '<br>';
|
||||
}
|
||||
if (Validator::Length($fullname, 26, 2) == false) {
|
||||
$msg .= 'Full Name should be between 3 to 25 characters' . '<br>';
|
||||
}
|
||||
if (!Validator::Length($password, 15, 5)) {
|
||||
$msg .= 'Password should be between 6 to 15 characters' . '<br>';
|
||||
}
|
||||
if ($password != $cpassword) {
|
||||
$msg .= 'Passwords does not match' . '<br>';
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_users')->where('username', $username)->find_one();
|
||||
if ($d) {
|
||||
$msg .= $_L['account_already_exist'] . '<br>';
|
||||
}
|
||||
$date_now = date("Y-m-d H:i:s");
|
||||
run_hook('add_admin'); #HOOK
|
||||
if ($msg == '') {
|
||||
$password = Password::_crypt($password);
|
||||
$d = ORM::for_table('tbl_users')->create();
|
||||
$d->username = $username;
|
||||
$d->fullname = $fullname;
|
||||
$d->password = $password;
|
||||
$d->user_type = $user_type;
|
||||
$d->status = 'Active';
|
||||
$d->creationdate = $date_now;
|
||||
|
||||
$d->save();
|
||||
|
||||
_log('[' . $admin['username'] . ']: ' . $_L['account_created_successfully'], 'Admin', $admin['id']);
|
||||
r2(U . 'settings/users', 's', $_L['account_created_successfully']);
|
||||
} else {
|
||||
r2(U . 'settings/users-add', 'e', $msg);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'users-edit-post':
|
||||
$username = _post('username');
|
||||
$fullname = _post('fullname');
|
||||
$password = _post('password');
|
||||
$cpassword = _post('cpassword');
|
||||
|
||||
$msg = '';
|
||||
if (Validator::Length($username, 16, 2) == false) {
|
||||
$msg .= 'Username should be between 3 to 15 characters' . '<br>';
|
||||
}
|
||||
if (Validator::Length($fullname, 26, 2) == false) {
|
||||
$msg .= 'Full Name should be between 3 to 25 characters' . '<br>';
|
||||
}
|
||||
if ($password != '') {
|
||||
if (!Validator::Length($password, 15, 5)) {
|
||||
$msg .= 'Password should be between 6 to 15 characters' . '<br>';
|
||||
}
|
||||
if ($password != $cpassword) {
|
||||
$msg .= 'Passwords does not match' . '<br>';
|
||||
}
|
||||
}
|
||||
|
||||
$id = _post('id');
|
||||
$d = ORM::for_table('tbl_users')->find_one($id);
|
||||
if ($d) {
|
||||
} else {
|
||||
$msg .= $_L['Data_Not_Found'] . '<br>';
|
||||
}
|
||||
|
||||
if ($d['username'] != $username) {
|
||||
$c = ORM::for_table('tbl_users')->where('username', $username)->find_one();
|
||||
if ($c) {
|
||||
$msg .= $_L['account_already_exist'] . '<br>';
|
||||
}
|
||||
}
|
||||
run_hook('edit_admin'); #HOOK
|
||||
if ($msg == '') {
|
||||
$d->username = $username;
|
||||
if ($password != '') {
|
||||
$password = Password::_crypt($password);
|
||||
$d->password = $password;
|
||||
}
|
||||
|
||||
$d->fullname = $fullname;
|
||||
if (($admin['id']) != $id) {
|
||||
$user_type = _post('user_type');
|
||||
$d->user_type = $user_type;
|
||||
}
|
||||
|
||||
$d->save();
|
||||
|
||||
_log('[' . $admin['username'] . ']: ' . $_L['User_Updated_Successfully'], 'Admin', $admin['id']);
|
||||
r2(U . 'settings/users', 's', 'User Updated Successfully');
|
||||
} else {
|
||||
r2(U . 'settings/users-edit/' . $id, 'e', $msg);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'app-post':
|
||||
$company = _post('CompanyName');
|
||||
run_hook('save_settings'); #HOOK
|
||||
@ -257,7 +98,7 @@ switch ($action) {
|
||||
}
|
||||
}
|
||||
if ($company == '') {
|
||||
r2(U . 'settings/app', 'e', $_L['All_field_is_required']);
|
||||
r2(U . 'settings/app', 'e', Lang::T('All field is required'));
|
||||
} else {
|
||||
if ($radius_enable) {
|
||||
try {
|
||||
@ -272,7 +113,7 @@ switch ($action) {
|
||||
}
|
||||
}
|
||||
// save all settings
|
||||
foreach($_POST as $key => $value) {
|
||||
foreach ($_POST as $key => $value) {
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', $key)->find_one();
|
||||
if ($d) {
|
||||
$d->value = $value;
|
||||
@ -285,12 +126,56 @@ switch ($action) {
|
||||
}
|
||||
}
|
||||
|
||||
_log('[' . $admin['username'] . ']: ' . $_L['Settings_Saved_Successfully'], 'Admin', $admin['id']);
|
||||
//checkbox
|
||||
$checks = ['hide_mrc', 'hide_tms', 'hide_aui', 'hide_al', 'hide_uet', 'hide_vs', 'hide_pg'];
|
||||
foreach ($checks as $check) {
|
||||
if (!isset($_POST[$check])) {
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', $check)->find_one();
|
||||
if ($d) {
|
||||
$d->value = 'no';
|
||||
$d->save();
|
||||
} else {
|
||||
$d = ORM::for_table('tbl_appconfig')->create();
|
||||
$d->setting = $check;
|
||||
$d->value = 'no';
|
||||
$d->save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
r2(U . 'settings/app', 's', $_L['Settings_Saved_Successfully']);
|
||||
_log('[' . $admin['username'] . ']: ' . Lang::T('Settings Saved Successfully'), $admin['user_type'], $admin['id']);
|
||||
|
||||
r2(U . 'settings/app', 's', Lang::T('Settings Saved Successfully'));
|
||||
}
|
||||
break;
|
||||
|
||||
case 'localisation':
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
$folders = [];
|
||||
$files = scandir('system/lan/');
|
||||
foreach ($files as $file) {
|
||||
if (is_file('system/lan/' . $file) && !in_array($file, ['index.html', 'country.json', '.DS_Store'])) {
|
||||
$file = str_replace(".json", "", $file);
|
||||
$folders[$file] = '';
|
||||
}
|
||||
}
|
||||
$ui->assign('lani', $folders);
|
||||
$lans = Lang::getIsoLang();
|
||||
foreach ($lans as $lan => $val) {
|
||||
if (isset($folders[$lan])) {
|
||||
unset($lans[$lan]);
|
||||
}
|
||||
}
|
||||
$ui->assign('lan', $lans);
|
||||
$timezonelist = Timezone::timezoneList();
|
||||
$ui->assign('tlist', $timezonelist);
|
||||
$ui->assign('xjq', ' $("#tzone").select2(); ');
|
||||
run_hook('view_localisation'); #HOOK
|
||||
$ui->display('app-localisation.tpl');
|
||||
break;
|
||||
|
||||
case 'localisation-post':
|
||||
$tzone = _post('tzone');
|
||||
$date_format = _post('date_format');
|
||||
@ -298,7 +183,7 @@ switch ($action) {
|
||||
$lan = _post('lan');
|
||||
run_hook('save_localisation'); #HOOK
|
||||
if ($tzone == '' or $date_format == '' or $lan == '') {
|
||||
r2(U . 'settings/app', 'e', $_L['All_field_is_required']);
|
||||
r2(U . 'settings/app', 'e', Lang::T('All field is required'));
|
||||
} else {
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'timezone')->find_one();
|
||||
$d->value = $tzone;
|
||||
@ -372,16 +257,364 @@ switch ($action) {
|
||||
$d = ORM::for_table('tbl_appconfig')->where('setting', 'language')->find_one();
|
||||
$d->value = $lan;
|
||||
$d->save();
|
||||
unset($_SESSION['Lang']);
|
||||
_log('[' . $admin['username'] . ']: ' . Lang::T('Settings Saved Successfully'), $admin['user_type'], $admin['id']);
|
||||
r2(U . 'settings/localisation', 's', Lang::T('Settings Saved Successfully'));
|
||||
}
|
||||
break;
|
||||
|
||||
_log('[' . $admin['username'] . ']: ' . $_L['Settings_Saved_Successfully'], 'Admin', $admin['id']);
|
||||
r2(U . 'settings/localisation', 's', $_L['Settings_Saved_Successfully']);
|
||||
case 'users':
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin', 'Agent'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
$search = _req('search');
|
||||
if ($search != '') {
|
||||
if ($admin['user_type'] == 'SuperAdmin') {
|
||||
$paginator = Paginator::build(ORM::for_table('tbl_users'), ['username' => '%' . $search . '%'], $search);
|
||||
$d = ORM::for_table('tbl_users')
|
||||
->where_like('username', '%' . $search . '%')
|
||||
->offset($paginator['startpoint'])
|
||||
->limit($paginator['limit'])->order_by_asc('id')->findArray();
|
||||
} else if ($admin['user_type'] == 'Admin') {
|
||||
$paginator = Paginator::build(ORM::for_table('tbl_users'), [
|
||||
'username' => '%' . $search . '%',
|
||||
['user_type' => 'Report'],
|
||||
['user_type' => 'Agent'],
|
||||
['user_type' => 'Sales'],
|
||||
['id' => $admin['id']]
|
||||
], $search);
|
||||
$d = ORM::for_table('tbl_users')
|
||||
->where_like('username', '%' . $search . '%')
|
||||
->where_any_is([
|
||||
['user_type' => 'Report'],
|
||||
['user_type' => 'Agent'],
|
||||
['user_type' => 'Sales'],
|
||||
['id' => $admin['id']]
|
||||
])
|
||||
->offset($paginator['startpoint'])
|
||||
->limit($paginator['limit'])->order_by_asc('id')->findArray();
|
||||
} else {
|
||||
$paginator = Paginator::build(ORM::for_table('tbl_users'), ['username' => '%' . $search . '%'], $search);
|
||||
$d = ORM::for_table('tbl_users')
|
||||
->where_like('username', '%' . $search . '%')
|
||||
->where_any_is([
|
||||
['id' => $admin['id']],
|
||||
['root' => $admin['id']]
|
||||
])
|
||||
->offset($paginator['startpoint'])
|
||||
->limit($paginator['limit'])->order_by_asc('id')->findArray();
|
||||
}
|
||||
} else {
|
||||
if ($admin['user_type'] == 'SuperAdmin') {
|
||||
$paginator = Paginator::build(ORM::for_table('tbl_users'));
|
||||
$d = ORM::for_table('tbl_users')->offset($paginator['startpoint'])->limit($paginator['limit'])->order_by_asc('id')->findArray();
|
||||
} else if ($admin['user_type'] == 'Admin') {
|
||||
$paginator = Paginator::build(ORM::for_table('tbl_users'));
|
||||
$d = ORM::for_table('tbl_users')->where_any_is([
|
||||
['user_type' => 'Report'],
|
||||
['user_type' => 'Agent'],
|
||||
['user_type' => 'Sales'],
|
||||
['id' => $admin['id']]
|
||||
])->offset($paginator['startpoint'])->limit($paginator['limit'])->order_by_asc('id')->findArray();
|
||||
} else {
|
||||
$paginator = Paginator::build(ORM::for_table('tbl_users'));
|
||||
$d = ORM::for_table('tbl_users')
|
||||
->where_any_is([
|
||||
['id' => $admin['id']],
|
||||
['root' => $admin['id']]
|
||||
])
|
||||
->offset($paginator['startpoint'])->limit($paginator['limit'])->order_by_asc('id')->findArray();
|
||||
}
|
||||
}
|
||||
$admins = [];
|
||||
foreach ($d as $k) {
|
||||
if (!empty($k['root'])) {
|
||||
$admins[] = $k['root'];
|
||||
}
|
||||
}
|
||||
if (count($admins) > 0) {
|
||||
$adms = ORM::for_table('tbl_users')->where_in('id', $admins)->findArray();
|
||||
unset($admins);
|
||||
foreach ($adms as $adm) {
|
||||
$admins[$adm['id']] = $adm['fullname'];
|
||||
}
|
||||
}
|
||||
if ($isApi) {
|
||||
showResult(true, $action, [
|
||||
'admins' => $d,
|
||||
'roots' => $admins
|
||||
], ['search' => $search]);
|
||||
}
|
||||
$ui->assign('admins', $admins);
|
||||
$ui->assign('d', $d);
|
||||
$ui->assign('search', $search);
|
||||
$ui->assign('paginator', $paginator);
|
||||
run_hook('view_list_admin'); #HOOK
|
||||
$ui->display('users.tpl');
|
||||
break;
|
||||
|
||||
case 'users-add':
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin', 'Agent'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
$ui->assign('_title', Lang::T('Add User'));
|
||||
$ui->assign('agents', ORM::for_table('tbl_users')->where('user_type', 'Agent')->find_many());
|
||||
$ui->display('users-add.tpl');
|
||||
break;
|
||||
case 'users-view':
|
||||
$ui->assign('_title', Lang::T('Edit User'));
|
||||
$id = $routes['2'];
|
||||
if (empty($id)) {
|
||||
$id = $admin['id'];
|
||||
}
|
||||
//allow see himself
|
||||
if ($admin['id'] == $id) {
|
||||
$d = ORM::for_table('tbl_users')->where('id', $id)->find_array($id)[0];
|
||||
} else {
|
||||
if (in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
// Super Admin can see anyone
|
||||
$d = ORM::for_table('tbl_users')->where('id', $id)->find_array()[0];
|
||||
} else if ($admin['user_type'] == 'Agent') {
|
||||
// Agent can see Sales
|
||||
$d = ORM::for_table('tbl_users')->where_any_is([['root' => $admin['id']], ['id' => $id]])->find_array()[0];
|
||||
}
|
||||
}
|
||||
if ($d) {
|
||||
run_hook('view_edit_admin'); #HOOK
|
||||
if ($d['user_type'] == 'Sales') {
|
||||
$ui->assign('agent', ORM::for_table('tbl_users')->where('id', $d['root'])->find_array()[0]);
|
||||
}
|
||||
if ($isApi) {
|
||||
unset($d['password']);
|
||||
$agent = $ui->get('agent');
|
||||
if($agent) unset($agent['password']);
|
||||
showResult(true, $action, [
|
||||
'admin' => $d,
|
||||
'agent' => $agent
|
||||
], ['search' => $search]);
|
||||
}
|
||||
$ui->assign('d', $d);
|
||||
$ui->assign('_title', $d['username']);
|
||||
$ui->display('users-view.tpl');
|
||||
} else {
|
||||
r2(U . 'settings/users', 'e', $_L['Account_Not_Found']);
|
||||
}
|
||||
break;
|
||||
case 'users-edit':
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin', 'Agent'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
$ui->assign('_title', Lang::T('Edit User'));
|
||||
$id = $routes['2'];
|
||||
if (empty($id)) {
|
||||
$id = $admin['id'];
|
||||
}
|
||||
if ($admin['id'] == $id) {
|
||||
$d = ORM::for_table('tbl_users')->find_one($id);
|
||||
} else {
|
||||
if ($admin['user_type'] == 'SuperAdmin') {
|
||||
$d = ORM::for_table('tbl_users')->find_one($id);
|
||||
$ui->assign('agents', ORM::for_table('tbl_users')->where('user_type', 'Agent')->find_many());
|
||||
} else if ($admin['user_type'] == 'Admin') {
|
||||
$d = ORM::for_table('tbl_users')->where_any_is([
|
||||
['user_type' => 'Report'],
|
||||
['user_type' => 'Agent'],
|
||||
['user_type' => 'Sales']
|
||||
])->find_one($id);
|
||||
$ui->assign('agents', ORM::for_table('tbl_users')->where('user_type', 'Agent')->find_many());
|
||||
} else {
|
||||
// Agent cannot move Sales to other Agent
|
||||
$ui->assign('agents', ORM::for_table('tbl_users')->where('id', $admin['id'])->find_many());
|
||||
$d = ORM::for_table('tbl_users')->where('root', $admin['id'])->find_one($id);
|
||||
}
|
||||
}
|
||||
if ($d) {
|
||||
$ui->assign('id', $id);
|
||||
$ui->assign('d', $d);
|
||||
run_hook('view_edit_admin'); #HOOK
|
||||
$ui->display('users-edit.tpl');
|
||||
} else {
|
||||
r2(U . 'settings/users', 'e', $_L['Account_Not_Found']);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'users-delete':
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
|
||||
$id = $routes['2'];
|
||||
if (($admin['id']) == $id) {
|
||||
r2(U . 'settings/users', 'e', 'Sorry You can\'t delete yourself');
|
||||
}
|
||||
$d = ORM::for_table('tbl_users')->find_one($id);
|
||||
if ($d) {
|
||||
run_hook('delete_admin'); #HOOK
|
||||
$d->delete();
|
||||
r2(U . 'settings/users', 's', Lang::T('User deleted Successfully'));
|
||||
} else {
|
||||
r2(U . 'settings/users', 'e', $_L['Account_Not_Found']);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'users-post':
|
||||
$username = _post('username');
|
||||
$fullname = _post('fullname');
|
||||
$password = _post('password');
|
||||
$user_type = _post('user_type');
|
||||
$phone = _post('phone');
|
||||
$email = _post('email');
|
||||
$city = _post('city');
|
||||
$subdistrict = _post('subdistrict');
|
||||
$ward = _post('ward');
|
||||
$send_notif = _post('send_notif');
|
||||
$root = _post('root');
|
||||
$msg = '';
|
||||
if (Validator::Length($username, 45, 2) == false) {
|
||||
$msg .= Lang::T('Username should be between 3 to 45 characters') . '<br>';
|
||||
}
|
||||
if (Validator::Length($fullname, 45, 2) == false) {
|
||||
$msg .= Lang::T('Full Name should be between 3 to 45 characters') . '<br>';
|
||||
}
|
||||
if (!Validator::Length($password, 1000, 5)) {
|
||||
$msg .= Lang::T('Password should be minimum 6 characters') . '<br>';
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_users')->where('username', $username)->find_one();
|
||||
if ($d) {
|
||||
$msg .= Lang::T('Account already axist') . '<br>';
|
||||
}
|
||||
$date_now = date("Y-m-d H:i:s");
|
||||
run_hook('add_admin'); #HOOK
|
||||
if ($msg == '') {
|
||||
$password = Password::_crypt($password);
|
||||
$d = ORM::for_table('tbl_users')->create();
|
||||
$d->username = $username;
|
||||
$d->fullname = $fullname;
|
||||
$d->password = $password;
|
||||
$d->user_type = $user_type;
|
||||
$d->phone = $phone;
|
||||
$d->email = $email;
|
||||
$d->city = $city;
|
||||
$d->subdistrict = $subdistrict;
|
||||
$d->ward = $ward;
|
||||
$d->status = 'Active';
|
||||
$d->creationdate = $date_now;
|
||||
if ($admin['user_type'] == 'Agent') {
|
||||
// Prevent hacking from form
|
||||
$d->root = $admin['id'];
|
||||
} else if ($user_type == 'Sales') {
|
||||
$d->root = $root;
|
||||
}
|
||||
$d->save();
|
||||
|
||||
if ($send_notif == 'wa') {
|
||||
Message::sendWhatsapp(Lang::phoneFormat($phone), Lang::T('Hello, Your account has been created successfully.') . "\nUsername: $username\nPassword: $password\n\n" . $config['CompanyName']);
|
||||
} else if ($send_notif == 'sms') {
|
||||
Message::sendSMS($phone, Lang::T('Hello, Your account has been created successfully.') . "\nUsername: $username\nPassword: $password\n\n" . $config['CompanyName']);
|
||||
}
|
||||
|
||||
_log('[' . $admin['username'] . ']: ' . "Created $user_type <b>$username</b>", $admin['user_type'], $admin['id']);
|
||||
r2(U . 'settings/users', 's', Lang::T('Account Created Successfully'));
|
||||
} else {
|
||||
r2(U . 'settings/users-add', 'e', $msg);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'users-edit-post':
|
||||
$username = _post('username');
|
||||
$fullname = _post('fullname');
|
||||
$password = _post('password');
|
||||
$cpassword = _post('cpassword');
|
||||
$user_type = _post('user_type');
|
||||
$phone = _post('phone');
|
||||
$email = _post('email');
|
||||
$city = _post('city');
|
||||
$subdistrict = _post('subdistrict');
|
||||
$ward = _post('ward');
|
||||
$status = _post('status');
|
||||
$root = _post('root');
|
||||
$msg = '';
|
||||
if (Validator::Length($username, 45, 2) == false) {
|
||||
$msg .= Lang::T('Username should be between 3 to 45 characters') . '<br>';
|
||||
}
|
||||
if (Validator::Length($fullname, 45, 2) == false) {
|
||||
$msg .= Lang::T('Full Name should be between 3 to 45 characters') . '<br>';
|
||||
}
|
||||
if ($password != '') {
|
||||
if (!Validator::Length($password, 1000, 5)) {
|
||||
$msg .= Lang::T('Password should be minimum 6 characters') . '<br>';
|
||||
}
|
||||
if ($password != $cpassword) {
|
||||
$msg .= Lang::T('Passwords does not match') . '<br>';
|
||||
}
|
||||
}
|
||||
|
||||
$id = _post('id');
|
||||
if ($admin['id'] == $id) {
|
||||
$d = ORM::for_table('tbl_users')->find_one($id);
|
||||
} else {
|
||||
if ($admin['user_type'] == 'SuperAdmin') {
|
||||
$d = ORM::for_table('tbl_users')->find_one($id);
|
||||
} else if ($admin['user_type'] == 'Admin') {
|
||||
$d = ORM::for_table('tbl_users')->where_any_is([
|
||||
['user_type' => 'Report'],
|
||||
['user_type' => 'Agent'],
|
||||
['user_type' => 'Sales']
|
||||
])->find_one($id);
|
||||
} else {
|
||||
$d = ORM::for_table('tbl_users')->where('root', $admin['id'])->find_one($id);
|
||||
}
|
||||
}
|
||||
if (!$d) {
|
||||
$msg .= Lang::T('Data Not Found') . '<br>';
|
||||
}
|
||||
|
||||
if ($d['username'] != $username) {
|
||||
$c = ORM::for_table('tbl_users')->where('username', $username)->find_one();
|
||||
if ($c) {
|
||||
$msg .= "<b>$username</b> " . Lang::T('Account already axist') . '<br>';
|
||||
}
|
||||
}
|
||||
run_hook('edit_admin'); #HOOK
|
||||
if ($msg == '') {
|
||||
$d->username = $username;
|
||||
if ($password != '') {
|
||||
$password = Password::_crypt($password);
|
||||
$d->password = $password;
|
||||
}
|
||||
|
||||
$d->fullname = $fullname;
|
||||
if (($admin['id']) != $id) {
|
||||
$user_type = _post('user_type');
|
||||
$d->user_type = $user_type;
|
||||
}
|
||||
$d->phone = $phone;
|
||||
$d->email = $email;
|
||||
$d->city = $city;
|
||||
$d->subdistrict = $subdistrict;
|
||||
$d->ward = $ward;
|
||||
if(isset($_POST['status'])){
|
||||
$d->status = $status;
|
||||
}
|
||||
|
||||
if ($admin['user_type'] == 'Agent') {
|
||||
// Prevent hacking from form
|
||||
$d->root = $admin['id'];
|
||||
} else if ($user_type == 'Sales') {
|
||||
$d->root = $root;
|
||||
}
|
||||
|
||||
$d->save();
|
||||
|
||||
_log('[' . $admin['username'] . ']: $username ' . Lang::T('User Updated Successfully'), $admin['user_type'], $admin['id']);
|
||||
r2(U . 'settings/users', 's', 'User Updated Successfully');
|
||||
} else {
|
||||
r2(U . 'settings/users-edit/' . $id, 'e', $msg);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'change-password':
|
||||
if ($admin['user_type'] != 'Admin' and $admin['user_type'] != 'Sales') {
|
||||
r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
|
||||
}
|
||||
run_hook('view_change_password'); #HOOK
|
||||
$ui->display('change-password.tpl');
|
||||
break;
|
||||
@ -407,24 +640,24 @@ switch ($action) {
|
||||
$d->password = $npass;
|
||||
$d->save();
|
||||
|
||||
_msglog('s', $_L['Password_Changed_Successfully']);
|
||||
_log('[' . $admin['username'] . ']: Password changed successfully', 'Admin', $admin['id']);
|
||||
_msglog('s', Lang::T('Password changed successfully, Please login again'));
|
||||
_log('[' . $admin['username'] . ']: Password changed successfully', $admin['user_type'], $admin['id']);
|
||||
|
||||
r2(U . 'admin');
|
||||
} else {
|
||||
r2(U . 'settings/change-password', 'e', $_L['Incorrect_Current_Password']);
|
||||
r2(U . 'settings/change-password', 'e', Lang::T('Incorrect Current Password'));
|
||||
}
|
||||
} else {
|
||||
r2(U . 'settings/change-password', 'e', $_L['Incorrect_Current_Password']);
|
||||
r2(U . 'settings/change-password', 'e', Lang::T('Incorrect Current Password'));
|
||||
}
|
||||
} else {
|
||||
r2(U . 'settings/change-password', 'e', $_L['Incorrect_Current_Password']);
|
||||
r2(U . 'settings/change-password', 'e', Lang::T('Incorrect Current Password'));
|
||||
}
|
||||
break;
|
||||
|
||||
case 'notifications':
|
||||
if ($admin['user_type'] != 'Admin' and $admin['user_type'] != 'Sales') {
|
||||
r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
run_hook('view_notifications'); #HOOK
|
||||
if (file_exists("system/uploads/notifications.json")) {
|
||||
@ -437,11 +670,11 @@ switch ($action) {
|
||||
break;
|
||||
case 'notifications-post':
|
||||
file_put_contents("system/uploads/notifications.json", json_encode($_POST));
|
||||
r2(U . 'settings/notifications', 's', $_L['Settings_Saved_Successfully']);
|
||||
r2(U . 'settings/notifications', 's', Lang::T('Settings Saved Successfully'));
|
||||
break;
|
||||
case 'dbstatus':
|
||||
if ($admin['user_type'] != 'Admin') {
|
||||
r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
|
||||
$dbc = new mysqli($db_host, $db_user, $db_password, $db_name);
|
||||
@ -458,8 +691,8 @@ switch ($action) {
|
||||
break;
|
||||
|
||||
case 'dbbackup':
|
||||
if ($admin['user_type'] != 'Admin') {
|
||||
r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
$tables = $_POST['tables'];
|
||||
set_time_limit(-1);
|
||||
@ -478,8 +711,8 @@ switch ($action) {
|
||||
echo json_encode($array);
|
||||
break;
|
||||
case 'dbrestore':
|
||||
if ($admin['user_type'] != 'Admin') {
|
||||
r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
if (file_exists($_FILES['json']['tmp_name'])) {
|
||||
$suc = 0;
|
||||
@ -508,38 +741,21 @@ switch ($action) {
|
||||
}
|
||||
break;
|
||||
case 'language':
|
||||
if ($admin['user_type'] != 'Admin') {
|
||||
r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
|
||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
r2(U . "dashboard", 'e', Lang::T('You do not have permission to access this page'));
|
||||
}
|
||||
run_hook('view_add_language'); #HOOK
|
||||
if (file_exists($lan_file)) {
|
||||
$ui->assign('langs', json_decode(file_get_contents($lan_file), true));
|
||||
} else {
|
||||
$ui->assign('langs', []);
|
||||
}
|
||||
$ui->display('language-add.tpl');
|
||||
break;
|
||||
|
||||
case 'lang-post':
|
||||
$name = _post('name');
|
||||
$folder = _post('folder');
|
||||
$translator = _post('translator');
|
||||
|
||||
if ($name == '' or $folder == '') {
|
||||
$msg .= $_L['All_field_is_required'] . '<br>';
|
||||
}
|
||||
|
||||
$d = ORM::for_table('tbl_language')->where('name', $name)->find_one();
|
||||
if ($d) {
|
||||
$msg .= $_L['Lang_already_exist'] . '<br>';
|
||||
}
|
||||
run_hook('save_language'); #HOOK
|
||||
if ($msg == '') {
|
||||
$b = ORM::for_table('tbl_language')->create();
|
||||
$b->name = $name;
|
||||
$b->folder = $folder;
|
||||
$b->author = $translator;
|
||||
$b->save();
|
||||
|
||||
r2(U . 'settings/localisation', 's', $_L['Created_Successfully']);
|
||||
} else {
|
||||
r2(U . 'settings/language', 'e', $msg);
|
||||
}
|
||||
file_put_contents($lan_file, json_encode($_POST, JSON_PRETTY_PRINT));
|
||||
r2(U . 'settings/language', 's', Lang::T('Translation saved Successfully'));
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -4,15 +4,13 @@
|
||||
* by https://t.me/ibnux
|
||||
**/
|
||||
_auth();
|
||||
$ui->assign('_title', $_L['Voucher']);
|
||||
$ui->assign('_title', Lang::T('Voucher'));
|
||||
$ui->assign('_system_menu', 'voucher');
|
||||
|
||||
$action = $routes['1'];
|
||||
$user = User::_info();
|
||||
$ui->assign('_user', $user);
|
||||
|
||||
use PEAR2\Net\RouterOS;
|
||||
|
||||
require_once 'system/autoload/PEAR2/Autoload.php';
|
||||
|
||||
switch ($action) {
|
||||
@ -27,16 +25,16 @@ switch ($action) {
|
||||
$v1 = ORM::for_table('tbl_voucher')->where('code', $code)->where('status', 0)->find_one();
|
||||
run_hook('customer_activate_voucher'); #HOOK
|
||||
if ($v1) {
|
||||
if (Package::rechargeUser($user['id'], $v1['routers'], $v1['id_plan'], "Activation", "Voucher")) {
|
||||
if (Package::rechargeUser($user['id'], $v1['routers'], $v1['id_plan'], "Voucher", $code)) {
|
||||
$v1->status = "1";
|
||||
$v1->user = $user['username'];
|
||||
$v1->save();
|
||||
r2(U . "voucher/list-activated", 's', $_L['Activation_Vouchers_Successfully']);
|
||||
r2(U . "voucher/list-activated", 's', Lang::T('Activation Vouchers Successfully'));
|
||||
} else {
|
||||
r2(U . 'voucher/activation', 'e', "Failed to refill account");
|
||||
}
|
||||
} else {
|
||||
r2(U . 'voucher/activation', 'e', $_L['Voucher_Not_Valid']);
|
||||
r2(U . 'voucher/activation', 'e', Lang::T('Voucher Not Valid'));
|
||||
}
|
||||
break;
|
||||
|
||||
|
116
system/cron.php
116
system/cron.php
@ -1,89 +1,11 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* PHP Mikrotik Billing (https://github.com/hotspotbilling/phpnuxbill/)
|
||||
* by https://t.me/ibnux
|
||||
**/
|
||||
|
||||
|
||||
// on some server, it getting error because of slash is backwards
|
||||
function _autoloader($class)
|
||||
{
|
||||
if (strpos($class, '_') !== false) {
|
||||
$class = str_replace('_', DIRECTORY_SEPARATOR, $class);
|
||||
if (file_exists(__DIR__ . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php')) {
|
||||
include __DIR__ . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php';
|
||||
} else {
|
||||
$class = str_replace("\\", DIRECTORY_SEPARATOR, $class);
|
||||
if (file_exists(__DIR__ . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php'))
|
||||
include __DIR__ . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php';
|
||||
}
|
||||
} else {
|
||||
if (file_exists(__DIR__ . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php')) {
|
||||
include __DIR__ . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php';
|
||||
} else {
|
||||
$class = str_replace("\\", DIRECTORY_SEPARATOR, $class);
|
||||
if (file_exists(__DIR__ . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php'))
|
||||
include __DIR__ . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php';
|
||||
}
|
||||
}
|
||||
}
|
||||
spl_autoload_register('_autoloader');
|
||||
|
||||
|
||||
include "../init.php";
|
||||
$isCli = true;
|
||||
if (php_sapi_name() !== 'cli') {
|
||||
$isCli = false;
|
||||
echo "<pre>";
|
||||
}
|
||||
|
||||
if(!file_exists('../config.php')){
|
||||
die("config.php file not found");
|
||||
}
|
||||
|
||||
|
||||
if(!file_exists('orm.php')){
|
||||
die("orm.php file not found");
|
||||
}
|
||||
|
||||
if(!file_exists('uploads/notifications.default.json')){
|
||||
die("uploads/notifications.default.json file not found");
|
||||
}
|
||||
|
||||
require_once '../config.php';
|
||||
require_once 'orm.php';
|
||||
require_once 'autoload/PEAR2/Autoload.php';
|
||||
include "autoload/Hookers.php";
|
||||
|
||||
ORM::configure("mysql:host=$db_host;dbname=$db_name");
|
||||
ORM::configure('username', $db_user);
|
||||
ORM::configure('password', $db_password);
|
||||
ORM::configure('return_result_sets', true);
|
||||
ORM::configure('logging', true);
|
||||
|
||||
|
||||
// notification message
|
||||
if (file_exists("uploads/notifications.json")) {
|
||||
$_notifmsg = json_decode(file_get_contents('uploads/notifications.json'), true);
|
||||
}
|
||||
$_notifmsg_default = json_decode(file_get_contents('uploads/notifications.default.json'), true);
|
||||
|
||||
//register all plugin
|
||||
foreach (glob(File::pathFixer("plugin/*.php")) as $filename) {
|
||||
include $filename;
|
||||
}
|
||||
|
||||
$result = ORM::for_table('tbl_appconfig')->find_many();
|
||||
foreach ($result as $value) {
|
||||
$config[$value['setting']] = $value['value'];
|
||||
}
|
||||
|
||||
if (!empty($radius_user) && $config['radius_enable']) {
|
||||
ORM::configure("mysql:host=$radius_host;dbname=$radius_name", null, 'radius');
|
||||
ORM::configure('username', $radius_user, 'radius');
|
||||
ORM::configure('password', $radius_pass, 'radius');
|
||||
ORM::configure('driver_options', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'), 'radius');
|
||||
ORM::configure('return_result_sets', true, 'radius');
|
||||
}
|
||||
|
||||
echo "PHP Time\t" . date('Y-m-d H:i:s') . "\n";
|
||||
$res = ORM::raw_execute('SELECT NOW() AS WAKTU;');
|
||||
$statement = ORM::get_last_statement();
|
||||
@ -94,7 +16,6 @@ while ($row = $statement->fetch(PDO::FETCH_ASSOC)) {
|
||||
|
||||
$_c = $config;
|
||||
|
||||
date_default_timezone_set($config['timezone']);
|
||||
|
||||
$textExpired = Lang::getNotifText('expired');
|
||||
|
||||
@ -106,14 +27,14 @@ foreach ($d as $ds) {
|
||||
if ($ds['type'] == 'Hotspot') {
|
||||
$date_now = strtotime(date("Y-m-d H:i:s"));
|
||||
$expiration = strtotime($ds['expiration'] . ' ' . $ds['time']);
|
||||
echo $ds['expiration'] . " : " . $ds['username'];
|
||||
echo $ds['expiration'] . " : " . (($isCli) ? $ds['username'] : Lang::maskText($ds['username']));
|
||||
if ($date_now >= $expiration) {
|
||||
echo " : EXPIRED \r\n";
|
||||
$u = ORM::for_table('tbl_user_recharges')->where('id', $ds['id'])->find_one();
|
||||
$c = ORM::for_table('tbl_customers')->where('id', $ds['customer_id'])->find_one();
|
||||
$m = ORM::for_table('tbl_routers')->where('name', $ds['routers'])->find_one();
|
||||
$m = Mikrotik::info($ds['routers']);
|
||||
$p = ORM::for_table('tbl_plans')->where('id', $u['plan_id'])->find_one();
|
||||
|
||||
$price = Lang::moneyFormat($p['price']);
|
||||
if ($p['is_radius']) {
|
||||
if (empty($p['pool_expired'])) {
|
||||
print_r(Radius::customerDeactivate($c['username']));
|
||||
@ -125,19 +46,22 @@ foreach ($d as $ds) {
|
||||
$client = Mikrotik::getClient($m['ip_address'], $m['username'], $m['password']);
|
||||
if (!empty($p['pool_expired'])) {
|
||||
Mikrotik::setHotspotUserPackage($client, $c['username'], 'EXPIRED NUXBILL ' . $p['pool_expired']);
|
||||
// }if (!empty($p['list_expired'])) {
|
||||
// $ip = Mikrotik::getIpHotspotUser($client, $ds['username']);
|
||||
// Mikrotik::addIpToAddressList($client, $ip, $p['list_expired'], $c['username']);
|
||||
} else {
|
||||
Mikrotik::removeHotspotUser($client, $c['username']);
|
||||
}
|
||||
Mikrotik::removeHotspotActiveUser($client, $c['username']);
|
||||
}
|
||||
Message::sendPackageNotification($c['phonenumber'], $c['fullname'], $u['namebp'], $textExpired, $config['user_notification_expired']);
|
||||
echo Message::sendPackageNotification($c['phonenumber'], $c['fullname'], $u['namebp'], $price, $textExpired, $config['user_notification_expired'])."\n";
|
||||
//update database user dengan status off
|
||||
$u->status = 'off';
|
||||
$u->save();
|
||||
|
||||
// autorenewal from deposit
|
||||
if ($config['enable_balance'] == 'yes' && $c['auto_renewal']) {
|
||||
if ($p && $p['enabled'] && $c['balance'] >= $p['price']) {
|
||||
if ($p && $p['enabled'] && $c['balance'] >= $p['price'] && $p['allow_purchase'] == 'yes') {
|
||||
if (Package::rechargeUser($ds['customer_id'], $p['routers'], $p['id'], 'Customer', 'Balance')) {
|
||||
// if success, then get the balance
|
||||
Balance::min($ds['customer_id'], $p['price']);
|
||||
@ -147,7 +71,7 @@ foreach ($d as $ds) {
|
||||
echo "plan enabled: $p[enabled] | User balance: $c[balance] | price $p[price]\n";
|
||||
echo "auto renewall Failed\n";
|
||||
Message::sendTelegram("FAILED RENEWAL #cron\n\n#u$c[username] #buy #Hotspot \n" . $p['name_plan'] .
|
||||
"\nRouter: " . $router_name .
|
||||
"\nRouter: " . $p['routers'] .
|
||||
"\nPrice: " . $p['price']);
|
||||
}
|
||||
} else {
|
||||
@ -156,18 +80,19 @@ foreach ($d as $ds) {
|
||||
} else {
|
||||
echo "no renewall | balance $config[enable_balance] auto_renewal $c[auto_renewal]\n";
|
||||
}
|
||||
} else echo " : ACTIVE \r\n";
|
||||
} else
|
||||
echo " : ACTIVE \r\n";
|
||||
} else {
|
||||
$date_now = strtotime(date("Y-m-d H:i:s"));
|
||||
$expiration = strtotime($ds['expiration'] . ' ' . $ds['time']);
|
||||
echo $ds['expiration'] . " : " . $ds['username'];
|
||||
echo $ds['expiration'] . " : " . (($isCli) ? $ds['username'] : Lang::maskText($ds['username']));
|
||||
if ($date_now >= $expiration) {
|
||||
echo " : EXPIRED \r\n";
|
||||
$u = ORM::for_table('tbl_user_recharges')->where('id', $ds['id'])->find_one();
|
||||
$c = ORM::for_table('tbl_customers')->where('id', $ds['customer_id'])->find_one();
|
||||
$m = ORM::for_table('tbl_routers')->where('name', $ds['routers'])->find_one();
|
||||
$p = ORM::for_table('tbl_plans')->where('id', $u['plan_id'])->find_one();
|
||||
|
||||
$price = Lang::moneyFormat($p['price']);
|
||||
if ($p['is_radius']) {
|
||||
if (empty($p['pool_expired'])) {
|
||||
print_r(Radius::customerDeactivate($c['username']));
|
||||
@ -184,14 +109,14 @@ foreach ($d as $ds) {
|
||||
}
|
||||
Mikrotik::removePpoeActive($client, $c['username']);
|
||||
}
|
||||
Message::sendPackageNotification($c['phonenumber'], $c['fullname'], $u['namebp'], $textExpired, $config['user_notification_expired']);
|
||||
echo Message::sendPackageNotification($c['phonenumber'], $c['fullname'], $u['namebp'], $price, $textExpired, $config['user_notification_expired'])."\n";
|
||||
|
||||
$u->status = 'off';
|
||||
$u->save();
|
||||
|
||||
// autorenewal from deposit
|
||||
if ($config['enable_balance'] == 'yes' && $c['auto_renewal']) {
|
||||
if ($p && $p['enabled'] && $c['balance'] >= $p['price']) {
|
||||
if ($p && $p['enabled'] && $c['balance'] >= $p['price'] && $p['allow_purchase'] == 'yes') {
|
||||
if (Package::rechargeUser($ds['customer_id'], $p['routers'], $p['id'], 'Customer', 'Balance')) {
|
||||
// if success, then get the balance
|
||||
Balance::min($ds['customer_id'], $p['price']);
|
||||
@ -201,11 +126,12 @@ foreach ($d as $ds) {
|
||||
echo "plan enabled: $p[enabled] | User balance: $c[balance] | price $p[price]\n";
|
||||
echo "auto renewall Failed\n";
|
||||
Message::sendTelegram("FAILED RENEWAL #cron\n\n#u$c[username] #buy #PPPOE \n" . $p['name_plan'] .
|
||||
"\nRouter: " . $router_name .
|
||||
"\nRouter: " . $p['routers'] .
|
||||
"\nPrice: " . $p['price']);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else echo " : ACTIVE \r\n";
|
||||
} else
|
||||
echo " : ACTIVE \r\n";
|
||||
}
|
||||
}
|
||||
|
@ -7,76 +7,14 @@
|
||||
* 0 7 * * * /usr/bin/php /var/www/system/cron_reminder.php
|
||||
**/
|
||||
|
||||
// on some server, it getting error because of slash is backwards
|
||||
function _autoloader($class)
|
||||
{
|
||||
if (strpos($class, '_') !== false) {
|
||||
$class = str_replace('_', DIRECTORY_SEPARATOR, $class);
|
||||
if (file_exists(__DIR__ . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php')) {
|
||||
include __DIR__ . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php';
|
||||
} else {
|
||||
$class = str_replace("\\", DIRECTORY_SEPARATOR, $class);
|
||||
if (file_exists(__DIR__ . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php'))
|
||||
include __DIR__ . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php';
|
||||
}
|
||||
} else {
|
||||
if (file_exists(__DIR__ . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php')) {
|
||||
include __DIR__ . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php';
|
||||
} else {
|
||||
$class = str_replace("\\", DIRECTORY_SEPARATOR, $class);
|
||||
if (file_exists(__DIR__ . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php'))
|
||||
include __DIR__ . DIRECTORY_SEPARATOR . 'autoload' . DIRECTORY_SEPARATOR . $class . '.php';
|
||||
}
|
||||
}
|
||||
}
|
||||
spl_autoload_register('_autoloader');
|
||||
include "../init.php";
|
||||
|
||||
if(php_sapi_name() !== 'cli'){
|
||||
$isCli = true;
|
||||
if (php_sapi_name() !== 'cli') {
|
||||
$isCli = false;
|
||||
echo "<pre>";
|
||||
}
|
||||
|
||||
if(!file_exists('../config.php')){
|
||||
die("config.php file not found");
|
||||
}
|
||||
|
||||
|
||||
if(!file_exists('orm.php')){
|
||||
die("orm.php file not found");
|
||||
}
|
||||
|
||||
if(!file_exists('uploads/notifications.default.json')){
|
||||
die("uploads/notifications.default.json file not found");
|
||||
}
|
||||
|
||||
require_once '../config.php';
|
||||
require_once 'orm.php';
|
||||
require_once 'autoload/PEAR2/Autoload.php';
|
||||
include "autoload/Hookers.php";
|
||||
|
||||
ORM::configure("mysql:host=$db_host;dbname=$db_name");
|
||||
ORM::configure('username', $db_user);
|
||||
ORM::configure('password', $db_password);
|
||||
ORM::configure('return_result_sets', true);
|
||||
ORM::configure('logging', true);
|
||||
|
||||
// notification message
|
||||
if (file_exists("uploads/notifications.json")) {
|
||||
$_notifmsg = json_decode(file_get_contents('uploads/notifications.json'), true);
|
||||
}
|
||||
$_notifmsg_default = json_decode(file_get_contents('uploads/notifications.default.json'), true);
|
||||
|
||||
//register all plugin
|
||||
foreach (glob(File::pathFixer("plugin/*.php")) as $filename) {
|
||||
include $filename;
|
||||
}
|
||||
|
||||
$result = ORM::for_table('tbl_appconfig')->find_many();
|
||||
foreach ($result as $value) {
|
||||
$config[$value['setting']] = $value['value'];
|
||||
}
|
||||
date_default_timezone_set($config['timezone']);
|
||||
|
||||
|
||||
$d = ORM::for_table('tbl_user_recharges')->where('status', 'on')->find_many();
|
||||
|
||||
run_hook('cronjob_reminder'); #HOOK
|
||||
@ -98,13 +36,15 @@ print_r([$day1, $day3, $day7]);
|
||||
foreach ($d as $ds) {
|
||||
if (in_array($ds['expiration'], [$day1, $day3, $day7])) {
|
||||
$u = ORM::for_table('tbl_user_recharges')->where('id', $ds['id'])->find_one();
|
||||
$p = ORM::for_table('tbl_plans')->where('id', $u['plan_id'])->find_one();
|
||||
$c = ORM::for_table('tbl_customers')->where('id', $ds['customer_id'])->find_one();
|
||||
$price = Lang::moneyFormat($p['price']);
|
||||
if ($ds['expiration'] == $day7) {
|
||||
echo Message::sendPackageNotification($c['phonenumber'], $c['fullname'], $u['namebp'], Lang::getNotifText('reminder_7_day'), $config['user_notification_reminder']) . "\n";
|
||||
echo Message::sendPackageNotification($c['phonenumber'], $c['fullname'], $p['name_plan'], $price, Lang::getNotifText('reminder_7_day'), $config['user_notification_reminder']) . "\n";
|
||||
} else if ($ds['expiration'] == $day3) {
|
||||
echo Message::sendPackageNotification($c['phonenumber'], $c['fullname'], $u['namebp'], Lang::getNotifText('reminder_3_day'), $config['user_notification_reminder']) . "\n";
|
||||
echo Message::sendPackageNotification($c['phonenumber'], $c['fullname'], $p['name_plan'], $price, Lang::getNotifText('reminder_3_day'), $config['user_notification_reminder']) . "\n";
|
||||
} else if ($ds['expiration'] == $day1) {
|
||||
echo Message::sendPackageNotification($c['phonenumber'], $c['fullname'], $u['namebp'], Lang::getNotifText('reminder_1_day'), $config['user_notification_reminder']) . "\n";
|
||||
echo Message::sendPackageNotification($c['phonenumber'], $c['fullname'], $p['name_plan'], $price, Lang::getNotifText('reminder_1_day'), $config['user_notification_reminder']) . "\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
58
system/lan/country.json
Normal file
58
system/lan/country.json
Normal file
@ -0,0 +1,58 @@
|
||||
{
|
||||
"english": "en",
|
||||
"indonesia": "id",
|
||||
"spanish": "es",
|
||||
"turkish": "tr",
|
||||
"amharic": "am",
|
||||
"arabic": "ar",
|
||||
"basque": "eu",
|
||||
"bengali": "bn",
|
||||
"english-uk": "en-gb",
|
||||
"portuguese-brazil": "pt-br",
|
||||
"bulgarian": "bg",
|
||||
"catalan": "ca",
|
||||
"cherokee": "chr",
|
||||
"croatian": "hr",
|
||||
"czech": "cs",
|
||||
"danish": "da",
|
||||
"dutch": "nl",
|
||||
"estonian": "et",
|
||||
"filipino": "fil",
|
||||
"finnish": "fi",
|
||||
"french": "fr",
|
||||
"german": "de",
|
||||
"greek": "el",
|
||||
"gujarati": "gu",
|
||||
"hebrew": "iw",
|
||||
"hindi": "hi",
|
||||
"hungarian": "hu",
|
||||
"icelandic": "is",
|
||||
"italian": "it",
|
||||
"japanese": "ja",
|
||||
"kannada": "kn",
|
||||
"korean": "ko",
|
||||
"latvian": "lv",
|
||||
"lithuanian": "lt",
|
||||
"malay": "ms",
|
||||
"malayalam": "ml",
|
||||
"marathi": "mr",
|
||||
"norwegian": "no",
|
||||
"polish": "pl",
|
||||
"portuguese (portugal)": "pt-pt",
|
||||
"romanian": "ro",
|
||||
"russian": "ru",
|
||||
"serbian": "sr",
|
||||
"chinese (prc)": "zh-cn",
|
||||
"slovak": "sk",
|
||||
"slovenian": "sl",
|
||||
"swahili": "sw",
|
||||
"swedish": "sv",
|
||||
"tamil": "ta",
|
||||
"telugu": "te",
|
||||
"thai": "th",
|
||||
"chinese-taiwan": "zh-tw",
|
||||
"urdu": "ur",
|
||||
"ukrainian": "uk",
|
||||
"vietnamese": "vi",
|
||||
"welsh": "cy"
|
||||
}
|
431
system/lan/english.json
Normal file
431
system/lan/english.json
Normal file
@ -0,0 +1,431 @@
|
||||
{
|
||||
"Log_in": "Log-in",
|
||||
"Register": "Register",
|
||||
"Announcement": "Announcement",
|
||||
"Registration_Info": "Registration Info",
|
||||
"Voucher_not_found__please_buy_voucher_befor_register": "Voucher not found, please buy voucher befor register",
|
||||
"Register_Success__You_can_login_now": "Register Success! You can login now",
|
||||
"Log_in_to_Member_Panel": "Log in to Member Panel",
|
||||
"Register_as_Member": "Register as Member",
|
||||
"Enter_Admin_Area": "Enter Admin Area",
|
||||
"PHPNuxBill": "PHPNuxBill",
|
||||
"Username": "Username",
|
||||
"Password": "Password",
|
||||
"Passwords_does_not_match": "Passwords does not match",
|
||||
"Account_already_axist": "Account already axist",
|
||||
"Manage": "Manage",
|
||||
"Submit": "Submit",
|
||||
"Save_Changes": "Save Changes",
|
||||
"Cancel": "Cancel",
|
||||
"Edit": "Edit",
|
||||
"Delete": "Delete",
|
||||
"Welcome": "Welcome",
|
||||
"Data_Created_Successfully": "Data Created Successfully",
|
||||
"Data_Updated_Successfully": "Data Updated Successfully",
|
||||
"Data_Deleted_Successfully": "Data Deleted Successfully",
|
||||
"Static_Pages": "Static Pages",
|
||||
"Failed_to_save_page__make_sure_i_can_write_to_folder_pages___i_chmod_664_pages___html_i_": "Failed to save page, make sure i can write to folder pages, <i>chmod 664 pages\/*.html<i>",
|
||||
"Saving_page_success": "Saving page success",
|
||||
"Sometimes_you_need_to_refresh_3_times_until_content_change": "Sometimes you need to refresh 3 times until content change",
|
||||
"Dashboard": "Dashboard",
|
||||
"Search_Customers___": "Search Customers...",
|
||||
"My_Account": "My Account",
|
||||
"My_Profile": "My Profile",
|
||||
"Settings": "Settings",
|
||||
"Edit_Profile": "Edit Profile",
|
||||
"Change_Password": "Change Password",
|
||||
"Logout": "Logout",
|
||||
"Services": "Services",
|
||||
"Bandwidth_Plans": "Bandwidth Plans",
|
||||
"Bandwidth_Name": "Bandwidth Name",
|
||||
"New_Bandwidth": "New Bandwidth",
|
||||
"Edit_Bandwidth": "Edit Bandwidth",
|
||||
"Add_New_Bandwidth": "Add New Bandwidth",
|
||||
"Rate_Download": "Rate Download",
|
||||
"Rate_Upload": "Rate Upload",
|
||||
"Name_Bandwidth_Already_Exist": "Name Bandwidth Already Exist",
|
||||
"Hotspot_Plans": "Hotspot Plans",
|
||||
"PPPOE_Plans": "PPPOE Plans",
|
||||
"Plan_Name": "Plan Name",
|
||||
"New_Service_Plan": "New Service Plan",
|
||||
"Add_Service_Plan": "Add Service Plan",
|
||||
"Edit_Service_Plan": "Edit Service Plan",
|
||||
"Name_Plan_Already_Exist": "Name Plan Already Exist",
|
||||
"Plan_Type": "Plan Type",
|
||||
"Plan_Price": "Plan Price",
|
||||
"Limit_Type": "Limit Type",
|
||||
"Unlimited": "Unlimited",
|
||||
"Limited": "Limited",
|
||||
"Time_Limit": "Time Limit",
|
||||
"Data_Limit": "Data Limit",
|
||||
"Both_Limit": "Both Limit",
|
||||
"Plan_Validity": "Plan Validity",
|
||||
"Select_Bandwidth": "Select Bandwidth",
|
||||
"Shared_Users": "Shared Users",
|
||||
"Choose_User_Type_Sales_to_disable_access_to_Settings": "Choose User Type Sales to disable access to Settings",
|
||||
"Current_Password": "Current Password",
|
||||
"New_Password": "New Password",
|
||||
"Administrator": "Administrator",
|
||||
"Sales": "Sales",
|
||||
"Member": "Member",
|
||||
"Confirm_New_Password": "Confirm New Password",
|
||||
"Confirm_Password": "Confirm Password",
|
||||
"Full_Name": "Full Name",
|
||||
"User_Type": "User Type",
|
||||
"Address": "Address",
|
||||
"Created_On": "Created On",
|
||||
"Expires_On": "Expires On",
|
||||
"Phone_Number": "Phone Number",
|
||||
"User_deleted_Successfully": "User deleted Successfully",
|
||||
"Full_Administrator": "Full Administrator",
|
||||
"Keep_Blank_to_do_not_change_Password": "Keep Blank to do not change Password",
|
||||
"Keep_it_blank_if_you_do_not_want_to_show_currency_code": "Keep it blank if you do not want to show currency code",
|
||||
"Theme_Style": "Theme Style",
|
||||
"Theme_Color": "Theme Color",
|
||||
"Default_Language": "Default Language",
|
||||
"Network": "Network",
|
||||
"Routers": "Routers",
|
||||
"IP_Pool": "IP Pool",
|
||||
"New_Router": "New Router",
|
||||
"Add_Router": "Add Router",
|
||||
"Edit_Router": "Edit Router",
|
||||
"Router_Name": "Router Name",
|
||||
"IP_Address": "IP Address",
|
||||
"Router_Secret": "Router Secret",
|
||||
"Description": "Description",
|
||||
"IP_Router_Already_Exist": "IP Router Already Exist",
|
||||
"Name_Pool": "Name Pool",
|
||||
"Range_IP": "Range IP",
|
||||
"New_Pool": "New Pool",
|
||||
"Add_Pool": "Add Pool",
|
||||
"Edit_Pool": "Edit Pool",
|
||||
"Pool_Name_Already_Exist": "Pool Name Already Exist",
|
||||
"Prepaid": "Prepaid",
|
||||
"Prepaid_Users": "Prepaid Users",
|
||||
"Prepaid_Vouchers": "Prepaid Vouchers",
|
||||
"Refill_Account": "Refill Account",
|
||||
"Recharge_Account": "Recharge Account",
|
||||
"Select_Account": "Select Account",
|
||||
"Service_Plan": "Service Plan",
|
||||
"Recharge": "Recharge",
|
||||
"Method": "Method",
|
||||
"Account_Created_Successfully": "Account Created Successfully",
|
||||
"Database_Status": "Database Status",
|
||||
"Total_Database_Size": "Total Database Size",
|
||||
"Download_Database_Backup": "Download Database Backup",
|
||||
"Table_Name": "Table Name",
|
||||
"Rows": "Rows",
|
||||
"Size": "Size",
|
||||
"Customer": "Customer",
|
||||
"Add_New_Contact": "Add New Contact",
|
||||
"Edit_Contact": "Edit Contact",
|
||||
"List_Contact": "List Contact",
|
||||
"Manage_Contact": "Manage Contact",
|
||||
"Reports": "Reports",
|
||||
"Daily_Reports": "Daily Reports",
|
||||
"Period_Reports": "Period Reports",
|
||||
"All_Transactions": "All Transactions",
|
||||
"Total_Income": "Total Income",
|
||||
"All_Transactions_at_Date": "All Transactions at Date",
|
||||
"Export_for_Print": "Export for Print",
|
||||
"Print": "Print",
|
||||
"Export_to_PDF": "Export to PDF",
|
||||
"Click_Here_to_Print": "Click Here to Print",
|
||||
"You_can_use_html_tag": "You can use html tag",
|
||||
"Date_Format": "Date Format",
|
||||
"Income_Today": "Income Today",
|
||||
"Income_This_Month": "Income This Month",
|
||||
"Users_Active": "Users Active",
|
||||
"Total_Users": "Total Users",
|
||||
"Users": "Users",
|
||||
"Edit_User": "Edit User",
|
||||
"Last_Login": "Last Login",
|
||||
"Administrator_Users": "Administrator Users",
|
||||
"Manage_Administrator": "Manage Administrator",
|
||||
"Add_New_Administrator": "Add New Administrator",
|
||||
"Localisation": "Localisation",
|
||||
"Backup_Restore": "Backup\/Restore",
|
||||
"General_Settings": "General Settings",
|
||||
"Date": "Date",
|
||||
"Login_Successful": "Login Successful",
|
||||
"Failed_Login": "Failed Login",
|
||||
"Settings_Saved_Successfully": "Settings Saved Successfully",
|
||||
"User_Updated_Successfully": "User Updated Successfully",
|
||||
"User_Expired__Today": "User Expired, Today",
|
||||
"Activity_Log": "Activity Log",
|
||||
"View_Reports": "View Reports",
|
||||
"View_All": "View All",
|
||||
"Number_of_Vouchers": "Number of Vouchers",
|
||||
"Length_Code": "Length Code",
|
||||
"Code_Voucher": "Code Voucher",
|
||||
"Voucher": "Voucher",
|
||||
"Hotspot_Voucher": "Hotspot Voucher",
|
||||
"Status_Voucher": "Status Voucher",
|
||||
"Add_Vouchers": "Add Vouchers",
|
||||
"Create_Vouchers_Successfully": "Create Vouchers Successfully",
|
||||
"Generate": "Generate",
|
||||
"Print_side_by_side__it_will_easy_to_cut": "Print side by side, it will easy to cut",
|
||||
"From_Date": "From Date",
|
||||
"To_Date": "To Date",
|
||||
"New_Service": "New Service",
|
||||
"Type": "Type",
|
||||
"Finish": "Finish",
|
||||
"Application_Name__Company_Name": "Application Name\/ Company Name",
|
||||
"This_Name_will_be_shown_on_the_Title": "This Name will be shown on the Title",
|
||||
"Next": "Next",
|
||||
"Last": "Last",
|
||||
"Timezone": "Timezone",
|
||||
"Decimal_Point": "Decimal Point",
|
||||
"Thousands_Separator": "Thousands Separator",
|
||||
"Currency_Code": "Currency Code",
|
||||
"Order_Voucher": "Order Voucher",
|
||||
"Voucher_Activation": "Voucher Activation",
|
||||
"List_Activated_Voucher": "List Activated Voucher",
|
||||
"Enter_voucher_code_here": "Enter voucher code here",
|
||||
"Private_Message": "Private Message",
|
||||
"Inbox": "Inbox",
|
||||
"Outbox": "Outbox",
|
||||
"Compose": "Compose",
|
||||
"Send_to": "Send to",
|
||||
"Title": "Title",
|
||||
"Message": "Message",
|
||||
"Your_Account_Information": "Your Account Information",
|
||||
"Welcome_to_the_Panel_Members_page__on_this_page_you_can_": "Welcome to the Panel Members page, on this page you can:",
|
||||
"Invalid_Username_or_Password": "Invalid Username or Password",
|
||||
"You_do_not_have_permission_to_access_this_page": "You do not have permission to access this page",
|
||||
"Incorrect_Current_Password": "Incorrect Current Password",
|
||||
"Password_changed_successfully__Please_login_again": "Password changed successfully, Please login again",
|
||||
"All_field_is_required": "All field is required",
|
||||
"Voucher_Not_Valid": "Voucher Not Valid",
|
||||
"Activation_Vouchers_Successfully": "Activation Vouchers Successfully",
|
||||
"Data_Not_Found": "Data Not Found",
|
||||
"Search_by_Username": "Search by Username",
|
||||
"Search_by_Name": "Search by Name",
|
||||
"Search_by_Code_Voucher": "Search by Code Voucher",
|
||||
"Search": "Search",
|
||||
"Select_a_customer": "Select a customer",
|
||||
"Select_Routers": "Select Routers",
|
||||
"Select_Plans": "Select Plans",
|
||||
"Select_Pool": "Select Pool",
|
||||
"Hrs": "Hrs",
|
||||
"Mins": "Mins",
|
||||
"Days": "Days",
|
||||
"Months": "Months",
|
||||
"Add_Language": "Add Language",
|
||||
"Language_Name": "Language Name",
|
||||
"Folder_Name": "Folder Name",
|
||||
"Translator": "Translator",
|
||||
"Language_Name_Already_Exist": "Language Name Already Exist",
|
||||
"Payment_Gateway": "Payment Gateway",
|
||||
"Community": "Community",
|
||||
"1_user_can_be_used_for_many_devices_": "1 user can be used for many devices?",
|
||||
"Cannot_be_change_after_saved": "Cannot be change after saved",
|
||||
"Explain_Coverage_of_router": "Explain Coverage of router",
|
||||
"Name_of_Area_that_router_operated": "Name of Area that router operated",
|
||||
"Payment_Notification_URL__Recurring_Notification_URL__Pay_Account_Notification_URL": "Payment Notification URL, Recurring Notification URL, Pay Account Notification URL",
|
||||
"Finish_Redirect_URL__Unfinish_Redirect_URL__Error_Redirect_URL": "Finish Redirect URL, Unfinish Redirect URL, Error Redirect URL",
|
||||
"Status": "Status",
|
||||
"Plan_Not_found": "Plan Not found",
|
||||
"Failed_to_create_transaction_": "Failed to create transaction.",
|
||||
"Seller_has_not_yet_setup_Xendit_payment_gateway": "Seller has not yet setup Xendit payment gateway",
|
||||
"Admin_has_not_yet_setup_Xendit_payment_gateway__please_tell_admin": "Admin has not yet setup Xendit payment gateway, please tell admin",
|
||||
"You_already_have_unpaid_transaction__cancel_it_or_pay_it_": "You already have unpaid transaction, cancel it or pay it.",
|
||||
"Transaction_Not_found": "Transaction Not found",
|
||||
"Cancel_it_": "Cancel it?",
|
||||
"expired": "expired",
|
||||
"Check_for_Payment": "Check for Payment",
|
||||
"Transaction_still_unpaid_": "Transaction still unpaid.",
|
||||
"Paid_Date": "Paid Date",
|
||||
"Transaction_has_been_paid_": "Transaction has been paid.",
|
||||
"PAID": "PAID",
|
||||
"CANCELED": "CANCELED",
|
||||
"UNPAID": "UNPAID",
|
||||
"PAY_NOW": "PAY NOW",
|
||||
"Buy_Hotspot_Plan": "Buy Hotspot Plan",
|
||||
"Buy_PPOE_Plan": "Buy PPOE Plan",
|
||||
"Package": "Package",
|
||||
"Order_Internet_Package": "Order Internet Package",
|
||||
"Unknown_Command_": "Unknown Command.",
|
||||
"Checking_payment": "Checking payment",
|
||||
"Create_Transaction_Success": "Create Transaction Success",
|
||||
"You_have_unpaid_transaction": "You have unpaid transaction",
|
||||
"TripayPayment_Channel": "TripayPayment Channel",
|
||||
"Payment_Channel": "Payment Channel",
|
||||
"Payment_check_failed_": "Payment check failed.",
|
||||
"Order_Package": "Order Package",
|
||||
"Transactions": "Transactions",
|
||||
"Payments": "Payments",
|
||||
"History": "History",
|
||||
"Order_History": "Order History",
|
||||
"Gateway": "Gateway",
|
||||
"Date_Done": "Date Done",
|
||||
"Unpaid_Order": "Unpaid Order",
|
||||
"Payment_Gateway_Not_Found": "Payment Gateway Not Found",
|
||||
"Payment_Gateway_saved_successfully": "Payment Gateway saved successfully",
|
||||
"ORDER": "ORDER",
|
||||
"Package_History": "Package History",
|
||||
"Buy_History": "Buy History",
|
||||
"Activation_History": "Activation History",
|
||||
"Buy_Package": "Buy Package",
|
||||
"Email": "Email",
|
||||
"Company_Footer": "Company Footer",
|
||||
"Will_show_below_user_pages": "Will show below user pages",
|
||||
"Request_OTP": "Request OTP",
|
||||
"Verification_Code": "Verification Code",
|
||||
"SMS_Verification_Code": "SMS Verification Code",
|
||||
"Please_enter_your_email_address": "Please enter your email address",
|
||||
"Failed_to_create_Paypal_transaction_": "Failed to create Paypal transaction.",
|
||||
"Plugin": "Plugin",
|
||||
"Plugin_Manager": "Plugin Manager",
|
||||
"User_Notification": "User Notification",
|
||||
"Expired_Notification": "Expired Notification",
|
||||
"User_will_get_notification_when_package_expired": "User will get notification when package expired",
|
||||
"Expired_Notification_Message": "Expired Notification Message",
|
||||
"Payment_Notification": "Payment Notification",
|
||||
"User_will_get_invoice_notification_when_buy_package_or_package_refilled": "User will get invoice notification when buy package or package refilled",
|
||||
"Current_IP": "Current IP",
|
||||
"Current_MAC": "Current MAC",
|
||||
"Login_Status": "Login Status",
|
||||
"Login_Request_successfully": "Login Request successfully",
|
||||
"Logout_Request_successfully": "Logout Request successfully",
|
||||
"Disconnect_Internet_": "Disconnect Internet?",
|
||||
"Not_Online__Login_now_": "Not Online, Login now?",
|
||||
"You_are_Online__Logout_": "You are Online, Logout?",
|
||||
"Connect_to_Internet_": "Connect to Internet?",
|
||||
"Your_account_not_connected_to_internet": "Your account not connected to internet",
|
||||
"Failed_to_create_transaction__": "Failed to create transaction. ",
|
||||
"Failed_to_check_status_transaction__": "Failed to check status transaction. ",
|
||||
"Disable_Voucher": "Disable Voucher",
|
||||
"Balance": "Balance",
|
||||
"Balance_System": "Balance System",
|
||||
"Enable_System": "Enable System",
|
||||
"Allow_Transfer": "Allow Transfer",
|
||||
"Telegram_Notification": "Telegram Notification",
|
||||
"SMS_OTP_Registration": "SMS OTP Registration",
|
||||
"Whatsapp_Notification": "Whatsapp Notification",
|
||||
"Tawk_to_Chat_Widget": "Tawk.to Chat Widget",
|
||||
"Invoice": "Invoice",
|
||||
"Country_Code_Phone": "Country Code Phone",
|
||||
"Voucher_activation_menu_will_be_hidden": "Voucher activation menu will be hidden",
|
||||
"Customer_can_deposit_money_to_buy_voucher": "Customer can deposit money to buy voucher",
|
||||
"Allow_balance_transfer_between_customers": "Allow balance transfer between customers",
|
||||
"Reminder_Notification": "Reminder Notification",
|
||||
"Reminder_Notification_Message": "Reminder Notification Message",
|
||||
"Reminder_7_days": "Reminder 7 days",
|
||||
"Reminder_3_days": "Reminder 3 days",
|
||||
"Reminder_1_day": "Reminder 1 day",
|
||||
"PPPOE_Password": "PPPOE Password",
|
||||
"User_Cannot_change_this__only_admin__if_it_Empty_it_will_use_user_password": "User Cannot change this, only admin. if it Empty it will use user password",
|
||||
"Invoice_Balance_Message": "Invoice Balance Message",
|
||||
"Invoice_Notification_Payment": "Invoice Notification Payment",
|
||||
"Balance_Notification_Payment": "Balance Notification Payment",
|
||||
"Balance_Plans": "Balance Plans",
|
||||
"Buy_Balance": "Buy Balance",
|
||||
"Price": "Price",
|
||||
"Validity": "Validity",
|
||||
"Disable_auto_renewal_": "Disable auto renewal?",
|
||||
"Auto_Renewal_On": "Auto Renewal On",
|
||||
"Enable_auto_renewal_": "Enable auto renewal?",
|
||||
"Auto_Renewal_Off": "Auto Renewal Off",
|
||||
"Refill_Balance": "Refill Balance",
|
||||
"Invoice_Footer": "Invoice Footer",
|
||||
"Pay_With_Balance": "Pay With Balance",
|
||||
"Pay_this_with_Balance__your_active_package_will_be_overwrite": "Pay this with Balance? your active package will be overwrite",
|
||||
"Success_to_buy_package": "Success to buy package",
|
||||
"Auto_Renewal": "Auto Renewal",
|
||||
"View": "View",
|
||||
"Back": "Back",
|
||||
"Active": "Active",
|
||||
"Transfer_Balance": "Transfer Balance",
|
||||
"Send_your_balance_": "Send your balance?",
|
||||
"Send": "Send",
|
||||
"Cannot_send_to_yourself": "Cannot send to yourself",
|
||||
"Sending_balance_success": "Sending balance success",
|
||||
"From": "From",
|
||||
"To": "To",
|
||||
"insufficient_balance": "insufficient balance",
|
||||
"Send_Balance": "Send Balance",
|
||||
"Received_Balance": "Received Balance",
|
||||
"Minimum_Balance_Transfer": "Minimum Balance Transfer",
|
||||
"Minimum_Transfer": "Minimum Transfer",
|
||||
"Company_Logo": "Company Logo",
|
||||
"Expired_IP_Pool": "Expired IP Pool",
|
||||
"Proxy": "Proxy",
|
||||
"Proxy_Server": "Proxy Server",
|
||||
"Proxy_Server_Login": "Proxy Server Login",
|
||||
"Hotspot_Plan": "Hotspot Plan",
|
||||
"PPPOE_Plan": "PPPOE Plan",
|
||||
"UNKNOWN": "UNKNOWN",
|
||||
"Are_You_Sure_": "Are You Sure?",
|
||||
"Success_to_send_package": "Success to send package",
|
||||
"Target_has_active_plan__different_with_current_plant_": "Target has active plan, different with current plant.",
|
||||
"Recharge_a_friend": "Recharge a friend",
|
||||
"Buy_for_friend": "Buy for friend",
|
||||
"Buy_this_for_friend_account_": "Buy this for friend account?",
|
||||
"Review_package_before_recharge": "Review package before recharge",
|
||||
"Activate": "Activate",
|
||||
"Deactivate": "Deactivate",
|
||||
"Sync": "Sync",
|
||||
"Failed_to_create_PaymeTrust_transaction_": "Failed to create PaymeTrust transaction.",
|
||||
"Location": "Location",
|
||||
"Radius_Plans": "Radius Plans",
|
||||
"Change_title_in_user_Plan_order": "Change title in user Plan order",
|
||||
"Logs": "Logs",
|
||||
"Voucher_Format": "Voucher Format",
|
||||
"Resend_To_Customer": "Resend To Customer",
|
||||
"Your_friend_do_not_have_active_package": "Your friend do not have active package",
|
||||
"Service_Type": "Service Type",
|
||||
"Others": "Others",
|
||||
"PPPoE": "PPPoE",
|
||||
"Hotspot": "Hotspot",
|
||||
"Disable_Registration": "Disable Registration",
|
||||
"Customer_just_Login_with_Phone_number_and_Voucher_Code__Voucher_will_be_password": "Customer just Login with Phone number and Voucher Code, Voucher will be password",
|
||||
"Login___Activate_Voucher": "Login \/ Activate Voucher",
|
||||
"After_Customer_activate_voucher_or_login__customer_will_be_redirected_to_this_url": "After Customer activate voucher or login, customer will be redirected to this url",
|
||||
"Voucher_Prefix": "Voucher Prefix",
|
||||
"Voucher_activation_success__now_you_can_login": "Voucher activation success, now you can login",
|
||||
"Client_Can_Purchase": "Client Can Purchase",
|
||||
"Buy_this__your_active_package_will_be_overwritten": "Buy this? your active package will be overwritten",
|
||||
"Pay_this_with_Balance__your_active_package_will_be_overwritten": "Pay this with Balance? your active package will be overwritten",
|
||||
"Buy_this__your_active_package_will_be_overwrite": "Buy this? your active package will be overwrite",
|
||||
"Monthly_Registered_Customers": "Monthly Registered Customers",
|
||||
"Total_Monthly_Sales": "Total Monthly Sales",
|
||||
"Active_Users": "Active Users",
|
||||
"All_Users_Insights": "All Users Insights",
|
||||
"SuperAdmin": "Super Admin",
|
||||
"Radius": "Radius",
|
||||
"Radius_NAS": "Radius NAS",
|
||||
"Translation": "Translation",
|
||||
"Translation_saved_Successfully": "Translation saved Successfully",
|
||||
"Language_Editor": "Language Editor",
|
||||
"year": "year",
|
||||
"month": "month",
|
||||
"week": "week",
|
||||
"day": "day",
|
||||
"hour": "hour",
|
||||
"minute": "minute",
|
||||
"second": "second",
|
||||
"Attributes": "Attributes",
|
||||
"Profile": "Profile",
|
||||
"Phone": "Phone",
|
||||
"City": "City",
|
||||
"Sub_District": "Sub District",
|
||||
"Ward": "Ward",
|
||||
"Credentials": "Credentials",
|
||||
"Agent": "Agent",
|
||||
"This_Token_will_act_as_SuperAdmin_Admin": "This Token will act as SuperAdmin\/Admin",
|
||||
"Login": "Login",
|
||||
"Expired_Action": "Expired Action",
|
||||
"Expired_Address_List_Name": "Expired Address List Name",
|
||||
"Address_List": "Address List",
|
||||
"Optional": "Optional",
|
||||
"Generated_By": "Generated By",
|
||||
"Admin": "Admin",
|
||||
"Password_should_be_minimum_6_characters": "Password should be minimum 6 characters",
|
||||
"Add_User": "Add User",
|
||||
"Send_Notification": "Send Notification",
|
||||
"Code": "Code",
|
||||
"Send_To_Customer": "Send To Customer",
|
||||
"Prev": "Prev",
|
||||
"Voucher_Not_Found": "Voucher Not Found"
|
||||
}
|
@ -1,419 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
-----------------------------------
|
||||
Language Name: English
|
||||
Contributor: Ismail Marzuqi
|
||||
Web: www.phpnuxbill.com
|
||||
Email: iesien22@yahoo.com
|
||||
|
||||
2017
|
||||
Contributor: Ibnu Maksum (@ibnux)
|
||||
|
||||
------------------------------------
|
||||
*/
|
||||
|
||||
$_L['Login'] = 'Log-in';
|
||||
$_L['Register'] = 'Register';
|
||||
$_L['Announcement'] = 'Announcement';
|
||||
$_L['Registration_Info'] = 'Registration Info';
|
||||
$_L['Register_Voucher_Failed'] = 'Voucher not found, please buy voucher befor register';
|
||||
$_L['Register_Success'] = 'Register Success! You can login now';
|
||||
$_L['Sign_In_Member'] = 'Log in to Member Panel';
|
||||
$_L['Register_Member'] = 'Register as Member';
|
||||
$_L['Sign_In_Admin'] = 'Enter Admin Area';
|
||||
$_L['Logo'] = 'PHPNuxBill';
|
||||
$_L['Username'] = 'Username';
|
||||
$_L['Password'] = 'Password';
|
||||
$_L['PasswordsNotMatch'] = 'Passwords does not match';
|
||||
$_L['account_already_exist'] = 'Account already axist';
|
||||
$_L['Manage'] = 'Manage';
|
||||
$_L['Submit'] = 'Submit';
|
||||
$_L['Save'] = 'Save Changes';
|
||||
$_L['Cancel'] = 'Cancel';
|
||||
$_L['Edit'] = 'Edit';
|
||||
$_L['Delete'] = 'Delete';
|
||||
$_L['Welcome'] = 'Welcome';
|
||||
$_L['Created_Successfully'] = 'Data Created Successfully';
|
||||
$_L['Updated_Successfully'] = 'Data Updated Successfully';
|
||||
$_L['Delete_Successfully'] = 'Data Deleted Successfully';
|
||||
|
||||
$_L['Static_Pages'] = "Static Pages";
|
||||
$_L['Failed_Save_Page'] = "Failed to save page, make sure i can write to folder pages, <i>chmod 664 pages/*.html<i>";
|
||||
$_L['Success_Save_Page'] = "Saving page success";
|
||||
$_L['Info_Page'] = "Sometimes you need to refresh 3 times until content change";
|
||||
|
||||
$_L['Dashboard'] = 'Dashboard';
|
||||
$_L['Search_Contact'] = 'Search Customers...';
|
||||
$_L['My_Account'] = 'My Account';
|
||||
$_L['My_Profile'] = 'My Profile';
|
||||
$_L['Settings'] = 'Settings';
|
||||
$_L['Edit_Profile'] = 'Edit Profile';
|
||||
$_L['Change_Password'] = 'Change Password';
|
||||
$_L['Logout'] = 'Logout';
|
||||
|
||||
$_L['Services'] = 'Services';
|
||||
$_L['Bandwidth_Plans'] = 'Bandwidth Plans';
|
||||
$_L['BW_Name'] = 'Bandwidth Name';
|
||||
$_L['New_Bandwidth'] = 'New Bandwidth';
|
||||
$_L['Edit_Bandwidth'] = 'Edit Bandwidth';
|
||||
$_L['Add_Bandwidth'] = 'Add New Bandwidth';
|
||||
$_L['Rate_Download'] = 'Rate Download';
|
||||
$_L['Rate_Upload'] = 'Rate Upload';
|
||||
$_L['BW_already_exist'] = 'Name Bandwidth Already Exist';
|
||||
$_L['Hotspot_Plans'] = 'Hotspot Plans';
|
||||
$_L['PPPOE_Plans'] = 'PPPOE Plans';
|
||||
$_L['Plan_Name'] = 'Plan Name';
|
||||
$_L['New_Plan'] = 'New Service Plan';
|
||||
$_L['Add_Plan'] = 'Add Service Plan';
|
||||
$_L['Edit_Plan'] = 'Edit Service Plan';
|
||||
$_L['Plan_already_exist'] = 'Name Plan Already Exist';
|
||||
$_L['Plan_Type'] = 'Plan Type';
|
||||
$_L['Plan_Price'] = 'Plan Price';
|
||||
$_L['Limit_Type'] = 'Limit Type';
|
||||
$_L['Unlimited'] = 'Unlimited';
|
||||
$_L['Limited'] = 'Limited';
|
||||
$_L['Time_Limit'] = 'Time Limit';
|
||||
$_L['Data_Limit'] = 'Data Limit';
|
||||
$_L['Both_Limit'] = 'Both Limit';
|
||||
$_L['Plan_Validity'] = 'Plan Validity';
|
||||
$_L['Select_BW'] = 'Select Bandwidth';
|
||||
$_L['Shared_Users'] = 'Shared Users';
|
||||
|
||||
$_L['user_type_help'] = 'Choose User Type Sales to disable access to Settings';
|
||||
$_L['Current_Password'] = 'Current Password';
|
||||
$_L['New_Password'] = 'New Password';
|
||||
$_L['Administrator'] = 'Administrator';
|
||||
$_L['Sales'] = 'Sales';
|
||||
$_L['Member'] = 'Member';
|
||||
$_L['Confirm_New_Password'] = 'Confirm New Password';
|
||||
$_L['Confirm_Password'] = 'Confirm Password';
|
||||
$_L['Full_Name'] = 'Full Name';
|
||||
$_L['User_Type'] = 'User Type';
|
||||
$_L['Address'] = 'Address';
|
||||
$_L['Created_On'] = 'Created On';
|
||||
$_L['Expires_On'] = 'Expires On';
|
||||
$_L['Phone_Number'] = 'Phone Number';
|
||||
$_L['User_Delete_Ok'] = 'User deleted Successfully';
|
||||
$_L['Full_Administrator'] = 'Full Administrator';
|
||||
$_L['password_change_help'] = 'Keep Blank to do not change Password';
|
||||
$_L['currency_help'] = 'Keep it blank if you do not want to show currency code';
|
||||
$_L['Theme_Style'] = 'Theme Style';
|
||||
$_L['Theme_Color'] = 'Theme Color';
|
||||
$_L['Default_Language'] = 'Default Language';
|
||||
|
||||
$_L['Network'] = 'Network';
|
||||
$_L['Routers'] = 'Routers';
|
||||
$_L['Pool'] = 'IP Pool';
|
||||
$_L['New_Router'] = 'New Router';
|
||||
$_L['Add_Router'] = 'Add Router';
|
||||
$_L['Edit_Router'] = 'Edit Router';
|
||||
$_L['Router_Name'] = 'Router Name';
|
||||
$_L['IP_Address'] = 'IP Address';
|
||||
$_L['Router_Secret'] = 'Router Secret';
|
||||
$_L['Description'] = 'Description';
|
||||
$_L['Router_already_exist'] = 'IP Router Already Exist';
|
||||
$_L['Pool_Name'] = 'Name Pool';
|
||||
$_L['Range_IP'] = 'Range IP';
|
||||
$_L['New_Pool'] = 'New Pool';
|
||||
$_L['Add_Pool'] = 'Add Pool';
|
||||
$_L['Edit_Pool'] = 'Edit Pool';
|
||||
$_L['Pool_already_exist'] = 'Pool Name Already Exist';
|
||||
|
||||
$_L['Prepaid'] = 'Prepaid';
|
||||
$_L['Prepaid_User'] = 'Prepaid Users';
|
||||
$_L['Prepaid_Vouchers'] = 'Prepaid Vouchers';
|
||||
$_L['Refill_Account'] = 'Refill Account';
|
||||
$_L['Recharge_Account'] = 'Recharge Account';
|
||||
$_L['Select_Account'] = 'Select Account';
|
||||
$_L['Service_Plan'] = 'Service Plan';
|
||||
$_L['Recharge'] = 'Recharge';
|
||||
$_L['Method'] = 'Method';
|
||||
$_L['account_created_successfully'] = 'Account Created Successfully';
|
||||
|
||||
$_L['Database_Status'] = 'Database Status';
|
||||
$_L['Total_Database_Size'] = 'Total Database Size';
|
||||
$_L['Download_Database_Backup'] = 'Download Database Backup';
|
||||
$_L['Table_Name'] = 'Table Name';
|
||||
$_L['Rows'] = 'Rows';
|
||||
$_L['Size'] = 'Size';
|
||||
|
||||
$_L['Customers'] = 'Customer';
|
||||
$_L['Add_Contact'] = 'Add New Contact';
|
||||
$_L['Edit_Contact'] = 'Edit Contact';
|
||||
$_L['List_Contact'] = 'List Contact';
|
||||
$_L['Manage_Accounts'] = 'Manage Contact';
|
||||
|
||||
$_L['Reports'] = 'Reports';
|
||||
$_L['Daily_Report'] = 'Daily Reports';
|
||||
$_L['Period_Reports'] = 'Period Reports';
|
||||
$_L['All_Transactions'] = 'All Transactions';
|
||||
$_L['Total_Income'] = 'Total Income';
|
||||
$_L['All_Transactions_at_Date'] = 'All Transactions at Date';
|
||||
$_L['Total_Income'] = 'Total Income';
|
||||
$_L['Export_for_Print'] = 'Export for Print';
|
||||
$_L['Print'] = 'Print';
|
||||
$_L['Export_to_PDF'] = 'Export to PDF';
|
||||
$_L['Click_Here_to_Print'] = 'Click Here to Print';
|
||||
$_L['You_can_use_html_tag'] = 'You can use html tag';
|
||||
$_L['Date_Format'] = 'Date Format';
|
||||
$_L['Income_Today'] = 'Income Today';
|
||||
$_L['Income_This_Month'] = 'Income This Month';
|
||||
$_L['Users_Active'] = 'Users Active';
|
||||
$_L['Total_Users'] = 'Total Users';
|
||||
$_L['Users'] = 'Users';
|
||||
$_L['Edit_User'] = 'Edit User';
|
||||
$_L['Last_Login'] = 'Last Login';
|
||||
$_L['Administrator_Users'] = 'Administrator Users';
|
||||
$_L['Manage_Administrator'] = 'Manage Administrator';
|
||||
$_L['Add_New_Administrator'] = 'Add New Administrator';
|
||||
$_L['Localisation'] = 'Localisation';
|
||||
$_L['Backup_Restore'] = 'Backup/Restore';
|
||||
|
||||
$_L['General_Settings'] = 'General Settings';
|
||||
$_L['Date'] = 'Date';
|
||||
$_L['Login_Successful'] = 'Login Successful';
|
||||
$_L['Failed_Login'] = 'Failed Login';
|
||||
$_L['Settings_Saved_Successfully'] = 'Settings Saved Successfully';
|
||||
$_L['User_Updated_Successfully'] = 'User Updated Successfully';
|
||||
$_L['User_Expired_Today'] = 'User Expired, Today';
|
||||
$_L['Activity_Log'] = 'Activity Log';
|
||||
$_L['View_Reports'] = 'View Reports';
|
||||
$_L['View_All'] = 'View All';
|
||||
$_L['Number_of_Vouchers'] = 'Number of Vouchers';
|
||||
$_L['Length_Code'] = 'Length Code';
|
||||
$_L['Code_Voucher'] = 'Code Voucher';
|
||||
$_L['Voucher'] = 'Voucher';
|
||||
$_L['Voucher_Hotspot'] = 'Hotspot Voucher';
|
||||
$_L['Status_Voucher'] = 'Status Voucher';
|
||||
$_L['Add_Voucher'] = 'Add Vouchers';
|
||||
$_L['Voucher_Successfully'] = 'Create Vouchers Successfully';
|
||||
$_L['Generate'] = 'Generate';
|
||||
$_L['Print_Info'] = 'Print side by side, it will easy to cut';
|
||||
|
||||
$_L['From_Date'] = 'From Date';
|
||||
$_L['To_Date'] = 'To Date';
|
||||
$_L['New_Service'] = 'New Service';
|
||||
$_L['Type'] = 'Type';
|
||||
$_L['Finish'] = 'Finish';
|
||||
$_L['App_Name'] = 'Application Name/ Company Name';
|
||||
$_L['App_Name_Help_Text'] = 'This Name will be shown on the Title';
|
||||
$_L['Next'] = 'Next';
|
||||
$_L['Last'] = 'Last';
|
||||
$_L['Timezone'] = 'Timezone';
|
||||
$_L['Decimal_Point'] = 'Decimal Point';
|
||||
$_L['Thousands_Separator'] = 'Thousands Separator';
|
||||
$_L['Currency_Code'] = 'Currency Code';
|
||||
|
||||
$_L['Order_Voucher'] = 'Order Voucher';
|
||||
$_L['Voucher_Activation'] = 'Voucher Activation';
|
||||
$_L['List_Activated_Voucher'] = 'List Activated Voucher';
|
||||
$_L['Enter_Voucher_Code'] = 'Enter voucher code here';
|
||||
$_L['Private_Message'] = 'Private Message';
|
||||
$_L['Inbox'] = 'Inbox';
|
||||
$_L['Outbox'] = 'Outbox';
|
||||
$_L['Compose'] = 'Compose';
|
||||
$_L['Send_to'] = 'Send to';
|
||||
$_L['Title'] = 'Title';
|
||||
$_L['Message'] = 'Message';
|
||||
$_L['Account_Information'] = 'Your Account Information';
|
||||
$_L['Welcome_Text_User'] = 'Welcome to the Panel Members page, on this page you can:';
|
||||
$_L['Welcome_Text_Admin'] = '<b>PHPNuxBill</b> is a billing Hotspot and PPPOE for Mikrotik using PHP and Mikrotik API to comunicate with router. If you get more profit with this application, please donate us.<br>Watch project <a href="https://github.com/hotspotbilling/phpnuxbill" target="_blank">in here</a>';
|
||||
|
||||
//update
|
||||
$_L['Invalid_Username_or_Password'] = 'Invalid Username or Password';
|
||||
$_L['Do_Not_Access'] = 'You do not have permission to access this page';
|
||||
$_L['Incorrect_Current_Password'] = 'Incorrect Current Password';
|
||||
$_L['Password_Changed_Successfully'] = 'Password changed successfully, Please login again';
|
||||
$_L['All_field_is_required'] = 'All field is required';
|
||||
$_L['Voucher_Not_Valid'] = 'Voucher Not Valid';
|
||||
$_L['Activation_Vouchers_Successfully'] = 'Activation Vouchers Successfully';
|
||||
$_L['Data_Not_Found'] = 'Data Not Found';
|
||||
$_L['Search_by_Username'] = 'Search by Username';
|
||||
$_L['Search_by_Name'] = 'Search by Name';
|
||||
$_L['Search_by_Code'] = 'Search by Code Voucher';
|
||||
$_L['Search'] = 'Search';
|
||||
$_L['Select_Customer'] = 'Select a customer';
|
||||
$_L['Select_Routers'] = 'Select Routers';
|
||||
$_L['Select_Plans'] = 'Select Plans';
|
||||
$_L['Select_Pool'] = 'Select Pool';
|
||||
$_L['Hrs'] = 'Hrs';
|
||||
$_L['Mins'] = 'Mins';
|
||||
$_L['Days'] = 'Days';
|
||||
$_L['Months'] = 'Months';
|
||||
|
||||
$_L['Add_Language'] = 'Add Language';
|
||||
$_L['Name_Lang'] = 'Language Name';
|
||||
$_L['Folder_Lang'] = 'Folder Name';
|
||||
$_L['Translator'] = 'Translator';
|
||||
$_L['Lang_already_exist'] = 'Language Name Already Exist';
|
||||
|
||||
$_L['Payment_Gateway'] = 'Payment Gateway';
|
||||
$_L['Community'] = 'Community';
|
||||
$_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'] = 'Explain Coverage of router';
|
||||
$_L['Name_of_Area_that_router_operated'] = 'Name of Area that router operated';
|
||||
$_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';
|
||||
$_L['Status'] = 'Status';
|
||||
$_L['Plan_Not_found'] = 'Plan Not found';
|
||||
$_L['Failed_to_create_transaction'] = 'Failed to create transaction.';
|
||||
$_L['Seller_has_not_yet_setup_Xendit_payment_gateway'] = 'Seller has not yet setup Xendit payment gateway';
|
||||
$_L['Admin_has_not_yet_setup_Xendit_payment_gateway_please_tell_admin'] = 'Admin has not yet setup Xendit payment gateway, please tell admin';
|
||||
$_L['Buy_this_your_active_package_will_be_overwrite'] = 'Buy this? your active package will be overwrite';
|
||||
$_L['You_already_have_unpaid_transaction_cancel_it_or_pay_it'] = 'You already have unpaid transaction, cancel it or pay it.';
|
||||
$_L['Transaction_Not_found'] = 'Transaction Not found';
|
||||
$_L['Cancel_it'] = 'Cancel it?';
|
||||
$_L['expired'] = 'expired';
|
||||
$_L['Check_for_Payment'] = 'Check for Payment';
|
||||
$_L['Transaction_still_unpaid'] = 'Transaction still unpaid.';
|
||||
$_L['Paid_Date'] = 'Paid Date';
|
||||
$_L['Transaction_has_been_paid'] = 'Transaction has been paid.';
|
||||
$_L['PAID'] = 'PAID';
|
||||
$_L['CANCELED'] = 'CANCELED';
|
||||
$_L['UNPAID'] = 'UNPAID';
|
||||
$_L['PAY_NOW'] = 'PAY NOW';
|
||||
$_L['Buy_Hotspot_Plan'] = 'Buy Hotspot Plan';
|
||||
$_L['Buy_PPOE_Plan'] = 'Buy PPOE Plan';
|
||||
$_L['Package'] = 'Package';
|
||||
$_L['Order_Internet_Package'] = 'Order Internet Package';
|
||||
$_L['Unknown_Command'] = 'Unknown Command.';
|
||||
$_L['Checking_payment'] = 'Checking payment';
|
||||
$_L['Create_Transaction_Success'] = 'Create Transaction Success';
|
||||
$_L['You_have_unpaid_transaction'] = 'You have unpaid transaction';
|
||||
$_L['TripayPayment_Channel'] = 'TripayPayment Channel';
|
||||
$_L['Payment_Channel'] = 'Payment Channel';
|
||||
$_L['Payment_check_failed'] = 'Payment check failed.';
|
||||
$_L['Order_Package'] = 'Order Package';
|
||||
$_L['Transactions'] = 'Transactions';
|
||||
$_L['Payments'] = 'Payments';
|
||||
$_L['History'] = 'History';
|
||||
$_L['Order_History'] = 'Order History';
|
||||
$_L['Gateway'] = 'Gateway';
|
||||
$_L['Date_Done'] = 'Date Done';
|
||||
$_L['Unpaid_Order'] = 'Unpaid Order';
|
||||
$_L['Payment_Gateway_Not_Found'] = 'Payment Gateway Not Found';
|
||||
$_L['Payment_Gateway_saved_successfully'] = 'Payment Gateway saved successfully';
|
||||
$_L['ORDER'] = 'ORDER';
|
||||
$_L['Package_History'] = 'Package History';
|
||||
$_L['Buy_History'] = 'Buy History';
|
||||
$_L['Activation_History'] = 'Activation History';
|
||||
$_L['Buy_Package'] = 'Buy Package';
|
||||
$_L['Email'] = 'Email';
|
||||
$_L['Company_Footer'] = 'Company Footer';
|
||||
$_L['Will_show_below_user_pages'] = 'Will show below user pages';
|
||||
$_L['Request_OTP'] = 'Request OTP';
|
||||
$_L['Verification_Code'] = 'Verification Code';
|
||||
$_L['SMS_Verification_Code'] = 'SMS Verification Code';
|
||||
$_L['Please_enter_your_email_address'] = 'Please enter your email address';
|
||||
$_L['Failed_to_create_Paypal_transaction'] = 'Failed to create Paypal transaction.';
|
||||
$_L['Plugin'] = 'Plugin';
|
||||
$_L['Plugin_Manager'] = 'Plugin Manager';
|
||||
$_L['User_Notification'] = 'User Notification';
|
||||
$_L['Expired_Notification'] = 'Expired Notification';
|
||||
$_L['User_will_get_notification_when_package_expired'] = 'User will get notification when package expired';
|
||||
$_L['Expired_Notification_Message'] = 'Expired Notification Message';
|
||||
$_L['bnameb_will_be_replaced_with_Customer_Name_bpackageb_will_be_replaced_with_Package_name'] = '<b>[[name]]</b> will be replaced with Customer Name. <b>[[package]]</b> will be replaced with Package name.';
|
||||
$_L['Payment_Notification'] = 'Payment Notification';
|
||||
$_L['User_will_get_invoice_notification_when_buy_package_or_package_refilled'] = 'User will get invoice notification when buy package or package refilled';
|
||||
$_L['Current_IP'] = 'Current IP';
|
||||
$_L['Current_MAC'] = 'Current MAC';
|
||||
$_L['Login_Status'] = 'Login Status';
|
||||
$_L['Login_Request_successfully'] = 'Login Request successfully';
|
||||
$_L['Logout_Request_successfully'] = 'Logout Request successfully';
|
||||
$_L['Disconnect_Internet'] = 'Disconnect Internet?';
|
||||
$_L['Not_Online_Login_now'] = 'Not Online, Login now?';
|
||||
$_L['You_are_Online_Logout'] = 'You are Online, Logout?';
|
||||
$_L['Connect_to_Internet'] = 'Connect to Internet?';
|
||||
$_L['Your_account_not_connected_to_internet'] = 'Your account not connected to internet';
|
||||
|
||||
$_L['Failed_to_create_transaction_'] = 'Failed to create transaction. ';
|
||||
$_L['Failed_to_check_status_transaction_'] = 'Failed to check status transaction. ';
|
||||
$_L['Disable_Voucher'] = 'Disable Voucher';
|
||||
$_L['Balance'] = 'Balance';
|
||||
$_L['Balance_System'] = 'Balance System';
|
||||
$_L['Enable_System'] = 'Enable System';
|
||||
$_L['Allow_Transfer'] = 'Allow Transfer';
|
||||
$_L['Telegram_Notification'] = 'Telegram Notification';
|
||||
$_L['SMS_OTP_Registration'] = 'SMS OTP Registration';
|
||||
$_L['Whatsapp_Notification'] = 'Whatsapp Notification';
|
||||
$_L['Tawkto_Chat_Widget'] = 'Tawk.to Chat Widget';
|
||||
$_L['Invoice'] = 'Invoice';
|
||||
$_L['Country_Code_Phone'] = 'Country Code Phone';
|
||||
$_L['Voucher_activation_menu_will_be_hidden'] = 'Voucher activation menu will be hidden';
|
||||
$_L['Customer_can_deposit_money_to_buy_voucher'] = 'Customer can deposit money to buy voucher';
|
||||
$_L['Allow_balance_transfer_between_customers'] = 'Allow balance transfer between customers';
|
||||
$_L['Reminder_Notification'] = 'Reminder Notification';
|
||||
$_L['Reminder_Notification_Message'] = 'Reminder Notification Message';
|
||||
$_L['Reminder_7_days'] = 'Reminder 7 days';
|
||||
$_L['Reminder_3_days'] = 'Reminder 3 days';
|
||||
$_L['Reminder_1_day'] = 'Reminder 1 day';
|
||||
$_L['PPPOE_Password'] = 'PPPOE Password';
|
||||
$_L['User_Cannot_change_this_only_admin_if_it_Empty_it_will_use_user_password'] = 'User Cannot change this, only admin. if it Empty it will use user password';
|
||||
$_L['Invoice_Balance_Message'] = 'Invoice Balance Message';
|
||||
$_L['Invoice_Notification_Payment'] = 'Invoice Notification Payment';
|
||||
$_L['Balance_Notification_Payment'] = 'Balance Notification Payment';
|
||||
$_L['Balance_Plans'] = 'Balance Plans';
|
||||
$_L['Buy_Balance'] = 'Buy Balance';
|
||||
$_L['Price'] = 'Price';
|
||||
$_L['Validity'] = 'Validity';
|
||||
$_L['Disable_auto_renewal'] = 'Disable auto renewal?';
|
||||
$_L['Auto_Renewal_On'] = 'Auto Renewal On';
|
||||
$_L['Enable_auto_renewal'] = 'Enable auto renewal?';
|
||||
$_L['Auto_Renewal_Off'] = 'Auto Renewal Off';
|
||||
$_L['Refill_Balance'] = 'Refill Balance';
|
||||
$_L['Invoice_Footer'] = 'Invoice Footer';
|
||||
$_L['Pay_With_Balance'] = 'Pay With Balance';
|
||||
$_L['Pay_this_with_Balance_your_active_package_will_be_overwrite'] = 'Pay this with Balance? your active package will be overwrite';
|
||||
$_L['Success_to_buy_package'] = 'Success to buy package';
|
||||
$_L['Auto_Renewal'] = 'Auto Renewal';
|
||||
$_L['View'] = 'View';
|
||||
$_L['Back'] = 'Back';
|
||||
$_L['Active'] = 'Active';
|
||||
$_L['Transfer_Balance'] = 'Transfer Balance';
|
||||
$_L['Send_your_balance'] = 'Send your balance?';
|
||||
$_L['Send'] = 'Send';
|
||||
$_L['Cannot_send_to_yourself'] = 'Cannot send to yourself';
|
||||
$_L['Sending_balance_success'] = 'Sending balance success';
|
||||
$_L['From'] = 'From';
|
||||
$_L['To'] = 'To';
|
||||
$_L['insufficient_balance'] = 'insufficient balance';
|
||||
$_L['Send_Balance'] = 'Send Balance';
|
||||
$_L['Received_Balance'] = 'Received Balance';
|
||||
$_L['Minimum_Balance_Transfer'] = 'Minimum Balance Transfer';
|
||||
$_L['Minimum_Transfer'] = 'Minimum Transfer';
|
||||
$_L['Company_Logo'] = 'Company Logo';
|
||||
$_L['Expired_IP_Pool'] = 'Expired IP Pool';
|
||||
$_L['Proxy'] = 'Proxy';
|
||||
$_L['Proxy_Server'] = 'Proxy Server';
|
||||
$_L['Proxy_Server_Login'] = 'Proxy Server Login';
|
||||
$_L['Hotspot_Plan'] = 'Hotspot Plan';
|
||||
$_L['PPPOE_Plan'] = 'PPPOE Plan';
|
||||
$_L['UNKNOWN'] = 'UNKNOWN';
|
||||
$_L['Are_You_Sure'] = 'Are You Sure?';
|
||||
$_L['Success_to_send_package'] = 'Success to send package';
|
||||
$_L['Target_has_active_plan_different_with_current_plant'] = 'Target has active plan, different with current plant.';
|
||||
$_L['Recharge_a_friend'] = 'Recharge a friend';
|
||||
$_L['Buy_for_friend'] = 'Buy for friend';
|
||||
$_L['Buy_this_for_friend_account'] = 'Buy this for friend account?';
|
||||
$_L['Review_package_before_recharge'] = 'Review package before recharge';
|
||||
$_L['Activate'] = 'Activate';
|
||||
$_L['Deactivate'] = 'Deactivate';
|
||||
$_L['Sync'] = 'Sync';
|
||||
$_L['Failed_to_create_PaymeTrust_transaction'] = 'Failed to create PaymeTrust transaction.';
|
||||
$_L['Location'] = 'Location';
|
||||
$_L['Radius_Plans'] = 'Radius Plans';
|
||||
$_L['Change_title_in_user_Plan_order'] = 'Change title in user Plan order';
|
||||
$_L['Logs'] = 'Logs';
|
||||
$_L['Voucher_Format'] = 'Voucher Format';
|
||||
$_L['Resend_To_Customer'] = 'Resend To Customer';
|
||||
$_L['Your_friend_do_not_have_active_package'] = 'Your friend do not have active package';
|
||||
$_L['Service_Type'] = 'Service Type';
|
||||
$_L['Others'] = 'Others';
|
||||
$_L['PPPoE'] = 'PPPoE';
|
||||
$_L['Hotspot'] = 'Hotspot';
|
||||
$_L['Disable_Registration'] = 'Disable Registration';
|
||||
$_L['Customer_just_Login_with_Phone_number_and_Voucher_Code_Voucher_will_be_password'] = 'Customer just Login with Phone number and Voucher Code, Voucher will be password';
|
||||
$_L['Login__Activate_Voucher'] = 'Login / Activate Voucher';
|
||||
$_L['After_Customer_activate_voucher_or_login_customer_will_be_redirected_to_this_url'] = 'After Customer activate voucher or login, customer will be redirected to this url';
|
@ -1,8 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Directory access is forbidden.</p>
|
||||
</body>
|
||||
</html>
|
384
system/lan/indonesia.json
Normal file
384
system/lan/indonesia.json
Normal file
@ -0,0 +1,384 @@
|
||||
{
|
||||
"Log_in": "Masuk",
|
||||
"Register": "Daftar",
|
||||
"Announcement": "Pemberitahuan",
|
||||
"Registration_Info": "Info Pendaftaran",
|
||||
"Voucher_not_found__please_buy_voucher_befor_register": "Voucher tidak ditemukan, silakan beli voucher sebelum mendaftar",
|
||||
"Register_Success__You_can_login_now": "Daftar Sukses! Anda dapat masuk sekarang",
|
||||
"Log_in_to_Member_Panel": "Masuk ke Panel Anggota",
|
||||
"Register_as_Member": "Daftar sebagai Anggota",
|
||||
"Enter_Admin_Area": "Masuk ke Admin Panel",
|
||||
"PHPNuxBill": "PHPNuxBill",
|
||||
"Username": "Nama Pengguna",
|
||||
"Password": "Kata Sandi",
|
||||
"Passwords_does_not_match": "Kata Sandi tidak cocok",
|
||||
"Account_already_axist": "Akun telah ada",
|
||||
"Manage": "Mengelola",
|
||||
"Submit": "Kirim",
|
||||
"Save_Changes": "Simpan perubahan",
|
||||
"Cancel": "Batal",
|
||||
"Edit": "Sunting",
|
||||
"Delete": "Hapus",
|
||||
"Welcome": "Selamat Datang",
|
||||
"Data_Created_Successfully": "Data Berhasil Dibuat",
|
||||
"Data_Updated_Successfully": "Data Berhasil Diperbarui",
|
||||
"Data_Deleted_Successfully": "Data Berhasil Dihapus",
|
||||
"Static_Pages": "Halaman Statis",
|
||||
"Failed_to_save_page__make_sure_i_can_write_to_folder_pages___i_chmod_664_pages___html_i_": "Gagal menyimpan halaman, pastikan diperbolehkan menulis file di folder pages, <i>chmod 664 pages\/*.html<i>",
|
||||
"Saving_page_success": "Menyimpan halaman sukses",
|
||||
"Sometimes_you_need_to_refresh_3_times_until_content_change": "Terkadang Anda perlu menyegarkan 3 kali hingga konten berubah",
|
||||
"Dashboard": "Dasbor",
|
||||
"Search_Customers___": "Cari Member...",
|
||||
"My_Account": "Akun Saya",
|
||||
"My_Profile": "Profil Saya",
|
||||
"Settings": "Pengaturan",
|
||||
"Edit_Profile": "Sunting profil",
|
||||
"Change_Password": "Ganti kata sandi",
|
||||
"Logout": "Keluar",
|
||||
"Services": "Layanan",
|
||||
"Bandwidth_Plans": "Paket Bandwidth",
|
||||
"Bandwidth_Name": "Nama Bandwidth",
|
||||
"New_Bandwidth": "Baru Bandwidth",
|
||||
"Edit_Bandwidth": "Sunting Bandwidth",
|
||||
"Add_New_Bandwidth": "Tambahkan Bandwidth Baru",
|
||||
"Rate_Download": "Nilai Unduhan",
|
||||
"Rate_Upload": "Nilai Unggahan",
|
||||
"Name_Bandwidth_Already_Exist": "NamanBandwidth Sudah Ada",
|
||||
"Hotspot_Plans": "Paket Hotspot",
|
||||
"PPPOE_Plans": "Paket PPPoE",
|
||||
"Plan_Name": "Nama Paket",
|
||||
"New_Service_Plan": "Paket Layanan Baru",
|
||||
"Add_Service_Plan": "Tambah Paket Layanan",
|
||||
"Edit_Service_Plan": "Sunting Paket Layanan",
|
||||
"Name_Plan_Already_Exist": "Nama Paket Sudah Ada",
|
||||
"Plan_Type": "Jenis Paket",
|
||||
"Plan_Price": "Harga Paket",
|
||||
"Limit_Type": "Tipe Batas",
|
||||
"Unlimited": "Tak terbatas",
|
||||
"Limited": "Terbatas",
|
||||
"Time_Limit": "Batas waktu",
|
||||
"Data_Limit": "Batas Data",
|
||||
"Both_Limit": "Keduanya Membatasi",
|
||||
"Plan_Validity": "Waktu Paket",
|
||||
"Select_Bandwidth": "Pilih Bandwidth",
|
||||
"Shared_Users": "Berbagi Pelanggan",
|
||||
"Choose_User_Type_Sales_to_disable_access_to_Settings": "Pilih Sales untuk menonaktifkan akses ke Pengaturan",
|
||||
"Current_Password": "Kata sandi saat ini",
|
||||
"New_Password": "Kata sandi baru",
|
||||
"Administrator": "Administrator",
|
||||
"Sales": "Sales",
|
||||
"Member": "Anggota",
|
||||
"Confirm_New_Password": "Konfirmasi sandi baru",
|
||||
"Confirm_Password": "konfirmasi sandi",
|
||||
"Full_Name": "Nama Lengkap",
|
||||
"User_Type": "Tipe Pelanggan",
|
||||
"Address": "Alamat",
|
||||
"Created_On": "Dibuat pada",
|
||||
"Expires_On": "Kadaluarsa pada",
|
||||
"Phone_Number": "Nomor telepon",
|
||||
"User_deleted_Successfully": "Pelanggan berhasil dihapus",
|
||||
"Full_Administrator": "Administrator Penuh",
|
||||
"Keep_Blank_to_do_not_change_Password": "Biarkan Kosong apabila tidak ingin mengubah Kata Sandi",
|
||||
"Keep_it_blank_if_you_do_not_want_to_show_currency_code": "Kosongkan jika Anda tidak ingin menampilkan kode mata uang",
|
||||
"Theme_Style": "Gaya Tema",
|
||||
"Theme_Color": "Warna Tema",
|
||||
"Default_Language": "Bahasa Bawaan",
|
||||
"Network": "Jaringan",
|
||||
"Routers": "Router",
|
||||
"IP_Pool": "IP Pool",
|
||||
"New_Router": "Router baru",
|
||||
"Add_Router": "Tambahkan Router",
|
||||
"Edit_Router": "Sunting Router",
|
||||
"Router_Name": "Nama Router",
|
||||
"IP_Address": "Alamat IP",
|
||||
"Router_Secret": "Rahasia Router",
|
||||
"Description": "Deskrispi",
|
||||
"IP_Router_Already_Exist": "IP Router Sudah Ada",
|
||||
"Name_Pool": "Nama Pool",
|
||||
"Range_IP": "Rentang IP",
|
||||
"New_Pool": "Pool baru",
|
||||
"Add_Pool": "Tambahkan Pool",
|
||||
"Edit_Pool": "Sunting Pool",
|
||||
"Pool_Name_Already_Exist": "Nama Pool Sudah Ada",
|
||||
"Prepaid": "Prabayar",
|
||||
"Prepaid_Users": "Pengguna Prabayar",
|
||||
"Prepaid_Vouchers": "Voucher Prabayar",
|
||||
"Refill_Account": "Isi Ulang Akun",
|
||||
"Recharge_Account": "Isi Ulang Akun",
|
||||
"Select_Account": "Pilih Akun",
|
||||
"Service_Plan": "Paket Layanan",
|
||||
"Recharge": "Isi Ulang",
|
||||
"Method": "Metode",
|
||||
"Account_Created_Successfully": "Akun Berhasil Dibuat",
|
||||
"Database_Status": "Status Database",
|
||||
"Total_Database_Size": "Ukuran Total Database",
|
||||
"Download_Database_Backup": "Unduh Cadangan Database",
|
||||
"Table_Name": "Nama Tabel",
|
||||
"Rows": "Baris",
|
||||
"Size": "Ukuran",
|
||||
"Customer": "Pelanggan",
|
||||
"Add_New_Contact": "Tambahkan Kontak Baru",
|
||||
"Edit_Contact": "Sunting Kontak",
|
||||
"List_Contact": "Daftar Kontak",
|
||||
"Manage_Contact": "Kelola Kontak",
|
||||
"Reports": "Laporan",
|
||||
"Daily_Reports": "Laporan Harian",
|
||||
"Period_Reports": "Laporan Periode",
|
||||
"All_Transactions": "Semua Transaksi",
|
||||
"Total_Income": "Jumlah Pemasukan",
|
||||
"All_Transactions_at_Date": "Semua Transaksi pada Tanggal",
|
||||
"Export_for_Print": "Ekspor untuk Cetak",
|
||||
"Print": "Cetak",
|
||||
"Export_to_PDF": "Ekspor ke PDF",
|
||||
"Click_Here_to_Print": "Klik Disini untuk Mencetak",
|
||||
"You_can_use_html_tag": "Anda dapat menggunakan tag html",
|
||||
"Date_Format": "Format tanggal",
|
||||
"Income_Today": "Pendapatan Hari Ini",
|
||||
"Income_This_Month": "Penghasilan Bulan Ini",
|
||||
"Users_Active": "Pelanggan Aktif",
|
||||
"Total_Users": "Total Pelanggan",
|
||||
"Users": "Pelanggan",
|
||||
"Edit_User": "Sunting Pelanggan",
|
||||
"Last_Login": "Terakhir Masuk",
|
||||
"Administrator_Users": "Pengguna Administrator",
|
||||
"Manage_Administrator": "Kelola Administrator",
|
||||
"Add_New_Administrator": "Tambahkan Administrator Baru",
|
||||
"Localisation": "Lokalisasi",
|
||||
"Backup_Restore": "Cadangkan\/Pulihkan",
|
||||
"General_Settings": "Pengaturan Umum",
|
||||
"Date": "Tanggal",
|
||||
"Login_Successful": "Berhasil Masuk",
|
||||
"Failed_Login": "Gagal Masuk",
|
||||
"Settings_Saved_Successfully": "Pengaturan Berhasil Disimpan",
|
||||
"User_Updated_Successfully": "Pengguna Berhasil Diperbarui",
|
||||
"User_Expired__Today": "Pengguna Kedaluwarsa, Hari Ini",
|
||||
"Activity_Log": "Log aktivitas",
|
||||
"View_Reports": "Lihat Laporan",
|
||||
"View_All": "Lihat semua",
|
||||
"Number_of_Vouchers": "Jumlah Voucher",
|
||||
"Length_Code": "Kode Panjang",
|
||||
"Code_Voucher": "Kode Voucher",
|
||||
"Voucher": "Voucher",
|
||||
"Hotspot_Voucher": "Voucher Hotspot",
|
||||
"Status_Voucher": "Voucher Status",
|
||||
"Add_Vouchers": "Tambah Voucher",
|
||||
"Create_Vouchers_Successfully": "Buat Voucher Berhasil",
|
||||
"Generate": "Menghasilkan",
|
||||
"Print_side_by_side__it_will_easy_to_cut": "Info Cetak",
|
||||
"From_Date": "Dari tanggal",
|
||||
"To_Date": "Hingga saat ini",
|
||||
"New_Service": "Layanan Baru",
|
||||
"Type": "Jenis",
|
||||
"Finish": "Menyelesaikan",
|
||||
"Application_Name__Company_Name": "Nama Aplikasi\/ Nama Perusahaan",
|
||||
"This_Name_will_be_shown_on_the_Title": "Nama ini akan ditampilkan pada Judul",
|
||||
"Next": "Berikutnya",
|
||||
"Last": "Terakhir",
|
||||
"Timezone": "Zona waktu",
|
||||
"Decimal_Point": "Titik Desimal",
|
||||
"Thousands_Separator": "Pemisah Ribuan",
|
||||
"Currency_Code": "Kode mata uang",
|
||||
"Order_Voucher": "Pesan Voucher",
|
||||
"Voucher_Activation": "Aktivasi Voucher",
|
||||
"List_Activated_Voucher": "Daftar Voucher yang Diaktifkan",
|
||||
"Enter_voucher_code_here": "Masukkan kode voucher di sini",
|
||||
"Private_Message": "Pesan Pribadi",
|
||||
"Inbox": "Kotak Masuk",
|
||||
"Outbox": "Kotak Keluar",
|
||||
"Compose": "Menyusun",
|
||||
"Send_to": "Kirim ke",
|
||||
"Title": "Judul",
|
||||
"Message": "Pesan",
|
||||
"Your_Account_Information": "Informasi Akun Anda",
|
||||
"Welcome_to_the_Panel_Members_page__on_this_page_you_can_": "Selamat datang di halaman Anggota Panel, di halaman ini Anda dapat:",
|
||||
"Invalid_Username_or_Password": "Nama pengguna dan kata sandi salah",
|
||||
"You_do_not_have_permission_to_access_this_page": "Anda tidak memiliki izin untuk mengakses halaman ini",
|
||||
"Incorrect_Current_Password": "Kata Sandi Saat Ini Salah",
|
||||
"Password_changed_successfully__Please_login_again": "Kata sandi berhasil diubah, Silakan login kembali",
|
||||
"All_field_is_required": "Semua bidang wajib diisi",
|
||||
"Voucher_Not_Valid": "Voucher Tidak Berlaku",
|
||||
"Activation_Vouchers_Successfully": "Aktivasi Voucher Berhasil",
|
||||
"Data_Not_Found": "Data Tidak Ditemukan",
|
||||
"Search_by_Username": "Cari berdasarkan Nama Pengguna",
|
||||
"Search_by_Name": "Cari berdasarkan Nama",
|
||||
"Search_by_Code_Voucher": "Cari berdasarkan Kode Voucher",
|
||||
"Search": "Mencari",
|
||||
"Select_a_customer": "Pilih pelanggan",
|
||||
"Select_Routers": "Pilih Router",
|
||||
"Select_Plans": "Pilih Paket",
|
||||
"Select_Pool": "Pilih Pool",
|
||||
"Hrs": "Jam",
|
||||
"Mins": "Menit",
|
||||
"Days": "Hari",
|
||||
"Months": "Bulan",
|
||||
"Add_Language": "Tambahkan Bahasa",
|
||||
"Language_Name": "Nama Bahasa",
|
||||
"Folder_Name": "Nama Folder",
|
||||
"Translator": "Penerjemah",
|
||||
"Language_Name_Already_Exist": "Nama Bahasa Sudah Ada",
|
||||
"Payment_Gateway": "Gerbang Pembayaran",
|
||||
"Community": "Komunitas",
|
||||
"1_user_can_be_used_for_many_devices_": "1 pengguna bisa digunakan untuk banyak perangkat?",
|
||||
"Cannot_be_change_after_saved": "Tidak dapat diubah setelah disimpan",
|
||||
"Explain_Coverage_of_router": "Jelaskan Cakupan router",
|
||||
"Name_of_Area_that_router_operated": "Nama area tempat router dioperasikan",
|
||||
"Payment_Notification_URL__Recurring_Notification_URL__Pay_Account_Notification_URL": "URL Notifikasi Pembayaran, URL Notifikasi Berulang, URL Notifikasi Akun Bayar",
|
||||
"Finish_Redirect_URL__Unfinish_Redirect_URL__Error_Redirect_URL": "Selesaikan URL Pengalihan, Selesaikan URL Pengalihan, URL Pengalihan Kesalahan",
|
||||
"Status": "Status",
|
||||
"Plan_Not_found": "Paket Tidak ditemukan",
|
||||
"Failed_to_create_transaction_": "Gagal membuat transaksi.",
|
||||
"Seller_has_not_yet_setup_Xendit_payment_gateway": "Penjual belum menyiapkan gateway pembayaran Xendit",
|
||||
"Admin_has_not_yet_setup_Xendit_payment_gateway__please_tell_admin": "Admin belum menyiapkan gerbang pembayaran Xendit, mohon beritahu admin",
|
||||
"Buy_this__your_active_package_will_be_overwrite": "Beli ini? Paket aktif Anda akan ditimpa",
|
||||
"You_already_have_unpaid_transaction__cancel_it_or_pay_it_": "Anda sudah memiliki transaksi yang belum dibayar, batalkan atau bayar.",
|
||||
"Transaction_Not_found": "Transaksi Tidak ditemukan",
|
||||
"Cancel_it_": "Batalkan itu?",
|
||||
"expired": "kedaluwarsa",
|
||||
"Check_for_Payment": "Periksa Pembayaran",
|
||||
"Transaction_still_unpaid_": "Transaksi masih belum dibayar.",
|
||||
"Paid_Date": "Tanggal Pembayaran",
|
||||
"Transaction_has_been_paid_": "Transaksi telah dibayar.",
|
||||
"PAID": "DIBAYAR",
|
||||
"CANCELED": "DIBATALKAN",
|
||||
"UNPAID": "BELUM DIBAYAR",
|
||||
"PAY_NOW": "BAYAR SEKARANG",
|
||||
"Buy_Hotspot_Plan": "Beli Paket Hotspot",
|
||||
"Buy_PPOE_Plan": "Beli Paket PPPoE",
|
||||
"Package": "Paket",
|
||||
"Order_Internet_Package": "Pesan Paket Internet",
|
||||
"Unknown_Command_": "Perintah Tidak Diketahui.",
|
||||
"Checking_payment": "Memeriksa pembayaran",
|
||||
"Create_Transaction_Success": "Transaksi Berhasil Dibuat",
|
||||
"You_have_unpaid_transaction": "Anda memiliki transaksi yang belum dibayar",
|
||||
"TripayPayment_Channel": "Saluran Pembayaran Tripay",
|
||||
"Payment_Channel": "Saluran Pembayaran",
|
||||
"Payment_check_failed_": "Pemeriksaan pembayaran gagal.",
|
||||
"Order_Package": "Pesan Paket",
|
||||
"Transactions": "Transaksi",
|
||||
"Payments": "Pembayaran",
|
||||
"History": "Riwayat",
|
||||
"Order_History": "Riwayat Pesanan",
|
||||
"Gateway": "Gerbang",
|
||||
"Date_Done": "Tanggal Selesai",
|
||||
"Unpaid_Order": "Pesanan Belum Dibayar",
|
||||
"Payment_Gateway_Not_Found": "Gerbang Pembayaran Tidak Ditemukan",
|
||||
"Payment_Gateway_saved_successfully": "Gerbang Pembayaran berhasil disimpan",
|
||||
"ORDER": "MEMESAN",
|
||||
"Package_History": "Riwayat Paket",
|
||||
"Buy_History": "Riwayat Beli",
|
||||
"Activation_History": "Riwayat Aktivasi",
|
||||
"Buy_Package": "Beli Paket",
|
||||
"Email": "Surel",
|
||||
"Company_Footer": "Catatan Kaki Perusahaan",
|
||||
"Will_show_below_user_pages": "Akan ditampilkan di bawah halaman pengguna",
|
||||
"Request_OTP": "Minta OTP",
|
||||
"Verification_Code": "Kode Verifikasi",
|
||||
"SMS_Verification_Code": "Kode Verifikasi SMS",
|
||||
"Please_enter_your_email_address": "Silakan masukkan alamat email Anda",
|
||||
"Failed_to_create_Paypal_transaction_": "Gagal membuat transaksi Paypal.",
|
||||
"Plugin": "Plugin",
|
||||
"Plugin_Manager": "Manajer Plugin",
|
||||
"User_Notification": "Pemberitahuan Pelanggan",
|
||||
"Expired_Notification": "Pemberitahuan Kedaluarsa",
|
||||
"User_will_get_notification_when_package_expired": "Pengguna akan mendapat notifikasi ketika paket sudah habis masa berlakunya",
|
||||
"Expired_Notification_Message": "Pesan Pemberitahuan Kedaluwarsa",
|
||||
"Payment_Notification": "Notifikasi Pembayaran",
|
||||
"User_will_get_invoice_notification_when_buy_package_or_package_refilled": "Pengguna akan mendapatkan notifikasi invoice saat membeli paket atau isi ulang paket",
|
||||
"Current_IP": "IP saat ini",
|
||||
"Current_MAC": "MAC saat ini",
|
||||
"Login_Status": "Status Masuk",
|
||||
"Login_Request_successfully": "Permintaan Masuk berhasil",
|
||||
"Logout_Request_successfully": "Permintaan Keluar berhasil",
|
||||
"Disconnect_Internet_": "Putuskan sambungan Internet?",
|
||||
"Not_Online__Login_now_": "Tidak , Masuk sekarang?",
|
||||
"You_are_Online__Logout_": "Kamu sedang aktif, ingin keluar?",
|
||||
"Connect_to_Internet_": "Hubungkan ke Internet?",
|
||||
"Your_account_not_connected_to_internet": "Akun Anda tidak terhubung ke internet",
|
||||
"Failed_to_create_transaction__": "Gagal membuat transaksi. ",
|
||||
"Failed_to_check_status_transaction__": "Gagal memeriksa status transaksi. ",
|
||||
"Disable_Voucher": "Nonaktifkan Voucher",
|
||||
"Balance": "Saldo",
|
||||
"Balance_System": "Saldo Sistem",
|
||||
"Enable_System": "Aktifkan Sistem",
|
||||
"Allow_Transfer": "Izinkan Transfer",
|
||||
"Telegram_Notification": "Pemberitahuan Telegram",
|
||||
"SMS_OTP_Registration": "Pendaftaran SMS OTP",
|
||||
"Whatsapp_Notification": "Pemberitahuan WhatsApp",
|
||||
"Tawk_to_Chat_Widget": "Widget Obrolan Tawk.to",
|
||||
"Invoice": "Faktur",
|
||||
"Country_Code_Phone": "Kode Negara Telepon",
|
||||
"Voucher_activation_menu_will_be_hidden": "Menu aktivasi voucher akan disembunyikan",
|
||||
"Customer_can_deposit_money_to_buy_voucher": "Pelanggan dapat menyetor uang untuk membeli voucher",
|
||||
"Allow_balance_transfer_between_customers": "Izinkan transfer saldo antar pelanggan",
|
||||
"Reminder_Notification": "Pemberitahuan Pengingat",
|
||||
"Reminder_Notification_Message": "Pesan Pemberitahuan Pengingat",
|
||||
"Reminder_7_days": "Pengingat 7 hari",
|
||||
"Reminder_3_days": "Pengingat 3 hari",
|
||||
"Reminder_1_day": "Pengingat 1 hari",
|
||||
"PPPOE_Password": "Kata sandi PPPoE",
|
||||
"User_Cannot_change_this__only_admin__if_it_Empty_it_will_use_user_password": "Pelanggan tidak dapat mengubah ini, hanya Admin. Jika kosong maka akan menggunakan kata sandi pelanggan",
|
||||
"Invoice_Balance_Message": "Faktur Pesan Saldo",
|
||||
"Invoice_Notification_Payment": "Faktur Pemberitahuan Pembayaran",
|
||||
"Balance_Notification_Payment": "Saldo Pemberitahuan Pembayaran",
|
||||
"Balance_Plans": "Paket Saldo",
|
||||
"Buy_Balance": "Beli Saldo",
|
||||
"Price": "Harga",
|
||||
"Validity": "Waktu",
|
||||
"Disable_auto_renewal_": "Nonaktifkan perpanjangan otomatis?",
|
||||
"Auto_Renewal_On": "Perpanjangan Otomatis Aktif",
|
||||
"Enable_auto_renewal_": "Aktifkan perpanjangan otomatis?",
|
||||
"Auto_Renewal_Off": "Perpanjangan Otomatis Mati",
|
||||
"Refill_Balance": "Isi Ulang Saldo",
|
||||
"Invoice_Footer": "Catatan Kaki Faktur",
|
||||
"Pay_With_Balance": "Bayar dengan Saldo",
|
||||
"Pay_this_with_Balance__your_active_package_will_be_overwrite": "Bayar ini dengan Saldo? Paket aktif Anda akan ditimpa",
|
||||
"Success_to_buy_package": "Berhasil membeli paket",
|
||||
"Auto_Renewal": "Perpanjangan otomatis",
|
||||
"View": "Melihat",
|
||||
"Back": "Kembali",
|
||||
"Active": "Aktif",
|
||||
"Transfer_Balance": "Kirim Saldo",
|
||||
"Send_your_balance_": "Kirim saldo Anda?",
|
||||
"Send": "Kirim",
|
||||
"Cannot_send_to_yourself": "Tidak dapat mengirim ke diri Anda sendiri",
|
||||
"Sending_balance_success": "Berhasil mengirim saldo",
|
||||
"From": "Dari",
|
||||
"To": "Ke",
|
||||
"insufficient_balance": "Saldo tidak mencukupi",
|
||||
"Send_Balance": "Kirim Saldo",
|
||||
"Received_Balance": "Saldo yang Diterima",
|
||||
"Minimum_Balance_Transfer": "Minimal Transfer Saldo",
|
||||
"Minimum_Transfer": "Minimal Transfer",
|
||||
"Company_Logo": "Logo Perusahaan",
|
||||
"Expired_IP_Pool": "IP Pool Kedaluwarsa",
|
||||
"Proxy": "Proksi",
|
||||
"Proxy_Server": "Server Proksi",
|
||||
"Proxy_Server_Login": "Masuk Server Proksi",
|
||||
"Hotspot_Plan": "Paket Hotspot",
|
||||
"PPPOE_Plan": "Paket PPPoE",
|
||||
"UNKNOWN": "TIDAK DIKENAL",
|
||||
"Are_You_Sure_": "Apa kamu yakin?",
|
||||
"Success_to_send_package": "Berhasil mengirim paket",
|
||||
"Target_has_active_plan__different_with_current_plant_": "Target mempunyai paket aktif, berbeda dengan paket saat ini.",
|
||||
"Recharge_a_friend": "Isi ulang teman",
|
||||
"Buy_for_friend": "Beli untuk teman",
|
||||
"Buy_this_for_friend_account_": "Beli ini untuk akun teman?",
|
||||
"Review_package_before_recharge": "Tinjau paket sebelum mengisi ulang",
|
||||
"Activate": "Mengaktifkan Paket",
|
||||
"Deactivate": "Menonaktifkan Paket",
|
||||
"Sync": "Sinkronisasi",
|
||||
"Failed_to_create_PaymeTrust_transaction_": "Gagal membuat transaksi PaymeTrust.",
|
||||
"Location": "Lokasi",
|
||||
"Radius_Plans": "Paket Radius",
|
||||
"Change_title_in_user_Plan_order": "Ubah judul dalam urutan paket pelanggan",
|
||||
"Logs": "Log",
|
||||
"Voucher_Format": "Format Voucher",
|
||||
"Resend_To_Customer": "Kirim Ulang Ke Pelanggan",
|
||||
"Service_Type": "Service Type",
|
||||
"Others": "Lainnya",
|
||||
"PPPoE": "PPPoE",
|
||||
"Hotspot": "Hotspot",
|
||||
"Monthly_Registered_Customers": "Pendaftaran Pelanggan perbulan",
|
||||
"Total_Monthly_Sales": "Total penjualan Perbulan",
|
||||
"Active_Users": "Pelanggan Aktif"
|
||||
}
|
@ -1,414 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
-----------------------------------
|
||||
Language Name: Indonesia
|
||||
Contributor: Ismail Marzuqi
|
||||
Web: www.phpnuxbill.com
|
||||
Email: iesien22@yahoo.com
|
||||
|
||||
2017
|
||||
Contributor: Ibnu Maksum (@ibnux)
|
||||
|
||||
------------------------------------
|
||||
*/
|
||||
|
||||
$_L['Login'] = 'Masuk';
|
||||
$_L['Register'] = 'Daftar';
|
||||
$_L['Announcement'] = 'Pemberitahuan';
|
||||
$_L['Registration_Info'] = 'Info Pendaftaran';
|
||||
$_L['Register_Voucher_Failed'] = 'Voucher tidak ditemukan, silakan beli voucher sebelum mendaftar';
|
||||
$_L['Register_Success'] = 'Daftar Sukses! Anda dapat masuk sekarang';
|
||||
$_L['Sign_In_Member'] = 'Masuk ke Panel Anggota';
|
||||
$_L['Register_Member'] = 'Daftar sebagai Anggota';
|
||||
$_L['Sign_In_Admin'] = 'Masuk ke Admin Panel';
|
||||
$_L['Logo'] = 'PHPNuxBill';
|
||||
$_L['Username'] = 'Nama Pengguna';
|
||||
$_L['Password'] = 'Kata Sandi';
|
||||
$_L['PasswordsNotMatch'] = 'Kata Sandi tidak cocok';
|
||||
$_L['account_already_exist'] = 'Akun telah ada';
|
||||
$_L['Manage'] = 'Mengelola';
|
||||
$_L['Submit'] = 'Kirim';
|
||||
$_L['Save'] = 'Simpan perubahan';
|
||||
$_L['Cancel'] = 'Batal';
|
||||
$_L['Edit'] = 'Sunting';
|
||||
$_L['Delete'] = 'Hapus';
|
||||
$_L['Welcome'] = 'Selamat Datang';
|
||||
$_L['Created_Successfully'] = 'Data Berhasil Dibuat';
|
||||
$_L['Updated_Successfully'] = 'Data Berhasil Diperbarui';
|
||||
$_L['Delete_Successfully'] = 'Data Berhasil Dihapus';
|
||||
|
||||
$_L['Static_Pages'] = "Halaman Statis";
|
||||
$_L['Failed_Save_Page'] = "Gagal menyimpan halaman, pastikan diperbolehkan menulis file di folder pages, <i>chmod 664 pages/*.html<i>";
|
||||
$_L['Success_Save_Page'] = "Menyimpan halaman sukses";
|
||||
$_L['Info_Page'] = "Terkadang Anda perlu menyegarkan 3 kali hingga konten berubah";
|
||||
|
||||
$_L['Dashboard'] = 'Dasbor';
|
||||
$_L['Search_Contact'] = 'Cari Member...';
|
||||
$_L['My_Account'] = 'Akun Saya';
|
||||
$_L['My_Profile'] = 'Profil Saya';
|
||||
$_L['Settings'] = 'Pengaturan';
|
||||
$_L['Edit_Profile'] = 'Sunting profil';
|
||||
$_L['Change_Password'] = 'Ganti kata sandi';
|
||||
$_L['Logout'] = 'Keluar';
|
||||
|
||||
$_L['Services'] = 'Layanan';
|
||||
$_L['Bandwidth_Plans'] = 'Paket Bandwidth';
|
||||
$_L['BW_Name'] = 'Nama Bandwidth';
|
||||
$_L['New_Bandwidth'] = 'Baru Bandwidth';
|
||||
$_L['Edit_Bandwidth'] = 'Sunting Bandwidth';
|
||||
$_L['Add_Bandwidth'] = 'Tambahkan Bandwidth Baru';
|
||||
$_L['Rate_Download'] = 'Nilai Unduhan';
|
||||
$_L['Rate_Upload'] = 'Nilai Unggahan';
|
||||
$_L['BW_already_exist'] = 'NamanBandwidth Sudah Ada';
|
||||
$_L['Hotspot_Plans'] = 'Paket Hotspot';
|
||||
$_L['PPPOE_Plans'] = 'Paket PPPoE';
|
||||
$_L['Plan_Name'] = 'Nama Paket';
|
||||
$_L['New_Plan'] = 'Paket Layanan Baru';
|
||||
$_L['Add_Plan'] = 'Tambah Paket Layanan';
|
||||
$_L['Edit_Plan'] = 'Sunting Paket Layanan';
|
||||
$_L['Plan_already_exist'] = 'Nama Paket Sudah Ada';
|
||||
$_L['Plan_Type'] = 'Jenis Paket';
|
||||
$_L['Plan_Price'] = 'Harga Paket';
|
||||
$_L['Limit_Type'] = 'Tipe Batas';
|
||||
$_L['Unlimited'] = 'Tak terbatas';
|
||||
$_L['Limited'] = 'Terbatas';
|
||||
$_L['Time_Limit'] = 'Batas waktu';
|
||||
$_L['Data_Limit'] = 'Batas Data';
|
||||
$_L['Both_Limit'] = 'Keduanya Membatasi';
|
||||
$_L['Plan_Validity'] = 'Waktu Paket';
|
||||
$_L['Select_BW'] = 'Pilih Bandwidth';
|
||||
$_L['Shared_Users'] = 'Berbagi Pelanggan';
|
||||
|
||||
$_L['user_type_help'] = 'Pilih Sales untuk menonaktifkan akses ke Pengaturan';
|
||||
$_L['Current_Password'] = 'Kata sandi saat ini';
|
||||
$_L['New_Password'] = 'Kata sandi baru';
|
||||
$_L['Administrator'] = 'Administrator';
|
||||
$_L['Sales'] = 'Sales';
|
||||
$_L['Member'] = 'Anggota';
|
||||
$_L['Confirm_New_Password'] = 'Konfirmasi sandi baru';
|
||||
$_L['Confirm_Password'] = 'konfirmasi sandi';
|
||||
$_L['Full_Name'] = 'Nama Lengkap';
|
||||
$_L['User_Type'] = 'Tipe Pelanggan';
|
||||
$_L['Address'] = 'Alamat';
|
||||
$_L['Created_On'] = 'Dibuat pada';
|
||||
$_L['Expires_On'] = 'Kadaluarsa pada';
|
||||
$_L['Phone_Number'] = 'Nomor telepon';
|
||||
$_L['User_Delete_Ok'] = 'Pelanggan berhasil dihapus';
|
||||
$_L['Full_Administrator'] = 'Administrator Penuh';
|
||||
$_L['password_change_help'] = 'Biarkan Kosong apabila tidak ingin mengubah Kata Sandi';
|
||||
$_L['currency_help'] = 'Kosongkan jika Anda tidak ingin menampilkan kode mata uang';
|
||||
$_L['Theme_Style'] = 'Gaya Tema';
|
||||
$_L['Theme_Color'] = 'Warna Tema';
|
||||
$_L['Default_Language'] = 'Bahasa Bawaan';
|
||||
|
||||
$_L['Network'] = 'Jaringan';
|
||||
$_L['Routers'] = 'Router';
|
||||
$_L['Pool'] = 'IP Pool';
|
||||
$_L['New_Router'] = 'Router baru';
|
||||
$_L['Add_Router'] = 'Tambahkan Router';
|
||||
$_L['Edit_Router'] = 'Sunting Router';
|
||||
$_L['Router_Name'] = 'Nama Router';
|
||||
$_L['IP_Address'] = 'Alamat IP';
|
||||
$_L['Router_Secret'] = 'Rahasia Router';
|
||||
$_L['Description'] = 'Deskrispi';
|
||||
$_L['Router_already_exist'] = 'IP Router Sudah Ada';
|
||||
$_L['Pool_Name'] = 'Nama Pool';
|
||||
$_L['Range_IP'] = 'Rentang IP';
|
||||
$_L['New_Pool'] = 'Pool baru';
|
||||
$_L['Add_Pool'] = 'Tambahkan Pool';
|
||||
$_L['Edit_Pool'] = 'Sunting Pool';
|
||||
$_L['Pool_already_exist'] = 'Nama Pool Sudah Ada';
|
||||
|
||||
$_L['Prepaid'] = 'Prabayar';
|
||||
$_L['Prepaid_User'] = 'Pengguna Prabayar';
|
||||
$_L['Prepaid_Vouchers'] = 'Voucher Prabayar';
|
||||
$_L['Refill_Account'] = 'Isi Ulang Akun';
|
||||
$_L['Recharge_Account'] = 'Isi Ulang Akun';
|
||||
$_L['Select_Account'] = 'Pilih Akun';
|
||||
$_L['Service_Plan'] = 'Paket Layanan';
|
||||
$_L['Recharge'] = 'Isi Ulang';
|
||||
$_L['Method'] = 'Metode';
|
||||
$_L['account_created_successfully'] = 'Akun Berhasil Dibuat';
|
||||
|
||||
$_L['Database_Status'] = 'Status Database';
|
||||
$_L['Total_Database_Size'] = 'Ukuran Total Database';
|
||||
$_L['Download_Database_Backup'] = 'Unduh Cadangan Database';
|
||||
$_L['Table_Name'] = 'Nama Tabel';
|
||||
$_L['Rows'] = 'Baris';
|
||||
$_L['Size'] = 'Ukuran';
|
||||
|
||||
$_L['Customers'] = 'Pelanggan';
|
||||
$_L['Add_Contact'] = 'Tambahkan Kontak Baru';
|
||||
$_L['Edit_Contact'] = 'Sunting Kontak';
|
||||
$_L['List_Contact'] = 'Daftar Kontak';
|
||||
$_L['Manage_Accounts'] = 'Kelola Kontak';
|
||||
|
||||
$_L['Reports'] = 'Laporan';
|
||||
$_L['Daily_Report'] = 'Laporan Harian';
|
||||
$_L['Period_Reports'] = 'Laporan Periode';
|
||||
$_L['All_Transactions'] = 'Semua Transaksi';
|
||||
$_L['Total_Income'] = 'Jumlah Pemasukan';
|
||||
$_L['All_Transactions_at_Date'] = 'Semua Transaksi pada Tanggal';
|
||||
$_L['Total_Income'] = 'Jumlah Pemasukan';
|
||||
$_L['Export_for_Print'] = 'Ekspor untuk Cetak';
|
||||
$_L['Print'] = 'Cetak';
|
||||
$_L['Export_to_PDF'] = 'Ekspor ke PDF';
|
||||
$_L['Click_Here_to_Print'] = 'Klik Disini untuk Mencetak';
|
||||
$_L['You_can_use_html_tag'] = 'Anda dapat menggunakan tag html';
|
||||
$_L['Date_Format'] = 'Format tanggal';
|
||||
$_L['Income_Today'] = 'Pendapatan Hari Ini';
|
||||
$_L['Income_This_Month'] = 'Penghasilan Bulan Ini';
|
||||
$_L['Users_Active'] = 'Pelanggan Aktif';
|
||||
$_L['Total_Users'] = 'Total Pelanggan';
|
||||
$_L['Users'] = 'Pelanggan';
|
||||
$_L['Edit_User'] = 'Sunting Pelanggan';
|
||||
$_L['Last_Login'] = 'Terakhir Masuk';
|
||||
$_L['Administrator_Users'] = 'Pengguna Administrator';
|
||||
$_L['Manage_Administrator'] = 'Kelola Administrator';
|
||||
$_L['Add_New_Administrator'] = 'Tambahkan Administrator Baru';
|
||||
$_L['Localisation'] = 'Lokalisasi';
|
||||
$_L['Backup_Restore'] = 'Cadangkan/Pulihkan';
|
||||
|
||||
$_L['General_Settings'] = 'Pengaturan Umum';
|
||||
$_L['Date'] = 'Tanggal';
|
||||
$_L['Login_Successful'] = 'Berhasil Masuk';
|
||||
$_L['Failed_Login'] = 'Gagal Masuk';
|
||||
$_L['Settings_Saved_Successfully'] = 'Pengaturan Berhasil Disimpan';
|
||||
$_L['User_Updated_Successfully'] = 'Pengguna Berhasil Diperbarui';
|
||||
$_L['User_Expired_Today'] = 'Pengguna Kedaluwarsa, Hari Ini';
|
||||
$_L['Activity_Log'] = 'Log aktivitas';
|
||||
$_L['View_Reports'] = 'Lihat Laporan';
|
||||
$_L['View_All'] = 'Lihat semua';
|
||||
$_L['Number_of_Vouchers'] = 'Jumlah Voucher';
|
||||
$_L['Length_Code'] = 'Kode Panjang';
|
||||
$_L['Code_Voucher'] = 'Kode Voucher';
|
||||
$_L['Voucher'] = 'Voucher';
|
||||
$_L['Voucher_Hotspot'] = 'Voucher Hotspot';
|
||||
$_L['Status_Voucher'] = 'Voucher Status';
|
||||
$_L['Add_Voucher'] = 'Tambah Voucher';
|
||||
$_L['Voucher_Successfully'] = 'Buat Voucher Berhasil';
|
||||
$_L['Generate'] = 'Menghasilkan';
|
||||
$_L['Print_Info'] = 'Info Cetak';
|
||||
|
||||
$_L['From_Date'] = 'Dari tanggal';
|
||||
$_L['To_Date'] = 'Hingga saat ini';
|
||||
$_L['New_Service'] = 'Layanan Baru';
|
||||
$_L['Type'] = 'Jenis';
|
||||
$_L['Finish'] = 'Menyelesaikan';
|
||||
$_L['App_Name'] = 'Nama Aplikasi/ Nama Perusahaan';
|
||||
$_L['App_Name_Help_Text'] = 'Nama ini akan ditampilkan pada Judul';
|
||||
$_L['Next'] = 'Berikutnya';
|
||||
$_L['Last'] = 'Terakhir';
|
||||
$_L['Timezone'] = 'Zona waktu';
|
||||
$_L['Decimal_Point'] = 'Titik Desimal';
|
||||
$_L['Thousands_Separator'] = 'Pemisah Ribuan';
|
||||
$_L['Currency_Code'] = 'Kode mata uang';
|
||||
|
||||
$_L['Order_Voucher'] = 'Pesan Voucher';
|
||||
$_L['Voucher_Activation'] = 'Aktivasi Voucher';
|
||||
$_L['List_Activated_Voucher'] = 'Daftar Voucher yang Diaktifkan';
|
||||
$_L['Enter_Voucher_Code'] = 'Masukkan kode voucher di sini';
|
||||
$_L['Private_Message'] = 'Pesan Pribadi';
|
||||
$_L['Inbox'] = 'Kotak Masuk';
|
||||
$_L['Outbox'] = 'Kotak Keluar';
|
||||
$_L['Compose'] = 'Menyusun';
|
||||
$_L['Send_to'] = 'Kirim ke';
|
||||
$_L['Title'] = 'Judul';
|
||||
$_L['Message'] = 'Pesan';
|
||||
$_L['Account_Information'] = 'Informasi Akun Anda';
|
||||
$_L['Welcome_Text_User'] = 'Selamat datang di halaman Anggota Panel, di halaman ini Anda dapat:';
|
||||
$_L['Welcome_Text_Admin'] = '<b>PHPNuxBill</b> adalah penagihan Hotspot dan PPPoE untuk Mikrotik menggunakan PHP dan Mikrotik API untuk berkomunikasi dengan router. Jika Anda mendapat lebih banyak keuntungan dengan aplikasi ini, silakan berdonasi kepada kami.<br>Tonton proyek <a href="https://github.com/hotspotbilling/phpnuxbill" target="_blank">Disini</a>';
|
||||
|
||||
//update
|
||||
$_L['Invalid_Username_or_Password'] = 'Nama pengguna dan kata sandi salah';
|
||||
$_L['Do_Not_Access'] = 'Anda tidak memiliki izin untuk mengakses halaman ini';
|
||||
$_L['Incorrect_Current_Password'] = 'Kata Sandi Saat Ini Salah';
|
||||
$_L['Password_Changed_Successfully'] = 'Kata sandi berhasil diubah, Silakan login kembali';
|
||||
$_L['All_field_is_required'] = 'Semua bidang wajib diisi';
|
||||
$_L['Voucher_Not_Valid'] = 'Voucher Tidak Berlaku';
|
||||
$_L['Activation_Vouchers_Successfully'] = 'Aktivasi Voucher Berhasil';
|
||||
$_L['Data_Not_Found'] = 'Data Tidak Ditemukan';
|
||||
$_L['Search_by_Username'] = 'Cari berdasarkan Nama Pengguna';
|
||||
$_L['Search_by_Name'] = 'Cari berdasarkan Nama';
|
||||
$_L['Search_by_Code'] = 'Cari berdasarkan Kode Voucher';
|
||||
$_L['Search'] = 'Mencari';
|
||||
$_L['Select_Customer'] = 'Pilih pelanggan';
|
||||
$_L['Select_Routers'] = 'Pilih Router';
|
||||
$_L['Select_Plans'] = 'Pilih Paket';
|
||||
$_L['Select_Pool'] = 'Pilih Pool';
|
||||
$_L['Hrs'] = 'Jam';
|
||||
$_L['Mins'] = 'Menit';
|
||||
$_L['Days'] = 'Hari';
|
||||
$_L['Months'] = 'Bulan';
|
||||
|
||||
$_L['Add_Language'] = 'Tambahkan Bahasa';
|
||||
$_L['Name_Lang'] = 'Nama Bahasa';
|
||||
$_L['Folder_Lang'] = 'Nama Folder';
|
||||
$_L['Translator'] = 'Penerjemah';
|
||||
$_L['Lang_already_exist'] = 'Nama Bahasa Sudah Ada';
|
||||
|
||||
$_L['Payment_Gateway'] = 'Gerbang Pembayaran';
|
||||
$_L['Community'] = 'Komunitas';
|
||||
$_L['1_user_can_be_used_for_many_devices'] = '1 pengguna bisa digunakan untuk banyak perangkat?';
|
||||
$_L['Cannot_be_change_after_saved'] = 'Tidak dapat diubah setelah disimpan';
|
||||
|
||||
$_L['Explain_Coverage_of_router'] = 'Jelaskan Cakupan router';
|
||||
$_L['Name_of_Area_that_router_operated'] = 'Nama area tempat router dioperasikan';
|
||||
$_L['Payment_Notification_URL_Recurring_Notification_URL_Pay_Account_Notification_URL'] = 'URL Notifikasi Pembayaran, URL Notifikasi Berulang, URL Notifikasi Akun Bayar';
|
||||
$_L['Finish_Redirect_URL_Unfinish_Redirect_URL_Error_Redirect_URL'] = 'Selesaikan URL Pengalihan, Selesaikan URL Pengalihan, URL Pengalihan Kesalahan';
|
||||
$_L['Status'] = 'Status';
|
||||
$_L['Plan_Not_found'] = 'Paket Tidak ditemukan';
|
||||
$_L['Failed_to_create_transaction'] = 'Gagal membuat transaksi.';
|
||||
$_L['Seller_has_not_yet_setup_Xendit_payment_gateway'] = 'Penjual belum menyiapkan gateway pembayaran Xendit';
|
||||
$_L['Admin_has_not_yet_setup_Xendit_payment_gateway_please_tell_admin'] = 'Admin belum menyiapkan gerbang pembayaran Xendit, mohon beritahu admin';
|
||||
$_L['Buy_this_your_active_package_will_be_overwrite'] = 'Beli ini? Paket aktif Anda akan ditimpa';
|
||||
$_L['You_already_have_unpaid_transaction_cancel_it_or_pay_it'] = 'Anda sudah memiliki transaksi yang belum dibayar, batalkan atau bayar.';
|
||||
$_L['Transaction_Not_found'] = 'Transaksi Tidak ditemukan';
|
||||
$_L['Cancel_it'] = 'Batalkan itu?';
|
||||
$_L['expired'] = 'kedaluwarsa';
|
||||
$_L['Check_for_Payment'] = 'Periksa Pembayaran';
|
||||
$_L['Transaction_still_unpaid'] = 'Transaksi masih belum dibayar.';
|
||||
$_L['Paid_Date'] = 'Tanggal Pembayaran';
|
||||
$_L['Transaction_has_been_paid'] = 'Transaksi telah dibayar.';
|
||||
$_L['PAID'] = 'DIBAYAR';
|
||||
$_L['CANCELED'] = 'DIBATALKAN';
|
||||
$_L['UNPAID'] = 'BELUM DIBAYAR';
|
||||
$_L['PAY_NOW'] = 'BAYAR SEKARANG';
|
||||
$_L['Buy_Hotspot_Plan'] = 'Beli Paket Hotspot';
|
||||
$_L['Buy_PPOE_Plan'] = 'Beli Paket PPPoE';
|
||||
$_L['Package'] = 'Paket';
|
||||
$_L['Order_Internet_Package'] = 'Pesan Paket Internet';
|
||||
$_L['Unknown_Command'] = 'Perintah Tidak Diketahui.';
|
||||
$_L['Checking_payment'] = 'Memeriksa pembayaran';
|
||||
$_L['Create_Transaction_Success'] = 'Transaksi Berhasil Dibuat';
|
||||
$_L['You_have_unpaid_transaction'] = 'Anda memiliki transaksi yang belum dibayar';
|
||||
$_L['TripayPayment_Channel'] = 'Saluran Pembayaran Tripay';
|
||||
$_L['Payment_Channel'] = 'Saluran Pembayaran';
|
||||
$_L['Payment_check_failed'] = 'Pemeriksaan pembayaran gagal.';
|
||||
$_L['Order_Package'] = 'Pesan Paket';
|
||||
$_L['Transactions'] = 'Transaksi';
|
||||
$_L['Payments'] = 'Pembayaran';
|
||||
$_L['History'] = 'Riwayat';
|
||||
$_L['Order_History'] = 'Riwayat Pesanan';
|
||||
$_L['Gateway'] = 'Gerbang';
|
||||
$_L['Date_Done'] = 'Tanggal Selesai';
|
||||
$_L['Unpaid_Order'] = 'Pesanan Belum Dibayar';
|
||||
$_L['Payment_Gateway_Not_Found'] = 'Gerbang Pembayaran Tidak Ditemukan';
|
||||
$_L['Payment_Gateway_saved_successfully'] = 'Gerbang Pembayaran berhasil disimpan';
|
||||
$_L['ORDER'] = 'MEMESAN';
|
||||
$_L['Package_History'] = 'Riwayat Paket';
|
||||
$_L['Buy_History'] = 'Riwayat Beli';
|
||||
$_L['Activation_History'] = 'Riwayat Aktivasi';
|
||||
$_L['Buy_Package'] = 'Beli Paket';
|
||||
$_L['Email'] = 'Surel';
|
||||
$_L['Company_Footer'] = 'Catatan Kaki Perusahaan';
|
||||
$_L['Will_show_below_user_pages'] = 'Akan ditampilkan di bawah halaman pengguna';
|
||||
$_L['Request_OTP'] = 'Minta OTP';
|
||||
$_L['Verification_Code'] = 'Kode Verifikasi';
|
||||
$_L['SMS_Verification_Code'] = 'Kode Verifikasi SMS';
|
||||
$_L['Please_enter_your_email_address'] = 'Silakan masukkan alamat email Anda';
|
||||
$_L['Failed_to_create_Paypal_transaction'] = 'Gagal membuat transaksi Paypal.';
|
||||
$_L['Plugin'] = 'Plugin';
|
||||
$_L['Plugin_Manager'] = 'Manajer Plugin';
|
||||
$_L['User_Notification'] = 'Pemberitahuan Pelanggan';
|
||||
$_L['Expired_Notification'] = 'Pemberitahuan Kedaluarsa';
|
||||
$_L['User_will_get_notification_when_package_expired'] = 'Pengguna akan mendapat notifikasi ketika paket sudah habis masa berlakunya';
|
||||
$_L['Expired_Notification_Message'] = 'Pesan Pemberitahuan Kedaluwarsa';
|
||||
$_L['bnameb_will_be_replaced_with_Customer_Name_bpackageb_will_be_replaced_with_Package_name'] = '<b>[[name]]</b> akan diganti dengan Nama pelanggan. <b>[[package]]</b> akan diganti dengan nama paket.';
|
||||
$_L['Payment_Notification'] = 'Notifikasi Pembayaran';
|
||||
$_L['User_will_get_invoice_notification_when_buy_package_or_package_refilled'] = 'Pengguna akan mendapatkan notifikasi invoice saat membeli paket atau isi ulang paket';
|
||||
$_L['Current_IP'] = 'IP saat ini';
|
||||
$_L['Current_MAC'] = 'MAC saat ini';
|
||||
$_L['Login_Status'] = 'Status Masuk';
|
||||
$_L['Login_Request_successfully'] = 'Permintaan Masuk berhasil';
|
||||
$_L['Logout_Request_successfully'] = 'Permintaan Keluar berhasil';
|
||||
$_L['Disconnect_Internet'] = 'Putuskan sambungan Internet?';
|
||||
$_L['Not_Online_Login_now'] = 'Tidak , Masuk sekarang?';
|
||||
$_L['You_are_Online_Logout'] = 'Kamu sedang aktif, ingin keluar?';
|
||||
$_L['Connect_to_Internet'] = 'Hubungkan ke Internet?';
|
||||
$_L['Your_account_not_connected_to_internet'] = 'Akun Anda tidak terhubung ke internet';
|
||||
|
||||
$_L['Failed_to_create_transaction_'] = 'Gagal membuat transaksi. ';
|
||||
$_L['Failed_to_check_status_transaction_'] = 'Gagal memeriksa status transaksi. ';
|
||||
$_L['Disable_Voucher'] = 'Nonaktifkan Voucher';
|
||||
$_L['Balance'] = 'Saldo';
|
||||
$_L['Balance_System'] = 'Saldo Sistem';
|
||||
$_L['Enable_System'] = 'Aktifkan Sistem';
|
||||
$_L['Allow_Transfer'] = 'Izinkan Transfer';
|
||||
$_L['Telegram_Notification'] = 'Pemberitahuan Telegram';
|
||||
$_L['SMS_OTP_Registration'] = 'Pendaftaran SMS OTP';
|
||||
$_L['Whatsapp_Notification'] = 'Pemberitahuan WhatsApp';
|
||||
$_L['Tawkto_Chat_Widget'] = 'Widget Obrolan Tawk.to';
|
||||
$_L['Invoice'] = 'Faktur';
|
||||
$_L['Country_Code_Phone'] = 'Kode Negara Telepon';
|
||||
$_L['Voucher_activation_menu_will_be_hidden'] = 'Menu aktivasi voucher akan disembunyikan';
|
||||
$_L['Customer_can_deposit_money_to_buy_voucher'] = 'Pelanggan dapat menyetor uang untuk membeli voucher';
|
||||
$_L['Allow_balance_transfer_between_customers'] = 'Izinkan transfer saldo antar pelanggan';
|
||||
$_L['Reminder_Notification'] = 'Pemberitahuan Pengingat';
|
||||
$_L['Reminder_Notification_Message'] = 'Pesan Pemberitahuan Pengingat';
|
||||
$_L['Reminder_7_days'] = 'Pengingat 7 hari';
|
||||
$_L['Reminder_3_days'] = 'Pengingat 3 hari';
|
||||
$_L['Reminder_1_day'] = 'Pengingat 1 hari';
|
||||
$_L['PPPOE_Password'] = 'Kata sandi PPPoE';
|
||||
$_L['User_Cannot_change_this_only_admin_if_it_Empty_it_will_use_user_password'] = 'Pelanggan tidak dapat mengubah ini, hanya Admin. Jika kosong maka akan menggunakan kata sandi pelanggan';
|
||||
$_L['Invoice_Balance_Message'] = 'Faktur Pesan Saldo';
|
||||
$_L['Invoice_Notification_Payment'] = 'Faktur Pemberitahuan Pembayaran';
|
||||
$_L['Balance_Notification_Payment'] = 'Saldo Pemberitahuan Pembayaran';
|
||||
$_L['Balance_Plans'] = 'Paket Saldo';
|
||||
$_L['Buy_Balance'] = 'Beli Saldo';
|
||||
$_L['Price'] = 'Harga';
|
||||
$_L['Validity'] = 'Waktu';
|
||||
$_L['Disable_auto_renewal'] = 'Nonaktifkan perpanjangan otomatis?';
|
||||
$_L['Auto_Renewal_On'] = 'Perpanjangan Otomatis Aktif';
|
||||
$_L['Enable_auto_renewal'] = 'Aktifkan perpanjangan otomatis?';
|
||||
$_L['Auto_Renewal_Off'] = 'Perpanjangan Otomatis Mati';
|
||||
$_L['Refill_Balance'] = 'Isi Ulang Saldo';
|
||||
$_L['Invoice_Footer'] = 'Catatan Kaki Faktur';
|
||||
$_L['Pay_With_Balance'] = 'Bayar dengan Saldo';
|
||||
$_L['Pay_this_with_Balance_your_active_package_will_be_overwrite'] = 'Bayar ini dengan Saldo? Paket aktif Anda akan ditimpa';
|
||||
$_L['Success_to_buy_package'] = 'Berhasil membeli paket';
|
||||
$_L['Auto_Renewal'] = 'Perpanjangan otomatis';
|
||||
$_L['View'] = 'Melihat';
|
||||
$_L['Back'] = 'Kembali';
|
||||
$_L['Active'] = 'Aktif';
|
||||
$_L['Transfer_Balance'] = 'Kirim Saldo';
|
||||
$_L['Send_your_balance'] = 'Kirim saldo Anda?';
|
||||
$_L['Send'] = 'Kirim';
|
||||
$_L['Cannot_send_to_yourself'] = 'Tidak dapat mengirim ke diri Anda sendiri';
|
||||
$_L['Sending_balance_success'] = 'Berhasil mengirim saldo';
|
||||
$_L['From'] = 'Dari';
|
||||
$_L['To'] = 'Ke';
|
||||
$_L['insufficient_balance'] = 'Saldo tidak mencukupi';
|
||||
$_L['Send_Balance'] = 'Kirim Saldo';
|
||||
$_L['Received_Balance'] = 'Saldo yang Diterima';
|
||||
$_L['Minimum_Balance_Transfer'] = 'Minimal Transfer Saldo';
|
||||
$_L['Minimum_Transfer'] = 'Minimal Transfer';
|
||||
$_L['Company_Logo'] = 'Logo Perusahaan';
|
||||
$_L['Expired_IP_Pool'] = 'IP Pool Kedaluwarsa';
|
||||
$_L['Proxy'] = 'Proksi';
|
||||
$_L['Proxy_Server'] = 'Server Proksi';
|
||||
$_L['Proxy_Server_Login'] = 'Masuk Server Proksi';
|
||||
$_L['Hotspot_Plan'] = 'Paket Hotspot';
|
||||
$_L['PPPOE_Plan'] = 'Paket PPPoE';
|
||||
$_L['UNKNOWN'] = 'TIDAK DIKENAL';
|
||||
$_L['Are_You_Sure'] = 'Apa kamu yakin?';
|
||||
$_L['Success_to_send_package'] = 'Berhasil mengirim paket';
|
||||
$_L['Target_has_active_plan_different_with_current_plant'] = 'Target mempunyai paket aktif, berbeda dengan paket saat ini.';
|
||||
$_L['Recharge_a_friend'] = 'Isi ulang teman';
|
||||
$_L['Buy_for_friend'] = 'Beli untuk teman';
|
||||
$_L['Buy_this_for_friend_account'] = 'Beli ini untuk akun teman?';
|
||||
$_L['Review_package_before_recharge'] = 'Tinjau paket sebelum mengisi ulang';
|
||||
$_L['Activate'] = 'Mengaktifkan Paket';
|
||||
$_L['Deactivate'] = 'Menonaktifkan Paket';
|
||||
$_L['Sync'] = 'Sinkronisasi';
|
||||
$_L['Failed_to_create_PaymeTrust_transaction'] = 'Gagal membuat transaksi PaymeTrust.';
|
||||
$_L['Location'] = 'Lokasi';
|
||||
$_L['Radius_Plans'] = 'Paket Radius';
|
||||
$_L['Change_title_in_user_Plan_order'] = 'Ubah judul dalam urutan paket pelanggan';
|
||||
$_L['Logs'] = 'Log';
|
||||
$_L['Voucher_Format'] = 'Format Voucher';
|
||||
$_L['Resend_To_Customer'] = 'Kirim Ulang Ke Pelanggan';
|
||||
$_L['Service_Type'] = 'Service Type';
|
||||
$_L['Others'] = 'Lainnya';
|
||||
$_L['PPPoE'] = 'PPPoE';
|
||||
$_L['Hotspot'] = 'Hotspot';
|
@ -1,8 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Directory access is forbidden.</p>
|
||||
</body>
|
||||
</html>
|
380
system/lan/spanish.json
Normal file
380
system/lan/spanish.json
Normal file
@ -0,0 +1,380 @@
|
||||
{
|
||||
"Log_in": "Entrar",
|
||||
"Register": "Registro",
|
||||
"Announcement": "Anuncio",
|
||||
"Registration_Info": "Informaci\u00f3n de registro",
|
||||
"Voucher_not_found__please_buy_voucher_befor_register": "Cup\u00f3n no encontrado, compre el cup\u00f3n antes de registrarse",
|
||||
"Register_Success__You_can_login_now": "\u00a1Registro exitoso! Puedes iniciar sesi\u00f3n ahora",
|
||||
"Log_in_to_Member_Panel": "Log in to Member Panel",
|
||||
"Register_as_Member": "Reg\u00edstrese como miembro",
|
||||
"Enter_Admin_Area": "Panel de administraci\u00f3n",
|
||||
"PHPNuxBill": "DIGITAL-RED",
|
||||
"Username": "Usuario",
|
||||
"Password": "Contrase\u00f1a",
|
||||
"Passwords_does_not_match": "Las contrase\u00f1as no coinciden",
|
||||
"Account_already_axist": "La cuenta ya existe",
|
||||
"Manage": "Administrar",
|
||||
"Submit": "Enviar",
|
||||
"Save_Changes": "Guardar cambios",
|
||||
"Cancel": "Cancelar",
|
||||
"Edit": "Editar",
|
||||
"Delete": "Eliminar",
|
||||
"Welcome": "Bienvenido",
|
||||
"Data_Created_Successfully": "Datos creados con \u00e9xito",
|
||||
"Data_Updated_Successfully": "Datos actualizados con \u00e9xito",
|
||||
"Data_Deleted_Successfully": "Datos eliminados con \u00e9xito",
|
||||
"Static_Pages": "P\u00e1ginas est\u00e1ticas",
|
||||
"Failed_to_save_page__make_sure_i_can_write_to_folder_pages___i_chmod_664_pages___html_i_": "No se pudo guardar la p\u00e1gina, aseg\u00farese de que pueda escribir en las p\u00e1ginas de la carpeta, <i>chmod 664 pages\/*.html<i>",
|
||||
"Saving_page_success": "Guardando el \u00e9xito de la p\u00e1gina",
|
||||
"Sometimes_you_need_to_refresh_3_times_until_content_change": "A veces es necesario actualizar 3 veces hasta que cambie el contenido",
|
||||
"Dashboard": "Dashboard",
|
||||
"Search_Customers___": "Buscar clientes...",
|
||||
"My_Account": "Mi cuenta",
|
||||
"My_Profile": "Mi perfil",
|
||||
"Settings": "Ajustes",
|
||||
"Edit_Profile": "Editar perfil",
|
||||
"Change_Password": "Cambia la contrase\u00f1a",
|
||||
"Logout": "Cerrar sesi\u00f3n",
|
||||
"Services": "Servicios",
|
||||
"Bandwidth_Plans": "Planes de velocidad",
|
||||
"Bandwidth_Name": "Nombre de ancho de banda",
|
||||
"New_Bandwidth": "Nuevo ancho de banda",
|
||||
"Edit_Bandwidth": "Editar ancho de banda",
|
||||
"Add_New_Bandwidth": "Agregar nuevo ancho de banda",
|
||||
"Rate_Download": "Tarifa Descarga",
|
||||
"Rate_Upload": "Tasa de subida",
|
||||
"Name_Bandwidth_Already_Exist": "El ancho de banda del nombre ya existe",
|
||||
"Hotspot_Plans": "Planes de Hotspot",
|
||||
"PPPOE_Plans": "Planes PPPOE",
|
||||
"Plan_Name": "Nombre",
|
||||
"New_Service_Plan": "Nuevo plan de servicio",
|
||||
"Add_Service_Plan": "Agregar plan de servicio",
|
||||
"Edit_Service_Plan": "Editar plan de servicio",
|
||||
"Name_Plan_Already_Exist": "Nombre El plan ya existe",
|
||||
"Plan_Type": "Tipo de plan",
|
||||
"Plan_Price": "Precio del plan",
|
||||
"Limit_Type": "Tipo de l\u00edmite",
|
||||
"Unlimited": "Ilimitado",
|
||||
"Limited": "Limitado",
|
||||
"Time_Limit": "L\u00edmite de tiempo",
|
||||
"Data_Limit": "L\u00edmite de datos",
|
||||
"Both_Limit": "Ambos L\u00edmite",
|
||||
"Plan_Validity": "Validez del Plan",
|
||||
"Select_Bandwidth": "Seleccionar ancho de banda",
|
||||
"Shared_Users": "Usuarios compartidos",
|
||||
"Choose_User_Type_Sales_to_disable_access_to_Settings": "Elija Ventas de tipo de usuario para deshabilitar el acceso a la Configuraci\u00f3n",
|
||||
"Current_Password": "Contrase\u00f1a actual",
|
||||
"New_Password": "Nueva contrase\u00f1a",
|
||||
"Administrator": "Administrador",
|
||||
"Sales": "Ventas",
|
||||
"Member": "Usuario",
|
||||
"Confirm_New_Password": "Confirmar nueva contrase\u00f1a",
|
||||
"Confirm_Password": "Confirmar contrase\u00f1a",
|
||||
"Full_Name": "Nombre completo",
|
||||
"User_Type": "Tipo de usuario",
|
||||
"Address": "Direcci\u00f3n",
|
||||
"Created_On": "Creado en",
|
||||
"Expires_On": "Expira el",
|
||||
"Phone_Number": "N\u00famero de tel\u00e9fono",
|
||||
"User_deleted_Successfully": "Usuario eliminado con \u00e9xito",
|
||||
"Full_Administrator": "Administrador completo",
|
||||
"Keep_Blank_to_do_not_change_Password": "Mantener en blanco para no cambiar la contrase\u00f1a",
|
||||
"Keep_it_blank_if_you_do_not_want_to_show_currency_code": "Mant\u00e9ngalo en blanco si no desea mostrar el c\u00f3digo de moneda",
|
||||
"Theme_Style": "Estilo de tema",
|
||||
"Theme_Color": "Color del tema",
|
||||
"Default_Language": "Idioma predeterminado",
|
||||
"Network": "Red",
|
||||
"Routers": "Routers",
|
||||
"IP_Pool": "IP Pool",
|
||||
"New_Router": "Nuevo Router",
|
||||
"Add_Router": "Agregar Router",
|
||||
"Edit_Router": "Editar Router",
|
||||
"Router_Name": "Nombre del Router",
|
||||
"IP_Address": "Direccion IP",
|
||||
"Router_Secret": "Contrase\u00f1a Router",
|
||||
"Description": "Descripcion",
|
||||
"IP_Router_Already_Exist": "El enrutador IP ya existe",
|
||||
"Name_Pool": "Nombre del Pool",
|
||||
"Range_IP": "Rango de IP",
|
||||
"New_Pool": "Nuevo Pool",
|
||||
"Add_Pool": "Agregar Pool",
|
||||
"Edit_Pool": "Editar Pool",
|
||||
"Pool_Name_Already_Exist": "Nombre del Pool ya existe",
|
||||
"Prepaid": "Prepago",
|
||||
"Prepaid_Users": "Usuarios prepago",
|
||||
"Prepaid_Vouchers": "Fichas prepago",
|
||||
"Refill_Account": "Recargar Ficha",
|
||||
"Recharge_Account": "Recargar Cuenta",
|
||||
"Select_Account": "Seleccionar cuenta",
|
||||
"Service_Plan": "Plan de servicio",
|
||||
"Recharge": "Recargar",
|
||||
"Method": "M\u00e9todo",
|
||||
"Account_Created_Successfully": "Cuenta creada con \u00e9xito",
|
||||
"Database_Status": "Estado de la base de datos",
|
||||
"Total_Database_Size": "Tama\u00f1o total de la base de datos",
|
||||
"Download_Database_Backup": "Descargar copia de seguridad de la base de datos",
|
||||
"Table_Name": "Nombre de la tabla",
|
||||
"Rows": "Filas",
|
||||
"Size": "Tama\u00f1o",
|
||||
"Customer": "Clientes",
|
||||
"Add_New_Contact": "A\u00f1adir nuevo contacto",
|
||||
"Edit_Contact": "Editar contacto",
|
||||
"List_Contact": "Lista de contactos",
|
||||
"Manage_Contact": "Administrar contacto",
|
||||
"Reports": "Reportes",
|
||||
"Daily_Reports": "Reportes diarios",
|
||||
"Period_Reports": "Informes del per\u00edodo",
|
||||
"All_Transactions": "Todas las transacciones",
|
||||
"Total_Income": "Ingresos totales",
|
||||
"All_Transactions_at_Date": "Todas las transacciones en la fecha",
|
||||
"Export_for_Print": "Exportar para imprimir",
|
||||
"Print": "Impresi\u00f3n",
|
||||
"Export_to_PDF": "Exportar a PDF",
|
||||
"Click_Here_to_Print": "Haga clic aqu\u00ed para imprimir",
|
||||
"You_can_use_html_tag": "Puedes usar la etiqueta html",
|
||||
"Date_Format": "Formato de fecha",
|
||||
"Income_Today": "Ingresos hoy",
|
||||
"Income_This_Month": "Ingresos este mes",
|
||||
"Users_Active": "Usuarios activos",
|
||||
"Total_Users": "Total de usuarios",
|
||||
"Users": "Usuarios",
|
||||
"Edit_User": "Editar usuario",
|
||||
"Last_Login": "\u00daltimo acceso",
|
||||
"Administrator_Users": "Usuarios administradores",
|
||||
"Manage_Administrator": "Administrar administrador",
|
||||
"Add_New_Administrator": "Agregar nuevo administrador",
|
||||
"Localisation": "Localizaci\u00f3n",
|
||||
"Backup_Restore": "Copia de seguridad\/restauracion",
|
||||
"General_Settings": "Configuraci\u00f3n general",
|
||||
"Date": "Fecha",
|
||||
"Login_Successful": "Inicio de sesi\u00f3n exitoso",
|
||||
"Failed_Login": "Inicio de sesi\u00f3n fallido",
|
||||
"Settings_Saved_Successfully": "Configuraci\u00f3n guardada con \u00e9xito",
|
||||
"User_Updated_Successfully": "Usuario actualizado con \u00e9xito",
|
||||
"User_Expired__Today": "Usuario vencido, hoy",
|
||||
"Activity_Log": "Registro de actividades",
|
||||
"View_Reports": "Ver los informes",
|
||||
"View_All": "Ver todo",
|
||||
"Number_of_Vouchers": "N\u00famero de Fichas",
|
||||
"Length_Code": "Longitud de codigo",
|
||||
"Code_Voucher": "Cup\u00f3n de Ficha",
|
||||
"Voucher": "Ficha",
|
||||
"Hotspot_Voucher": "Ficha Hotspot",
|
||||
"Status_Voucher": "Estatado de Ficha",
|
||||
"Add_Vouchers": "Agregar Ficha",
|
||||
"Create_Vouchers_Successfully": "Crear Ficha con \u00e9xito",
|
||||
"Generate": "Generar",
|
||||
"Print_side_by_side__it_will_easy_to_cut": "Imprimir uno al lado del otro, ser\u00e1 f\u00e1cil de cortar",
|
||||
"From_Date": "Partir de la fecha",
|
||||
"To_Date": "Hasta la fecha",
|
||||
"New_Service": "Nuevo servicio",
|
||||
"Type": "Tipo",
|
||||
"Finish": "Finalizar",
|
||||
"Application_Name__Company_Name": "Nombre de la aplicaci\u00f3n\/ Nombre de la empresa",
|
||||
"This_Name_will_be_shown_on_the_Title": "Este nombre se mostrar\u00e1 en el t\u00edtulo",
|
||||
"Next": "Siguiente",
|
||||
"Last": "Atras",
|
||||
"Timezone": "Zona horaria",
|
||||
"Decimal_Point": "Punto decimal",
|
||||
"Thousands_Separator": "Separador de miles",
|
||||
"Currency_Code": "C\u00f3digo de moneda",
|
||||
"Order_Voucher": "Comprobante de pedido",
|
||||
"Voucher_Activation": "Activaci\u00f3n de Fichas",
|
||||
"List_Activated_Voucher": "Lista de Fichas activados",
|
||||
"Enter_voucher_code_here": "Ingrese el c\u00f3digo de la Ficha aqu\u00ed",
|
||||
"Private_Message": "Mensaje privado",
|
||||
"Inbox": "Bandeja de entrada",
|
||||
"Outbox": "Bandeja de salida",
|
||||
"Compose": "Componer",
|
||||
"Send_to": "Enviar a",
|
||||
"Title": "T\u00edtulo",
|
||||
"Message": "Mensaje",
|
||||
"Your_Account_Information": "Informaci\u00f3n de su cuenta",
|
||||
"Welcome_to_the_Panel_Members_page__on_this_page_you_can_": "Bienvenido a la p\u00e1gina de Miembros del Panel, en esta p\u00e1gina puede:",
|
||||
"Invalid_Username_or_Password": "Usuario o contrase\u00f1a invalido",
|
||||
"You_do_not_have_permission_to_access_this_page": "Usted no tiene permiso para acceder a esta p\u00e1gina",
|
||||
"Incorrect_Current_Password": "IContrase\u00f1a actual incorrecta",
|
||||
"Password_changed_successfully__Please_login_again": "Contrase\u00f1a cambiada con \u00e9xito, por favor inicie sesi\u00f3n de nuevo",
|
||||
"All_field_is_required": "Todo el campo es requerido",
|
||||
"Voucher_Not_Valid": "Ficha no v\u00e1lida",
|
||||
"Activation_Vouchers_Successfully": "Fichas de activaci\u00f3n con \u00e9xito",
|
||||
"Data_Not_Found": "Datos no encontrados",
|
||||
"Search_by_Username": "Buscar por nombre de usuario",
|
||||
"Search_by_Name": "Buscar por nombre",
|
||||
"Search_by_Code_Voucher": "B\u00fasqueda por c\u00f3digo de Ficha",
|
||||
"Search": "B\u00fasqueda",
|
||||
"Select_a_customer": "Seleccione un cliente",
|
||||
"Select_Routers": "Seleccionar enrutadores",
|
||||
"Select_Plans": "Seleccionar planes",
|
||||
"Select_Pool": "Seleccionar Pool",
|
||||
"Hrs": "Hrs",
|
||||
"Mins": "Mins",
|
||||
"Days": "Dias",
|
||||
"Months": "Meses",
|
||||
"Add_Language": "Agregar idioma",
|
||||
"Language_Name": "Nombre del lenguaje",
|
||||
"Folder_Name": "Nombre de la carpeta",
|
||||
"Translator": "Traducir",
|
||||
"Language_Name_Already_Exist": "El nombre del idioma ya existe",
|
||||
"Payment_Gateway": "Payment Gateway",
|
||||
"Community": "Community",
|
||||
"1_user_can_be_used_for_many_devices_": "1 user can be used for many devices?",
|
||||
"Cannot_be_change_after_saved": "Cannot be change after saved",
|
||||
"Explain_Coverage_of_router": "Jelaskan Cakupan wilayah hotspot",
|
||||
"Name_of_Area_that_router_operated": "Nama Lokasi\/Wilayah Router beroperasi",
|
||||
"Payment_Notification_URL__Recurring_Notification_URL__Pay_Account_Notification_URL": "Payment Notification URL, Recurring Notification URL, Pay Account Notification URL",
|
||||
"Finish_Redirect_URL__Unfinish_Redirect_URL__Error_Redirect_URL": "Finish Redirect URL, Unfinish Redirect URL, Error Redirect URL",
|
||||
"Status": "Status",
|
||||
"Plan_Not_found": "Plan Not found",
|
||||
"Failed_to_create_transaction_": "Failed to create transaction.",
|
||||
"Seller_has_not_yet_setup_Xendit_payment_gateway": "Seller has not yet setup Xendit payment gateway",
|
||||
"Admin_has_not_yet_setup_Xendit_payment_gateway__please_tell_admin": "Admin has not yet setup Xendit payment gateway, please tell admin",
|
||||
"Buy_this__your_active_package_will_be_overwrite": "Buy this? your active package will be overwrite",
|
||||
"You_already_have_unpaid_transaction__cancel_it_or_pay_it_": "You already have unpaid transaction, cancel it or pay it.",
|
||||
"Transaction_Not_found": "Transaction Not found",
|
||||
"Cancel_it_": "Cancel it?",
|
||||
"expired": "expired",
|
||||
"Check_for_Payment": "Check for Payment",
|
||||
"Transaction_still_unpaid_": "Transaction still unpaid.",
|
||||
"Paid_Date": "Paid Date",
|
||||
"Transaction_has_been_paid_": "Transaction has been paid.",
|
||||
"PAID": "PAID",
|
||||
"CANCELED": "CANCELED",
|
||||
"UNPAID": "UNPAID",
|
||||
"PAY_NOW": "PAY NOW",
|
||||
"Buy_Hotspot_Plan": "Buy Hotspot Plan",
|
||||
"Buy_PPOE_Plan": "Buy PPOE Plan",
|
||||
"Package": "Package",
|
||||
"Order_Internet_Package": "Order Internet Package",
|
||||
"Unknown_Command_": "Unknown Command.",
|
||||
"Checking_payment": "Checking payment",
|
||||
"Create_Transaction_Success": "Create Transaction Success",
|
||||
"You_have_unpaid_transaction": "You have unpaid transaction",
|
||||
"TripayPayment_Channel": "TripayPayment Channel",
|
||||
"Payment_Channel": "Payment Channel",
|
||||
"Payment_check_failed_": "Payment check failed.",
|
||||
"Order_Package": "Order Package",
|
||||
"Transactions": "Transactions",
|
||||
"Payments": "Payments",
|
||||
"History": "History",
|
||||
"Order_History": "Order History",
|
||||
"Gateway": "Gateway",
|
||||
"Date_Done": "Date Done",
|
||||
"Unpaid_Order": "Unpaid Order",
|
||||
"Payment_Gateway_Not_Found": "Payment Gateway Not Found",
|
||||
"Payment_Gateway_saved_successfully": "Payment Gateway saved successfully",
|
||||
"ORDER": "ORDER",
|
||||
"Package_History": "Package History",
|
||||
"Buy_History": "Buy History",
|
||||
"Activation_History": "Activation History",
|
||||
"Buy_Package": "Buy Package",
|
||||
"Email": "Email",
|
||||
"Company_Footer": "Company Footer",
|
||||
"Will_show_below_user_pages": "Will show below user pages",
|
||||
"Request_OTP": "Request OTP",
|
||||
"Verification_Code": "Verification Code",
|
||||
"SMS_Verification_Code": "SMS Verification Code",
|
||||
"Please_enter_your_email_address": "Please enter your email address",
|
||||
"Failed_to_create_Paypal_transaction_": "Failed to create Paypal transaction.",
|
||||
"Plugin": "Plugin",
|
||||
"Plugin_Manager": "Plugin Manager",
|
||||
"User_Notification": "User Notification",
|
||||
"Expired_Notification": "Expired Notification",
|
||||
"User_will_get_notification_when_package_expired": "User will get notification when package expired",
|
||||
"Expired_Notification_Message": "Expired Notification Message",
|
||||
"Payment_Notification": "Payment Notification",
|
||||
"User_will_get_invoice_notification_when_buy_package_or_package_refilled": "User will get invoice notification when buy package or package refilled",
|
||||
"Current_IP": "Current IP",
|
||||
"Current_MAC": "Current MAC",
|
||||
"Login_Status": "Login Status",
|
||||
"Login_Request_successfully": "Login Request successfully",
|
||||
"Logout_Request_successfully": "Logout Request successfully",
|
||||
"Disconnect_Internet_": "Disconnect Internet?",
|
||||
"Not_Online__Login_now_": "Not Online, Login now?",
|
||||
"You_are_Online__Logout_": "You are Online, Logout?",
|
||||
"Connect_to_Internet_": "Connect to Internet?",
|
||||
"Your_account_not_connected_to_internet": "Your account not connected to internet",
|
||||
"Balance": "Balance",
|
||||
"Balance_System": "Balance System",
|
||||
"Enable_System": "Enable System",
|
||||
"Allow_Transfer": "Allow Transfer",
|
||||
"Telegram_Notification": "Telegram Notification",
|
||||
"SMS_OTP_Registration": "SMS OTP Registration",
|
||||
"Whatsapp_Notification": "Whatsapp Notification",
|
||||
"Tawk_to_Chat_Widget": "Tawk.to Chat Widget",
|
||||
"Invoice": "Invoice",
|
||||
"Country_Code_Phone": "Country Code Phone",
|
||||
"Voucher_activation_menu_will_be_hidden": "Voucher activation menu will be hidden",
|
||||
"Customer_can_deposit_money_to_buy_voucher": "Customer can deposit money to buy voucher",
|
||||
"Allow_balance_transfer_between_customers": "Allow balance transfer between customers",
|
||||
"Refill_Balance": "Refill Balance",
|
||||
"Balance_Plans": "Balance Plans",
|
||||
"Failed_to_create_transaction__": "Failed to create transaction. ",
|
||||
"Failed_to_check_status_transaction__": "Failed to check status transaction. ",
|
||||
"Disable_Voucher": "Disable Voucher",
|
||||
"Reminder_Notification": "Reminder Notification",
|
||||
"Reminder_Notification_Message": "Reminder Notification Message",
|
||||
"Reminder_7_days": "Reminder 7 days",
|
||||
"Reminder_3_days": "Reminder 3 days",
|
||||
"Reminder_1_day": "Reminder 1 day",
|
||||
"PPPOE_Password": "PPPOE Password",
|
||||
"User_Cannot_change_this__only_admin__if_it_Empty_it_will_use_user_password": "User Cannot change this, only admin. if it Empty it will use user password",
|
||||
"Invoice_Balance_Message": "Invoice Balance Message",
|
||||
"Invoice_Notification_Payment": "Invoice Notification Payment",
|
||||
"Balance_Notification_Payment": "Balance Notification Payment",
|
||||
"Buy_Balance": "Buy Balance",
|
||||
"Price": "Price",
|
||||
"Validity": "Validity",
|
||||
"Disable_auto_renewal_": "Disable auto renewal?",
|
||||
"Auto_Renewal_On": "Auto Renewal On",
|
||||
"Enable_auto_renewal_": "Enable auto renewal?",
|
||||
"Auto_Renewal_Off": "Auto Renewal Off",
|
||||
"Invoice_Footer": "Invoice Footer",
|
||||
"Pay_With_Balance": "Pay With Balance",
|
||||
"Pay_this_with_Balance__your_active_package_will_be_overwrite": "Pay this with Balance? your active package will be overwrite",
|
||||
"Success_to_buy_package": "Success to buy package",
|
||||
"Auto_Renewal": "Auto Renewal",
|
||||
"View": "View",
|
||||
"Back": "Back",
|
||||
"Active": "Active",
|
||||
"Transfer_Balance": "Transfer Balance",
|
||||
"Send_your_balance_": "Send your balance?",
|
||||
"Send": "Send",
|
||||
"Cannot_send_to_yourself": "Cannot send to yourself",
|
||||
"Sending_balance_success": "Sending balance success",
|
||||
"From": "From",
|
||||
"To": "To",
|
||||
"insufficient_balance": "insufficient balance",
|
||||
"Send_Balance": "Send Balance",
|
||||
"Received_Balance": "Received Balance",
|
||||
"Minimum_Balance_Transfer": "Minimum Balance Transfer",
|
||||
"Minimum_Transfer": "Minimum Transfer",
|
||||
"Company_Logo": "Company Logo",
|
||||
"Expired_IP_Pool": "Expired IP Pool",
|
||||
"Proxy": "Proxy",
|
||||
"Proxy_Server": "Proxy Server",
|
||||
"Proxy_Server_Login": "Proxy Server Login",
|
||||
"Hotspot_Plan": "Hotspot Plan",
|
||||
"PPPOE_Plan": "PPPOE Plan",
|
||||
"UNKNOWN": "UNKNOWN",
|
||||
"Are_You_Sure_": "Are You Sure?",
|
||||
"Success_to_send_package": "Success to send package",
|
||||
"Target_has_active_plan__different_with_current_plant_": "Target has active plan, different with current plant.",
|
||||
"Recharge_a_friend": "Recharge a friend",
|
||||
"Buy_for_friend": "Buy for friend",
|
||||
"Buy_this_for_friend_account_": "Buy this for friend account?",
|
||||
"Review_package_before_recharge": "Review package before recharge",
|
||||
"Activate": "Activate",
|
||||
"Deactivate": "Deactivate",
|
||||
"Sync": "Sync",
|
||||
"Failed_to_create_PaymeTrust_transaction_": "Failed to create PaymeTrust transaction.",
|
||||
"Location": "Location",
|
||||
"Voucher_Format": "Voucher Format",
|
||||
"Service_Type": "Service Type",
|
||||
"Others": "Others",
|
||||
"PPPoE": "PPPoE",
|
||||
"Hotspot": "Hotspot",
|
||||
"Monthly_Registered_Customers": "Monthly Registered Customers",
|
||||
"Total_Monthly_Sales": "Total Monthly Sales",
|
||||
"Active_Users": "Active Users"
|
||||
}
|
@ -1,408 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
-----------------------------------
|
||||
Language Name: Spanish
|
||||
Contributor: Ing.Luis E. Hernandez
|
||||
Web: www.phpnuxbill.com
|
||||
Email: contacto.webland@gmail.com
|
||||
|
||||
2022
|
||||
Contributor: Alucard (@alucard)
|
||||
|
||||
------------------------------------
|
||||
*/
|
||||
|
||||
$_L['Login'] = 'Entrar';
|
||||
$_L['Register'] = 'Registro';
|
||||
$_L['Announcement'] = 'Anuncio';
|
||||
$_L['Registration_Info'] = 'Información de registro';
|
||||
$_L['Register_Voucher_Failed'] = 'Cupón no encontrado, compre el cupón antes de registrarse';
|
||||
$_L['Register_Success'] = '¡Registro exitoso! Puedes iniciar sesión ahora';
|
||||
$_L['Sign_In_Member'] = 'Log in to Member Panel';
|
||||
$_L['Register_Member'] = 'Regístrese como miembro';
|
||||
$_L['Sign_In_Admin'] = 'Panel de administración';
|
||||
$_L['Logo'] = 'DIGITAL-RED';
|
||||
$_L['Username'] = 'Usuario';
|
||||
$_L['Password'] = 'Contraseña';
|
||||
$_L['PasswordsNotMatch'] = 'Las contraseñas no coinciden';
|
||||
$_L['account_already_exist'] = 'La cuenta ya existe';
|
||||
$_L['Manage'] = 'Administrar';
|
||||
$_L['Submit'] = 'Enviar';
|
||||
$_L['Save'] = 'Guardar cambios';
|
||||
$_L['Cancel'] = 'Cancelar';
|
||||
$_L['Edit'] = 'Editar';
|
||||
$_L['Delete'] = 'Eliminar';
|
||||
$_L['Welcome'] = 'Bienvenido';
|
||||
$_L['Created_Successfully'] = 'Datos creados con éxito';
|
||||
$_L['Updated_Successfully'] = 'Datos actualizados con éxito';
|
||||
$_L['Delete_Successfully'] = 'Datos eliminados con éxito';
|
||||
|
||||
$_L['Static_Pages'] = "Páginas estáticas";
|
||||
$_L['Failed_Save_Page'] = "No se pudo guardar la página, asegúrese de que pueda escribir en las páginas de la carpeta, <i>chmod 664 pages/*.html<i>";
|
||||
$_L['Success_Save_Page'] = "Guardando el éxito de la página";
|
||||
$_L['Info_Page'] = "A veces es necesario actualizar 3 veces hasta que cambie el contenido";
|
||||
|
||||
$_L['Dashboard'] = 'Dashboard';
|
||||
$_L['Search_Contact'] = 'Buscar clientes...';
|
||||
$_L['My_Account'] = 'Mi cuenta';
|
||||
$_L['My_Profile'] = 'Mi perfil';
|
||||
$_L['Settings'] = 'Ajustes';
|
||||
$_L['Edit_Profile'] = 'Editar perfil';
|
||||
$_L['Change_Password'] = 'Cambia la contraseña';
|
||||
$_L['Logout'] = 'Cerrar sesión';
|
||||
|
||||
$_L['Services'] = 'Servicios';
|
||||
$_L['Bandwidth_Plans'] = 'Planes de velocidad';
|
||||
$_L['BW_Name'] = 'Nombre de ancho de banda';
|
||||
$_L['New_Bandwidth'] = 'Nuevo ancho de banda';
|
||||
$_L['Edit_Bandwidth'] = 'Editar ancho de banda';
|
||||
$_L['Add_Bandwidth'] = 'Agregar nuevo ancho de banda';
|
||||
$_L['Rate_Download'] = 'Tarifa Descarga';
|
||||
$_L['Rate_Upload'] = 'Tasa de subida';
|
||||
$_L['BW_already_exist'] = 'El ancho de banda del nombre ya existe';
|
||||
$_L['Hotspot_Plans'] = 'Planes de Hotspot';
|
||||
$_L['PPPOE_Plans'] = 'Planes PPPOE';
|
||||
$_L['Plan_Name'] = 'Nombre';
|
||||
$_L['New_Plan'] = 'Nuevo plan de servicio';
|
||||
$_L['Add_Plan'] = 'Agregar plan de servicio';
|
||||
$_L['Edit_Plan'] = 'Editar plan de servicio';
|
||||
$_L['Plan_already_exist'] = 'Nombre El plan ya existe';
|
||||
$_L['Plan_Type'] = 'Tipo de plan';
|
||||
$_L['Plan_Price'] = 'Precio del plan';
|
||||
$_L['Limit_Type'] = 'Tipo de límite';
|
||||
$_L['Unlimited'] = 'Ilimitado';
|
||||
$_L['Limited'] = 'Limitado';
|
||||
$_L['Time_Limit'] = 'Límite de tiempo';
|
||||
$_L['Data_Limit'] = 'Límite de datos';
|
||||
$_L['Both_Limit'] = 'Ambos Límite';
|
||||
$_L['Plan_Validity'] = 'Validez del Plan';
|
||||
$_L['Select_BW'] = 'Seleccionar ancho de banda';
|
||||
$_L['Shared_Users'] = 'Usuarios compartidos';
|
||||
|
||||
$_L['user_type_help'] = 'Elija Ventas de tipo de usuario para deshabilitar el acceso a la Configuración';
|
||||
$_L['Current_Password'] = 'Contraseña actual';
|
||||
$_L['New_Password'] = 'Nueva contraseña';
|
||||
$_L['Administrator'] = 'Administrador';
|
||||
$_L['Sales'] = 'Ventas';
|
||||
$_L['Member'] = 'Usuario';
|
||||
$_L['Confirm_New_Password'] = 'Confirmar nueva contraseña';
|
||||
$_L['Confirm_Password'] = 'Confirmar contraseña';
|
||||
$_L['Full_Name'] = 'Nombre completo';
|
||||
$_L['User_Type'] = 'Tipo de usuario';
|
||||
$_L['Address'] = 'Dirección';
|
||||
$_L['Created_On'] = 'Creado en';
|
||||
$_L['Expires_On'] = 'Expira el';
|
||||
$_L['Phone_Number'] = 'Número de teléfono';
|
||||
$_L['User_Delete_Ok'] = 'Usuario eliminado con éxito';
|
||||
$_L['Full_Administrator'] = 'Administrador completo';
|
||||
$_L['password_change_help'] = 'Mantener en blanco para no cambiar la contraseña';
|
||||
$_L['currency_help'] = 'Manténgalo en blanco si no desea mostrar el código de moneda';
|
||||
$_L['Theme_Style'] = 'Estilo de tema';
|
||||
$_L['Theme_Color'] = 'Color del tema';
|
||||
$_L['Default_Language'] = 'Idioma predeterminado';
|
||||
|
||||
$_L['Network'] = 'Red';
|
||||
$_L['Routers'] = 'Routers';
|
||||
$_L['Pool'] = 'IP Pool';
|
||||
$_L['New_Router'] = 'Nuevo Router';
|
||||
$_L['Add_Router'] = 'Agregar Router';
|
||||
$_L['Edit_Router'] = 'Editar Router';
|
||||
$_L['Router_Name'] = 'Nombre del Router';
|
||||
$_L['IP_Address'] = 'Direccion IP';
|
||||
$_L['Router_Secret'] = 'Contraseña Router';
|
||||
$_L['Description'] = 'Descripcion';
|
||||
$_L['Router_already_exist'] = 'El enrutador IP ya existe';
|
||||
$_L['Pool_Name'] = 'Nombre del Pool';
|
||||
$_L['Range_IP'] = 'Rango de IP';
|
||||
$_L['New_Pool'] = 'Nuevo Pool';
|
||||
$_L['Add_Pool'] = 'Agregar Pool';
|
||||
$_L['Edit_Pool'] = 'Editar Pool';
|
||||
$_L['Pool_already_exist'] = 'Nombre del Pool ya existe';
|
||||
|
||||
$_L['Prepaid'] = 'Prepago';
|
||||
$_L['Prepaid_User'] = 'Usuarios prepago';
|
||||
$_L['Prepaid_Vouchers'] = 'Fichas prepago';
|
||||
$_L['Refill_Account'] = 'Recargar Ficha';
|
||||
$_L['Recharge_Account'] = 'Recargar Cuenta';
|
||||
$_L['Select_Account'] = 'Seleccionar cuenta';
|
||||
$_L['Service_Plan'] = 'Plan de servicio';
|
||||
$_L['Recharge'] = 'Recargar';
|
||||
$_L['Method'] = 'Método';
|
||||
$_L['account_created_successfully'] = 'Cuenta creada con éxito';
|
||||
|
||||
$_L['Database_Status'] = 'Estado de la base de datos';
|
||||
$_L['Total_Database_Size'] = 'Tamaño total de la base de datos';
|
||||
$_L['Download_Database_Backup'] = 'Descargar copia de seguridad de la base de datos';
|
||||
$_L['Table_Name'] = 'Nombre de la tabla';
|
||||
$_L['Rows'] = 'Filas';
|
||||
$_L['Size'] = 'Tamaño';
|
||||
|
||||
$_L['Customers'] = 'Clientes';
|
||||
$_L['Add_Contact'] = 'Añadir nuevo contacto';
|
||||
$_L['Edit_Contact'] = 'Editar contacto';
|
||||
$_L['List_Contact'] = 'Lista de contactos';
|
||||
$_L['Manage_Accounts'] = 'Administrar contacto';
|
||||
|
||||
$_L['Reports'] = 'Reportes';
|
||||
$_L['Daily_Report'] = 'Reportes diarios';
|
||||
$_L['Period_Reports'] = 'Informes del período';
|
||||
$_L['All_Transactions'] = 'Todas las transacciones';
|
||||
$_L['Total_Income'] = 'Ingresos totales';
|
||||
$_L['All_Transactions_at_Date'] = 'Todas las transacciones en la fecha';
|
||||
$_L['Export_for_Print'] = 'Exportar para imprimir';
|
||||
$_L['Print'] = 'Impresión';
|
||||
$_L['Export_to_PDF'] = 'Exportar a PDF';
|
||||
$_L['Click_Here_to_Print'] = 'Haga clic aquí para imprimir';
|
||||
$_L['You_can_use_html_tag'] = 'Puedes usar la etiqueta html';
|
||||
$_L['Date_Format'] = 'Formato de fecha';
|
||||
$_L['Income_Today'] = 'Ingresos hoy';
|
||||
$_L['Income_This_Month'] = 'Ingresos este mes';
|
||||
$_L['Users_Active'] = 'Usuarios activos';
|
||||
$_L['Total_Users'] = 'Total de usuarios';
|
||||
$_L['Users'] = 'Usuarios';
|
||||
$_L['Edit_User'] = 'Editar usuario';
|
||||
$_L['Last_Login'] = 'Último acceso';
|
||||
$_L['Administrator_Users'] = 'Usuarios administradores';
|
||||
$_L['Manage_Administrator'] = 'Administrar administrador';
|
||||
$_L['Add_New_Administrator'] = 'Agregar nuevo administrador';
|
||||
$_L['Localisation'] = 'Localización';
|
||||
$_L['Backup_Restore'] = 'Copia de seguridad/restauracion';
|
||||
|
||||
$_L['General_Settings'] = 'Configuración general';
|
||||
$_L['Date'] = 'Fecha';
|
||||
$_L['Login_Successful'] = 'Inicio de sesión exitoso';
|
||||
$_L['Failed_Login'] = 'Inicio de sesión fallido';
|
||||
$_L['Settings_Saved_Successfully'] = 'Configuración guardada con éxito';
|
||||
$_L['User_Updated_Successfully'] = 'Usuario actualizado con éxito';
|
||||
$_L['User_Expired_Today'] = 'Usuario vencido, hoy';
|
||||
$_L['Activity_Log'] = 'Registro de actividades';
|
||||
$_L['View_Reports'] = 'Ver los informes';
|
||||
$_L['View_All'] = 'Ver todo';
|
||||
$_L['Number_of_Vouchers'] = 'Número de Fichas';
|
||||
$_L['Length_Code'] = 'Longitud de codigo';
|
||||
$_L['Code_Voucher'] = 'Cupón de Ficha';
|
||||
$_L['Voucher'] = 'Ficha';
|
||||
$_L['Voucher_Hotspot'] = 'Ficha Hotspot';
|
||||
$_L['Status_Voucher'] = 'Estatado de Ficha';
|
||||
$_L['Add_Voucher'] = 'Agregar Ficha';
|
||||
$_L['Voucher_Successfully'] = 'Crear Ficha con éxito';
|
||||
$_L['Generate'] = 'Generar';
|
||||
$_L['Print_Info'] = 'Imprimir uno al lado del otro, será fácil de cortar';
|
||||
|
||||
$_L['From_Date'] = 'Partir de la fecha';
|
||||
$_L['To_Date'] = 'Hasta la fecha';
|
||||
$_L['New_Service'] = 'Nuevo servicio';
|
||||
$_L['Type'] = 'Tipo';
|
||||
$_L['Finish'] = 'Finalizar';
|
||||
$_L['App_Name'] = 'Nombre de la aplicación/ Nombre de la empresa';
|
||||
$_L['App_Name_Help_Text'] = 'Este nombre se mostrará en el título';
|
||||
$_L['Next'] = 'Siguiente';
|
||||
$_L['Last'] = 'Atras';
|
||||
$_L['Timezone'] = 'Zona horaria';
|
||||
$_L['Decimal_Point'] = 'Punto decimal';
|
||||
$_L['Thousands_Separator'] = 'Separador de miles';
|
||||
$_L['Currency_Code'] = 'Código de moneda';
|
||||
|
||||
$_L['Order_Voucher'] = 'Comprobante de pedido';
|
||||
$_L['Voucher_Activation'] = 'Activación de Fichas';
|
||||
$_L['List_Activated_Voucher'] = 'Lista de Fichas activados';
|
||||
$_L['Enter_Voucher_Code'] = 'Ingrese el código de la Ficha aquí';
|
||||
$_L['Private_Message'] = 'Mensaje privado';
|
||||
$_L['Inbox'] = 'Bandeja de entrada';
|
||||
$_L['Outbox'] = 'Bandeja de salida';
|
||||
$_L['Compose'] = 'Componer';
|
||||
$_L['Send_to'] = 'Enviar a';
|
||||
$_L['Title'] = 'Título';
|
||||
$_L['Message'] = 'Mensaje';
|
||||
$_L['Account_Information'] = 'Información de su cuenta';
|
||||
$_L['Welcome_Text_User'] = 'Bienvenido a la página de Miembros del Panel, en esta página puede:';
|
||||
$_L['Welcome_Text_Admin'] = '<b>MIKRO-RED</b> es un punto de acceso de facturación y PPPOE para Mikrotik que utiliza PHP y la API de Mikrotik para comunicarse con el enrutador. Si obtiene más ganancias con esta aplicación, por favor dónenos.<br>Ver proyecto <a href="https://github.com/hotspotbilling/phpnuxbill" target="_blank">aqui</a>';
|
||||
|
||||
//update
|
||||
$_L['Invalid_Username_or_Password'] = 'Usuario o contraseña invalido';
|
||||
$_L['Do_Not_Access'] = 'Usted no tiene permiso para acceder a esta página';
|
||||
$_L['Incorrect_Current_Password'] = 'IContraseña actual incorrecta';
|
||||
$_L['Password_Changed_Successfully'] = 'Contraseña cambiada con éxito, por favor inicie sesión de nuevo';
|
||||
$_L['All_field_is_required'] = 'Todo el campo es requerido';
|
||||
$_L['Voucher_Not_Valid'] = 'Ficha no válida';
|
||||
$_L['Activation_Vouchers_Successfully'] = 'Fichas de activación con éxito';
|
||||
$_L['Data_Not_Found'] = 'Datos no encontrados';
|
||||
$_L['Search_by_Username'] = 'Buscar por nombre de usuario';
|
||||
$_L['Search_by_Name'] = 'Buscar por nombre';
|
||||
$_L['Search_by_Code'] = 'Búsqueda por código de Ficha';
|
||||
$_L['Search'] = 'Búsqueda';
|
||||
$_L['Select_Customer'] = 'Seleccione un cliente';
|
||||
$_L['Select_Routers'] = 'Seleccionar enrutadores';
|
||||
$_L['Select_Plans'] = 'Seleccionar planes';
|
||||
$_L['Select_Pool'] = 'Seleccionar Pool';
|
||||
$_L['Hrs'] = 'Hrs';
|
||||
$_L['Mins'] = 'Mins';
|
||||
$_L['Days'] = 'Dias';
|
||||
$_L['Months'] = 'Meses';
|
||||
|
||||
$_L['Add_Language'] = 'Agregar idioma';
|
||||
$_L['Name_Lang'] = 'Nombre del lenguaje';
|
||||
$_L['Folder_Lang'] = 'Nombre de la carpeta';
|
||||
$_L['Translator'] = 'Traducir';
|
||||
$_L['Lang_already_exist'] = 'El nombre del idioma ya existe';
|
||||
|
||||
$_L['Payment_Gateway'] = 'Payment Gateway';
|
||||
$_L['Community'] = 'Community';
|
||||
$_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';
|
||||
$_L['Status'] = 'Status';
|
||||
$_L['Plan_Not_found'] = 'Plan Not found';
|
||||
$_L['Failed_to_create_transaction'] = 'Failed to create transaction.';
|
||||
$_L['Seller_has_not_yet_setup_Xendit_payment_gateway'] = 'Seller has not yet setup Xendit payment gateway';
|
||||
$_L['Admin_has_not_yet_setup_Xendit_payment_gateway_please_tell_admin'] = 'Admin has not yet setup Xendit payment gateway, please tell admin';
|
||||
$_L['Buy_this_your_active_package_will_be_overwrite'] = 'Buy this? your active package will be overwrite';
|
||||
$_L['You_already_have_unpaid_transaction_cancel_it_or_pay_it'] = 'You already have unpaid transaction, cancel it or pay it.';
|
||||
$_L['Transaction_Not_found'] = 'Transaction Not found';
|
||||
$_L['Cancel_it'] = 'Cancel it?';
|
||||
$_L['expired'] = 'expired';
|
||||
$_L['Check_for_Payment'] = 'Check for Payment';
|
||||
$_L['Transaction_still_unpaid'] = 'Transaction still unpaid.';
|
||||
$_L['Paid_Date'] = 'Paid Date';
|
||||
$_L['Transaction_has_been_paid'] = 'Transaction has been paid.';
|
||||
$_L['PAID'] = 'PAID';
|
||||
$_L['CANCELED'] = 'CANCELED';
|
||||
$_L['UNPAID'] = 'UNPAID';
|
||||
$_L['PAY_NOW'] = 'PAY NOW';
|
||||
$_L['Buy_Hotspot_Plan'] = 'Buy Hotspot Plan';
|
||||
$_L['Buy_PPOE_Plan'] = 'Buy PPOE Plan';
|
||||
$_L['Package'] = 'Package';
|
||||
$_L['Order_Internet_Package'] = 'Order Internet Package';
|
||||
$_L['Unknown_Command'] = 'Unknown Command.';
|
||||
$_L['Checking_payment'] = 'Checking payment';
|
||||
$_L['Create_Transaction_Success'] = 'Create Transaction Success';
|
||||
$_L['You_have_unpaid_transaction'] = 'You have unpaid transaction';
|
||||
$_L['TripayPayment_Channel'] = 'TripayPayment Channel';
|
||||
$_L['Payment_Channel'] = 'Payment Channel';
|
||||
$_L['Payment_check_failed'] = 'Payment check failed.';
|
||||
$_L['Order_Package'] = 'Order Package';
|
||||
$_L['Transactions'] = 'Transactions';
|
||||
$_L['Payments'] = 'Payments';
|
||||
$_L['History'] = 'History';
|
||||
$_L['Order_History'] = 'Order History';
|
||||
$_L['Gateway'] = 'Gateway';
|
||||
$_L['Date_Done'] = 'Date Done';
|
||||
$_L['Unpaid_Order'] = 'Unpaid Order';
|
||||
$_L['Payment_Gateway_Not_Found'] = 'Payment Gateway Not Found';
|
||||
$_L['Payment_Gateway_saved_successfully'] = 'Payment Gateway saved successfully';
|
||||
$_L['ORDER'] = 'ORDER';
|
||||
$_L['Package_History'] = 'Package History';
|
||||
$_L['Buy_History'] = 'Buy History';
|
||||
$_L['Activation_History'] = 'Activation History';
|
||||
$_L['Buy_Package'] = 'Buy Package';
|
||||
$_L['Email'] = 'Email';
|
||||
$_L['Company_Footer'] = 'Company Footer';
|
||||
$_L['Will_show_below_user_pages'] = 'Will show below user pages';
|
||||
$_L['Request_OTP'] = 'Request OTP';
|
||||
$_L['Verification_Code'] = 'Verification Code';
|
||||
$_L['SMS_Verification_Code'] = 'SMS Verification Code';
|
||||
$_L['Please_enter_your_email_address'] = 'Please enter your email address';
|
||||
$_L['Failed_to_create_Paypal_transaction'] = 'Failed to create Paypal transaction.';
|
||||
$_L['Plugin'] = 'Plugin';
|
||||
$_L['Plugin_Manager'] = 'Plugin Manager';
|
||||
$_L['User_Notification'] = 'User Notification';
|
||||
$_L['Expired_Notification'] = 'Expired Notification';
|
||||
$_L['User_will_get_notification_when_package_expired'] = 'User will get notification when package expired';
|
||||
$_L['Expired_Notification_Message'] = 'Expired Notification Message';
|
||||
$_L['bnameb_will_be_replaced_with_Customer_Name_bpackageb_will_be_replaced_with_Package_name'] = '<b>[[name]]</b> will be replaced with Customer Name. <b>[[package]]</b> will be replaced with Package name.';
|
||||
$_L['Payment_Notification'] = 'Payment Notification';
|
||||
$_L['User_will_get_invoice_notification_when_buy_package_or_package_refilled'] = 'User will get invoice notification when buy package or package refilled';
|
||||
$_L['Current_IP'] = 'Current IP';
|
||||
$_L['Current_MAC'] = 'Current MAC';
|
||||
$_L['Login_Status'] = 'Login Status';
|
||||
$_L['Login_Request_successfully'] = 'Login Request successfully';
|
||||
$_L['Logout_Request_successfully'] = 'Logout Request successfully';
|
||||
$_L['Disconnect_Internet'] = 'Disconnect Internet?';
|
||||
$_L['Not_Online_Login_now'] = 'Not Online, Login now?';
|
||||
$_L['You_are_Online_Logout'] = 'You are Online, Logout?';
|
||||
$_L['Connect_to_Internet'] = 'Connect to Internet?';
|
||||
$_L['Your_account_not_connected_to_internet'] = 'Your account not connected to internet';
|
||||
$_L['Balance'] = 'Balance';
|
||||
$_L['Balance_System'] = 'Balance System';
|
||||
$_L['Enable_System'] = 'Enable System';
|
||||
$_L['Allow_Transfer'] = 'Allow Transfer';
|
||||
$_L['Telegram_Notification'] = 'Telegram Notification';
|
||||
$_L['SMS_OTP_Registration'] = 'SMS OTP Registration';
|
||||
$_L['Whatsapp_Notification'] = 'Whatsapp Notification';
|
||||
$_L['Tawkto_Chat_Widget'] = 'Tawk.to Chat Widget';
|
||||
$_L['Invoice'] = 'Invoice';
|
||||
$_L['Country_Code_Phone'] = 'Country Code Phone';
|
||||
$_L['Voucher_activation_menu_will_be_hidden'] = 'Voucher activation menu will be hidden';
|
||||
$_L['Customer_can_deposit_money_to_buy_voucher'] = 'Customer can deposit money to buy voucher';
|
||||
$_L['Allow_balance_transfer_between_customers'] = 'Allow balance transfer between customers';$_L['Refill_Balance'] = 'Refill Balance';
|
||||
$_L['Balance_Plans'] = 'Balance Plans';
|
||||
|
||||
$_L['Failed_to_create_transaction_'] = 'Failed to create transaction. ';
|
||||
$_L['Failed_to_check_status_transaction_'] = 'Failed to check status transaction. ';
|
||||
$_L['Disable_Voucher'] = 'Disable Voucher';
|
||||
$_L['Reminder_Notification'] = 'Reminder Notification';
|
||||
$_L['Reminder_Notification_Message'] = 'Reminder Notification Message';
|
||||
$_L['Reminder_7_days'] = 'Reminder 7 days';
|
||||
$_L['Reminder_3_days'] = 'Reminder 3 days';
|
||||
$_L['Reminder_1_day'] = 'Reminder 1 day';
|
||||
$_L['PPPOE_Password'] = 'PPPOE Password';
|
||||
$_L['User_Cannot_change_this_only_admin_if_it_Empty_it_will_use_user_password'] = 'User Cannot change this, only admin. if it Empty it will use user password';
|
||||
$_L['Invoice_Balance_Message'] = 'Invoice Balance Message';
|
||||
$_L['Invoice_Notification_Payment'] = 'Invoice Notification Payment';
|
||||
$_L['Balance_Notification_Payment'] = 'Balance Notification Payment';
|
||||
$_L['Buy_Balance'] = 'Buy Balance';
|
||||
$_L['Price'] = 'Price';
|
||||
$_L['Validity'] = 'Validity';
|
||||
$_L['Disable_auto_renewal'] = 'Disable auto renewal?';
|
||||
$_L['Auto_Renewal_On'] = 'Auto Renewal On';
|
||||
$_L['Enable_auto_renewal'] = 'Enable auto renewal?';
|
||||
$_L['Auto_Renewal_Off'] = 'Auto Renewal Off';
|
||||
$_L['Invoice_Footer'] = 'Invoice Footer';
|
||||
$_L['Pay_With_Balance'] = 'Pay With Balance';
|
||||
$_L['Pay_this_with_Balance_your_active_package_will_be_overwrite'] = 'Pay this with Balance? your active package will be overwrite';
|
||||
$_L['Success_to_buy_package'] = 'Success to buy package';
|
||||
$_L['Auto_Renewal'] = 'Auto Renewal';
|
||||
$_L['View'] = 'View';
|
||||
$_L['Back'] = 'Back';
|
||||
$_L['Active'] = 'Active';
|
||||
$_L['Transfer_Balance'] = 'Transfer Balance';
|
||||
$_L['Send_your_balance'] = 'Send your balance?';
|
||||
$_L['Send'] = 'Send';
|
||||
$_L['Cannot_send_to_yourself'] = 'Cannot send to yourself';
|
||||
$_L['Sending_balance_success'] = 'Sending balance success';
|
||||
$_L['From'] = 'From';
|
||||
$_L['To'] = 'To';
|
||||
$_L['insufficient_balance'] = 'insufficient balance';
|
||||
$_L['Send_Balance'] = 'Send Balance';
|
||||
$_L['Received_Balance'] = 'Received Balance';
|
||||
$_L['Minimum_Balance_Transfer'] = 'Minimum Balance Transfer';
|
||||
$_L['Minimum_Transfer'] = 'Minimum Transfer';
|
||||
$_L['Company_Logo'] = 'Company Logo';
|
||||
$_L['Expired_IP_Pool'] = 'Expired IP Pool';
|
||||
$_L['Proxy'] = 'Proxy';
|
||||
$_L['Proxy_Server'] = 'Proxy Server';
|
||||
$_L['Proxy_Server_Login'] = 'Proxy Server Login';
|
||||
$_L['Hotspot_Plan'] = 'Hotspot Plan';
|
||||
$_L['PPPOE_Plan'] = 'PPPOE Plan';
|
||||
$_L['UNKNOWN'] = 'UNKNOWN';
|
||||
$_L['Are_You_Sure'] = 'Are You Sure?';
|
||||
$_L['Success_to_send_package'] = 'Success to send package';
|
||||
$_L['Target_has_active_plan_different_with_current_plant'] = 'Target has active plan, different with current plant.';
|
||||
$_L['Recharge_a_friend'] = 'Recharge a friend';
|
||||
$_L['Buy_for_friend'] = 'Buy for friend';
|
||||
$_L['Buy_this_for_friend_account'] = 'Buy this for friend account?';
|
||||
$_L['Review_package_before_recharge'] = 'Review package before recharge';
|
||||
$_L['Activate'] = 'Activate';
|
||||
$_L['Deactivate'] = 'Deactivate';
|
||||
$_L['Sync'] = 'Sync';
|
||||
$_L['Failed_to_create_PaymeTrust_transaction'] = 'Failed to create PaymeTrust transaction.';
|
||||
$_L['Location'] = 'Location';
|
||||
$_L['Voucher_Format'] = 'Voucher Format';
|
||||
$_L['Service_Type'] = 'Service Type';
|
||||
$_L['Others'] = 'Others';
|
||||
$_L['PPPoE'] = 'PPPoE';
|
||||
$_L['Hotspot'] = 'Hotspot';
|
375
system/lan/turkish.json
Normal file
375
system/lan/turkish.json
Normal file
@ -0,0 +1,375 @@
|
||||
{
|
||||
"Log_in": "Oturum a\u00e7",
|
||||
"Register": "Kay\u0131t olmak",
|
||||
"Announcement": "Duyuru",
|
||||
"Registration_Info": "Kay\u0131t Bilgisi",
|
||||
"Voucher_not_found__please_buy_voucher_befor_register": "Kupon bulunamad\u0131, l\u00fctfen kay\u0131t olun ve kay\u0131t olun",
|
||||
"Register_Success__You_can_login_now": "Kay\u0131t Ba\u015far\u0131l\u0131! \u015eimdi giri\u015f yapabilirsiniz ",
|
||||
"Log_in_to_Member_Panel": "\u00dcye Paneli'ne giri\u015f yap\u0131n",
|
||||
"Register_as_Member": "\u00dcye olarak kay\u0131t ol",
|
||||
"Enter_Admin_Area": "Y\u00f6netici Paneli Giri\u015fi",
|
||||
"PHPNuxBill": "PHPNuxBill",
|
||||
"Username": "Kullan\u0131c\u0131 ad\u0131",
|
||||
"Password": "Parola",
|
||||
"Passwords_does_not_match": "Parolalar e\u015fle\u015fmiyor",
|
||||
"Account_already_axist": "Hesap zaten aksanl\u0131",
|
||||
"Manage": "Y\u00f6net",
|
||||
"Submit": "G\u00f6nder",
|
||||
"Save_Changes": "De\u011fi\u015fiklikleri Kaydet",
|
||||
"Cancel": "\u0130ptal etmek",
|
||||
"Edit": "D\u00fczenle",
|
||||
"Delete": "Sil",
|
||||
"Welcome": "Ho\u015fgeldiniz",
|
||||
"Data_Created_Successfully": "Veriler Ba\u015far\u0131yla Olu\u015fturuldu ",
|
||||
"Data_Updated_Successfully": "Veriler Ba\u015far\u0131yla G\u00fcncellendi",
|
||||
"Data_Deleted_Successfully": "Veri Ba\u015far\u0131yla Silindi",
|
||||
"Dashboard": "Dashboard",
|
||||
"Search_Customers___": "M\u00fc\u015fteri Ara ...",
|
||||
"My_Account": "Hesab\u0131m",
|
||||
"My_Profile": "Benim profilim",
|
||||
"Settings": "Ayarlar",
|
||||
"Edit_Profile": "Profili D\u00fczenle",
|
||||
"Change_Password": "\u015eifre de\u011fi\u015ftir",
|
||||
"Logout": "\u00c7\u0131k\u0131\u015f Yap",
|
||||
"Services": "Hizmetler",
|
||||
"Bandwidth_Plans": "Bant Geni\u015fli\u011fi Planlar\u0131",
|
||||
"Bandwidth_Name": "Bant Geni\u015fli\u011fi Ad\u0131",
|
||||
"New_Bandwidth": "Yeni Bant Geni\u015fli\u011fi",
|
||||
"Edit_Bandwidth": "Bant Geni\u015fli\u011fini D\u00fczenle",
|
||||
"Add_New_Bandwidth": "Yeni Bant Geni\u015fli\u011fi Ekle",
|
||||
"Rate_Download": "\u0130ndirme Oran\u0131",
|
||||
"Rate_Upload": "\u00dccret Y\u00fckleme",
|
||||
"Name_Bandwidth_Already_Exist": "Bandwidth Ad\u0131 Zaten Var",
|
||||
"Hotspot_Plans": "Hotspot Planlar\u0131",
|
||||
"PPPOE_Plans": "PPPOE Planlar\u0131",
|
||||
"Plan_Name": "Plan Ad\u0131",
|
||||
"New_Service_Plan": "Yeni Hizmet Plan\u0131",
|
||||
"Add_Service_Plan": "Hizmet Plan\u0131 Ekle",
|
||||
"Edit_Service_Plan": "Hizmet Plan\u0131n\u0131 D\u00fczenle",
|
||||
"Name_Plan_Already_Exist": "Plan\u0131 \u0130smi Zaten Var",
|
||||
"Plan_Type": "Plan T\u00fcr\u00fc",
|
||||
"Plan_Price": "Plan Fiyat\u0131",
|
||||
"Limit_Type": "S\u0131n\u0131r Tipi",
|
||||
"Unlimited": "S\u0131n\u0131rs\u0131z",
|
||||
"Limited": "S\u0131n\u0131rl\u0131",
|
||||
"Time_Limit": "Zaman s\u0131n\u0131r\u0131",
|
||||
"Data_Limit": "Veri S\u0131n\u0131r\u0131",
|
||||
"Both_Limit": "Her \u0130ki S\u0131n\u0131r",
|
||||
"Plan_Validity": "Plan Ge\u00e7erlili\u011fi",
|
||||
"Select_Bandwidth": "Bant Geni\u015fli\u011fini Se\u00e7",
|
||||
"Shared_Users": "Payla\u015f\u0131lan Kullan\u0131c\u0131lar",
|
||||
"Choose_User_Type_Sales_to_disable_access_to_Settings": "Ayarlar'a eri\u015fimi devre d\u0131\u015f\u0131 b\u0131rakmak i\u00e7in Kullan\u0131c\u0131 T\u00fcr\u00fc Sat\u0131\u015flar\u0131n\u0131 Se\u00e7",
|
||||
"Current_Password": "\u015eimdiki \u015eifre",
|
||||
"New_Password": "Yeni \u015eifre",
|
||||
"Administrator": "Y\u00f6netici",
|
||||
"Sales": "Sat\u0131\u015f",
|
||||
"Member": "\u00dcye",
|
||||
"Confirm_New_Password": "Yeni \u015fifreyi onayla",
|
||||
"Confirm_Password": "\u015eifreyi Onayla",
|
||||
"Full_Name": "Ad Soyad",
|
||||
"User_Type": "Kullan\u0131c\u0131 tipi",
|
||||
"Address": "Adres",
|
||||
"Created_On": "Olu\u015fturuldu",
|
||||
"Expires_On": "Tarihinde sona eriyor",
|
||||
"Phone_Number": "Telefon numaras\u0131",
|
||||
"User_deleted_Successfully": "Kullan\u0131c\u0131 Ba\u015far\u0131yla Silindi",
|
||||
"Full_Administrator": "Tam Y\u00f6netici",
|
||||
"Keep_Blank_to_do_not_change_Password": "\u015eifreyi de\u011fi\u015ftirmemek i\u00e7in bo\u015f tutun",
|
||||
"Keep_it_blank_if_you_do_not_want_to_show_currency_code": "Para birimi kodunu g\u00f6stermek istemiyorsan\u0131z bo\u015f b\u0131rak\u0131n",
|
||||
"Theme_Style": "Tema Stili",
|
||||
"Theme_Color": "Tema Rengi",
|
||||
"Default_Language": "Varsay\u0131lan dil",
|
||||
"Network": "A\u011f",
|
||||
"Routers": "Y\u00f6nlendiriciler",
|
||||
"IP_Pool": "IP Havuzu",
|
||||
"New_Router": "Yeni Y\u00f6nlendirici",
|
||||
"Add_Router": "Router ekle",
|
||||
"Edit_Router": "Y\u00f6nlendiriciyi D\u00fczenle",
|
||||
"Router_Name": "Y\u00f6nlendirici Ad\u0131",
|
||||
"IP_Address": "IP adresi",
|
||||
"Router_Secret": "Y\u00f6nlendirici S\u0131rr\u0131",
|
||||
"Description": "A\u00e7\u0131klama",
|
||||
"IP_Router_Already_Exist": "IP Router Zaten Var",
|
||||
"Name_Pool": "\u0130sim Havuzu",
|
||||
"Range_IP": "Aral\u0131k \u0130P",
|
||||
"New_Pool": "Yeni Havuz",
|
||||
"Add_Pool": "Havuz ekle",
|
||||
"Edit_Pool": "Havuzu D\u00fczenle",
|
||||
"Pool_Name_Already_Exist": "Havuz Ad\u0131 \u200b\u200bZaten Var",
|
||||
"Prepaid": "\u00d6n \u00d6demeli",
|
||||
"Prepaid_Users": "\u00d6n \u00d6demeli Kullan\u0131c\u0131lar",
|
||||
"Prepaid_Vouchers": "\u00d6n \u00d6demeli Kuponlar",
|
||||
"Refill_Account": "Hesab\u0131 Yenile",
|
||||
"Recharge_Account": "Hesab\u0131 Yeniden \u015earj Et",
|
||||
"Select_Account": "Hesap Se\u00e7",
|
||||
"Service_Plan": "Servis plan\u0131",
|
||||
"Recharge": "\u015earj",
|
||||
"Method": "Y\u00f6ntem",
|
||||
"Account_Created_Successfully": "Hesap ba\u015far\u0131yla olu\u015fturuldu",
|
||||
"Database_Status": "Veritaban\u0131 Durumu",
|
||||
"Total_Database_Size": "Toplam Veritaban\u0131 Boyutu",
|
||||
"Download_Database_Backup": "Veritaban\u0131 Yedekleme \u0130ndir",
|
||||
"Table_Name": "Tablo ismi",
|
||||
"Rows": "Sat\u0131r",
|
||||
"Size": "Boyut",
|
||||
"Customer": "M\u00fc\u015fteri",
|
||||
"Add_New_Contact": "Yeni \u0130leti\u015fim Ekle",
|
||||
"Edit_Contact": "\u0130leti\u015fim D\u00fczenle",
|
||||
"List_Contact": "Liste \u0130rtibat",
|
||||
"Manage_Contact": "Ki\u015fiyi Y\u00f6netin",
|
||||
"Reports": "Raporlar",
|
||||
"Daily_Reports": "G\u00fcnl\u00fck raporlar",
|
||||
"Period_Reports": "D\u00f6nem Raporlar\u0131",
|
||||
"All_Transactions": "T\u00fcm \u0130\u015flemler",
|
||||
"Total_Income": "Toplam gelir",
|
||||
"All_Transactions_at_Date": "Tarihte T\u00fcm \u0130\u015flemler",
|
||||
"Export_for_Print": "Bask\u0131 i\u00e7in \u0130hracat",
|
||||
"Print": "Bask\u0131",
|
||||
"Export_to_PDF": "PDF'ye Aktar",
|
||||
"Click_Here_to_Print": "Yazd\u0131rmak i\u00e7in Buraya T\u0131klay\u0131n",
|
||||
"You_can_use_html_tag": "Html etiketini kullanabilirsiniz",
|
||||
"Date_Format": "Tarih format\u0131",
|
||||
"Income_Today": "Gelir Bug\u00fcn",
|
||||
"Income_This_Month": "Bu Ay Gelir",
|
||||
"Users_Active": "Kullan\u0131c\u0131lar Aktif",
|
||||
"Total_Users": "Toplam Kullan\u0131c\u0131",
|
||||
"Users": "Kullan\u0131c\u0131lar",
|
||||
"Edit_User": "Kullan\u0131c\u0131y\u0131 d\u00fczenle",
|
||||
"Last_Login": "Son giri\u015f",
|
||||
"Administrator_Users": "Y\u00f6netici Kullan\u0131c\u0131lar\u0131",
|
||||
"Manage_Administrator": "Y\u00f6netici Y\u00f6net",
|
||||
"Add_New_Administrator": "Yeni Y\u00f6netici Ekleyin",
|
||||
"Localisation": "Lokalizasyon",
|
||||
"Backup_Restore": "Yedekleme \/ Geri",
|
||||
"General_Settings": "Genel Ayarlar",
|
||||
"Date": "Tarih",
|
||||
"Login_Successful": "Giri\u015f ba\u015far\u0131l\u0131",
|
||||
"Failed_Login": "Ba\u015far\u0131s\u0131z oturum a\u00e7ma",
|
||||
"Settings_Saved_Successfully": "Ayarlar ba\u015far\u0131yla kaydedildi",
|
||||
"User_Updated_Successfully": "Kullan\u0131c\u0131 Ba\u015far\u0131yla G\u00fcncellendi",
|
||||
"User_Expired__Today": "Kullan\u0131c\u0131 S\u00fcresi Doldu, Bug\u00fcn",
|
||||
"Activity_Log": "Etkinlik G\u00fcnl\u00fc\u011f\u00fc",
|
||||
"View_Reports": "Raporlar\u0131 G\u00f6r\u00fcnt\u00fcle",
|
||||
"View_All": "Hepsini g\u00f6r",
|
||||
"Number_of_Vouchers": "Kuponlar\u0131n Say\u0131s\u0131",
|
||||
"Length_Code": "Uzunluk Kodu",
|
||||
"Code_Voucher": "Kod Makbuzu",
|
||||
"Voucher": "Fi\u015f",
|
||||
"Hotspot_Voucher": "Hotspot Kuponu",
|
||||
"Status_Voucher": "Durum Makbuzu",
|
||||
"Add_Vouchers": "Kupon Ekle",
|
||||
"Create_Vouchers_Successfully": "Kuponlar\u0131 ba\u015far\u0131yla olu\u015ftur",
|
||||
"Generate": "Genel",
|
||||
"Print_side_by_side__it_will_easy_to_cut": "Yanyana yazd\u0131r\u0131rsan\u0131z, kesmesi daha kolay olacakt\u0131r.",
|
||||
"From_Date": "\u0130tibaren",
|
||||
"To_Date": "Bug\u00fcne kadar",
|
||||
"New_Service": "Yeni Servis",
|
||||
"Type": "T\u00fcr",
|
||||
"Finish": "Biti\u015f",
|
||||
"Application_Name__Company_Name": "Uygulama Ad\u0131 \/ \u015eirket Ad\u0131",
|
||||
"This_Name_will_be_shown_on_the_Title": "Bu \u0130sim Ba\u015fl\u0131kta g\u00f6sterilecek",
|
||||
"Next": "Sonraki",
|
||||
"Last": "Son",
|
||||
"Timezone": "Saat dilimi",
|
||||
"Decimal_Point": "Ondal\u0131k nokta",
|
||||
"Thousands_Separator": "Bin Ay\u0131r\u0131c\u0131",
|
||||
"Currency_Code": "Para Birimi Kodu",
|
||||
"Order_Voucher": "Sipari\u015f Makbuzu",
|
||||
"Voucher_Activation": "Kupon Aktivasyonu",
|
||||
"List_Activated_Voucher": "Aktif Fi\u015f Listesi",
|
||||
"Enter_voucher_code_here": "Kupon kodunu buraya girin",
|
||||
"Private_Message": "\u00d6zel mesaj",
|
||||
"Inbox": "Gelen kutusu",
|
||||
"Outbox": "Giden",
|
||||
"Compose": "Olu\u015fturma",
|
||||
"Send_to": "G\u00f6nderildi",
|
||||
"Title": "Ba\u015fl\u0131k",
|
||||
"Message": "Mesaj",
|
||||
"Your_Account_Information": "Hesap Bilgileriniz",
|
||||
"Invalid_Username_or_Password": "Ge\u00e7ersiz kullan\u0131c\u0131 ad\u0131 veya \u015fifre",
|
||||
"You_do_not_have_permission_to_access_this_page": "Bu sayfaya eri\u015fim izniniz yok",
|
||||
"Incorrect_Current_Password": "Yanl\u0131\u015f Ge\u00e7erli \u015eifre",
|
||||
"Password_changed_successfully__Please_login_again": "\u015eifre ba\u015far\u0131yla de\u011fi\u015ftirildi, L\u00fctfen tekrar giri\u015f yap\u0131n",
|
||||
"All_field_is_required": "T\u00fcm alan gerekli",
|
||||
"Voucher_Not_Valid": "Kupon Ge\u00e7erli De\u011fil",
|
||||
"Activation_Vouchers_Successfully": "Aktivasyon Kuponlar\u0131 Ba\u015far\u0131yla",
|
||||
"Data_Not_Found": "Veri bulunamad\u0131",
|
||||
"Search_by_Username": "Kullan\u0131c\u0131 Ad\u0131na G\u00f6re Ara",
|
||||
"Search_by_Name": "\u0130sme G\u00f6re Ara",
|
||||
"Search_by_Code_Voucher": "Kod Makbuzuna G\u00f6re Ara",
|
||||
"Search": "Arama",
|
||||
"Select_a_customer": "Bir m\u00fc\u015fteri se\u00e7in",
|
||||
"Select_Routers": "Router'lar\u0131 Se\u00e7",
|
||||
"Select_Plans": "Planlar\u0131 Se\u00e7",
|
||||
"Select_Pool": "Havuz Se\u00e7",
|
||||
"Hrs": "Saat",
|
||||
"Mins": "Dk",
|
||||
"Days": "G\u00fcn",
|
||||
"Months": "Ay",
|
||||
"Add_Language": "Dil Ekle",
|
||||
"Language_Name": "Dil ad\u0131",
|
||||
"Folder_Name": "Klas\u00f6r ad\u0131",
|
||||
"Translator": "\u00c7evirmen",
|
||||
"Language_Name_Already_Exist": "Dil Ad\u0131 Zaten Var",
|
||||
"Payment_Gateway": "Payment Gateway",
|
||||
"Community": "Community",
|
||||
"1_user_can_be_used_for_many_devices_": "1 user can be used for many devices?",
|
||||
"Cannot_be_change_after_saved": "Cannot be change after saved",
|
||||
"Explain_Coverage_of_router": "Jelaskan Cakupan wilayah hotspot",
|
||||
"Name_of_Area_that_router_operated": "Nama Lokasi\/Wilayah Router beroperasi",
|
||||
"Payment_Notification_URL__Recurring_Notification_URL__Pay_Account_Notification_URL": "Payment Notification URL, Recurring Notification URL, Pay Account Notification URL",
|
||||
"Finish_Redirect_URL__Unfinish_Redirect_URL__Error_Redirect_URL": "Finish Redirect URL, Unfinish Redirect URL, Error Redirect URL",
|
||||
"Status": "Status",
|
||||
"Plan_Not_found": "Plan Not found",
|
||||
"Failed_to_create_transaction_": "Failed to create transaction.",
|
||||
"Seller_has_not_yet_setup_Xendit_payment_gateway": "Seller has not yet setup Xendit payment gateway",
|
||||
"Admin_has_not_yet_setup_Xendit_payment_gateway__please_tell_admin": "Admin has not yet setup Xendit payment gateway, please tell admin",
|
||||
"Buy_this__your_active_package_will_be_overwrite": "Buy this? your active package will be overwrite",
|
||||
"You_already_have_unpaid_transaction__cancel_it_or_pay_it_": "You already have unpaid transaction, cancel it or pay it.",
|
||||
"Transaction_Not_found": "Transaction Not found",
|
||||
"Cancel_it_": "Cancel it?",
|
||||
"expired": "expired",
|
||||
"Check_for_Payment": "Check for Payment",
|
||||
"Transaction_still_unpaid_": "Transaction still unpaid.",
|
||||
"Paid_Date": "Paid Date",
|
||||
"Transaction_has_been_paid_": "Transaction has been paid.",
|
||||
"PAID": "PAID",
|
||||
"CANCELED": "CANCELED",
|
||||
"UNPAID": "UNPAID",
|
||||
"PAY_NOW": "PAY NOW",
|
||||
"Buy_Hotspot_Plan": "Buy Hotspot Plan",
|
||||
"Buy_PPOE_Plan": "Buy PPOE Plan",
|
||||
"Package": "Package",
|
||||
"Order_Internet_Package": "Order Internet Package",
|
||||
"Unknown_Command_": "Unknown Command.",
|
||||
"Checking_payment": "Checking payment",
|
||||
"Create_Transaction_Success": "Create Transaction Success",
|
||||
"You_have_unpaid_transaction": "You have unpaid transaction",
|
||||
"TripayPayment_Channel": "TripayPayment Channel",
|
||||
"Payment_Channel": "Payment Channel",
|
||||
"Payment_check_failed_": "Payment check failed.",
|
||||
"Order_Package": "Order Package",
|
||||
"Transactions": "Transactions",
|
||||
"Payments": "Payments",
|
||||
"History": "History",
|
||||
"Order_History": "Order History",
|
||||
"Gateway": "Gateway",
|
||||
"Date_Done": "Date Done",
|
||||
"Unpaid_Order": "Unpaid Order",
|
||||
"Payment_Gateway_Not_Found": "Payment Gateway Not Found",
|
||||
"Payment_Gateway_saved_successfully": "Payment Gateway saved successfully",
|
||||
"ORDER": "ORDER",
|
||||
"Package_History": "Package History",
|
||||
"Buy_History": "Buy History",
|
||||
"Activation_History": "Activation History",
|
||||
"Buy_Package": "Buy Package",
|
||||
"Email": "Email",
|
||||
"Company_Footer": "Company Footer",
|
||||
"Will_show_below_user_pages": "Will show below user pages",
|
||||
"Request_OTP": "Request OTP",
|
||||
"Verification_Code": "Verification Code",
|
||||
"SMS_Verification_Code": "SMS Verification Code",
|
||||
"Please_enter_your_email_address": "Please enter your email address",
|
||||
"Failed_to_create_Paypal_transaction_": "Failed to create Paypal transaction.",
|
||||
"Plugin": "Plugin",
|
||||
"Plugin_Manager": "Plugin Manager",
|
||||
"User_Notification": "User Notification",
|
||||
"Expired_Notification": "Expired Notification",
|
||||
"User_will_get_notification_when_package_expired": "User will get notification when package expired",
|
||||
"Expired_Notification_Message": "Expired Notification Message",
|
||||
"Payment_Notification": "Payment Notification",
|
||||
"User_will_get_invoice_notification_when_buy_package_or_package_refilled": "User will get invoice notification when buy package or package refilled",
|
||||
"Current_IP": "Current IP",
|
||||
"Current_MAC": "Current MAC",
|
||||
"Login_Status": "Login Status",
|
||||
"Login_Request_successfully": "Login Request successfully",
|
||||
"Logout_Request_successfully": "Logout Request successfully",
|
||||
"Disconnect_Internet_": "Disconnect Internet?",
|
||||
"Not_Online__Login_now_": "Not Online, Login now?",
|
||||
"You_are_Online__Logout_": "You are Online, Logout?",
|
||||
"Connect_to_Internet_": "Connect to Internet?",
|
||||
"Your_account_not_connected_to_internet": "Your account not connected to internet",
|
||||
"Balance": "Balance",
|
||||
"Balance_System": "Balance System",
|
||||
"Enable_System": "Enable System",
|
||||
"Allow_Transfer": "Allow Transfer",
|
||||
"Telegram_Notification": "Telegram Notification",
|
||||
"SMS_OTP_Registration": "SMS OTP Registration",
|
||||
"Whatsapp_Notification": "Whatsapp Notification",
|
||||
"Tawk_to_Chat_Widget": "Tawk.to Chat Widget",
|
||||
"Invoice": "Invoice",
|
||||
"Country_Code_Phone": "Country Code Phone",
|
||||
"Voucher_activation_menu_will_be_hidden": "Voucher activation menu will be hidden",
|
||||
"Customer_can_deposit_money_to_buy_voucher": "Customer can deposit money to buy voucher",
|
||||
"Allow_balance_transfer_between_customers": "Allow balance transfer between customers",
|
||||
"Failed_to_create_transaction__": "Failed to create transaction. ",
|
||||
"Failed_to_check_status_transaction__": "Failed to check status transaction. ",
|
||||
"Disable_Voucher": "Disable Voucher",
|
||||
"Reminder_Notification": "Reminder Notification",
|
||||
"Reminder_Notification_Message": "Reminder Notification Message",
|
||||
"Reminder_7_days": "Reminder 7 days",
|
||||
"Reminder_3_days": "Reminder 3 days",
|
||||
"Reminder_1_day": "Reminder 1 day",
|
||||
"PPPOE_Password": "PPPOE Password",
|
||||
"User_Cannot_change_this__only_admin__if_it_Empty_it_will_use_user_password": "User Cannot change this, only admin. if it Empty it will use user password",
|
||||
"Invoice_Balance_Message": "Invoice Balance Message",
|
||||
"Invoice_Notification_Payment": "Invoice Notification Payment",
|
||||
"Balance_Notification_Payment": "Balance Notification Payment",
|
||||
"Balance_Plans": "Balance Plans",
|
||||
"Buy_Balance": "Buy Balance",
|
||||
"Price": "Price",
|
||||
"Validity": "Validity",
|
||||
"Disable_auto_renewal_": "Disable auto renewal?",
|
||||
"Auto_Renewal_On": "Auto Renewal On",
|
||||
"Enable_auto_renewal_": "Enable auto renewal?",
|
||||
"Auto_Renewal_Off": "Auto Renewal Off",
|
||||
"Refill_Balance": "Refill Balance",
|
||||
"Invoice_Footer": "Invoice Footer",
|
||||
"Pay_With_Balance": "Pay With Balance",
|
||||
"Pay_this_with_Balance__your_active_package_will_be_overwrite": "Pay this with Balance? your active package will be overwrite",
|
||||
"Success_to_buy_package": "Success to buy package",
|
||||
"Auto_Renewal": "Auto Renewal",
|
||||
"View": "View",
|
||||
"Back": "Back",
|
||||
"Active": "Active",
|
||||
"Transfer_Balance": "Transfer Balance",
|
||||
"Send_your_balance_": "Send your balance?",
|
||||
"Send": "Send",
|
||||
"Cannot_send_to_yourself": "Cannot send to yourself",
|
||||
"Sending_balance_success": "Sending balance success",
|
||||
"From": "From",
|
||||
"To": "To",
|
||||
"insufficient_balance": "insufficient balance",
|
||||
"Send_Balance": "Send Balance",
|
||||
"Received_Balance": "Received Balance",
|
||||
"Minimum_Balance_Transfer": "Minimum Balance Transfer",
|
||||
"Minimum_Transfer": "Minimum Transfer",
|
||||
"Company_Logo": "Company Logo",
|
||||
"Expired_IP_Pool": "Expired IP Pool",
|
||||
"Proxy": "Proxy",
|
||||
"Proxy_Server": "Proxy Server",
|
||||
"Proxy_Server_Login": "Proxy Server Login",
|
||||
"Hotspot_Plan": "Hotspot Plan",
|
||||
"PPPOE_Plan": "PPPOE Plan",
|
||||
"UNKNOWN": "UNKNOWN",
|
||||
"Are_You_Sure_": "Are You Sure?",
|
||||
"Success_to_send_package": "Success to send package",
|
||||
"Target_has_active_plan__different_with_current_plant_": "Target has active plan, different with current plant.",
|
||||
"Recharge_a_friend": "Recharge a friend",
|
||||
"Buy_for_friend": "Buy for friend",
|
||||
"Buy_this_for_friend_account_": "Buy this for friend account?",
|
||||
"Review_package_before_recharge": "Review package before recharge",
|
||||
"Activate": "Activate",
|
||||
"Deactivate": "Deactivate",
|
||||
"Sync": "Sync",
|
||||
"Failed_to_create_PaymeTrust_transaction_": "Failed to create PaymeTrust transaction.",
|
||||
"Location": "Location",
|
||||
"Voucher_Format": "Voucher Format",
|
||||
"Service_Type": "Service Type",
|
||||
"Others": "Others",
|
||||
"PPPoE": "PPPoE",
|
||||
"Hotspot": "Hotspot",
|
||||
"Monthly_Registered_Customers": "Monthly Registered Customers",
|
||||
"Total_Monthly_Sales": "Total Monthly Sales",
|
||||
"Active_Users": "Active Users"
|
||||
}
|
@ -1,385 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
-----------------------------------
|
||||
Language Name: Turkish
|
||||
Contributor: Goktug Bogac OGEL
|
||||
Web:
|
||||
Email: goktugogel@gmail.com
|
||||
------------------------------------
|
||||
*/
|
||||
$_L['Login'] = 'Oturum aç';
|
||||
$_L['Register'] = 'Kayıt olmak';
|
||||
$_L['Announcement'] = 'Duyuru';
|
||||
$_L['Registration_Info'] = 'Kayıt Bilgisi';
|
||||
$_L['Register_Voucher_Failed'] = 'Kupon bulunamadı, lütfen kayıt olun ve kayıt olun';
|
||||
$_L['Register_Success'] = 'Kayıt Başarılı! Şimdi giriş yapabilirsiniz ';
|
||||
$_L['Sign_In_Member'] = 'Üye Paneli\'ne giriş yapın';
|
||||
$_L['Register_Member'] = 'Üye olarak kayıt ol';
|
||||
$_L['Sign_In_Admin'] = 'Yönetici Paneli Girişi';
|
||||
$_L['Logo'] = 'PHPNuxBill';
|
||||
$_L['Username'] = 'Kullanıcı adı';
|
||||
$_L['Password'] = 'Parola';
|
||||
$_L['PasswordsNotMatch'] = 'Parolalar eşleşmiyor';
|
||||
$_L['account_already_exist'] = 'Hesap zaten aksanlı';
|
||||
$_L['Manage'] = 'Yönet';
|
||||
$_L['Submit'] = 'Gönder';
|
||||
$_L['Save'] = 'Değişiklikleri Kaydet';
|
||||
$_L['Cancel'] = 'İptal etmek';
|
||||
$_L['Edit'] = 'Düzenle';
|
||||
$_L['Delete'] = 'Sil';
|
||||
$_L['Welcome'] = 'Hoşgeldiniz';
|
||||
$_L['Created_Successfully'] = 'Veriler Başarıyla Oluşturuldu ';
|
||||
$_L['Updated_Successfully'] = 'Veriler Başarıyla Güncellendi';
|
||||
$_L['Delete_Successfully'] = 'Veri Başarıyla Silindi';
|
||||
$_L['Dashboard'] = 'Dashboard';
|
||||
$_L['Search_Contact'] = 'Müşteri Ara ...';
|
||||
$_L['My_Account'] = 'Hesabım';
|
||||
$_L['My_Profile'] = 'Benim profilim';
|
||||
$_L['Settings'] = 'Ayarlar';
|
||||
$_L['Edit_Profile'] = 'Profili Düzenle';
|
||||
$_L['Change_Password'] = 'Şifre değiştir';
|
||||
$_L['Logout'] = 'Çıkış Yap';
|
||||
$_L['Services'] = 'Hizmetler';
|
||||
$_L['Bandwidth_Plans'] = 'Bant Genişliği Planları';
|
||||
$_L['BW_Name'] = 'Bant Genişliği Adı';
|
||||
$_L['New_Bandwidth'] = 'Yeni Bant Genişliği';
|
||||
$_L['Edit_Bandwidth'] = 'Bant Genişliğini Düzenle';
|
||||
$_L['Add_Bandwidth'] = 'Yeni Bant Genişliği Ekle';
|
||||
$_L['Rate_Download'] = 'İndirme Oranı';
|
||||
$_L['Rate_Upload'] = 'Ücret Yükleme';
|
||||
$_L['BW_already_exist'] = 'Bandwidth Adı Zaten Var';
|
||||
$_L['Hotspot_Plans'] = 'Hotspot Planları';
|
||||
$_L['PPPOE_Plans'] = 'PPPOE Planları';
|
||||
$_L['Plan_Name'] = 'Plan Adı';
|
||||
$_L['New_Plan'] = 'Yeni Hizmet Planı';
|
||||
$_L['Add_Plan'] = 'Hizmet Planı Ekle';
|
||||
$_L['Edit_Plan'] = 'Hizmet Planını Düzenle';
|
||||
$_L['Plan_already_exist'] = 'Planı İsmi Zaten Var';
|
||||
$_L['Plan_Type'] = 'Plan Türü';
|
||||
$_L['Plan_Price'] = 'Plan Fiyatı';
|
||||
$_L['Limit_Type'] = 'Sınır Tipi';
|
||||
$_L['Unlimited'] = 'Sınırsız';
|
||||
$_L['Limited'] = 'Sınırlı';
|
||||
$_L['Time_Limit'] = 'Zaman sınırı';
|
||||
$_L['Data_Limit'] = 'Veri Sınırı';
|
||||
$_L['Both_Limit'] = 'Her İki Sınır';
|
||||
$_L['Plan_Validity'] = 'Plan Geçerliliği';
|
||||
$_L['Select_BW'] = 'Bant Genişliğini Seç';
|
||||
$_L['Shared_Users'] = 'Paylaşılan Kullanıcılar';
|
||||
$_L['user_type_help'] = 'Ayarlar\'a erişimi devre dışı bırakmak için Kullanıcı Türü Satışlarını Seç';
|
||||
$_L['Current_Password'] = 'Şimdiki Şifre';
|
||||
$_L['New_Password'] = 'Yeni Şifre';
|
||||
$_L['Administrator'] = 'Yönetici';
|
||||
$_L['Sales'] = 'Satış';
|
||||
$_L['Member'] = 'Üye';
|
||||
$_L['Confirm_New_Password'] = 'Yeni şifreyi onayla';
|
||||
$_L['Confirm_Password'] = 'Şifreyi Onayla';
|
||||
$_L['Full_Name'] = 'Ad Soyad';
|
||||
$_L['User_Type'] = 'Kullanıcı tipi';
|
||||
$_L['Address'] = 'Adres';
|
||||
$_L['Created_On'] = 'Oluşturuldu';
|
||||
$_L['Expires_On'] = 'Tarihinde sona eriyor';
|
||||
$_L['Phone_Number'] = 'Telefon numarası';
|
||||
$_L['User_Delete_Ok'] = 'Kullanıcı Başarıyla Silindi';
|
||||
$_L['Full_Administrator'] = 'Tam Yönetici';
|
||||
$_L['password_change_help'] = 'Şifreyi değiştirmemek için boş tutun';
|
||||
$_L['currency_help'] = 'Para birimi kodunu göstermek istemiyorsanız boş bırakın';
|
||||
$_L['Theme_Style'] = 'Tema Stili';
|
||||
$_L['Theme_Color'] = 'Tema Rengi';
|
||||
$_L['Default_Language'] = 'Varsayılan dil';
|
||||
$_L['Network'] = 'Ağ';
|
||||
$_L['Routers'] = 'Yönlendiriciler';
|
||||
$_L['Pool'] = 'IP Havuzu';
|
||||
$_L['New_Router'] = 'Yeni Yönlendirici';
|
||||
$_L['Add_Router'] = 'Router ekle';
|
||||
$_L['Edit_Router'] = 'Yönlendiriciyi Düzenle';
|
||||
$_L['Router_Name'] = 'Yönlendirici Adı';
|
||||
$_L['IP_Address'] = 'IP adresi';
|
||||
$_L['Router_Secret'] = 'Yönlendirici Sırrı';
|
||||
$_L['Description'] = 'Açıklama';
|
||||
$_L['Router_already_exist'] = 'IP Router Zaten Var';
|
||||
$_L['Pool_Name'] = 'İsim Havuzu';
|
||||
$_L['Range_IP'] = 'Aralık İP';
|
||||
$_L['New_Pool'] = 'Yeni Havuz';
|
||||
$_L['Add_Pool'] = 'Havuz ekle';
|
||||
$_L['Edit_Pool'] = 'Havuzu Düzenle';
|
||||
$_L['Pool_already_exist'] = 'Havuz Adı Zaten Var';
|
||||
$_L['Prepaid'] = 'Ön Ödemeli';
|
||||
$_L['Prepaid_User'] = 'Ön Ödemeli Kullanıcılar';
|
||||
$_L['Prepaid_Vouchers'] = 'Ön Ödemeli Kuponlar';
|
||||
$_L['Refill_Account'] = 'Hesabı Yenile';
|
||||
$_L['Recharge_Account'] = 'Hesabı Yeniden Şarj Et';
|
||||
$_L['Select_Account'] = 'Hesap Seç';
|
||||
$_L['Service_Plan'] = 'Servis planı';
|
||||
$_L['Recharge'] = 'Şarj';
|
||||
$_L['Method'] = 'Yöntem';
|
||||
$_L['account_created_successfully'] = 'Hesap başarıyla oluşturuldu';
|
||||
$_L['Database_Status'] = 'Veritabanı Durumu';
|
||||
$_L['Total_Database_Size'] = 'Toplam Veritabanı Boyutu';
|
||||
$_L['Download_Database_Backup'] = 'Veritabanı Yedekleme İndir';
|
||||
$_L['Table_Name'] = 'Tablo ismi';
|
||||
$_L['Rows'] = 'Satır';
|
||||
$_L['Size'] = 'Boyut';
|
||||
$_L['Customers'] = 'Müşteri';
|
||||
$_L['Add_Contact'] = 'Yeni İletişim Ekle';
|
||||
$_L['Edit_Contact'] = 'İletişim Düzenle';
|
||||
$_L['List_Contact'] = 'Liste İrtibat';
|
||||
$_L['Manage_Accounts'] = 'Kişiyi Yönetin';
|
||||
$_L['Reports'] = 'Raporlar';
|
||||
$_L['Daily_Report'] = 'Günlük raporlar';
|
||||
$_L['Period_Reports'] = 'Dönem Raporları';
|
||||
$_L['All_Transactions'] = 'Tüm İşlemler';
|
||||
$_L['Total_Income'] = 'Toplam gelir';
|
||||
$_L['All_Transactions_at_Date'] = 'Tarihte Tüm İşlemler';
|
||||
$_L['Export_for_Print'] = 'Baskı için İhracat';
|
||||
$_L['Print'] = 'Baskı';
|
||||
$_L['Export_to_PDF'] = 'PDF\'ye Aktar';
|
||||
$_L['Click_Here_to_Print'] = 'Yazdırmak için Buraya Tıklayın';
|
||||
$_L['You_can_use_html_tag'] = 'Html etiketini kullanabilirsiniz';
|
||||
$_L['Date_Format'] = 'Tarih formatı';
|
||||
$_L['Income_Today'] = 'Gelir Bugün';
|
||||
$_L['Income_This_Month'] = 'Bu Ay Gelir';
|
||||
$_L['Users_Active'] = 'Kullanıcılar Aktif';
|
||||
$_L['Total_Users'] = 'Toplam Kullanıcı';
|
||||
$_L['Users'] = 'Kullanıcılar';
|
||||
$_L['Edit_User'] = 'Kullanıcıyı düzenle';
|
||||
$_L['Last_Login'] = 'Son giriş';
|
||||
$_L['Administrator_Users'] = 'Yönetici Kullanıcıları';
|
||||
$_L['Manage_Administrator'] = 'Yönetici Yönet';
|
||||
$_L['Add_New_Administrator'] = 'Yeni Yönetici Ekleyin';
|
||||
$_L['Localisation'] = 'Lokalizasyon';
|
||||
$_L['Backup_Restore'] = 'Yedekleme / Geri';
|
||||
$_L['General_Settings'] = 'Genel Ayarlar';
|
||||
$_L['Date'] = 'Tarih';
|
||||
$_L['Login_Successful'] = 'Giriş başarılı';
|
||||
$_L['Failed_Login'] = 'Başarısız oturum açma';
|
||||
$_L['Settings_Saved_Successfully'] = 'Ayarlar başarıyla kaydedildi';
|
||||
$_L['User_Updated_Successfully'] = 'Kullanıcı Başarıyla Güncellendi';
|
||||
$_L['User_Expired_Today'] = 'Kullanıcı Süresi Doldu, Bugün';
|
||||
$_L['Activity_Log'] = 'Etkinlik Günlüğü';
|
||||
$_L['View_Reports'] = 'Raporları Görüntüle';
|
||||
$_L['View_All'] = 'Hepsini gör';
|
||||
$_L['Number_of_Vouchers'] = 'Kuponların Sayısı';
|
||||
$_L['Length_Code'] = 'Uzunluk Kodu';
|
||||
$_L['Code_Voucher'] = 'Kod Makbuzu';
|
||||
$_L['Voucher'] = 'Fiş';
|
||||
$_L['Voucher_Hotspot'] = 'Hotspot Kuponu';
|
||||
$_L['Status_Voucher'] = 'Durum Makbuzu';
|
||||
$_L['Add_Voucher'] = 'Kupon Ekle';
|
||||
$_L['Voucher_Successfully'] = 'Kuponları başarıyla oluştur';
|
||||
$_L['Generate'] = 'Genel';
|
||||
$_L['Print_Info'] = 'Yanyana yazdırırsanız, kesmesi daha kolay olacaktır.';
|
||||
$_L['From_Date'] = 'İtibaren';
|
||||
$_L['To_Date'] = 'Bugüne kadar';
|
||||
$_L['New_Service'] = 'Yeni Servis';
|
||||
$_L['Type'] = 'Tür';
|
||||
$_L['Finish'] = 'Bitiş';
|
||||
$_L['App_Name'] = 'Uygulama Adı / Şirket Adı';
|
||||
$_L['App_Name_Help_Text'] = 'Bu İsim Başlıkta gösterilecek';
|
||||
$_L['Next'] = 'Sonraki';
|
||||
$_L['Last'] = 'Son';
|
||||
$_L['Timezone'] = 'Saat dilimi';
|
||||
$_L['Decimal_Point'] = 'Ondalık nokta';
|
||||
$_L['Thousands_Separator'] = 'Bin Ayırıcı';
|
||||
$_L['Currency_Code'] = 'Para Birimi Kodu';
|
||||
$_L['Order_Voucher'] = 'Sipariş Makbuzu';
|
||||
$_L['Voucher_Activation'] = 'Kupon Aktivasyonu';
|
||||
$_L['List_Activated_Voucher'] = 'Aktif Fiş Listesi';
|
||||
$_L['Enter_Voucher_Code'] = 'Kupon kodunu buraya girin';
|
||||
$_L['Private_Message'] = 'Özel mesaj';
|
||||
$_L['Inbox'] = 'Gelen kutusu';
|
||||
$_L['Outbox'] = 'Giden';
|
||||
$_L['Compose'] = 'Oluşturma';
|
||||
$_L['Send_to'] = 'Gönderildi';
|
||||
$_L['Title'] = 'Başlık';
|
||||
$_L['Message'] = 'Mesaj';
|
||||
$_L['Account_Information'] = 'Hesap Bilgileriniz';
|
||||
$_L['Welcome_Text_User'] = 'Panel Üyeleri sayfasına hoş geldiniz, bu sayfada şunları yapabilirsiniz:';
|
||||
$_L['Welcome_Text_Admin'] = '<b> PHPNuxBill </ b>, PHP ve Mikrotik API kullanılarak Mikrotik için bir faturalandırma Hotspot ve PPPOE olup, yönlendiriciyle iletişim kurar. Bu uygulamayla daha fazla kazanç elde ederseniz, lütfen bize bağış yapın. <br> Projeyi <a href="https://github.com/hotspotbilling/phpnuxbill" target="_blank"> buradan izleyin </a> ';
|
||||
$_L['Invalid_Username_or_Password'] = 'Geçersiz kullanıcı adı veya şifre';
|
||||
$_L['Do_Not_Access'] = 'Bu sayfaya erişim izniniz yok';
|
||||
$_L['Incorrect_Current_Password'] = 'Yanlış Geçerli Şifre';
|
||||
$_L['Password_Changed_Successfully'] = 'Şifre başarıyla değiştirildi, Lütfen tekrar giriş yapın';
|
||||
$_L['All_field_is_required'] = 'Tüm alan gerekli';
|
||||
$_L['Voucher_Not_Valid'] = 'Kupon Geçerli Değil';
|
||||
$_L['Activation_Vouchers_Successfully'] = 'Aktivasyon Kuponları Başarıyla';
|
||||
$_L['Data_Not_Found'] = 'Veri bulunamadı';
|
||||
$_L['Search_by_Username'] = 'Kullanıcı Adına Göre Ara';
|
||||
$_L['Search_by_Name'] = 'İsme Göre Ara';
|
||||
$_L['Search_by_Code'] = 'Kod Makbuzuna Göre Ara';
|
||||
$_L['Search'] = 'Arama';
|
||||
$_L['Select_Customer'] = 'Bir müşteri seçin';
|
||||
$_L['Select_Routers'] = 'Router\'ları Seç';
|
||||
$_L['Select_Plans'] = 'Planları Seç';
|
||||
$_L['Select_Pool'] = 'Havuz Seç';
|
||||
$_L['Hrs'] = 'Saat';
|
||||
$_L['Mins'] = 'Dk';
|
||||
$_L['Days'] = 'Gün';
|
||||
$_L['Months'] = 'Ay';
|
||||
$_L['Add_Language'] = 'Dil Ekle';
|
||||
$_L['Name_Lang'] = 'Dil adı';
|
||||
$_L['Folder_Lang'] = 'Klasör adı';
|
||||
$_L['Translator'] = 'Çevirmen';
|
||||
$_L['Lang_already_exist'] = 'Dil Adı Zaten Var';
|
||||
|
||||
$_L['Payment_Gateway'] = 'Payment Gateway';
|
||||
$_L['Community'] = 'Community';
|
||||
$_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';
|
||||
$_L['Status'] = 'Status';
|
||||
$_L['Plan_Not_found'] = 'Plan Not found';
|
||||
$_L['Failed_to_create_transaction'] = 'Failed to create transaction.';
|
||||
$_L['Seller_has_not_yet_setup_Xendit_payment_gateway'] = 'Seller has not yet setup Xendit payment gateway';
|
||||
$_L['Admin_has_not_yet_setup_Xendit_payment_gateway_please_tell_admin'] = 'Admin has not yet setup Xendit payment gateway, please tell admin';
|
||||
$_L['Buy_this_your_active_package_will_be_overwrite'] = 'Buy this? your active package will be overwrite';
|
||||
$_L['You_already_have_unpaid_transaction_cancel_it_or_pay_it'] = 'You already have unpaid transaction, cancel it or pay it.';
|
||||
$_L['Transaction_Not_found'] = 'Transaction Not found';
|
||||
$_L['Cancel_it'] = 'Cancel it?';
|
||||
$_L['expired'] = 'expired';
|
||||
$_L['Check_for_Payment'] = 'Check for Payment';
|
||||
$_L['Transaction_still_unpaid'] = 'Transaction still unpaid.';
|
||||
$_L['Paid_Date'] = 'Paid Date';
|
||||
$_L['Transaction_has_been_paid'] = 'Transaction has been paid.';
|
||||
$_L['PAID'] = 'PAID';
|
||||
$_L['CANCELED'] = 'CANCELED';
|
||||
$_L['UNPAID'] = 'UNPAID';
|
||||
$_L['PAY_NOW'] = 'PAY NOW';
|
||||
$_L['Buy_Hotspot_Plan'] = 'Buy Hotspot Plan';
|
||||
$_L['Buy_PPOE_Plan'] = 'Buy PPOE Plan';
|
||||
$_L['Package'] = 'Package';
|
||||
$_L['Order_Internet_Package'] = 'Order Internet Package';
|
||||
$_L['Unknown_Command'] = 'Unknown Command.';
|
||||
$_L['Checking_payment'] = 'Checking payment';
|
||||
$_L['Create_Transaction_Success'] = 'Create Transaction Success';
|
||||
$_L['You_have_unpaid_transaction'] = 'You have unpaid transaction';
|
||||
$_L['TripayPayment_Channel'] = 'TripayPayment Channel';
|
||||
$_L['Payment_Channel'] = 'Payment Channel';
|
||||
$_L['Payment_check_failed'] = 'Payment check failed.';
|
||||
$_L['Order_Package'] = 'Order Package';
|
||||
$_L['Transactions'] = 'Transactions';
|
||||
$_L['Payments'] = 'Payments';
|
||||
$_L['History'] = 'History';
|
||||
$_L['Order_History'] = 'Order History';
|
||||
$_L['Gateway'] = 'Gateway';
|
||||
$_L['Date_Done'] = 'Date Done';
|
||||
$_L['Unpaid_Order'] = 'Unpaid Order';
|
||||
$_L['Payment_Gateway_Not_Found'] = 'Payment Gateway Not Found';
|
||||
$_L['Payment_Gateway_saved_successfully'] = 'Payment Gateway saved successfully';
|
||||
$_L['ORDER'] = 'ORDER';
|
||||
$_L['Package_History'] = 'Package History';
|
||||
$_L['Buy_History'] = 'Buy History';
|
||||
$_L['Activation_History'] = 'Activation History';
|
||||
$_L['Buy_Package'] = 'Buy Package';
|
||||
$_L['Email'] = 'Email';
|
||||
$_L['Company_Footer'] = 'Company Footer';
|
||||
$_L['Will_show_below_user_pages'] = 'Will show below user pages';
|
||||
$_L['Request_OTP'] = 'Request OTP';
|
||||
$_L['Verification_Code'] = 'Verification Code';
|
||||
$_L['SMS_Verification_Code'] = 'SMS Verification Code';
|
||||
$_L['Please_enter_your_email_address'] = 'Please enter your email address';
|
||||
$_L['Failed_to_create_Paypal_transaction'] = 'Failed to create Paypal transaction.';
|
||||
$_L['Plugin'] = 'Plugin';
|
||||
$_L['Plugin_Manager'] = 'Plugin Manager';
|
||||
$_L['User_Notification'] = 'User Notification';
|
||||
$_L['Expired_Notification'] = 'Expired Notification';
|
||||
$_L['User_will_get_notification_when_package_expired'] = 'User will get notification when package expired';
|
||||
$_L['Expired_Notification_Message'] = 'Expired Notification Message';
|
||||
$_L['bnameb_will_be_replaced_with_Customer_Name_bpackageb_will_be_replaced_with_Package_name'] = '<b>[[name]]</b> will be replaced with Customer Name. <b>[[package]]</b> will be replaced with Package name.';
|
||||
$_L['Payment_Notification'] = 'Payment Notification';
|
||||
$_L['User_will_get_invoice_notification_when_buy_package_or_package_refilled'] = 'User will get invoice notification when buy package or package refilled';
|
||||
$_L['Current_IP'] = 'Current IP';
|
||||
$_L['Current_MAC'] = 'Current MAC';
|
||||
$_L['Login_Status'] = 'Login Status';
|
||||
$_L['Login_Request_successfully'] = 'Login Request successfully';
|
||||
$_L['Logout_Request_successfully'] = 'Logout Request successfully';
|
||||
$_L['Disconnect_Internet'] = 'Disconnect Internet?';
|
||||
$_L['Not_Online_Login_now'] = 'Not Online, Login now?';
|
||||
$_L['You_are_Online_Logout'] = 'You are Online, Logout?';
|
||||
$_L['Connect_to_Internet'] = 'Connect to Internet?';
|
||||
$_L['Your_account_not_connected_to_internet'] = 'Your account not connected to internet';
|
||||
$_L['Balance'] = 'Balance';
|
||||
$_L['Balance_System'] = 'Balance System';
|
||||
$_L['Enable_System'] = 'Enable System';
|
||||
$_L['Allow_Transfer'] = 'Allow Transfer';
|
||||
$_L['Telegram_Notification'] = 'Telegram Notification';
|
||||
$_L['SMS_OTP_Registration'] = 'SMS OTP Registration';
|
||||
$_L['Whatsapp_Notification'] = 'Whatsapp Notification';
|
||||
$_L['Tawkto_Chat_Widget'] = 'Tawk.to Chat Widget';
|
||||
$_L['Invoice'] = 'Invoice';
|
||||
$_L['Country_Code_Phone'] = 'Country Code Phone';
|
||||
$_L['Voucher_activation_menu_will_be_hidden'] = 'Voucher activation menu will be hidden';
|
||||
$_L['Customer_can_deposit_money_to_buy_voucher'] = 'Customer can deposit money to buy voucher';
|
||||
$_L['Allow_balance_transfer_between_customers'] = 'Allow balance transfer between customers';
|
||||
|
||||
$_L['Failed_to_create_transaction_'] = 'Failed to create transaction. ';
|
||||
$_L['Failed_to_check_status_transaction_'] = 'Failed to check status transaction. ';
|
||||
$_L['Disable_Voucher'] = 'Disable Voucher';
|
||||
$_L['Reminder_Notification'] = 'Reminder Notification';
|
||||
$_L['Reminder_Notification_Message'] = 'Reminder Notification Message';
|
||||
$_L['Reminder_7_days'] = 'Reminder 7 days';
|
||||
$_L['Reminder_3_days'] = 'Reminder 3 days';
|
||||
$_L['Reminder_1_day'] = 'Reminder 1 day';
|
||||
$_L['PPPOE_Password'] = 'PPPOE Password';
|
||||
$_L['User_Cannot_change_this_only_admin_if_it_Empty_it_will_use_user_password'] = 'User Cannot change this, only admin. if it Empty it will use user password';
|
||||
$_L['Invoice_Balance_Message'] = 'Invoice Balance Message';
|
||||
$_L['Invoice_Notification_Payment'] = 'Invoice Notification Payment';
|
||||
$_L['Balance_Notification_Payment'] = 'Balance Notification Payment';
|
||||
$_L['Balance_Plans'] = 'Balance Plans';
|
||||
$_L['Buy_Balance'] = 'Buy Balance';
|
||||
$_L['Price'] = 'Price';
|
||||
$_L['Validity'] = 'Validity';
|
||||
$_L['Disable_auto_renewal'] = 'Disable auto renewal?';
|
||||
$_L['Auto_Renewal_On'] = 'Auto Renewal On';
|
||||
$_L['Enable_auto_renewal'] = 'Enable auto renewal?';
|
||||
$_L['Auto_Renewal_Off'] = 'Auto Renewal Off';
|
||||
$_L['Refill_Balance'] = 'Refill Balance';
|
||||
$_L['Invoice_Footer'] = 'Invoice Footer';
|
||||
$_L['Pay_With_Balance'] = 'Pay With Balance';
|
||||
$_L['Pay_this_with_Balance_your_active_package_will_be_overwrite'] = 'Pay this with Balance? your active package will be overwrite';
|
||||
$_L['Success_to_buy_package'] = 'Success to buy package';
|
||||
$_L['Auto_Renewal'] = 'Auto Renewal';
|
||||
$_L['View'] = 'View';
|
||||
$_L['Back'] = 'Back';
|
||||
$_L['Active'] = 'Active';
|
||||
$_L['Transfer_Balance'] = 'Transfer Balance';
|
||||
$_L['Send_your_balance'] = 'Send your balance?';
|
||||
$_L['Send'] = 'Send';
|
||||
$_L['Cannot_send_to_yourself'] = 'Cannot send to yourself';
|
||||
$_L['Sending_balance_success'] = 'Sending balance success';
|
||||
$_L['From'] = 'From';
|
||||
$_L['To'] = 'To';
|
||||
$_L['insufficient_balance'] = 'insufficient balance';
|
||||
$_L['Send_Balance'] = 'Send Balance';
|
||||
$_L['Received_Balance'] = 'Received Balance';
|
||||
$_L['Minimum_Balance_Transfer'] = 'Minimum Balance Transfer';
|
||||
$_L['Minimum_Transfer'] = 'Minimum Transfer';
|
||||
$_L['Company_Logo'] = 'Company Logo';
|
||||
$_L['Expired_IP_Pool'] = 'Expired IP Pool';
|
||||
$_L['Proxy'] = 'Proxy';
|
||||
$_L['Proxy_Server'] = 'Proxy Server';
|
||||
$_L['Proxy_Server_Login'] = 'Proxy Server Login';
|
||||
$_L['Hotspot_Plan'] = 'Hotspot Plan';
|
||||
$_L['PPPOE_Plan'] = 'PPPOE Plan';
|
||||
$_L['UNKNOWN'] = 'UNKNOWN';
|
||||
$_L['Are_You_Sure'] = 'Are You Sure?';
|
||||
$_L['Success_to_send_package'] = 'Success to send package';
|
||||
$_L['Target_has_active_plan_different_with_current_plant'] = 'Target has active plan, different with current plant.';
|
||||
$_L['Recharge_a_friend'] = 'Recharge a friend';
|
||||
$_L['Buy_for_friend'] = 'Buy for friend';
|
||||
$_L['Buy_this_for_friend_account'] = 'Buy this for friend account?';
|
||||
$_L['Review_package_before_recharge'] = 'Review package before recharge';
|
||||
$_L['Activate'] = 'Activate';
|
||||
$_L['Deactivate'] = 'Deactivate';
|
||||
$_L['Sync'] = 'Sync';
|
||||
$_L['Failed_to_create_PaymeTrust_transaction'] = 'Failed to create PaymeTrust transaction.';
|
||||
$_L['Location'] = 'Location';
|
||||
$_L['Voucher_Format'] = 'Voucher Format';
|
||||
$_L['Service_Type'] = 'Service Type';
|
||||
$_L['Others'] = 'Others';
|
||||
$_L['PPPoE'] = 'PPPoE';
|
||||
$_L['Hotspot'] = 'Hotspot';
|
@ -1,8 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Directory access is forbidden.</p>
|
||||
</body>
|
||||
</html>
|
@ -11,32 +11,59 @@
|
||||
"ALTER TABLE `tbl_transactions` CHANGE `type` `type` ENUM('Hotspot','PPPOE','Balance') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;",
|
||||
"ALTER TABLE `tbl_customers` ADD `auto_renewal` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'Auto renewall using balance' AFTER `balance`;"
|
||||
],
|
||||
"2023.8.23" : [
|
||||
"2023.8.23": [
|
||||
"ALTER TABLE `tbl_customers` CHANGE `pppoe_password` `pppoe_password` VARCHAR(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT 'For PPPOE Login';"
|
||||
],
|
||||
"2023.8.28" : [
|
||||
"2023.8.28": [
|
||||
"ALTER TABLE `tbl_user_recharges` ADD `recharged_time` time NOT NULL DEFAULT '00:00:00' AFTER `recharged_on`;",
|
||||
"ALTER TABLE `tbl_transactions` ADD `recharged_time` time NOT NULL DEFAULT '00:00:00' AFTER `recharged_on`;"
|
||||
],
|
||||
"2023.9.5" : [
|
||||
"2023.9.5": [
|
||||
"DROP TABLE `tbl_language`;",
|
||||
"ALTER TABLE `tbl_plans` ADD `pool_expired` varchar(40) NOT NULL DEFAULT '' AFTER `pool`;"
|
||||
],
|
||||
"2023.9.27" : [
|
||||
"2023.9.27": [
|
||||
"ALTER TABLE `tbl_plans` CHANGE `type` `type` ENUM('Hotspot','PPPOE','Balance','Radius') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;",
|
||||
"ALTER TABLE `tbl_transactions` CHANGE `type` `type` ENUM('Hotspot','PPPOE','Balance','Radius') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;"
|
||||
],
|
||||
"2023.9.28" : [
|
||||
"2023.9.28": [
|
||||
"ALTER TABLE `tbl_plans` CHANGE `type` `type` ENUM('Hotspot','PPPOE','Balance') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;",
|
||||
"ALTER TABLE `tbl_transactions` CHANGE `type` `type` ENUM('Hotspot','PPPOE','Balance') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;"
|
||||
],
|
||||
"2023.10.1" : [
|
||||
"2023.10.1": [
|
||||
"ALTER TABLE `tbl_plans` ADD `is_radius` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '1 is radius' AFTER `routers`; "
|
||||
],
|
||||
"2023.10.24" : [
|
||||
"2023.10.24": [
|
||||
"ALTER TABLE `nas` ADD `routers` VARCHAR(32) NOT NULL DEFAULT '' AFTER `description`;"
|
||||
],
|
||||
"2023.12.15": [
|
||||
"ALTER TABLE `tbl_customers` ADD `service_type` ENUM('Hotspot','PPPoE','Others') DEFAULT 'Others' COMMENT 'For selecting user type' AFTER `balance`;"
|
||||
],
|
||||
"2024.1.11": [
|
||||
"ALTER TABLE `tbl_plans` ADD `allow_purchase` ENUM('yes','no') DEFAULT 'yes' COMMENT 'allow to show package in buy package page' AFTER `enabled`;"
|
||||
],
|
||||
"2024.2.7": [
|
||||
"ALTER TABLE `tbl_voucher` ADD `generated_by` INT NOT NULL DEFAULT '0' COMMENT 'id admin' AFTER `status`;",
|
||||
"ALTER TABLE `tbl_users` ADD `root` INT NOT NULL DEFAULT '0' COMMENT 'for sub account' AFTER `id`;"
|
||||
],
|
||||
"2024.2.12": [
|
||||
"ALTER TABLE `tbl_users` CHANGE `user_type` `user_type` ENUM('SuperAdmin','Admin','Report','Agent','Sales') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;"
|
||||
],
|
||||
"2024.2.15": [
|
||||
"ALTER TABLE `tbl_users` CHANGE `password` `password` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;",
|
||||
"ALTER TABLE `tbl_users` ADD `phone` VARCHAR(32) NOT NULL DEFAULT '' AFTER `password`, ADD `email` VARCHAR(128) NOT NULL DEFAULT '' AFTER `phone`, ADD `city` VARCHAR(64) NOT NULL DEFAULT '' COMMENT 'kota' AFTER `email`, ADD `subdistrict` VARCHAR(64) NOT NULL DEFAULT '' COMMENT 'kecamatan' AFTER `city`, ADD `ward` VARCHAR(64) NOT NULL DEFAULT '' COMMENT 'kelurahan' AFTER `subdistrict`;"
|
||||
],
|
||||
"2024.2.16": [
|
||||
"ALTER TABLE `tbl_customers` ADD `created_by` INT NOT NULL DEFAULT '0' AFTER `auto_renewal`;"
|
||||
],
|
||||
"2024.2.19": [
|
||||
"CREATE TABLE `tbl_customers_fields` (`id` INT PRIMARY KEY AUTO_INCREMENT, `customer_id` INT NOT NULL, `field_name` VARCHAR(255) NOT NULL, `field_value` VARCHAR(255) NOT NULL, FOREIGN KEY (customer_id) REFERENCES tbl_customers(id));"
|
||||
],
|
||||
"2024.2.20" : [
|
||||
"ALTER TABLE `tbl_plans` ADD `list_expired` VARCHAR(32) NOT NULL DEFAULT '' COMMENT 'address list' AFTER `pool_expired`;",
|
||||
"ALTER TABLE `tbl_bandwidth` ADD `burst` VARCHAR(128) NOT NULL DEFAULT '' AFTER `rate_up_unit`;"
|
||||
],
|
||||
"2024.2.20.1" : [
|
||||
"DROP TABLE IF EXISTS `tbl_customers_meta`;"
|
||||
]
|
||||
}
|
@ -4,13 +4,12 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<title>{$_title} - {$_L['Login']}</title>
|
||||
<title>{$_title} - {Lang::T('Login')}</title>
|
||||
<link rel="shortcut icon" href="ui/ui/images/logo.png" type="image/x-icon" />
|
||||
|
||||
<!-- Css/Less Stylesheets -->
|
||||
<link rel="stylesheet" href="ui/ui/styles/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="ui/ui/styles/adminlte.min.css">
|
||||
|
||||
<link rel="stylesheet" href="ui/ui/styles/modern-AdminLTE.min.css">
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
@ -20,26 +19,23 @@
|
||||
<b>Nux</b>Billing
|
||||
</div>
|
||||
<div class="login-box-body">
|
||||
<p class="login-box-msg">{$_L['Sign_In_Admin']}</p>
|
||||
<p class="login-box-msg">{Lang::T('Enter Admin Area')}</p>
|
||||
{if isset($notify)}
|
||||
{$notify}
|
||||
{/if}
|
||||
<form action="{$_url}admin/post" method="post">
|
||||
<div class="form-group has-feedback">
|
||||
<input type="text" required class="form-control" name="username" placeholder="{$_L['Username']}">
|
||||
<input type="text" required class="form-control" name="username" placeholder="{Lang::T('Username')}">
|
||||
<span class="glyphicon glyphicon-user form-control-feedback"></span>
|
||||
</div>
|
||||
<div class="form-group has-feedback">
|
||||
<input type="password" required class="form-control" name="password" placeholder="{$_L['Password']}">
|
||||
<input type="password" required class="form-control" name="password" placeholder="{Lang::T('Password')}">
|
||||
<span class="glyphicon glyphicon-lock form-control-feedback"></span>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary btn-block btn-flat">{$_L['Login']}</button>
|
||||
<button type="submit" class="btn btn-primary btn-block btn-flat">{Lang::T('Login')}</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script src="ui/ui/scripts/jquery.min.js"></script>
|
||||
<script src="ui/ui/scripts/bootstrap.min.js"></script>
|
||||
<script src="ui/ui/scripts/adminlte.min.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
@ -3,12 +3,12 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12">
|
||||
<div class="panel panel-primary panel-hovered panel-stacked mb30">
|
||||
<div class="panel-heading">{$_L['Localisation']}</div>
|
||||
<div class="panel-heading">{Lang::T('Localisation')}</div>
|
||||
<div class="panel-body">
|
||||
|
||||
<form class="form-horizontal" method="post" role="form" action="{$_url}settings/localisation-post">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Timezone']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Timezone')}</label>
|
||||
<div class="col-md-6">
|
||||
<select name="tzone" id="tzone" class="form-control">
|
||||
{foreach $tlist as $value => $label}
|
||||
@ -19,7 +19,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Date_Format']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Date Format')}</label>
|
||||
<div class="col-md-6">
|
||||
<select class="form-control" name="date_format" id="date_format">
|
||||
<option value="d/m/Y" {if $_c['date_format'] eq 'd/m/Y'} selected="selected" {/if}>
|
||||
@ -44,40 +44,48 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Default_Language']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Default Language')}</label>
|
||||
<div class="col-md-6">
|
||||
<select class="form-control" name="lan" id="lan">
|
||||
{foreach $lani as $lanis}
|
||||
<option value="{$lanis@key}" {if $_c['language'] eq $lanis@key} selected="selected" {/if}>
|
||||
{$lanis@key}
|
||||
</option>
|
||||
{/foreach}
|
||||
<option disabled>_________</option>
|
||||
{foreach $lan as $lans}
|
||||
<option value="{$lans}" {if $_c['language'] eq $lans} selected="selected" {/if}>{$lans}
|
||||
<option value="{$lans@key}" {if $_c['language'] eq $lans@key} selected="selected" {/if}>
|
||||
{$lans@key}
|
||||
</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-4 help-block">
|
||||
To add new Language, just add the folder, it will automatically detected
|
||||
<a href="{$_url}settings/language">{Lang::T('Language Editor')}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Decimal_Point']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Decimal Point')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="dec_point" name="dec_point"
|
||||
value="{$_c['dec_point']}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Thousands_Separator']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Thousands Separator')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="thousands_sep" name="thousands_sep"
|
||||
value="{$_c['thousands_sep']}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Currency_Code']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Currency Code')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="currency_code" name="currency_code"
|
||||
value="{$_c['currency_code']}">
|
||||
</div>
|
||||
<span class="help-block col-md-4">{$_L['currency_help']}</span>
|
||||
<span
|
||||
class="help-block col-md-4">{Lang::T('Keep it blank if you do not want to show currency code')}</span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Country Code Phone')}</label>
|
||||
@ -117,7 +125,7 @@
|
||||
<div class="form-group">
|
||||
<div class="col-lg-offset-2 col-lg-10">
|
||||
<button class="btn btn-primary waves-effect waves-light"
|
||||
type="submit">{$_L['Save']}</button>
|
||||
type="submit">{Lang::T('Save Changes')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
@ -21,7 +21,7 @@
|
||||
rows="3">{if $_json['expired']!=''}{Lang::htmlspecialchars($_json['expired'])}{else}Hello [[name]], your internet package [[package]] has been expired.{/if}</textarea>
|
||||
</div>
|
||||
<p class="help-block col-md-4">
|
||||
{Lang::T('<b>[[name]]</b> will be replaced with Customer Name. <b>[[package]]</b> will be replaced with Package name.')}
|
||||
<b>[[name]]</b> will be replaced with Customer Name. <b>[[package]]</b> will be replaced with Package name. <b>[[price]]</b> will be replaced with Package price.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@ -33,7 +33,7 @@
|
||||
rows="3">{Lang::htmlspecialchars($_json['reminder_7_day'])}</textarea>
|
||||
</div>
|
||||
<p class="help-block col-md-4">
|
||||
{Lang::T('<b>[[name]]</b> will be replaced with Customer Name. <b>[[package]]</b> will be replaced with Package name.')}
|
||||
<b>[[name]]</b> will be replaced with Customer Name. <b>[[package]]</b> will be replaced with Package name. <b>[[price]]</b> will be replaced with Package price.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@ -45,7 +45,7 @@
|
||||
rows="3">{Lang::htmlspecialchars($_json['reminder_3_day'])}</textarea>
|
||||
</div>
|
||||
<p class="help-block col-md-4">
|
||||
{Lang::T('<b>[[name]]</b> will be replaced with Customer Name. <b>[[package]]</b> will be replaced with Package name.')}
|
||||
<b>[[name]]</b> will be replaced with Customer Name. <b>[[package]]</b> will be replaced with Package name. <b>[[price]]</b> will be replaced with Package price.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@ -57,7 +57,7 @@
|
||||
rows="3">{Lang::htmlspecialchars($_json['reminder_1_day'])}</textarea>
|
||||
</div>
|
||||
<p class="help-block col-md-4">
|
||||
{Lang::T('<b>[[name]]</b> will be replaced with Customer Name. <b>[[package]]</b> will be replaced with Package name.')}
|
||||
<b>[[name]]</b> will be replaced with Customer Name. <b>[[package]]</b> will be replaced with Package name. <b>[[price]]</b> will be replaced with Package price.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@ -150,7 +150,7 @@
|
||||
<div class="panel-body">
|
||||
<div class="form-group">
|
||||
<button class="btn btn-success btn-block waves-effect waves-light"
|
||||
type="submit">{$_L['Save']}</button>
|
||||
type="submit">{Lang::T('Save Changes')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -9,16 +9,16 @@
|
||||
<button class="btn btn-primary btn-xs" title="save" type="submit"><span
|
||||
class="glyphicon glyphicon-floppy-disk" aria-hidden="true"></span></button>
|
||||
</div>
|
||||
{$_L['General_Settings']}
|
||||
{Lang::T('General Settings')}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['App_Name']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Application Name/ Company Name')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" required class="form-control" id="CompanyName" name="CompanyName"
|
||||
value="{$_c['CompanyName']}">
|
||||
</div>
|
||||
<span class="help-block col-md-4">{$_L['App_Name_Help_Text']}</span>
|
||||
<span class="help-block col-md-4">{Lang::T('This Name will be shown on the Title')}</span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Company Logo')}</label>
|
||||
@ -40,19 +40,36 @@
|
||||
<span class="help-block col-md-4">{Lang::T('Will show below user pages')}</span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Address']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Address')}</label>
|
||||
<div class="col-md-6">
|
||||
<textarea class="form-control" id="address" name="address"
|
||||
rows="3">{Lang::htmlspecialchars($_c['address'])}</textarea>
|
||||
</div>
|
||||
<span class="help-block col-md-4">{$_L['You_can_use_html_tag']}</span>
|
||||
<span class="help-block col-md-4">{Lang::T('You can use html tag')}</span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Phone_Number']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Phone Number')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="phone" name="phone" value="{$_c['phone']}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Invoice Footer')}</label>
|
||||
<div class="col-md-6">
|
||||
<textarea class="form-control" id="note" name="note"
|
||||
rows="3">{Lang::htmlspecialchars($_c['note'])}</textarea>
|
||||
<span class="help-block">{Lang::T('You can use html tag')}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label"><i class="glyphicon glyphicon-print"></i> Print Max
|
||||
Char</label>
|
||||
<div class="col-md-6">
|
||||
<input type="number" required class="form-control" id="printer_cols" placeholder="37"
|
||||
name="printer_cols" value="{$_c['printer_cols']}">
|
||||
</div>
|
||||
<span class="help-block col-md-4">For invoice print using Thermal Printer</span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">Theme</label>
|
||||
<div class="col-md-6">
|
||||
@ -77,6 +94,32 @@
|
||||
<p class="help-block col-md-4">edit at config.php</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-heading">
|
||||
<div class="btn-group pull-right">
|
||||
<button class="btn btn-primary btn-xs" title="save" type="submit"><span
|
||||
class="glyphicon glyphicon-floppy-disk" aria-hidden="true"></span></button>
|
||||
</div>
|
||||
Hide Dashboard Content
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="form-group">
|
||||
<label class="col-md-3 control-label"><input type="checkbox" name="hide_mrc" value="yes"
|
||||
{if $_c['hide_mrc'] eq 'yes'}checked{/if}>
|
||||
{Lang::T('Monthly Registered Customers')}</label>
|
||||
<label class="col-md-2 control-label"><input type="checkbox" name="hide_tms" value="yes"
|
||||
{if $_c['hide_tms'] eq 'yes'}checked{/if}> {Lang::T('Total Monthly Sales')}</label>
|
||||
<label class="col-md-2 control-label"><input type="checkbox" name="hide_aui" value="yes"
|
||||
{if $_c['hide_aui'] eq 'yes'}checked{/if}> {Lang::T('All Users Insights')}</label>
|
||||
<label class="col-md-2 control-label"><input type="checkbox" name="hide_al" value="yes"
|
||||
{if $_c['hide_al'] eq 'yes'}checked{/if}> {Lang::T('Activity Log')}</label>
|
||||
<label class="col-md-2 control-label"><input type="checkbox" name="hide_uet" value="yes"
|
||||
{if $_c['hide_uet'] eq 'yes'}checked{/if}> {Lang::T('User Expired, Today')}</label>
|
||||
<label class="col-md-2 control-label"><input type="checkbox" name="hide_vs" value="yes"
|
||||
{if $_c['hide_vs'] eq 'yes'}checked{/if}> Vouchers Stock</label>
|
||||
<label class="col-md-2 control-label"><input type="checkbox" name="hide_pg" value="yes"
|
||||
{if $_c['hide_pg'] eq 'yes'}checked{/if}> Payment Gateway</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-heading">
|
||||
<div class="btn-group pull-right">
|
||||
<button class="btn btn-primary btn-xs" title="save" type="submit"><span
|
||||
@ -210,6 +253,7 @@
|
||||
</div>
|
||||
<div class="panel-heading">
|
||||
<div class="btn-group pull-right">
|
||||
<a class="btn btn-success btn-xs" style="color: black;" href="javascript:testTg()">Test TG</a>
|
||||
<button class="btn btn-primary btn-xs" title="save" type="submit"><span
|
||||
class="glyphicon glyphicon-floppy-disk" aria-hidden="true"></span></button>
|
||||
</div>
|
||||
@ -236,6 +280,7 @@
|
||||
</div>
|
||||
<div class="panel-heading">
|
||||
<div class="btn-group pull-right">
|
||||
<a class="btn btn-success btn-xs" style="color: black;" href="javascript:testSms()">Test SMS</a>
|
||||
<button class="btn btn-primary btn-xs" title="save" type="submit"><span
|
||||
class="glyphicon glyphicon-floppy-disk" aria-hidden="true"></span></button>
|
||||
</div>
|
||||
@ -273,6 +318,7 @@
|
||||
</div>
|
||||
<div class="panel-heading">
|
||||
<div class="btn-group pull-right">
|
||||
<a class="btn btn-success btn-xs" style="color: black;" href="javascript:testWa()">Test WA</a>
|
||||
<button class="btn btn-primary btn-xs" title="save" type="submit"><span
|
||||
class="glyphicon glyphicon-floppy-disk" aria-hidden="true"></span></button>
|
||||
</div>
|
||||
@ -369,16 +415,17 @@
|
||||
<button class="btn btn-primary btn-xs" title="save" type="submit"><span
|
||||
class="glyphicon glyphicon-floppy-disk" aria-hidden="true"></span></button>
|
||||
</div>
|
||||
{Lang::T('Invoice')}
|
||||
API Key
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Invoice Footer')}</label>
|
||||
<label class="col-md-2 control-label">Access Token</label>
|
||||
<div class="col-md-6">
|
||||
<textarea class="form-control" id="note" name="note"
|
||||
rows="3">{Lang::htmlspecialchars($_c['note'])}</textarea>
|
||||
<span class="help-block">{$_L['You_can_use_html_tag']}</span>
|
||||
<input type="password" class="form-control" id="api_key" name="api_key"
|
||||
value="{$_c['api_key']}" placeholder="Empty this to randomly created API key"
|
||||
onmouseleave="this.type = 'password'" onmouseenter="this.type = 'text'">
|
||||
</div>
|
||||
<p class="col-md-4 help-block">{Lang::T('This Token will act as SuperAdmin/Admin')}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-heading">
|
||||
@ -405,12 +452,40 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{* <div class="panel-heading" id="envato">
|
||||
<div class="btn-group pull-right">
|
||||
<button class="btn btn-primary btn-xs" title="save" type="submit"><span
|
||||
class="glyphicon glyphicon-floppy-disk" aria-hidden="true"></span></button>
|
||||
</div>
|
||||
Envato / Codecanyon
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">Envato Personal Token</label>
|
||||
<div class="col-md-6">
|
||||
<input type="password" class="form-control" id="envato_token" name="envato_token"
|
||||
value="{$_c['envato_token']}" placeholder="BldWuBsxxxxxxxxxxxPDzPozHAPui">
|
||||
</div>
|
||||
<span class="help-block col-md-4"><a href="https://build.envato.com/create-token/"
|
||||
target="_blank">Create Token</a></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-md-offset-2 col-md-8" style="text-align: left;">Envato
|
||||
Permission<br>
|
||||
- View and search Envato sites<br>
|
||||
- Download the user's purchased items<br>
|
||||
- List purchases the user has made<br><br>
|
||||
<a href="https://codecanyon.net/category/php-scripts?term=phpnuxbill" target="_blank"
|
||||
class="btn btn-xs btn-primary">View MarketPlace</a>
|
||||
</label>
|
||||
</div>
|
||||
</div> *}
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
<div class="form-group">
|
||||
<button class="btn btn-success btn-block waves-effect waves-light"
|
||||
type="submit">{$_L['Save']}</button>
|
||||
type="submit">{Lang::T('Save Changes')}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -432,4 +507,23 @@ add dst-host=*.{$_domain}</pre>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<script>
|
||||
function testWa() {
|
||||
var target = prompt("Phone number\nSave First before Test", "");
|
||||
if (target != null) {
|
||||
window.location.href = '{$_url}settings/app&testWa='+target;
|
||||
}
|
||||
}
|
||||
|
||||
function testSms() {
|
||||
var target = prompt("Phone number\nSave First before Test", "");
|
||||
if (target != null) {
|
||||
window.location.href = '{$_url}settings/app&testSms='+target;
|
||||
}
|
||||
}
|
||||
|
||||
function testTg() {
|
||||
window.location.href = '{$_url}settings/app&testTg=test';
|
||||
}
|
||||
</script>
|
||||
{include file="sections/footer.tpl"}
|
@ -1,4 +1,4 @@
|
||||
<option value=''>{$_L['Select_Pool']}</option>
|
||||
<option value=''>{Lang::T('Select Pool')}</option>
|
||||
{foreach $d as $ds}
|
||||
<option value="{$ds['pool_name']}">{$ds['pool_name']}{if $routers==''} - {$ds['routers']}{/if}</option>
|
||||
{/foreach}
|
@ -1,4 +1,4 @@
|
||||
<option value=''>{$_L['Select_Routers']}</option>
|
||||
<option value=''>{Lang::T('Select Routers')}</option>
|
||||
{if $_c['radius_enable']}
|
||||
<option value="radius">Radius</option>
|
||||
{/if}
|
||||
|
@ -3,7 +3,7 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12">
|
||||
<div class="panel panel-primary panel-hovered panel-stacked mb30">
|
||||
<div class="panel-heading">{$_L['Add_Plan']}</div>
|
||||
<div class="panel-heading">{Lang::T('Add Service Plan')}</div>
|
||||
<div class="panel-body">
|
||||
<form class="form-horizontal" method="post" role="form" action="{$_url}services/balance-add-post" >
|
||||
<div class="form-group">
|
||||
@ -17,14 +17,25 @@
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Client Can Purchase')}</label>
|
||||
<div class="col-md-10">
|
||||
<label class="radio-inline warning">
|
||||
<input type="radio" checked name="allow_purchase" value="yes"> Yes
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="allow_purchase" value="no"> No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Plan_Name']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Plan Name')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" required class="form-control" id="name" name="name" maxlength="40" placeholder="Topup 100">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Plan_Price']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Plan Price')}</label>
|
||||
<div class="col-md-6">
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon">{$_c['currency_code']}</span>
|
||||
@ -35,8 +46,8 @@
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-lg-offset-2 col-lg-10">
|
||||
<button class="btn btn-success waves-effect waves-light" type="submit">{$_L['Save']}</button>
|
||||
Or <a href="{$_url}services/balance">{$_L['Cancel']}</a>
|
||||
<button class="btn btn-success waves-effect waves-light" type="submit">{Lang::T('Save Changes')}</button>
|
||||
Or <a href="{$_url}services/balance">{Lang::T('Cancel')}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
@ -3,7 +3,7 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12">
|
||||
<div class="panel panel-primary panel-hovered panel-stacked mb30">
|
||||
<div class="panel-heading">{$_L['Edit_Plan']}</div>
|
||||
<div class="panel-heading">{Lang::T('Edit Service Plan')}</div>
|
||||
<div class="panel-body">
|
||||
<form class="form-horizontal" method="post" role="form" action="{$_url}services/balance-edit-post">
|
||||
<input type="hidden" name="id" value="{$d['id']}">
|
||||
@ -18,14 +18,26 @@
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Client Can Purchase')}</label>
|
||||
<div class="col-md-10">
|
||||
<label class="radio-inline warning">
|
||||
<input type="radio" {if $d['allow_purchase'] == yes}checked{/if} name="allow_purchase" value="yes"> Yes
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" {if $d['allow_purchase'] == no}checked{/if} name="allow_purchase" value="no">
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Plan_Name']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Plan Name')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" required class="form-control" id="name" value="{$d['name_plan']}" name="name" maxlength="40" placeholder="Topup 100">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Plan_Price']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Plan Price')}</label>
|
||||
<div class="col-md-6">
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon">{$_c['currency_code']}</span>
|
||||
@ -36,8 +48,8 @@
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-lg-offset-2 col-lg-10">
|
||||
<button class="btn btn-success waves-effect waves-light" type="submit">{$_L['Save']}</button>
|
||||
Or <a href="{$_url}services/balance">{$_L['Cancel']}</a>
|
||||
<button class="btn btn-success waves-effect waves-light" type="submit">{Lang::T('Save Changes')}</button>
|
||||
Or <a href="{$_url}services/balance">{Lang::T('Cancel')}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
@ -12,24 +12,24 @@
|
||||
<div class="input-group-addon">
|
||||
<span class="fa fa-search"></span>
|
||||
</div>
|
||||
<input type="text" name="name" class="form-control" placeholder="{$_L['Search_by_Name']}...">
|
||||
<input type="text" name="name" class="form-control" placeholder="{Lang::T('Search by Name')}...">
|
||||
<div class="input-group-btn">
|
||||
<button class="btn btn-success" type="submit">{$_L['Search']}</button>
|
||||
<button class="btn btn-success" type="submit">{Lang::T('Search')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<a href="{$_url}services/balance-add" class="btn btn-primary btn-block waves-effect"><i class="ion ion-android-add"> </i> {$_L['New_Plan']}</a>
|
||||
<a href="{$_url}services/balance-add" class="btn btn-primary btn-block waves-effect"><i class="ion ion-android-add"> </i> {Lang::T('New Service Plan')}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-striped table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{$_L['Plan_Name']}</th>
|
||||
<th>{$_L['Plan_Price']}</th>
|
||||
<th>{$_L['Manage']}</th>
|
||||
<th>{Lang::T('Plan Name')}</th>
|
||||
<th>{Lang::T('Plan Price')}</th>
|
||||
<th>{Lang::T('Manage')}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -38,8 +38,8 @@
|
||||
<td>{$ds['name_plan']}</td>
|
||||
<td>{Lang::moneyFormat($ds['price'])}</td>
|
||||
<td>
|
||||
<a href="{$_url}services/balance-edit/{$ds['id']}" class="btn btn-info btn-xs">{$_L['Edit']}</a>
|
||||
<a href="{$_url}services/balance-delete/{$ds['id']}" onclick="return confirm('{$_L['Delete']}?')" id="{$ds['id']}" class="btn btn-danger btn-xs">{$_L['Delete']}</a>
|
||||
<a href="{$_url}services/balance-edit/{$ds['id']}" class="btn btn-info btn-xs">{Lang::T('Edit')}</a>
|
||||
<a href="{$_url}services/balance-delete/{$ds['id']}" onclick="return confirm('{Lang::T('Delete')}?')" id="{$ds['id']}" class="btn btn-danger btn-xs"><i class="glyphicon glyphicon-trash"></i></a>
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
|
@ -1,20 +1,20 @@
|
||||
{include file="sections/header.tpl"}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12">
|
||||
<div class="panel panel-primary panel-hovered panel-stacked mb30">
|
||||
<div class="panel-heading">{$_L['Add_Bandwidth']}</div>
|
||||
<div class="panel-body">
|
||||
|
||||
<form class="form-horizontal" method="post" role="form" action="{$_url}bandwidth/add-post">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['BW_Name']}</label>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12">
|
||||
<div class="panel panel-primary panel-hovered panel-stacked mb30">
|
||||
<div class="panel-heading">{Lang::T('Add New Bandwidth')}</div>
|
||||
<div class="panel-body">
|
||||
|
||||
<form class="form-horizontal" method="post" role="form" action="{$_url}bandwidth/add-post">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Bandwidth Name')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="name" name="name">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Rate_Download']}</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Rate Download')}</label>
|
||||
<div class="col-md-4">
|
||||
<input type="text" class="form-control" id="rate_down" name="rate_down">
|
||||
</div>
|
||||
@ -24,9 +24,9 @@
|
||||
<option value="Mbps">Mbps</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Rate_Upload']}</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Rate Upload')}</label>
|
||||
<div class="col-md-4">
|
||||
<input type="text" class="form-control" id="rate_up" name="rate_up">
|
||||
</div>
|
||||
@ -36,19 +36,25 @@
|
||||
<option value="Mbps">Mbps</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-lg-offset-2 col-lg-10">
|
||||
<button class="btn btn-primary waves-effect waves-light" type="submit">{$_L['Submit']}</button>
|
||||
Or <a href="{$_url}bandwidth/list">{$_L['Cancel']}</a>
|
||||
<label class="col-md-2 control-label">Burst Limit</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="burst" name="burst" placeholder="[Burst/Limit] [Burst/Threshold] [Burst/Time] [Priority] [Limit/At]">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-lg-offset-2 col-lg-10">
|
||||
<button class="btn btn-primary waves-effect waves-light"
|
||||
type="submit">{Lang::T('Submit')}</button>
|
||||
Or <a href="{$_url}bandwidth/list">{Lang::T('Cancel')}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{include file="sections/footer.tpl"}
|
||||
{include file="sections/footer.tpl"}
|
@ -1,55 +1,67 @@
|
||||
{include file="sections/header.tpl"}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12">
|
||||
<div class="panel panel-primary panel-hovered panel-stacked mb30">
|
||||
<div class="panel-heading">{$_L['Edit_Bandwidth']}</div>
|
||||
<div class="panel-body">
|
||||
|
||||
<form class="form-horizontal" method="post" role="form" action="{$_url}bandwidth/edit-post" >
|
||||
<input type="hidden" name="id" value="{$d['id']}">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['BW_Name']}</label>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12">
|
||||
<div class="panel panel-primary panel-hovered panel-stacked mb30">
|
||||
<div class="panel-heading">{Lang::T('Edit Bandwidth')}</div>
|
||||
<div class="panel-body">
|
||||
|
||||
<form class="form-horizontal" method="post" role="form" action="{$_url}bandwidth/edit-post">
|
||||
<input type="hidden" name="id" value="{$d['id']}">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Bandwidth Name')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="name" name="name" value="{$d['name_bw']}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Rate_Download']}</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Rate Download')}</label>
|
||||
<div class="col-md-4">
|
||||
<input type="text" class="form-control" id="rate_down" name="rate_down" value="{$d['rate_down']}">
|
||||
<input type="text" class="form-control" id="rate_down" name="rate_down"
|
||||
value="{$d['rate_down']}">
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<select class="form-control" id="rate_down_unit" name="rate_down_unit">
|
||||
<option value="Kbps" {if $d['rate_down_unit'] eq 'Kbps'}selected="selected" {/if}>Kbps</option>
|
||||
<option value="Mbps" {if $d['rate_down_unit'] eq 'Mbps'}selected="selected" {/if}>Mbps</option>
|
||||
<option value="Kbps" {if $d['rate_down_unit'] eq 'Kbps'}selected="selected" {/if}>Kbps
|
||||
</option>
|
||||
<option value="Mbps" {if $d['rate_down_unit'] eq 'Mbps'}selected="selected" {/if}>Mbps
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Rate_Upload']}</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Rate Upload')}</label>
|
||||
<div class="col-md-4">
|
||||
<input type="text" class="form-control" id="rate_up" name="rate_up" value="{$d['rate_up']}">
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<select class="form-control" id="rate_up_unit" name="rate_up_unit">
|
||||
<option value="Kbps" {if $d['rate_up_unit'] eq 'Kbps'}selected="selected" {/if}>Kbps</option>
|
||||
<option value="Mbps" {if $d['rate_up_unit'] eq 'Mbps'}selected="selected" {/if}>Mbps</option>
|
||||
<option value="Kbps" {if $d['rate_up_unit'] eq 'Kbps'}selected="selected" {/if}>Kbps
|
||||
</option>
|
||||
<option value="Mbps" {if $d['rate_up_unit'] eq 'Mbps'}selected="selected" {/if}>Mbps
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">Burst Limit</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="burst" name="burst" value="{$d['burst']}" placeholder="[Burst/Limit] [Burst/Threshold] [Burst/Time] [Priority] [Limit/At]">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-lg-offset-2 col-lg-10">
|
||||
<button class="btn btn-primary waves-effect waves-light" type="submit">{$_L['Submit']}</button>
|
||||
Or <a href="{$_url}bandwidth/list">{$_L['Cancel']}</a>
|
||||
<button class="btn btn-primary waves-effect waves-light"
|
||||
type="submit">{Lang::T('Submit')}</button>
|
||||
Or <a href="{$_url}bandwidth/list">{Lang::T('Cancel')}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
{include file="sections/footer.tpl"}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{include file="sections/footer.tpl"}
|
@ -3,7 +3,7 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="panel panel-hovered mb20 panel-primary">
|
||||
<div class="panel-heading">{$_L['Bandwidth_Plans']}</div>
|
||||
<div class="panel-heading">{Lang::T('Bandwidth Plans')}</div>
|
||||
<div class="panel-body">
|
||||
<div class="md-whiteframe-z1 mb20 text-center" style="padding: 15px">
|
||||
<div class="col-md-8">
|
||||
@ -12,25 +12,25 @@
|
||||
<div class="input-group-addon">
|
||||
<span class="fa fa-search"></span>
|
||||
</div>
|
||||
<input type="text" name="name" class="form-control" placeholder="{$_L['Search_by_Name']}...">
|
||||
<input type="text" name="name" class="form-control" placeholder="{Lang::T('Search by Name')}...">
|
||||
<div class="input-group-btn">
|
||||
<button class="btn btn-success" type="submit">{$_L['Search']}</button>
|
||||
<button class="btn btn-success" type="submit">{Lang::T('Search')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<a href="{$_url}bandwidth/add" class="btn btn-primary btn-block waves-effect"><i class="ion ion-android-add"> </i> {$_L['New_Bandwidth']}</a>
|
||||
<a href="{$_url}bandwidth/add" class="btn btn-primary btn-block waves-effect"><i class="ion ion-android-add"> </i> {Lang::T('New Bandwidth')}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{$_L['BW_Name']}</th>
|
||||
<th>{$_L['Rate_Download']}</th>
|
||||
<th>{$_L['Rate_Upload']}</th>
|
||||
<th>{$_L['Manage']}</th>
|
||||
<th>{Lang::T('Bandwidth Name')}</th>
|
||||
<th>{Lang::T('Rate Download')}</th>
|
||||
<th>{Lang::T('Rate Upload')}</th>
|
||||
<th>{Lang::T('Manage')}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -40,8 +40,8 @@
|
||||
<td>{$ds['rate_down']} {$ds['rate_down_unit']}</td>
|
||||
<td>{$ds['rate_up']} {$ds['rate_up_unit']}</td>
|
||||
<td>
|
||||
<a href="{$_url}bandwidth/edit/{$ds['id']}" class="btn btn-sm btn-warning">{$_L['Edit']}</a>
|
||||
<a href="{$_url}bandwidth/delete/{$ds['id']}" id="{$ds['id']}" class="btn btn-danger btn-sm" onclick="return confirm('{$_L['Delete']}?')" >{$_L['Delete']}</a>
|
||||
<a href="{$_url}bandwidth/edit/{$ds['id']}" class="btn btn-sm btn-warning">{Lang::T('Edit')}</a>
|
||||
<a href="{$_url}bandwidth/delete/{$ds['id']}" id="{$ds['id']}" class="btn btn-danger btn-sm" onclick="return confirm('{Lang::T('Delete')}?')" ><i class="glyphicon glyphicon-trash"></i></a>
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
|
@ -3,23 +3,23 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12">
|
||||
<div class="panel panel-primary panel-hovered panel-stacked mb30">
|
||||
<div class="panel-heading">{$_L['Change_Password']}</div>
|
||||
<div class="panel-heading">{Lang::T('Change Password')}</div>
|
||||
<div class="panel-body">
|
||||
<form class="form-horizontal" method="post" role="form" action="{$_url}settings/change-password-post">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Current_Password']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Current Password')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="password" class="form-control" id="password" name="password">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['New_Password']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('New Password')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="password" class="form-control" id="npass" name="npass">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Confirm_New_Password']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Confirm New Password')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="password" class="form-control" id="cnpass" name="cnpass">
|
||||
</div>
|
||||
@ -27,8 +27,8 @@
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-lg-offset-2 col-lg-10">
|
||||
<button class="btn btn-success waves-effect waves-light" type="submit">{$_L['Save']}</button>
|
||||
Or <a href="{$_url}dashboard">{$_L['Cancel']}</a>
|
||||
<button class="btn btn-success waves-effect waves-light" type="submit">{Lang::T('Save Changes')}</button>
|
||||
Or <a href="{$_url}dashboard">{Lang::T('Cancel')}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
54
ui/ui/codecanyon.tpl
Normal file
54
ui/ui/codecanyon.tpl
Normal file
@ -0,0 +1,54 @@
|
||||
{include file="sections/header.tpl"}
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="panel panel-primary panel-hovered">
|
||||
<div class="panel-heading">
|
||||
<div class="btn-group pull-right">
|
||||
<a class="btn btn-danger btn-xs" href="https://codecanyon.net/category/php-scripts?term=phpnuxbill"
|
||||
target="_blank">Buy Plugin</a>
|
||||
</div>
|
||||
Plugin Purcashed
|
||||
</div>
|
||||
<div class="panel-body row">
|
||||
{if Lang::arrayCount($plugins) > 0}
|
||||
{foreach $plugins as $plugin}
|
||||
<div class="col-md-4">
|
||||
<div class="box box-hovered mb20 box-primary">
|
||||
<div class="box-header">
|
||||
<h3 class="box-title text1line">{$plugin['item']['name']}</h3>
|
||||
</div>
|
||||
<div class="box-body"><small><i>@{$plugin['item']['author_username']} • Last update:
|
||||
{Lang::dateFormat($plugin['item']['updated_at'])}</i></small></div>
|
||||
<div class="box-footer ">
|
||||
<div class="btn-group btn-group-justified" role="group" aria-label="...">
|
||||
<a href="{$plugin['item']['author_url']}" target="_blank" class="btn btn-primary"><i
|
||||
class="ion ion-chatboxes"></i> Author</a>
|
||||
<a href="{$plugin['item']['url']}" target="_blank" class="btn btn-success"><i
|
||||
class="ion ion-chatboxes"></i> Product</a>
|
||||
<a {if $zipExt } href="{$_url}codecanyon/install/{$plugin['item']['id']}"
|
||||
onclick="return confirm('Installing plugin will take some time to complete, do not close the page while it loading to install the plugin')"
|
||||
{else} href="#" onclick="alert('PHP ZIP extension is not installed')"
|
||||
{/if}
|
||||
class="btn btn-danger"><i class="ion ion-chatboxes"></i> Install</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/foreach}
|
||||
{else}
|
||||
<div class="col-md-12">
|
||||
<div class="alert alert-info">
|
||||
<i class="fa fa-info-circle"></i> No plugins purcashed yet.
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="panel-footer">
|
||||
{if $chached_until}Cached Until {$chached_until} <a href="{$_url}codecanyon/reload">Force reload</a>
|
||||
• {/if}<a
|
||||
href="https://github.com/hotspotbilling/phpnuxbill/wiki/Selling-Paid-Plugin-or-Payment-Gateway"
|
||||
target="_blank"> Sell your own plugin/paymentgateway/theme?</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{include file="sections/footer.tpl"}
|
@ -104,7 +104,12 @@
|
||||
</table>
|
||||
</div>
|
||||
<div class="box-footer">
|
||||
<a href="https://paypal.me/ibnux" target="_blank" class="btn btn-primary btn-sm btn-block">Paypal</a>
|
||||
<div class="btn-group btn-group-justified" role="group" aria-label="...">
|
||||
<a href="https://paypal.me/ibnux" target="_blank"
|
||||
class="btn btn-primary btn-sm btn-block">Paypal</a>
|
||||
<a href="https://wise.com/pay/me/ibnum37" target="_blank"
|
||||
class="btn btn-primary btn-sm btn-block">Wise</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -139,7 +144,7 @@
|
||||
<h3 class="box-title">PHPNUXBILL</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
{$_L['Welcome_Text_Admin']}
|
||||
<b>PHPNuxBill</b> is a billing Hotspot and PPPOE for Mikrotik using PHP and Mikrotik API to comunicate with router. If you get more profit with this application, please donate us.<br>Watch project <a href="https://github.com/hotspotbilling/phpnuxbill" target="_blank">in here</a>
|
||||
</div>
|
||||
<div class="box-footer" id="currentVersion">ver</div>
|
||||
<div class="box-footer" id="latestVersion">ver</div>
|
||||
|
@ -3,54 +3,54 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12">
|
||||
<div class="panel panel-primary panel-hovered panel-stacked mb30">
|
||||
<div class="panel-heading">{$_L['Add_Contact']}</div>
|
||||
<div class="panel-heading">{Lang::T('Add New Contact')}</div>
|
||||
<div class="panel-body">
|
||||
|
||||
<form class="form-horizontal" method="post" role="form" action="{$_url}customers/add-post">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Username']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Username')}</label>
|
||||
<div class="col-md-6">
|
||||
<div class="input-group">
|
||||
{if $_c['country_code_phone']!= ''}
|
||||
<span class="input-group-addon" id="basic-addon1">+</span>
|
||||
<span class="input-group-addon" id="basic-addon1">+</span>
|
||||
{else}
|
||||
<span class="input-group-addon" id="basic-addon1"><i
|
||||
class="glyphicon glyphicon-phone-alt"></i></span>
|
||||
<span class="input-group-addon" id="basic-addon1"><i
|
||||
class="glyphicon glyphicon-phone-alt"></i></span>
|
||||
{/if}
|
||||
<input type="text" class="form-control" name="username" required
|
||||
placeholder="{if $_c['country_code_phone']!= ''}{$_c['country_code_phone']}{/if} {$_L['Phone_Number']}">
|
||||
placeholder="{if $_c['country_code_phone']!= ''}{$_c['country_code_phone']}{/if} {Lang::T('Phone Number')}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Full_Name']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Full Name')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" required class="form-control" id="fullname" name="fullname">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Email']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Email')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="email" class="form-control" id="email" name="email">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Phone_Number']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Phone Number')}</label>
|
||||
<div class="col-md-6">
|
||||
<div class="input-group">
|
||||
{if $_c['country_code_phone']!= ''}
|
||||
<span class="input-group-addon" id="basic-addon1">+</span>
|
||||
<span class="input-group-addon" id="basic-addon1">+</span>
|
||||
{else}
|
||||
<span class="input-group-addon" id="basic-addon1"><i
|
||||
class="glyphicon glyphicon-phone-alt"></i></span>
|
||||
<span class="input-group-addon" id="basic-addon1"><i
|
||||
class="glyphicon glyphicon-phone-alt"></i></span>
|
||||
{/if}
|
||||
<input type="text" class="form-control" name="phonenumber"
|
||||
placeholder="{if $_c['country_code_phone']!= ''}{$_c['country_code_phone']}{/if} {$_L['Phone_Number']}">
|
||||
placeholder="{if $_c['country_code_phone']!= ''}{$_c['country_code_phone']}{/if} {Lang::T('Phone Number')}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Password']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Password')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="password" class="form-control" autocomplete="off" required id="password"
|
||||
name="password" onmouseleave="this.type = 'password'" onmouseenter="this.type = 'text'">
|
||||
@ -62,32 +62,44 @@
|
||||
<input type="password" class="form-control" id="pppoe_password" name="pppoe_password"
|
||||
value="{$d['pppoe_password']}" onmouseleave="this.type = 'password'"
|
||||
onmouseenter="this.type = 'text'">
|
||||
<span
|
||||
class="help-block">{Lang::T('User Cannot change this, only admin. if it Empty it will use user password')}</span>
|
||||
<span class="help-block">
|
||||
{Lang::T('User Cannot change this, only admin. if it Empty it will use user password')}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Address']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Address')}</label>
|
||||
<div class="col-md-6">
|
||||
<textarea name="address" id="address" class="form-control"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Service Type')}</label>
|
||||
<div class="col-md-6">
|
||||
<select class="form-control" id="service_type" name="service_type">
|
||||
<option value="Hotspot" {if $d['service_type'] eq 'Hotspot'}selected{/if}>Hotspot</option>
|
||||
<option value="PPPoE" {if $d['service_type'] eq 'PPPoE'}selected{/if}>PPPoE</option>
|
||||
<option value="Others" {if $d['service_type'] eq 'Others'}selected{/if}>Others</option>
|
||||
</select>
|
||||
</div>
|
||||
<select class="form-control" id="service_type" name="service_type">
|
||||
<option value="Hotspot" {if $d['service_type'] eq 'Hotspot' }selected{/if}>Hotspot
|
||||
</option>
|
||||
<option value="PPPoE" {if $d['service_type'] eq 'PPPoE' }selected{/if}>PPPoE</option>
|
||||
<option value="Others" {if $d['service_type'] eq 'Others' }selected{/if}>Others</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Customers Attributes add start -->
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Attributes')}</label>
|
||||
<div id="custom-fields-container" class="col-md-6">
|
||||
<button class="btn btn-success btn-sm waves-effect waves-light" type="button"
|
||||
id="add-custom-field">+</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Customers Attributes add end -->
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-lg-offset-2 col-lg-10">
|
||||
<button class="btn btn-primary waves-effect waves-light"
|
||||
type="submit">{$_L['Save']}</button>
|
||||
Or <a href="{$_url}customers/list">{$_L['Cancel']}</a>
|
||||
<button class="btn btn-primary waves-effect waves-light" type="submit">
|
||||
{Lang::T('Save Changes')}
|
||||
</button>
|
||||
Or <a href="{$_url}customers/list">{Lang::T('Cancel')}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@ -96,6 +108,41 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{literal}
|
||||
<script type="text/javascript">
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
var customFieldsContainer = document.getElementById('custom-fields-container');
|
||||
var addCustomFieldButton = document.getElementById('add-custom-field');
|
||||
|
||||
addCustomFieldButton.addEventListener('click', function() {
|
||||
var fieldIndex = customFieldsContainer.children.length;
|
||||
var newField = document.createElement('div');
|
||||
newField.className = 'form-group';
|
||||
newField.innerHTML = `
|
||||
<label class="col-md-2 control-label">Name:</label>
|
||||
<div class="col-md-3">
|
||||
<input type="text" class="form-control" name="custom_field_name[]" placeholder="Name">
|
||||
</div>
|
||||
<label class="col-md-2 control-label">Value:</label>
|
||||
<div class="col-md-3">
|
||||
<input type="text" class="form-control" name="custom_field_value[]" placeholder="Value">
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<button type="button" class="remove-custom-field btn btn-danger btn-sm waves-effect waves-light">-</button>
|
||||
</div>
|
||||
`;
|
||||
customFieldsContainer.appendChild(newField);
|
||||
});
|
||||
|
||||
customFieldsContainer.addEventListener('click', function(event) {
|
||||
if (event.target.classList.contains('remove-custom-field')) {
|
||||
var fieldContainer = event.target.parentNode.parentNode;
|
||||
fieldContainer.parentNode.removeChild(fieldContainer);
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
|
||||
{include file="sections/footer.tpl"}
|
@ -3,62 +3,62 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12">
|
||||
<div class="panel panel-primary panel-hovered panel-stacked mb30">
|
||||
<div class="panel-heading">{$_L['Edit_Contact']}</div>
|
||||
<div class="panel-heading">{Lang::T('Edit Contact')}</div>
|
||||
<div class="panel-body">
|
||||
|
||||
<form class="form-horizontal" method="post" role="form" action="{$_url}customers/edit-post">
|
||||
<input type="hidden" name="id" value="{$d['id']}">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Username']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Username')}</label>
|
||||
<div class="col-md-6">
|
||||
<div class="input-group">
|
||||
{if $_c['country_code_phone']!= ''}
|
||||
<span class="input-group-addon" id="basic-addon1">+</span>
|
||||
<span class="input-group-addon" id="basic-addon1">+</span>
|
||||
{else}
|
||||
<span class="input-group-addon" id="basic-addon1"><i
|
||||
class="glyphicon glyphicon-phone-alt"></i></span>
|
||||
<span class="input-group-addon" id="basic-addon1"><i
|
||||
class="glyphicon glyphicon-phone-alt"></i></span>
|
||||
{/if}
|
||||
<input type="text" class="form-control" name="username" value="{$d['username']}"
|
||||
required
|
||||
placeholder="{if $_c['country_code_phone']!= ''}{$_c['country_code_phone']}{/if} {$_L['Phone_Number']}">
|
||||
placeholder="{if $_c['country_code_phone']!= ''}{$_c['country_code_phone']}{/if} {Lang::T('Phone Number')}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Full_Name']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Full Name')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="fullname" name="fullname"
|
||||
value="{$d['fullname']}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Email']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Email')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="email" class="form-control" id="email" name="email" value="{$d['email']}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Phone_Number']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Phone Number')}</label>
|
||||
<div class="col-md-6">
|
||||
<div class="input-group">
|
||||
{if $_c['country_code_phone']!= ''}
|
||||
<span class="input-group-addon" id="basic-addon1">+</span>
|
||||
<span class="input-group-addon" id="basic-addon1">+</span>
|
||||
{else}
|
||||
<span class="input-group-addon" id="basic-addon1"><i
|
||||
class="glyphicon glyphicon-phone-alt"></i></span>
|
||||
<span class="input-group-addon" id="basic-addon1"><i
|
||||
class="glyphicon glyphicon-phone-alt"></i></span>
|
||||
{/if}
|
||||
<input type="text" class="form-control" name="phonenumber" value="{$d['phonenumber']}"
|
||||
placeholder="{if $_c['country_code_phone']!= ''}{$_c['country_code_phone']}{/if} {$_L['Phone_Number']}">
|
||||
placeholder="{if $_c['country_code_phone']!= ''}{$_c['country_code_phone']}{/if} {Lang::T('Phone Number')}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Password']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Password')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="password" autocomplete="off" class="form-control" id="password" name="password"
|
||||
onmouseleave="this.type = 'password'" onmouseenter="this.type = 'text'"
|
||||
value="{$d['password']}">
|
||||
<span class="help-block">{$_L['password_change_help']}</span>
|
||||
<span class="help-block">{Lang::T('Keep Blank to do not change Password')}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
@ -67,32 +67,58 @@
|
||||
<input type="password" autocomplete="off" class="form-control" id="pppoe_password"
|
||||
name="pppoe_password" value="{$d['pppoe_password']}"
|
||||
onmouseleave="this.type = 'password'" onmouseenter="this.type = 'text'">
|
||||
<span
|
||||
class="help-block">{Lang::T('User Cannot change this, only admin. if it Empty it will use user password')}</span>
|
||||
<span class="help-block">
|
||||
{Lang::T('User Cannot change this, only admin. if it Empty it will use user password')}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Address']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Address')}</label>
|
||||
<div class="col-md-6">
|
||||
<textarea name="address" id="address" class="form-control">{$d['address']}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Service Type')}</label>
|
||||
<div class="col-md-6">
|
||||
<select class="form-control" id="service_type" name="service_type">
|
||||
<option value="Hotspot" {if $d['service_type'] eq 'Hotspot'}selected{/if}>Hotspot</option>
|
||||
<option value="PPPoE" {if $d['service_type'] eq 'PPPoE'}selected{/if}>PPPoE</option>
|
||||
<option value="Others" {if $d['service_type'] eq 'Others'}selected{/if}>Others</option>
|
||||
</select>
|
||||
</div>
|
||||
<select class="form-control" id="service_type" name="service_type">
|
||||
<option value="Hotspot" {if $d['service_type'] eq 'Hotspot' }selected{/if}>Hotspot
|
||||
</option>
|
||||
<option value="PPPoE" {if $d['service_type'] eq 'PPPoE' }selected{/if}>PPPoE</option>
|
||||
<option value="Others" {if $d['service_type'] eq 'Others' }selected{/if}>Others</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--Customers Attributes edit start -->
|
||||
{if $customFields}
|
||||
{foreach $customFields as $customField}
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label"
|
||||
for="{$customField.field_name}">{$customField.field_name}</label>
|
||||
<div class="col-md-6">
|
||||
<input class="form-control" type="text" name="custom_fields[{$customField.field_name}]"
|
||||
id="{$customField.field_name}" value="{$customField.field_value}">
|
||||
</div>
|
||||
<input type="checkbox" name="delete_custom_fields[]" value="{$customField.field_name}"> Delete
|
||||
</div>
|
||||
{/foreach}
|
||||
{/if}
|
||||
<!--Customers Attributes edit end -->
|
||||
<!--Customers Attributes add start -->
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Attributes')}</label>
|
||||
<div id="custom-fields-container" class="col-md-6">
|
||||
<button class="btn btn-success btn-sm waves-effect waves-light" type="button"
|
||||
id="add-custom-field">+</button>
|
||||
</div>
|
||||
</div>
|
||||
<!--Customers Attributes add end -->
|
||||
<div class="form-group">
|
||||
<div class="col-lg-offset-2 col-lg-10">
|
||||
<button class="btn btn-primary waves-effect waves-light"
|
||||
type="submit">{$_L['Save']}</button>
|
||||
Or <a href="{$_url}customers/list">{$_L['Cancel']}</a>
|
||||
<button class="btn btn-primary waves-effect waves-light" type="submit">
|
||||
{Lang::T('Save Changes')}
|
||||
</button>
|
||||
Or <a href="{$_url}customers/list">{Lang::T('Cancel')}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@ -102,4 +128,40 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{literal}
|
||||
<script type="text/javascript">
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
var customFieldsContainer = document.getElementById('custom-fields-container');
|
||||
var addCustomFieldButton = document.getElementById('add-custom-field');
|
||||
|
||||
addCustomFieldButton.addEventListener('click', function () {
|
||||
var fieldIndex = customFieldsContainer.children.length;
|
||||
var newField = document.createElement('div');
|
||||
newField.className = 'form-group';
|
||||
newField.innerHTML = `
|
||||
<label class="col-md-2 control-label">Name:</label>
|
||||
<div class="col-md-3">
|
||||
<input type="text" class="form-control" name="custom_field_name[]" placeholder="Name">
|
||||
</div>
|
||||
<label class="col-md-2 control-label">Value:</label>
|
||||
<div class="col-md-3">
|
||||
<input type="text" class="form-control" name="custom_field_value[]" placeholder="Value">
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<button type="button" class="remove-custom-field btn btn-danger btn-sm waves-effect waves-light">-</button>
|
||||
</div>
|
||||
`;
|
||||
customFieldsContainer.appendChild(newField);
|
||||
});
|
||||
|
||||
customFieldsContainer.addEventListener('click', function (event) {
|
||||
if (event.target.classList.contains('remove-custom-field')) {
|
||||
var fieldContainer = event.target.parentNode.parentNode;
|
||||
fieldContainer.parentNode.removeChild(fieldContainer);
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
|
||||
{include file="sections/footer.tpl"}
|
@ -12,43 +12,52 @@
|
||||
|
||||
<ul class="list-group list-group-unbordered">
|
||||
<li class="list-group-item">
|
||||
<b>{$_L['Username']}</b> <span class="pull-right">{$d['username']}</span>
|
||||
<b>{Lang::T('Username')}</b> <span class="pull-right">{$d['username']}</span>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<b>{$_L['Phone_Number']}</b> <span class="pull-right">{$d['phonenumber']}</span>
|
||||
<b>{Lang::T('Phone Number')}</b> <span class="pull-right">{$d['phonenumber']}</span>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<b>{$_L['Email']}</b> <span class="pull-right">{$d['email']}</span>
|
||||
<b>{Lang::T('Email')}</b> <span class="pull-right">{$d['email']}</span>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="text-muted">{Lang::nl2br($d['address'])}</p>
|
||||
<ul class="list-group list-group-unbordered">
|
||||
<li class="list-group-item">
|
||||
<b>{$_L['Password']}</b> <input type="password" value="{$d['password']}"
|
||||
<b>{Lang::T('Password')}</b> <input type="password" value="{$d['password']}"
|
||||
style=" border: 0px; text-align: right;" class="pull-right"
|
||||
onmouseleave="this.type = 'password'" onmouseenter="this.type = 'text'"
|
||||
onclick="this.select()">
|
||||
</li>
|
||||
{if $d['pppoe_password'] != ''}
|
||||
<li class="list-group-item">
|
||||
<b>PPPOE {$_L['Password']}</b> <input type="password" value="{$d['pppoe_password']}"
|
||||
<li class="list-group-item">
|
||||
<b>PPPOE {Lang::T('Password')}</b> <input type="password" value="{$d['pppoe_password']}"
|
||||
style=" border: 0px; text-align: right;" class="pull-right"
|
||||
onmouseleave="this.type = 'password'" onmouseenter="this.type = 'text'"
|
||||
onclick="this.select()">
|
||||
</li>
|
||||
</li>
|
||||
{/if}
|
||||
<li class="list-group-item">
|
||||
<!--Customers Attributes view start -->
|
||||
{if $customFields}
|
||||
{foreach $customFields as $customField}
|
||||
<li class="list-group-item">
|
||||
<b>{$customField.field_name}</b> <span class="pull-right">{$customField.field_value}</span>
|
||||
</li>
|
||||
{/foreach}
|
||||
{/if}
|
||||
<!--Customers Attributes view end -->
|
||||
<li class="list-group-item">
|
||||
<b>{Lang::T('Service Type')}</b> <span class="pull-right">{Lang::T($d['service_type'])}</span>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<b>{Lang::T('Balance')}</b> <span class="pull-right">{Lang::moneyFormat($d['balance'])}</span>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<b>{Lang::T('Auto Renewal')}</b> <span
|
||||
class="pull-right">{if $d['auto_renewal']}yes{else}no{/if}</span>
|
||||
<b>{Lang::T('Auto Renewal')}</b> <span class="pull-right">{if
|
||||
$d['auto_renewal']}yes{else}no{/if}</span>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<b>{$_L['Created_On']}</b> <span
|
||||
<b>{Lang::T('Created On')}</b> <span
|
||||
class="pull-right">{Lang::dateTimeFormat($d['created_at'])}</span>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
@ -59,134 +68,135 @@
|
||||
<div class="row">
|
||||
<div class="col-xs-4">
|
||||
<a href="{$_url}customers/delete/{$d['id']}" id="{$d['id']}"
|
||||
class="btn btn-danger btn-block btn-sm" onclick="return confirm('{$_L['Delete']}?')"><span
|
||||
class="fa fa-trash"></span></a>
|
||||
class="btn btn-danger btn-block btn-sm"
|
||||
onclick="return confirm('{Lang::T('Delete')}?')"><span class="fa fa-trash"></span></a>
|
||||
</div>
|
||||
<div class="col-xs-8">
|
||||
<a href="{$_url}customers/edit/{$d['id']}"
|
||||
class="btn btn-warning btn-sm btn-block">{$_L['Edit']}</a>
|
||||
class="btn btn-warning btn-sm btn-block">{Lang::T('Edit')}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{if $package}
|
||||
<div class="box box-{if $package['status']=='on'}success{else}danger{/if}">
|
||||
<div class="box-body box-profile">
|
||||
<h4 class="text-center">{$package['type']} - {$package['namebp']}</h4>
|
||||
<ul class="list-group list-group-unbordered">
|
||||
<li class="list-group-item">
|
||||
{Lang::T('Active')} <span
|
||||
class="pull-right">{if $package['status']=='on'}yes{else}no{/if}</span>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
{$_L['Created_On']} <span
|
||||
class="pull-right">{Lang::dateAndTimeFormat($package['recharged_on'],$package['recharged_time'])}</span>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
{$_L['Expires_On']} <span
|
||||
class="pull-right">{Lang::dateAndTimeFormat($package['expiration'], $package['time'])}</span>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
{$package['routers']} <span class="pull-right">{$package['method']}</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="row">
|
||||
<div class="col-xs-4">
|
||||
<a href="{$_url}customers/deactivate/{$d['id']}" id="{$d['id']}"
|
||||
class="btn btn-danger btn-block btn-sm"
|
||||
onclick="return confirm('This will deactivate Customer Plan, and make it expired')">{Lang::T('Deactivate')}</a>
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<a href="{$_url}customers/recharge/{$d['id']}"
|
||||
onclick="return confirm('This will extend Customer plan, same as recharge')"
|
||||
class="btn btn-success btn-sm btn-block">{Lang::T('Recharge')}</a>
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<a href="{$_url}customers/sync/{$d['id']}"
|
||||
onclick="return confirm('This will sync Customer to Mikrotik?')"
|
||||
class="btn btn-primary btn-sm btn-block">{Lang::T('Sync')}</a>
|
||||
</div>
|
||||
<div class="box box-{if $package['status']=='on'}success{else}danger{/if}">
|
||||
<div class="box-body box-profile">
|
||||
<h4 class="text-center">{$package['type']} - {$package['namebp']}</h4>
|
||||
<ul class="list-group list-group-unbordered">
|
||||
<li class="list-group-item">
|
||||
{Lang::T('Active')} <span class="pull-right">{if
|
||||
$package['status']=='on'}yes{else}no{/if}</span>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
{Lang::T('Created On')} <span
|
||||
class="pull-right">{Lang::dateAndTimeFormat($package['recharged_on'],$package['recharged_time'])}</span>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
{Lang::T('Expires On')} <span
|
||||
class="pull-right">{Lang::dateAndTimeFormat($package['expiration'],
|
||||
$package['time'])}</span>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
{$package['routers']} <span class="pull-right">{$package['method']}</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="row">
|
||||
<div class="col-xs-4">
|
||||
<a href="{$_url}customers/deactivate/{$d['id']}" id="{$d['id']}"
|
||||
class="btn btn-danger btn-block btn-sm"
|
||||
onclick="return confirm('This will deactivate Customer Plan, and make it expired')">{Lang::T('Deactivate')}</a>
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<a href="{$_url}customers/recharge/{$d['id']}"
|
||||
onclick="return confirm('This will extend Customer plan, same as recharge')"
|
||||
class="btn btn-success btn-sm btn-block">{Lang::T('Recharge')}</a>
|
||||
</div>
|
||||
<div class="col-xs-4">
|
||||
<a href="{$_url}customers/sync/{$d['id']}"
|
||||
onclick="return confirm('This will sync Customer to Mikrotik?')"
|
||||
class="btn btn-primary btn-sm btn-block">{Lang::T('Sync')}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{else}
|
||||
<a href="{$_url}prepaid/recharge/{$d['id']}"
|
||||
class="btn btn-success btn-sm btn-block mt-1">{Lang::T('Recharge')}</a><br>
|
||||
<a href="{$_url}prepaid/recharge/{$d['id']}"
|
||||
class="btn btn-success btn-sm btn-block mt-1">{Lang::T('Recharge')}</a><br>
|
||||
{/if}
|
||||
<a href="{$_url}customers/list" class="btn btn-primary btn-sm btn-block mt-1">{Lang::T('Back')}</a><br>
|
||||
</div>
|
||||
<div class="col-sm-8 col-md-8">
|
||||
<ul class="nav nav-tabs">
|
||||
<li role="presentation" {if $v=='order'}class="active" {/if}><a
|
||||
<li role="presentation" {if $v=='order' }class="active" {/if}><a
|
||||
href="{$_url}customers/view/{$d['id']}/order">30 {Lang::T('Order History')}</a></li>
|
||||
<li role="presentation" {if $v=='activation'}class="active" {/if}><a
|
||||
<li role="presentation" {if $v=='activation' }class="active" {/if}><a
|
||||
href="{$_url}customers/view/{$d['id']}/activation">30 {Lang::T('Activation History')}</a></li>
|
||||
</ul>
|
||||
<div class="table-responsive" style="background-color: white;">
|
||||
<table id="datatable" class="table table-bordered table-striped">
|
||||
{if Lang::arrayCount($activation)}
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{$_L['Invoice']}</th>
|
||||
<th>{$_L['Username']}</th>
|
||||
<th>{$_L['Plan_Name']}</th>
|
||||
<th>{$_L['Plan_Price']}</th>
|
||||
<th>{$_L['Type']}</th>
|
||||
<th>{$_L['Created_On']}</th>
|
||||
<th>{$_L['Expires_On']}</th>
|
||||
<th>{$_L['Method']}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach $activation as $ds}
|
||||
<tr onclick="window.location.href = '{$_url}prepaid/view/{$ds['id']}'" style="cursor:pointer;">
|
||||
<td>{$ds['invoice']}</td>
|
||||
<td>{$ds['username']}</td>
|
||||
<td>{$ds['plan_name']}</td>
|
||||
<td>{Lang::moneyFormat($ds['price'])}</td>
|
||||
<td>{$ds['type']}</td>
|
||||
<td class="text-success">{Lang::dateAndTimeFormat($ds['recharged_on'],$ds['recharged_time'])}
|
||||
</td>
|
||||
<td class="text-danger">{Lang::dateAndTimeFormat($ds['expiration'],$ds['time'])}</td>
|
||||
<td>{$ds['method']}</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{Lang::T('Invoice')}</th>
|
||||
<th>{Lang::T('Username')}</th>
|
||||
<th>{Lang::T('Plan Name')}</th>
|
||||
<th>{Lang::T('Plan Price')}</th>
|
||||
<th>{Lang::T('Type')}</th>
|
||||
<th>{Lang::T('Created On')}</th>
|
||||
<th>{Lang::T('Expires On')}</th>
|
||||
<th>{Lang::T('Method')}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach $activation as $ds}
|
||||
<tr onclick="window.location.href = '{$_url}prepaid/view/{$ds['id']}'" style="cursor:pointer;">
|
||||
<td>{$ds['invoice']}</td>
|
||||
<td>{$ds['username']}</td>
|
||||
<td>{$ds['plan_name']}</td>
|
||||
<td>{Lang::moneyFormat($ds['price'])}</td>
|
||||
<td>{$ds['type']}</td>
|
||||
<td class="text-success">{Lang::dateAndTimeFormat($ds['recharged_on'],$ds['recharged_time'])}
|
||||
</td>
|
||||
<td class="text-danger">{Lang::dateAndTimeFormat($ds['expiration'],$ds['time'])}</td>
|
||||
<td>{$ds['method']}</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
{/if}
|
||||
{if Lang::arrayCount($order)}
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{$_L['Plan_Name']}</th>
|
||||
<th>{Lang::T('Gateway')}</th>
|
||||
<th>{Lang::T('Routers')}</th>
|
||||
<th>{$_L['Type']}</th>
|
||||
<th>{$_L['Plan_Price']}</th>
|
||||
<th>{$_L['Created_On']}</th>
|
||||
<th>{$_L['Expires_On']}</th>
|
||||
<th>{Lang::T('Date Done')}</th>
|
||||
<th>{$_L['Method']}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach $order as $ds}
|
||||
<tr>
|
||||
<td>{$ds['plan_name']}</td>
|
||||
<td>{$ds['gateway']}</td>
|
||||
<td>{$ds['routers']}</td>
|
||||
<td>{$ds['payment_channel']}</td>
|
||||
<td>{Lang::moneyFormat($ds['price'])}</td>
|
||||
<td class="text-primary">{Lang::dateTimeFormat($ds['created_date'])}</td>
|
||||
<td class="text-danger">{Lang::dateTimeFormat($ds['expired_date'])}</td>
|
||||
<td class="text-success">{if $ds['status']!=1}{Lang::dateTimeFormat($ds['paid_date'])}{/if}</td>
|
||||
<td>{if $ds['status']==1}{$_L['UNPAID']}
|
||||
{elseif $ds['status']==2}{$_L['PAID']}
|
||||
{elseif $ds['status']==3}{$_L['FAILED']}
|
||||
{elseif $ds['status']==4}{$_L['CANCELED']}
|
||||
{elseif $ds['status']==5}{$_L['UNKNOWN']}
|
||||
{/if}</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{Lang::T('Plan Name')}</th>
|
||||
<th>{Lang::T('Gateway')}</th>
|
||||
<th>{Lang::T('Routers')}</th>
|
||||
<th>{Lang::T('Type')}</th>
|
||||
<th>{Lang::T('Plan Price')}</th>
|
||||
<th>{Lang::T('Created On')}</th>
|
||||
<th>{Lang::T('Expires On')}</th>
|
||||
<th>{Lang::T('Date Done')}</th>
|
||||
<th>{Lang::T('Method')}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach $order as $ds}
|
||||
<tr>
|
||||
<td>{$ds['plan_name']}</td>
|
||||
<td>{$ds['gateway']}</td>
|
||||
<td>{$ds['routers']}</td>
|
||||
<td>{$ds['payment_channel']}</td>
|
||||
<td>{Lang::moneyFormat($ds['price'])}</td>
|
||||
<td class="text-primary">{Lang::dateTimeFormat($ds['created_date'])}</td>
|
||||
<td class="text-danger">{Lang::dateTimeFormat($ds['expired_date'])}</td>
|
||||
<td class="text-success">{if $ds['status']!=1}{Lang::dateTimeFormat($ds['paid_date'])}{/if}</td>
|
||||
<td>{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}</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
{/if}
|
||||
</table>
|
||||
</div>
|
||||
|
@ -3,7 +3,16 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="panel panel-hovered mb20 panel-primary">
|
||||
<div class="panel-heading">{$_L['Manage_Accounts']}</div>
|
||||
<div class="panel-heading">
|
||||
{if in_array($_admin['user_type'],['SuperAdmin','Admin'])}
|
||||
<div class="btn-group pull-right">
|
||||
<a class="btn btn-primary btn-xs" title="save" href="{$_url}customers/csv"
|
||||
onclick="return confirm('This will export to CSV?')"><span class="glyphicon glyphicon-download"
|
||||
aria-hidden="true"></span> CSV</a>
|
||||
</div>
|
||||
{/if}
|
||||
{Lang::T('Manage Contact')}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="md-whiteframe-z1 mb20 text-center" style="padding: 15px">
|
||||
<div class="col-md-8">
|
||||
@ -20,29 +29,31 @@
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<a href="{$_url}customers/add" class="btn btn-primary btn-block waves-effect"><i
|
||||
class="ion ion-android-add"> </i> {$_L['Add_Contact']}</a>
|
||||
class="ion ion-android-add"> </i> {Lang::T('Add New Contact')}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-striped table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{$_L['Username']}</th>
|
||||
<th>{$_L['Full_Name']}</th>
|
||||
<th>{Lang::T('Username')}</th>
|
||||
<th>{Lang::T('Full Name')}</th>
|
||||
<th>{Lang::T('Balance')}</th>
|
||||
<th>{$_L['Phone_Number']}</th>
|
||||
<th>{$_L['Email']}</th>
|
||||
<th>{$_L['Package']}</th>
|
||||
<th>{Lang::T('Phone Number')}</th>
|
||||
<th>{Lang::T('Email')}</th>
|
||||
<th>{Lang::T('Package')}</th>
|
||||
<th>{Lang::T('Service Type')}</th>
|
||||
<th>{$_L['Created_On']}</th>
|
||||
<th>{$_L['Manage']}</th>
|
||||
<th>{Lang::T('Created On')}</th>
|
||||
<th>{Lang::T('Manage')}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach $d as $ds}
|
||||
<tr>
|
||||
<td onclick="window.location.href = '{$_url}customers/view/{$ds['id']}'" style="cursor:pointer;">{$ds['username']}</td>
|
||||
<td onclick="window.location.href = '{$_url}customers/view/{$ds['id']}'" style="cursor: pointer;">{$ds['fullname']}</td>
|
||||
<td onclick="window.location.href = '{$_url}customers/view/{$ds['id']}'"
|
||||
style="cursor:pointer;">{$ds['username']}</td>
|
||||
<td onclick="window.location.href = '{$_url}customers/view/{$ds['id']}'"
|
||||
style="cursor: pointer;">{$ds['fullname']}</td>
|
||||
<td>{Lang::moneyFormat($ds['balance'])}</td>
|
||||
<td>{$ds['phonenumber']}</td>
|
||||
<td>{$ds['email']}</td>
|
||||
@ -52,10 +63,10 @@
|
||||
<td>{$ds['service_type']}</td>
|
||||
<td>{Lang::dateTimeFormat($ds['created_at'])}</td>
|
||||
<td align="center">
|
||||
<a href="{$_url}customers/view/{$ds['id']}" id="{$ds['id']}" style="margin: 0px;"
|
||||
class="btn btn-success btn-xs"> {Lang::T('View')} </a>
|
||||
<a href="{$_url}prepaid/recharge/{$ds['id']}" id="{$ds['id']}" style="margin: 0px;"
|
||||
class="btn btn-primary btn-xs">{$_L['Recharge']}</a>
|
||||
<a href="{$_url}customers/view/{$ds['id']}" id="{$ds['id']}" style="margin: 0px;"
|
||||
class="btn btn-success btn-xs"> {Lang::T('View')} </a>
|
||||
<a href="{$_url}prepaid/recharge/{$ds['id']}" id="{$ds['id']}" style="margin: 0px;"
|
||||
class="btn btn-primary btn-xs">{Lang::T('Recharge')}</a>
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
|
@ -1,17 +1,18 @@
|
||||
{include file="sections/header.tpl"}
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-3 col-xs-6">
|
||||
<div class="small-box bg-aqua">
|
||||
<div class="inner">
|
||||
<h4><sup>{$_c['currency_code']}</sup>
|
||||
{number_format($iday,0,$_c['dec_point'],$_c['thousands_sep'])}</h4>
|
||||
<p>{$_L['Income_Today']}</p>
|
||||
<p>{Lang::T('Income Today')}</p>
|
||||
</div>
|
||||
<div class="icon">
|
||||
<i class="ion ion-bag"></i>
|
||||
</div>
|
||||
<a href="{$_url}reports/by-date" class="small-box-footer">{$_L['View_Reports']} <i
|
||||
<a href="{$_url}reports/by-date" class="small-box-footer">{Lang::T('View Reports')} <i
|
||||
class="fa fa-arrow-circle-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
@ -21,12 +22,12 @@
|
||||
<h4><sup>{$_c['currency_code']}</sup>
|
||||
{number_format($imonth,0,$_c['dec_point'],$_c['thousands_sep'])}</h4>
|
||||
|
||||
<p>{$_L['Income_This_Month']}</p>
|
||||
<p>{Lang::T('Income This Month')}</p>
|
||||
</div>
|
||||
<div class="icon">
|
||||
<i class="ion ion-stats-bars"></i>
|
||||
</div>
|
||||
<a href="{$_url}reports/by-period" class="small-box-footer">{$_L['View_Reports']} <i
|
||||
<a href="{$_url}reports/by-period" class="small-box-footer">{Lang::T('View Reports')} <i
|
||||
class="fa fa-arrow-circle-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
@ -35,12 +36,12 @@
|
||||
<div class="inner">
|
||||
<h4>{$u_act}/{$u_all}</h4>
|
||||
|
||||
<p>{$_L['Users_Active']}</p>
|
||||
<p>{Lang::T('Users Active')}</p>
|
||||
</div>
|
||||
<div class="icon">
|
||||
<i class="ion ion-person"></i>
|
||||
</div>
|
||||
<a href="{$_url}prepaid/list" class="small-box-footer">{$_L['View_All']} <i
|
||||
<a href="{$_url}prepaid/list" class="small-box-footer">{Lang::T('View All')} <i
|
||||
class="fa fa-arrow-circle-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
@ -49,107 +50,332 @@
|
||||
<div class="inner">
|
||||
<h4>{$c_all}</h4>
|
||||
|
||||
<p>{$_L['Total_Users']}</p>
|
||||
<p>{Lang::T('Total Users')}</p>
|
||||
</div>
|
||||
<div class="icon">
|
||||
<i class="fa fa-users"></i>
|
||||
</div>
|
||||
<a href="{$_url}customers/list" class="small-box-footer">{$_L['View_All']} <i
|
||||
<a href="{$_url}customers/list" class="small-box-footer">{Lang::T('View All')} <i
|
||||
class="fa fa-arrow-circle-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- solid sales graph -->
|
||||
{if $_c['hide_mrc'] != 'yes'}
|
||||
<div class="box box-solid ">
|
||||
<div class="box-header">
|
||||
<i class="fa fa-th"></i>
|
||||
|
||||
<h3 class="box-title">{Lang::T('Monthly Registered Customers')}</h3>
|
||||
|
||||
<div class="box-tools pull-right">
|
||||
<button type="button" class="btn bg-teal btn-sm" data-widget="collapse"><i class="fa fa-minus"></i>
|
||||
</button>
|
||||
<button type="button" class="btn bg-teal btn-sm" data-widget="remove"><i class="fa fa-times"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-body border-radius-none">
|
||||
<canvas class="chart" id="chart" style="height: 250px;"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<!-- solid sales graph -->
|
||||
{if $_c['hide_tms'] != 'yes'}
|
||||
<div class="box box-solid ">
|
||||
<div class="box-header">
|
||||
<i class="fa fa-inbox"></i>
|
||||
|
||||
<h3 class="box-title">{Lang::T('Total Monthly Sales')}</h3>
|
||||
|
||||
<div class="box-tools pull-right">
|
||||
<button type="button" class="btn bg-teal btn-sm" data-widget="collapse"><i class="fa fa-minus"></i>
|
||||
</button>
|
||||
<button type="button" class="btn bg-teal btn-sm" data-widget="remove"><i class="fa fa-times"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-body border-radius-none">
|
||||
<canvas class="chart" id="salesChart" style="height: 250px;"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
<div class="row">
|
||||
<div class="col-md-7">
|
||||
{if $_c['disable_voucher'] != 'yes' && $stocks['unused']>0 || $stocks['used']>0}
|
||||
<div class="panel panel-primary mb20 panel-hovered project-stats table-responsive">
|
||||
<div class="panel-heading">Vouchers Stock</div>
|
||||
{if $_c['hide_vs'] != 'yes'}
|
||||
<div class="panel panel-primary mb20 panel-hovered project-stats table-responsive">
|
||||
<div class="panel-heading">Vouchers Stock</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{Lang::T('Plan Name')}</th>
|
||||
<th>unused</th>
|
||||
<th>used</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach $plans as $stok}
|
||||
<tr>
|
||||
<td>{$stok['name_plan']}</td>
|
||||
<td>{$stok['unused']}</td>
|
||||
<td>{$stok['used']}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
{/foreach}
|
||||
<tr>
|
||||
<td>Total</td>
|
||||
<td>{$stocks['unused']}</td>
|
||||
<td>{$stocks['used']}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
{/if}
|
||||
{if $_c['hide_uet'] != 'yes'}
|
||||
<div class="panel panel-warning mb20 panel-hovered project-stats table-responsive">
|
||||
<div class="panel-heading">{Lang::T('User Expired, Today')}</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{$_L['Plan_Name']}</th>
|
||||
<th>unused</th>
|
||||
<th>used</th>
|
||||
<th>Id</th>
|
||||
<th>{Lang::T('Username')}</th>
|
||||
<th>{Lang::T('Created On')}</th>
|
||||
<th>{Lang::T('Expires On')}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach $plans as $stok}
|
||||
{$no = 1}
|
||||
{foreach $expire as $expired}
|
||||
<tr>
|
||||
<td>{$stok['name_plan']}</td>
|
||||
<td>{$stok['unused']}</td>
|
||||
<td>{$stok['used']}</td>
|
||||
<td>{$no++}</td>
|
||||
<td><a href="{$_url}customers/viewu/{$expired['username']}">{$expired['username']}</a></td>
|
||||
<td>{Lang::dateAndTimeFormat($expired['recharged_on'],$expired['recharged_time'])}
|
||||
</td>
|
||||
<td>{Lang::dateAndTimeFormat($expired['expiration'],$expired['time'])}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
{/foreach}
|
||||
<tr>
|
||||
<td>Total</td>
|
||||
<td>{$stocks['unused']}</td>
|
||||
<td>{$stocks['used']}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
{$paginator['contents']}
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-md-5">
|
||||
{if $_c['hide_pg'] != 'yes'}
|
||||
<div class="panel panel-success panel-hovered mb20 activities">
|
||||
<div class="panel-heading">{Lang::T('Payment Gateway')}: {$_c['payment_gateway']}</div>
|
||||
</div>
|
||||
{/if}
|
||||
{if $_c['hide_aui'] != 'yes'}
|
||||
<div class="panel panel-info panel-hovered mb20 activities">
|
||||
<div class="panel-heading">{Lang::T('All Users Insights')}</div>
|
||||
<div class="panel-body">
|
||||
<canvas id="userRechargesChart"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
<div class="panel panel-warning mb20 panel-hovered project-stats table-responsive">
|
||||
<div class="panel-heading">{$_L['User_Expired_Today']}</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Id</th>
|
||||
<th>{$_L['Username']}</th>
|
||||
<th>{$_L['Created_On']}</th>
|
||||
<th>{$_L['Expires_On']}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{$no = 1}
|
||||
{foreach $expire as $expired}
|
||||
<tr>
|
||||
<td>{$no++}</td>
|
||||
<td><a href="{$_url}customers/viewu/{$expired['username']}">{$expired['username']}</a></td>
|
||||
<td>{Lang::dateAndTimeFormat($expired['recharged_on'],$expired['recharged_time'])}
|
||||
</td>
|
||||
<td>{Lang::dateAndTimeFormat($expired['expiration'],$expired['time'])}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
{/foreach}
|
||||
</table>
|
||||
{if $_c['hide_al'] != 'yes'}
|
||||
<div class="panel panel-info panel-hovered mb20 activities">
|
||||
<div class="panel-heading"><a href="{$_url}logs">{Lang::T('Activity Log')}</a></div>
|
||||
<div class="panel-body">
|
||||
<ul class="list-unstyled">
|
||||
{foreach $dlog as $dlogs}
|
||||
<li class="primary">
|
||||
<span class="point"></span>
|
||||
<span class="time small text-muted">{Lang::timeElapsed($dlogs['date'],true)}</span>
|
||||
<p>{$dlogs['description']}</p>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<div class="col-md-5">
|
||||
<div class="panel panel-success panel-hovered mb20 activities">
|
||||
<div class="panel-heading">{Lang::T('Payment Gateway')}: {$_c['payment_gateway']}</div>
|
||||
</div>
|
||||
<div class="panel panel-info panel-hovered mb20 activities">
|
||||
<div class="panel-heading"><a href="{$_url}logs">{$_L['Activity_Log']}</a></div>
|
||||
<div class="panel-body">
|
||||
<ul class="list-unstyled">
|
||||
{foreach $dlog as $dlogs}
|
||||
<li class="primary">
|
||||
<span class="point"></span>
|
||||
<span class="time small text-muted">{time_elapsed_string($dlogs['date'],true)}</span>
|
||||
<p>{$dlogs['description']}</p>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/chart.js@3.5.1/dist/chart.min.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
{if $_c['hide_mrc'] != 'yes'}
|
||||
{literal}
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
var counts = JSON.parse('{/literal}{$monthlyRegistered|json_encode}{literal}');
|
||||
|
||||
var monthNames = [
|
||||
'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
|
||||
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
|
||||
];
|
||||
|
||||
var labels = [];
|
||||
var data = [];
|
||||
|
||||
for (var i = 1; i <= 12; i++) {
|
||||
var month = counts.find(count => count.date === i);
|
||||
labels.push(month ? monthNames[i - 1] : monthNames[i - 1].substring(0, 3));
|
||||
data.push(month ? month.count : 0);
|
||||
}
|
||||
|
||||
var ctx = document.getElementById('chart').getContext('2d');
|
||||
var chart = new Chart(ctx, {
|
||||
type: 'bar',
|
||||
data: {
|
||||
labels: labels,
|
||||
datasets: [{
|
||||
label: 'Registered Members',
|
||||
data: data,
|
||||
backgroundColor: 'rgba(0, 0, 255, 0.5)',
|
||||
borderColor: 'rgba(0, 0, 255, 0.7)',
|
||||
borderWidth: 1
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
responsive: true,
|
||||
scales: {
|
||||
x: {
|
||||
grid: {
|
||||
display: false
|
||||
}
|
||||
},
|
||||
y: {
|
||||
beginAtZero: true,
|
||||
grid: {
|
||||
color: 'rgba(0, 0, 0, 0.1)'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
{/literal}
|
||||
{/if}
|
||||
{if $_c['hide_tmc'] != 'yes'}
|
||||
{literal}
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
var monthlySales = JSON.parse('{/literal}{$monthlySales|json_encode}{literal}');
|
||||
|
||||
var monthNames = [
|
||||
'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
|
||||
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
|
||||
];
|
||||
|
||||
var labels = [];
|
||||
var data = [];
|
||||
|
||||
for (var i = 1; i <= 12; i++) {
|
||||
var month = findMonthData(monthlySales, i);
|
||||
labels.push(month ? monthNames[i - 1] : monthNames[i - 1].substring(0, 3));
|
||||
data.push(month ? month.totalSales : 0);
|
||||
}
|
||||
|
||||
var ctx = document.getElementById('salesChart').getContext('2d');
|
||||
var chart = new Chart(ctx, {
|
||||
type: 'bar',
|
||||
data: {
|
||||
labels: labels,
|
||||
datasets: [{
|
||||
label: 'Monthly Sales',
|
||||
data: data,
|
||||
backgroundColor: 'rgba(2, 10, 242)', // Customize the background color
|
||||
borderColor: 'rgba(255, 99, 132, 1)', // Customize the border color
|
||||
borderWidth: 1
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
responsive: true,
|
||||
scales: {
|
||||
x: {
|
||||
grid: {
|
||||
display: false
|
||||
}
|
||||
},
|
||||
y: {
|
||||
beginAtZero: true,
|
||||
grid: {
|
||||
color: 'rgba(0, 0, 0, 0.1)'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function findMonthData(monthlySales, month) {
|
||||
for (var i = 0; i < monthlySales.length; i++) {
|
||||
if (monthlySales[i].month === month) {
|
||||
return monthlySales[i];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
{/literal}
|
||||
{/if}
|
||||
{if $_c['hide_aui'] != 'yes'}
|
||||
{literal}
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
// Get the data from PHP and assign it to JavaScript variables
|
||||
var u_act = '{/literal}{$u_act}{literal}';
|
||||
var c_all = '{/literal}{$c_all}{literal}';
|
||||
var u_all = '{/literal}{$u_all}{literal}';
|
||||
//lets calculate the inactive users as reported
|
||||
var expired = u_all - u_act;
|
||||
var inactive = c_all - u_all;
|
||||
// Create the chart data
|
||||
var data = {
|
||||
labels: ['Active Users', 'Expired Users', 'Inactive Users'],
|
||||
datasets: [{
|
||||
label: 'User Recharges',
|
||||
data: [parseInt(u_act), parseInt(expired), parseInt(inactive)],
|
||||
backgroundColor: ['rgba(4, 191, 13)', 'rgba(191, 35, 4)', 'rgba(0, 0, 255, 0.5'],
|
||||
borderColor: ['rgba(0, 255, 0, 1)', 'rgba(255, 99, 132, 1)', 'rgba(0, 0, 255, 0.7'],
|
||||
borderWidth: 1
|
||||
}]
|
||||
};
|
||||
|
||||
// Create chart options
|
||||
var options = {
|
||||
responsive: true,
|
||||
aspectRatio: 1,
|
||||
plugins: {
|
||||
legend: {
|
||||
position: 'bottom',
|
||||
labels: {
|
||||
boxWidth: 15
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Get the canvas element and create the chart
|
||||
var ctx = document.getElementById('userRechargesChart').getContext('2d');
|
||||
var chart = new Chart(ctx, {
|
||||
type: 'pie',
|
||||
data: data,
|
||||
options: options
|
||||
});
|
||||
});
|
||||
{/literal}
|
||||
{/if}
|
||||
</script>
|
||||
<script>
|
||||
window.addEventListener('DOMContentLoaded', function() {
|
||||
$.getJSON("./version.json?" + Math.random(), function(data) {
|
||||
var localVersion = data.version;
|
||||
$('#version').html('Version: ' + localVersion);
|
||||
$.getJSON("https://raw.githubusercontent.com/hotspotbilling/phpnuxbill/master/version.json?" + Math
|
||||
$.getJSON(
|
||||
"https://raw.githubusercontent.com/hotspotbilling/phpnuxbill/master/version.json?" +
|
||||
Math
|
||||
.random(),
|
||||
function(data) {
|
||||
var latestVersion = data.version;
|
||||
|
@ -9,8 +9,8 @@
|
||||
<table class="table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="50%">{$_L['Table_Name']}</th>
|
||||
<th>{$_L['Rows']}</th>
|
||||
<th width="50%">{Lang::T('Table Name')}</th>
|
||||
<th>{Lang::T('Rows')}</th>
|
||||
<th>Select</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@ -31,7 +31,7 @@
|
||||
<div class="col-md-4 text-right">
|
||||
<button type="submit" class="btn btn-primary btn-xs btn-block"><i
|
||||
class="fa fa-download"></i>
|
||||
{$_L['Download_Database_Backup']}</button>
|
||||
{Lang::T('Download Database Backup')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -7,10 +7,10 @@
|
||||
<div class="panel-body">
|
||||
<form class="form-horizontal" method="post" role="form" action="{$_url}prepaid/deposit-post">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Select_Account']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Select Account')}</label>
|
||||
<div class="col-md-6">
|
||||
<select id="personSelect" class="form-control select2" name="id_customer" style="width: 100%"
|
||||
data-placeholder="{$_L['Select_Customer']}...">
|
||||
data-placeholder="{Lang::T('Select a customer')}...">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@ -18,7 +18,7 @@
|
||||
<label class="col-md-2 control-label"><a href="{$_url}services/balance">{Lang::T('Balance Plans')}</a></label>
|
||||
<div class="col-md-6">
|
||||
<select id="planSelect" class="form-control select2" name="id_plan" style="width: 100%"
|
||||
data-placeholder="{$_L['Select_Plans']}...">
|
||||
data-placeholder="{Lang::T('Select Plans')}...">
|
||||
<option></option>
|
||||
{foreach $p as $pl}
|
||||
<option value="{$pl['id']}">{$pl['name_plan']} - {Lang::moneyFormat($pl['price'])}</option>
|
||||
@ -30,8 +30,8 @@
|
||||
<div class="form-group">
|
||||
<div class="col-lg-offset-2 col-lg-10">
|
||||
<button class="btn btn-success waves-effect waves-light"
|
||||
type="submit">{$_L['Recharge']}</button>
|
||||
Or <a href="{$_url}customers/list">{$_L['Cancel']}</a>
|
||||
type="submit">{Lang::T('Recharge')}</button>
|
||||
Or <a href="{$_url}customers/list">{Lang::T('Cancel')}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
@ -3,18 +3,21 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12">
|
||||
<div class="panel panel-primary panel-hovered panel-stacked mb30">
|
||||
<div class="panel-heading">{$_L['Add_Plan']}</div>
|
||||
<div class="panel-heading">{Lang::T('Add Service Plan')}</div>
|
||||
<div class="panel-body">
|
||||
<form class="form-horizontal" method="post" role="form" action="{$_url}services/add-post">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Status')}</label>
|
||||
<div class="col-md-10">
|
||||
<label class="radio-inline warning">
|
||||
<input type="radio" checked name="enabled" value="1"> Enable
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="enabled" value="0"> Disable
|
||||
</label>
|
||||
<input type="radio" name="enabled" value="1" checked> Enable
|
||||
<input type="radio" name="enabled" value="0"> Disable
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Client Can Purchase')}</label>
|
||||
<div class="col-md-10">
|
||||
<input type="radio" name="allow_purchase" value="yes" checked> Yes
|
||||
<input type="radio" name="allow_purchase" value="no"> No
|
||||
</div>
|
||||
</div>
|
||||
{if $_c['radius_enable']}
|
||||
@ -29,49 +32,49 @@
|
||||
</div>
|
||||
{/if}
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Plan_Name']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Plan Name')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="name" name="name" maxlength="40">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Plan_Type']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Plan Type')}</label>
|
||||
<div class="col-md-10">
|
||||
<input type="radio" id="Unlimited" name="typebp" value="Unlimited" checked>
|
||||
{$_L['Unlimited']}
|
||||
<input type="radio" id="Limited" name="typebp" value="Limited"> {$_L['Limited']}
|
||||
{Lang::T('Unlimited')}
|
||||
<input type="radio" id="Limited" name="typebp" value="Limited"> {Lang::T('Limited')}
|
||||
</div>
|
||||
</div>
|
||||
<div style="display:none;" id="Type">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Limit_Type']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Limit Type')}</label>
|
||||
<div class="col-md-10">
|
||||
<input type="radio" id="Time_Limit" name="limit_type" value="Time_Limit" checked>
|
||||
{$_L['Time_Limit']}
|
||||
{Lang::T('Time Limit')}
|
||||
<input type="radio" id="Data_Limit" name="limit_type" value="Data_Limit">
|
||||
{$_L['Data_Limit']}
|
||||
{Lang::T('Data Limit')}
|
||||
<input type="radio" id="Both_Limit" name="limit_type" value="Both_Limit">
|
||||
{$_L['Both_Limit']}
|
||||
{Lang::T('Both Limit')}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display:none;" id="TimeLimit">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Time_Limit']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Time Limit')}</label>
|
||||
<div class="col-md-4">
|
||||
<input type="text" class="form-control" id="time_limit" name="time_limit" value="0">
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<select class="form-control" id="time_unit" name="time_unit">
|
||||
<option value="Hrs">{$_L['Hrs']}</option>
|
||||
<option value="Mins">{$_L['Mins']}</option>
|
||||
<option value="Hrs">{Lang::T('Hrs')}</option>
|
||||
<option value="Mins">{Lang::T('Mins')}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display:none;" id="DataLimit">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Data_Limit']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Data Limit')}</label>
|
||||
<div class="col-md-4">
|
||||
<input type="text" class="form-control" id="data_limit" name="data_limit" value="0">
|
||||
</div>
|
||||
@ -85,10 +88,10 @@
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label"><a
|
||||
href="{$_url}bandwidth/add">{$_L['BW_Name']}</a></label>
|
||||
href="{$_url}bandwidth/add">{Lang::T('Bandwidth Name')}</a></label>
|
||||
<div class="col-md-6">
|
||||
<select id="id_bw" name="id_bw" class="form-control select2">
|
||||
<option value="">{$_L['Select_BW']}...</option>
|
||||
<option value="">{Lang::T('Select Bandwidth')}...</option>
|
||||
{foreach $d as $ds}
|
||||
<option value="{$ds['id']}">{$ds['name_bw']}</option>
|
||||
{/foreach}
|
||||
@ -96,7 +99,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Plan_Price']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Plan Price')}</label>
|
||||
<div class="col-md-6">
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon">{$_c['currency_code']}</span>
|
||||
@ -105,37 +108,37 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Shared_Users']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Shared Users')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="sharedusers" name="sharedusers" value="1">
|
||||
<p class="help-block">{Lang::T('1 user can be used for many devices?')}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Plan_Validity']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Plan Validity')}</label>
|
||||
<div class="col-md-4">
|
||||
<input type="text" class="form-control" id="validity" name="validity">
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<select class="form-control" id="validity_unit" name="validity_unit">
|
||||
<option value="Mins" {if $d['validity_unit'] eq 'Mins'} selected {/if}>{$_L['Mins']}
|
||||
<option value="Mins" {if $d['validity_unit'] eq 'Mins'} selected {/if}>{Lang::T('Mins')}
|
||||
</option>
|
||||
<option value="Hrs" {if $d['validity_unit'] eq 'Hrs'} selected {/if}>{$_L['Hrs']}
|
||||
<option value="Hrs" {if $d['validity_unit'] eq 'Hrs'} selected {/if}>{Lang::T('Hrs')}
|
||||
</option>
|
||||
<option value="Days" {if $d['validity_unit'] eq 'Days'} selected {/if}>{$_L['Days']}
|
||||
<option value="Days" {if $d['validity_unit'] eq 'Days'} selected {/if}>{Lang::T('Days')}
|
||||
</option>
|
||||
<option value="Months" {if $d['validity_unit'] eq 'Months'} selected {/if}>
|
||||
{$_L['Months']}</option>
|
||||
{Lang::T('Months')}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<span id="routerChoose" class="">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label"><a
|
||||
href="{$_url}routers/add">{$_L['Router_Name']}</a></label>
|
||||
href="{$_url}routers/add">{Lang::T('Router Name')}</a></label>
|
||||
<div class="col-md-6">
|
||||
<select id="routers" name="routers" required class="form-control select2">
|
||||
<option value=''>{$_L['Select_Routers']}</option>
|
||||
<option value=''>{Lang::T('Select Routers')}</option>
|
||||
{foreach $r as $rs}
|
||||
<option value="{$rs['name']}">{$rs['name']}</option>
|
||||
{/foreach}
|
||||
@ -144,20 +147,27 @@
|
||||
</div>
|
||||
</div>
|
||||
</span>
|
||||
<div class="form-group">
|
||||
<legend>{Lang::T('Expired Action')} <sub>{Lang::T('Optional')}</sub></legend>
|
||||
<div class="form-group" id="ipPool">
|
||||
<label class="col-md-2 control-label"><a
|
||||
href="{$_url}pool/add">{Lang::T('Expired IP Pool')}</a></label>
|
||||
<div class="col-md-6">
|
||||
<select id="pool_expired" name="pool_expired" class="form-control select2">
|
||||
<option value=''>{$_L['Select_Pool']}</option>
|
||||
<option value=''>{Lang::T('Select Pool')}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
{* <div class="form-group" id="AddressList">
|
||||
<label class="col-md-2 control-label">{Lang::T('Address List')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" name="list_expired" id="list_expired">
|
||||
</div>
|
||||
</div> *}
|
||||
<div class="form-group">
|
||||
<div class="col-md-offset-2 col-md-10">
|
||||
<button class="btn btn-success waves-effect waves-light"
|
||||
type="submit">{$_L['Save']}</button>
|
||||
Or <a href="{$_url}services/hotspot">{$_L['Cancel']}</a>
|
||||
type="submit">{Lang::T('Save Changes')}</button>
|
||||
Or <a href="{$_url}services/hotspot">{Lang::T('Cancel')}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@ -172,21 +182,20 @@
|
||||
if (cek.checked) {
|
||||
$("#routerChoose").addClass('hidden');
|
||||
document.getElementById("routers").required = false;
|
||||
$("#pool_expired").html('');
|
||||
$.ajax({
|
||||
url: "index.php?_route=autoload/pool",
|
||||
data: "routers=radius",
|
||||
cache: false,
|
||||
success: function(msg) {
|
||||
$("#pool_expired").html(msg);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
document.getElementById("routers").required = true;
|
||||
$("#routerChoose").removeClass('hidden');
|
||||
}
|
||||
}
|
||||
setTimeout(() => {
|
||||
$.ajax({
|
||||
url: "index.php?_route=autoload/pool",
|
||||
data: "routers=radius",
|
||||
cache: false,
|
||||
success: function(msg) {
|
||||
$("#pool_expired").html(msg);
|
||||
}
|
||||
});
|
||||
}, 2000);
|
||||
</script>
|
||||
{/literal}
|
||||
{/if}
|
||||
|
@ -3,20 +3,22 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12">
|
||||
<div class="panel panel-primary panel-hovered panel-stacked mb30">
|
||||
<div class="panel-heading">{$_L['Edit_Plan']}</div>
|
||||
<div class="panel-heading">{Lang::T('Edit Service Plan')} || {$d['name_plan']}</div>
|
||||
<div class="panel-body">
|
||||
<form class="form-horizontal" method="post" role="form" action="{$_url}services/edit-post">
|
||||
<input type="hidden" name="id" value="{$d['id']}">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Status')}</label>
|
||||
<div class="col-md-10">
|
||||
<label class="radio-inline warning">
|
||||
<input type="radio" {if $d['enabled'] == 1}checked{/if} name="enabled" value="1"> Enable
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" {if $d['enabled'] == 0}checked{/if} name="enabled" value="0">
|
||||
Disable
|
||||
</label>
|
||||
<input type="radio" name="enabled" value="1" {if $d['enabled'] == 1}checked{/if}> Enable
|
||||
<input type="radio" name="enabled" value="0" {if $d['enabled'] == 0}checked{/if}> Disable
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Client Can Purchase')}</label>
|
||||
<div class="col-md-10">
|
||||
<input type="radio" name="allow_purchase" value="yes" {if $d['allow_purchase'] == yes}checked{/if}> Yes
|
||||
<input type="radio" name="allow_purchase" value="no" {if $d['allow_purchase'] == no}checked{/if}> No
|
||||
</div>
|
||||
</div>
|
||||
{if $_c['radius_enable'] and $d['is_radius']}
|
||||
@ -28,32 +30,32 @@
|
||||
</div>
|
||||
{/if}
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Plan_Name']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Plan Name')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="name" name="name" maxlength="40"
|
||||
value="{$d['name_plan']}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Plan_Type']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Plan Type')}</label>
|
||||
<div class="col-md-10">
|
||||
<input type="radio" id="Unlimited" name="typebp" value="Unlimited"
|
||||
{if $d['typebp'] eq 'Unlimited'} checked {/if}> {$_L['Unlimited']}
|
||||
{if $d['typebp'] eq 'Unlimited'} checked {/if}> {Lang::T('Unlimited')}
|
||||
<input type="radio" id="Limited" {if $_c['radius_enable'] and $d['is_radius']}disabled{/if}
|
||||
name="typebp" value="Limited" {if $d['typebp'] eq 'Limited'} checked {/if}>
|
||||
{$_L['Limited']}
|
||||
{Lang::T('Limited')}
|
||||
</div>
|
||||
</div>
|
||||
<div {if $d['typebp'] eq 'Unlimited'} style="display:none;" {/if} id="Type">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Limit_Type']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Limit Type')}</label>
|
||||
<div class="col-md-10">
|
||||
<input type="radio" id="Time_Limit" name="limit_type" value="Time_Limit"
|
||||
{if $d['limit_type'] eq 'Time_Limit'} checked {/if}> {$_L['Time_Limit']}
|
||||
{if $d['limit_type'] eq 'Time_Limit'} checked {/if}> {Lang::T('Time Limit')}
|
||||
<input type="radio" id="Data_Limit" name="limit_type" value="Data_Limit"
|
||||
{if $d['limit_type'] eq 'Data_Limit'} checked {/if}> {$_L['Data_Limit']}
|
||||
{if $d['limit_type'] eq 'Data_Limit'} checked {/if}> {Lang::T('Data Limit')}
|
||||
<input type="radio" id="Both_Limit" name="limit_type" value="Both_Limit"
|
||||
{if $d['limit_type'] eq 'Both_Limit'} checked {/if}> {$_L['Both_Limit']}
|
||||
{if $d['limit_type'] eq 'Both_Limit'} checked {/if}> {Lang::T('Both Limit')}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -61,16 +63,16 @@
|
||||
{elseif ($d['time_limit']) eq '0'}
|
||||
style="display:none;" {/if} id="TimeLimit">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Time_Limit']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Time Limit')}</label>
|
||||
<div class="col-md-4">
|
||||
<input type="text" class="form-control" id="time_limit" name="time_limit"
|
||||
value="{$d['time_limit']}">
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<select class="form-control" id="time_unit" name="time_unit">
|
||||
<option value="Hrs" {if $d['time_unit'] eq 'Hrs'} selected {/if}>{$_L['Hrs']}
|
||||
<option value="Hrs" {if $d['time_unit'] eq 'Hrs'} selected {/if}>{Lang::T('Hrs')}
|
||||
</option>
|
||||
<option value="Mins" {if $d['time_unit'] eq 'Mins'} selected {/if}>{$_L['Mins']}
|
||||
<option value="Mins" {if $d['time_unit'] eq 'Mins'} selected {/if}>{Lang::T('Mins')}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
@ -80,7 +82,7 @@
|
||||
{elseif ($d['data_limit']) eq '0'}
|
||||
style="display:none;" {/if} id="DataLimit">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Data_Limit']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Data Limit')}</label>
|
||||
<div class="col-md-4">
|
||||
<input type="text" class="form-control" id="data_limit" name="data_limit"
|
||||
value="{$d['data_limit']}">
|
||||
@ -95,7 +97,7 @@
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label"><a
|
||||
href="{$_url}bandwidth/add">{$_L['BW_Name']}</a></label>
|
||||
href="{$_url}bandwidth/add">{Lang::T('Bandwidth Name')}</a></label>
|
||||
<div class="col-md-6">
|
||||
<select id="id_bw" name="id_bw" class="form-control select2">
|
||||
{foreach $b as $bs}
|
||||
@ -106,7 +108,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Plan_Price']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Plan Price')}</label>
|
||||
<div class="col-md-6">
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon">{$_c['currency_code']}</span>
|
||||
@ -115,47 +117,48 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Shared_Users']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Shared Users')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="sharedusers" name="sharedusers"
|
||||
value="{$d['shared_users']}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Plan_Validity']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Plan Validity')}</label>
|
||||
<div class="col-md-4">
|
||||
<input type="text" class="form-control" id="validity" name="validity"
|
||||
value="{$d['validity']}">
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<select class="form-control" id="validity_unit" name="validity_unit">
|
||||
<option value="Mins" {if $d['validity_unit'] eq 'Mins'} selected {/if}>{$_L['Mins']}
|
||||
<option value="Mins" {if $d['validity_unit'] eq 'Mins'} selected {/if}>{Lang::T('Mins')}
|
||||
</option>
|
||||
<option value="Hrs" {if $d['validity_unit'] eq 'Hrs'} selected {/if}>{$_L['Hrs']}
|
||||
<option value="Hrs" {if $d['validity_unit'] eq 'Hrs'} selected {/if}>{Lang::T('Hrs')}
|
||||
</option>
|
||||
<option value="Days" {if $d['validity_unit'] eq 'Days'} selected {/if}>{$_L['Days']}
|
||||
<option value="Days" {if $d['validity_unit'] eq 'Days'} selected {/if}>{Lang::T('Days')}
|
||||
</option>
|
||||
<option value="Months" {if $d['validity_unit'] eq 'Months'} selected {/if}>
|
||||
{$_L['Months']}</option>
|
||||
{Lang::T('Months')}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<span id="routerChoose" class="{if $d['is_radius']}hidden{/if}">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label"><a
|
||||
href="{$_url}routers/add">{$_L['Router_Name']}</a></label>
|
||||
href="{$_url}routers/add">{Lang::T('Router Name')}</a></label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="routers" name="routers"
|
||||
value="{$d['routers']}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
</span>
|
||||
<legend>{Lang::T('Expired Action')} <sub>{Lang::T('Optional')}</sub></legend>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label"><a
|
||||
href="{$_url}pool/add">{Lang::T('Expired IP Pool')}</a></label>
|
||||
<div class="col-md-6">
|
||||
<select id="pool_expired" name="pool_expired" class="form-control select2">
|
||||
<option value=''>{$_L['Select_Pool']}</option>
|
||||
<option value=''>{Lang::T('Select Pool')}</option>
|
||||
{foreach $p as $ps}
|
||||
<option value="{$ps['pool_name']}" {if $d['pool_expired'] eq $ps['pool_name']} selected
|
||||
{/if}>{$ps['pool_name']}</option>
|
||||
@ -163,11 +166,17 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
{* <div class="form-group" id="AddressList">
|
||||
<label class="col-md-2 control-label">{Lang::T('Address List')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" name="list_expired" id="list_expired" value="{$d['list_expired']}">
|
||||
</div>
|
||||
</div> *}
|
||||
<div class="form-group">
|
||||
<div class="col-md-offset-2 col-md-10">
|
||||
<button class="btn btn-success waves-effect waves-light"
|
||||
type="submit">{$_L['Save']}</button>
|
||||
Or <a href="{$_url}services/hotspot">{$_L['Cancel']}</a>
|
||||
type="submit">{Lang::T('Save Changes')}</button>
|
||||
Or <a href="{$_url}services/hotspot">{Lang::T('Cancel')}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@ -177,7 +186,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{if $_c['radius_enable']}
|
||||
{if $_c['radius_enable'] && $d['is_radius']}
|
||||
{literal}
|
||||
<script>
|
||||
function isRadius(cek) {
|
||||
@ -204,4 +213,4 @@
|
||||
</script>
|
||||
{/literal}
|
||||
{/if}
|
||||
{include file="sections/footer.tpl"}
|
||||
{include file="sections/footer.tpl"}
|
||||
|
@ -8,7 +8,7 @@
|
||||
<a class="btn btn-primary btn-xs" title="save" href="{$_url}services/sync/hotspot"
|
||||
onclick="return confirm('This will sync/send hotspot plan to Mikrotik?')"><span
|
||||
class="glyphicon glyphicon-refresh" aria-hidden="true"></span> sync</a>
|
||||
</div>{$_L['Hotspot_Plans']}
|
||||
</div>{Lang::T('Hotspot Plans')}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="md-whiteframe-z1 mb20 text-center" style="padding: 15px">
|
||||
@ -19,37 +19,38 @@
|
||||
<span class="fa fa-search"></span>
|
||||
</div>
|
||||
<input type="text" name="name" class="form-control"
|
||||
placeholder="{$_L['Search_by_Name']}...">
|
||||
placeholder="{Lang::T('Search by Name')}...">
|
||||
<div class="input-group-btn">
|
||||
<button class="btn btn-success" type="submit">{$_L['Search']}</button>
|
||||
<button class="btn btn-success" type="submit">{Lang::T('Search')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<a href="{$_url}services/add" class="btn btn-primary btn-block waves-effect"><i
|
||||
class="ion ion-android-add"> </i> {$_L['New_Plan']}</a>
|
||||
class="ion ion-android-add"> </i> {Lang::T('New Service Plan')}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-striped table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{$_L['Plan_Name']}</th>
|
||||
<th>{$_L['Plan_Type']}</th>
|
||||
<th>{$_L['Bandwidth_Plans']}</th>
|
||||
<th>{$_L['Plan_Price']}</th>
|
||||
<th>{$_L['Time_Limit']}</th>
|
||||
<th>{$_L['Data_Limit']}</th>
|
||||
<th>{$_L['Plan_Validity']}</th>
|
||||
<th>{$_L['Routers']}</th>
|
||||
<th>{Lang::T('Plan Name')}</th>
|
||||
<th>{Lang::T('Plan Type')}</th>
|
||||
<th>{Lang::T('Bandwidth Plans')}</th>
|
||||
<th>{Lang::T('Plan Price')}</th>
|
||||
<th>{Lang::T('Time Limit')}</th>
|
||||
<th>{Lang::T('Data Limit')}</th>
|
||||
<th>{Lang::T('Plan Validity')}</th>
|
||||
<th>{Lang::T('Routers')}</th>
|
||||
<th>{Lang::T('Expired IP Pool')}</th>
|
||||
<th>{$_L['Manage']}</th>
|
||||
<th>{Lang::T('Manage')}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach $d as $ds}
|
||||
<tr {if $ds['enabled'] != 1}class="danger" title="disabled" {/if}>
|
||||
<tr {if $ds['enabled'] != 1}class="danger" title="disabled"
|
||||
{elseif $ds['allow_purchase'] != 'yes'}class="warning" title="Customer can't purchase" {/if}>
|
||||
<td>{$ds['name_plan']}</td>
|
||||
<td>{$ds['typebp']}</td>
|
||||
<td>{$ds['name_bw']}</td>
|
||||
@ -66,13 +67,13 @@
|
||||
{/if}
|
||||
{/if}
|
||||
</td>
|
||||
<td>{$ds['pool_expired']}</td>
|
||||
<td>{$ds['pool_expired']}{if $ds['list_expired']}{if $ds['pool_expired']} | {/if}{$ds['list_expired']}{/if}</td>
|
||||
<td>
|
||||
<a href="{$_url}services/edit/{$ds['id']}"
|
||||
class="btn btn-info btn-xs">{$_L['Edit']}</a>
|
||||
class="btn btn-info btn-xs">{Lang::T('Edit')}</a>
|
||||
<a href="{$_url}services/delete/{$ds['id']}" id="{$ds['id']}"
|
||||
onclick="return confirm('{$_L['Delete']}?')"
|
||||
class="btn btn-danger btn-xs">{$_L['Delete']}</a>
|
||||
onclick="return confirm('{Lang::T('Delete')}?')"
|
||||
class="btn btn-danger btn-xs"><i class="glyphicon glyphicon-trash"></i></a>
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 342 KiB After Width: | Height: | Size: 172 KiB |
@ -21,30 +21,29 @@
|
||||
<table width="200">
|
||||
<tr>
|
||||
<td>
|
||||
<fieldset>
|
||||
<center>
|
||||
<b>{$_c['CompanyName']}</b><br>
|
||||
{$_c['address']}<br>
|
||||
{$_c['phone']}<br>
|
||||
</center>
|
||||
============================================<br>
|
||||
INVOICE: <b>{$d['invoice']}</b> - {$_L['Date']} : {$date}<br>
|
||||
{$_L['Sales']} : {$_admin['fullname']}<br>
|
||||
============================================<br>
|
||||
{$_L['Type']} : <b>{$d['type']}</b><br>
|
||||
{$_L['Plan_Name']} : <b>{$d['plan_name']}</b><br>
|
||||
{$_L['Plan_Price']} : <b>{Lang::moneyFormat($d['price'])}</b><br>
|
||||
<br>
|
||||
{$_L['Username']} : <b>{$d['username']}</b><br>
|
||||
{$_L['Password']} : **********<br>
|
||||
{if $in['type'] != 'Balance'}
|
||||
<br>
|
||||
{$_L['Created_On']} : <b>{Lang::dateAndTimeFormat($d['recharged_on'],$d['recharged_time'])}</b><br>
|
||||
{$_L['Expires_On']} : <b>{Lang::dateAndTimeFormat($d['expiration'],$d['time'])}</b><br>
|
||||
{/if}
|
||||
============================================<br>
|
||||
<center>{$_c['note']}</center>
|
||||
</fieldset>
|
||||
{if $content}<pre style="border-style: none; background-color: white;">{$content}</pre>{else}
|
||||
<pre style="border-style: none; background-color: white;"><b>{Lang::pad($_c['CompanyName'],' ', 2)}</b>
|
||||
{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)}</pre>
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -5,55 +5,43 @@
|
||||
<div class="panel panel-hovered panel-primary panel-stacked mb30">
|
||||
<div class="panel-heading">{$in['invoice']}</div>
|
||||
<div class="panel-body">
|
||||
<div class="well">
|
||||
<fieldset>
|
||||
<center>
|
||||
<b>{$_c['CompanyName']}</b><br>
|
||||
{$_c['address']}<br>
|
||||
{$_c['phone']}<br>
|
||||
</center>
|
||||
====================================================<br>
|
||||
INVOICE: <b>{$in['invoice']}</b> - {$_L['Date']} : {$date}<br>
|
||||
{$_L['Sales']} : {$_admin['fullname']}<br>
|
||||
====================================================<br>
|
||||
{$_L['Type']} : <b>{$in['type']}</b><br>
|
||||
{$_L['Plan_Name']} : <b>{$in['plan_name']}</b><br>
|
||||
{$_L['Plan_Price']} : <b>{Lang::moneyFormat($in['price'])}</b><br>
|
||||
{$in['method']}<br>
|
||||
<br>
|
||||
{$_L['Username']} : <b>{$in['username']}</b><br>
|
||||
{$_L['Password']} : **********<br>
|
||||
{if $in['type'] != 'Balance'}
|
||||
<br>
|
||||
{$_L['Created_On']} : <b>{Lang::dateAndTimeFormat($in['recharged_on'],$in['recharged_time'])}</b><br>
|
||||
{$_L['Expires_On']} : <b>{Lang::dateAndTimeFormat($in['expiration'],$in['time'])}</b><br>
|
||||
{/if}
|
||||
=====================================================<br>
|
||||
<center>{$_c['note']}</center>
|
||||
</fieldset>
|
||||
</div>
|
||||
<form class="form-horizontal" method="post" action="{$_url}prepaid/print" target="_blank">
|
||||
<input type="hidden" name="id" value="{$in['id']}">
|
||||
<a href="{$_url}prepaid/list" class="btn btn-primary btn-sm"><i
|
||||
class="ion-reply-all"></i>{$_L['Finish']}</a>
|
||||
<a href="{$_url}prepaid/view/{$in['id']}/send" class="btn btn-info text-black btn-sm"><i
|
||||
class="glyphicon glyphicon-envelope"></i> {Lang::T("Resend To Customer")}</a>
|
||||
<button type="submit" class="btn btn-default btn-sm"><i class="fa fa-print"></i>
|
||||
{$_L['Click_Here_to_Print']}</button>
|
||||
</form>
|
||||
<form class="form-horizontal" method="post" action="{$_url}prepaid/print" target="_blank">
|
||||
<pre id="content"></pre>
|
||||
<textarea class="hidden" id="formcontent" name="content">{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)}</textarea>
|
||||
<input type="hidden" name="id" value="{$in['id']}">
|
||||
<a href="{$_url}prepaid/list" class="btn btn-primary btn-sm"><i
|
||||
class="ion-reply-all"></i>{Lang::T('Finish')}</a>
|
||||
<a href="{$_url}prepaid/view/{$in['id']}/send" class="btn btn-info text-black btn-sm"><i
|
||||
class="glyphicon glyphicon-envelope"></i> {Lang::T("Resend To Customer")}</a>
|
||||
<button type="submit" class="btn btn-default btn-sm"><i class="fa fa-print"></i>
|
||||
{Lang::T('Click Here to Print')}</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var s5_taf_parent = window.location;
|
||||
|
||||
function popup_print() {
|
||||
window.open('print.php?page=<?php echo $_GET['
|
||||
act '];?>', 'page',
|
||||
'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=0,width=800,height=600,left=50,top=50,titlebar=yes'
|
||||
)
|
||||
}
|
||||
document.getElementById('content').innerHTML = document.getElementById('formcontent').innerHTML;
|
||||
</script>
|
||||
{include file="sections/footer.tpl"}
|
@ -1,39 +1,31 @@
|
||||
{include file="sections/header.tpl"}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12">
|
||||
<div class="panel panel-primary panel-hovered panel-stacked mb30">
|
||||
<div class="panel-heading">{$_L['Add_Plan']}</div>
|
||||
<div class="panel-body">
|
||||
<form class="form-horizontal" method="post" role="form" action="{$_url}settings/lang-post" >
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Name_Lang']}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="name" name="name">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12">
|
||||
<div class="panel panel-primary panel-hovered panel-stacked mb30">
|
||||
<div class="panel-heading">{Lang::T('Translation')}</div>
|
||||
<div class="panel-body">
|
||||
<form class="form-horizontal" method="post" role="form" action="{$_url}settings/lang-post">
|
||||
{foreach $langs as $lang}
|
||||
<div class="form-group">
|
||||
<div class="col-md-12">
|
||||
<small>{str_replace('_',' ', $lang@key)}</small>
|
||||
<input type="text" class="form-control" rows="1" name="{$lang@key}"
|
||||
placeholder="{$lang@key}" value="{$lang}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Folder_Lang']}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="folder" name="folder">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Translator']}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="translator" name="translator">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-lg-offset-2 col-lg-10">
|
||||
<button class="btn btn-primary waves-effect waves-light" type="submit">{$_L['Save']}</button>
|
||||
Or <a href="{$_url}settings/localisation">{$_L['Cancel']}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{/foreach}
|
||||
<div class="form-group">
|
||||
<div class="col-lg-offset-2 col-lg-10">
|
||||
<button class="btn btn-primary waves-effect waves-light"
|
||||
type="submit">{Lang::T('Save Changes')}</button>
|
||||
Or <a href="{$_url}settings/localisation">{Lang::T('Cancel')}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{include file="sections/footer.tpl"}
|
||||
{include file="sections/footer.tpl"}
|
@ -15,9 +15,9 @@
|
||||
<span class="fa fa-search"></span>
|
||||
</div>
|
||||
<input type="text" name="q" class="form-control" value="{$q}"
|
||||
placeholder="{$_L['Search_by_Name']}...">
|
||||
placeholder="{Lang::T('Search by Name')}...">
|
||||
<div class="input-group-btn">
|
||||
<button class="btn btn-success" type="submit">{$_L['Search']}</button>
|
||||
<button class="btn btn-success" type="submit">{Lang::T('Search')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
@ -15,9 +15,9 @@
|
||||
<span class="fa fa-search"></span>
|
||||
</div>
|
||||
<input type="text" name="q" class="form-control" value="{$q}"
|
||||
placeholder="{$_L['Search_by_Name']}...">
|
||||
placeholder="{Lang::T('Search by Name')}...">
|
||||
<div class="input-group-btn">
|
||||
<button class="btn btn-success" type="submit">{$_L['Search']}</button>
|
||||
<button class="btn btn-success" type="submit">{Lang::T('Search')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@ -44,7 +44,7 @@
|
||||
<td>{Lang::dateTimeFormat($ds['date'])}</td>
|
||||
<td>{$ds['type']}</td>
|
||||
<td>{$ds['ip']}</td>
|
||||
<td style="overflow-x: scroll;">{$ds['description']}</td>
|
||||
<td style="overflow-x: scroll;">{nl2br($ds['description'])}</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
|
@ -15,13 +15,13 @@
|
||||
<div class="panel-footer">
|
||||
<a href="javascript:saveIt()" class="btn btn-primary btn-block">SAVE</a>
|
||||
<br>
|
||||
<p class="help-block">{$_L['Info_Page']}</p>
|
||||
<p class="help-block">{Lang::T("Sometimes you need to refresh 3 times until content change")}</p>
|
||||
<input type="text" class="form-control" onclick="this.select()" readonly
|
||||
value="{$app_url}/pages/{$PageFile}.html">
|
||||
</div>
|
||||
{else}
|
||||
<div class="panel-footer">
|
||||
{$_L['Failed_Save_Page']}
|
||||
{Lang::T("Failed to save page, make sure i can write to folder pages, <i>chmod 664 pages/*.html<i>")}
|
||||
</div>
|
||||
{/if}
|
||||
{if $PageFile=='Voucher'}
|
||||
|
@ -24,7 +24,7 @@
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<button class="btn btn-block btn-primary waves-effect waves-light" type="submit">{$_L['Save']}</button>
|
||||
<button class="btn btn-block btn-primary waves-effect waves-light" type="submit">{Lang::T('Save Changes')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -8,19 +8,21 @@
|
||||
<div class="col-md-4">
|
||||
<div class="box box-hovered mb20 box-primary">
|
||||
<div class="box-header">
|
||||
<h3 class="box-title">{$plugin['name']}</h3>
|
||||
<h3 class="box-title text1line">{$plugin['name']}</h3>
|
||||
</div>
|
||||
<div class="box-body" style="overflow-y: scroll;">
|
||||
<div style="max-height: 50px; min-height: 50px;">{$plugin['description']}</div>
|
||||
</div>
|
||||
<div class="box-body">{$plugin['description']}<br><small><i>@{$plugin['author']} Last update: {$plugin['last_update']}</i></small></div>
|
||||
<div class="box-footer ">
|
||||
<center><small><i>@{$plugin['author']} Last update: {$plugin['last_update']}</i></small></center>
|
||||
<div class="btn-group btn-group-justified" role="group" aria-label="...">
|
||||
<a href="{$plugin['url']}" target="_blank"
|
||||
class="btn btn-primary"><i class="ion ion-chatboxes"></i> Website</a>
|
||||
<a href="{$plugin['github']}" target="_blank"
|
||||
class="btn btn-success"><i class="ion ion-chatboxes"></i> Github</a>
|
||||
<a {if $zipExt }
|
||||
href="{$_url}pluginmanager/install/plugin/{$plugin['id']}" onclick="return confirm('Installing plugin will take some time to complete, do not close the page while it loading to install the plugin')"
|
||||
{else}
|
||||
href="#" onclick="alert('PHP ZIP extension is not available')"
|
||||
<a href="{$plugin['url']}" target="_blank" class="btn btn-primary"><i
|
||||
class="ion ion-chatboxes"></i> Website</a>
|
||||
<a href="{$plugin['github']}" target="_blank" class="btn btn-success"><i
|
||||
class="ion ion-chatboxes"></i> Github</a>
|
||||
<a {if $zipExt } href="{$_url}pluginmanager/install/plugin/{$plugin['id']}"
|
||||
onclick="return confirm('Installing plugin will take some time to complete, do not close the page while it loading to install the plugin')"
|
||||
{else} href="#" onclick="alert('PHP ZIP extension is not installed')"
|
||||
{/if}
|
||||
class="btn btn-warning"><i class="ion ion-chatboxes"></i> Install</a>
|
||||
</div>
|
||||
@ -37,19 +39,21 @@
|
||||
<div class="col-md-4">
|
||||
<div class="box box-hovered mb20 box-primary">
|
||||
<div class="box-header">
|
||||
<h3 class="box-title">{$pg['name']}</h3>
|
||||
<h3 class="box-title text1line">{$pg['name']}</h3>
|
||||
</div>
|
||||
<div class="box-body" style="overflow-y: scroll;">
|
||||
<div style="max-height: 50px; min-height: 50px;">{$pg['description']}</div>
|
||||
</div>
|
||||
<div class="box-body">{$pg['description']}<br><small><i>@{$plugin['author']} Last update: {$plugin['last_update']}</i></small></div>
|
||||
<div class="box-footer ">
|
||||
<center><small><i>@{$pg['author']} Last update: {$pg['last_update']}</i></small></center>
|
||||
<div class="btn-group btn-group-justified" role="group" aria-label="...">
|
||||
<a href="{$pg['url']}" target="_blank"
|
||||
class="btn btn-primary"><i class="ion ion-chatboxes"></i> Website</a>
|
||||
<a href="{$pg['github']}" target="_blank"
|
||||
class="btn btn-success"><i class="ion ion-chatboxes"></i> Github</a>
|
||||
<a {if $zipExt }
|
||||
href="{$_url}pluginmanager/install/payment/{$pg['id']}" onclick="return confirm('Installing plugin will take some time to complete, do not close the page while it loading to install the plugin')"
|
||||
{else}
|
||||
href="#" onclick="alert('PHP ZIP extension is not available')"
|
||||
<a href="{$pg['url']}" target="_blank" class="btn btn-primary"><i
|
||||
class="ion ion-chatboxes"></i> Website</a>
|
||||
<a href="{$pg['github']}" target="_blank" class="btn btn-success"><i
|
||||
class="ion ion-chatboxes"></i> Github</a>
|
||||
<a {if $zipExt } href="{$_url}pluginmanager/install/payment/{$pg['id']}"
|
||||
onclick="return confirm('Installing plugin will take some time to complete, do not close the page while it loading to install the plugin')"
|
||||
{else} href="#" onclick="alert('PHP ZIP extension is not available')"
|
||||
{/if}
|
||||
class="btn btn-warning"><i class="ion ion-chatboxes"></i> Install</a>
|
||||
</div>
|
||||
|
@ -3,24 +3,24 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12">
|
||||
<div class="panel panel-primary panel-hovered panel-stacked mb30">
|
||||
<div class="panel-heading">{$_L['Add_Pool']}</div>
|
||||
<div class="panel-heading">{Lang::T('Add Pool')}</div>
|
||||
<div class="panel-body">
|
||||
|
||||
<form class="form-horizontal" method="post" role="form" action="{$_url}pool/add-post" >
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Pool_Name']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Name Pool')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="name" name="name">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Range_IP']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Range IP')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="ip_address" name="ip_address" placeholder="ex: 192.168.88.2-192.168.88.254">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label"><a href="{$_url}routers/add">{$_L['Routers']}</a></label>
|
||||
<label class="col-md-2 control-label"><a href="{$_url}routers/add">{Lang::T('Routers')}</a></label>
|
||||
<div class="col-md-6">
|
||||
<select id="routers" name="routers" class="form-control select2">
|
||||
{if $_c['radius_enable']}
|
||||
@ -37,8 +37,8 @@
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-lg-offset-2 col-lg-10">
|
||||
<button class="btn btn-primary waves-effect waves-light" type="submit">{$_L['Save']}</button>
|
||||
Or <a href="{$_url}pool/list">{$_L['Cancel']}</a>
|
||||
<button class="btn btn-primary waves-effect waves-light" type="submit">{Lang::T('Save Changes')}</button>
|
||||
Or <a href="{$_url}pool/list">{Lang::T('Cancel')}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
@ -3,25 +3,25 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12">
|
||||
<div class="panel panel-primary panel-hovered panel-stacked mb30">
|
||||
<div class="panel-heading">{$_L['Edit_Pool']}</div>
|
||||
<div class="panel-heading">{Lang::T('Edit Pool')}</div>
|
||||
<div class="panel-body">
|
||||
|
||||
<form class="form-horizontal" method="post" role="form" action="{$_url}pool/edit-post" >
|
||||
<input type="hidden" name="id" value="{$d['id']}">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Pool_Name']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Name Pool')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="name" name="name" value="{$d['pool_name']}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Range_IP']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Range IP')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="ip_address" name="ip_address" value="{$d['range_ip']}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Routers']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Routers')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="routers" name="routers" value="{$d['routers']}" readonly>
|
||||
</div>
|
||||
@ -32,8 +32,8 @@
|
||||
|
||||
<div class="form-group">
|
||||
<div class="col-lg-offset-2 col-lg-10">
|
||||
<button class="btn btn-success waves-effect waves-light" type="submit">{$_L['Save']}</button>
|
||||
Or <a href="{$_url}pool/list">{$_L['Cancel']}</a>
|
||||
<button class="btn btn-success waves-effect waves-light" type="submit">{Lang::T('Save Changes')}</button>
|
||||
Or <a href="{$_url}pool/list">{Lang::T('Cancel')}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
@ -9,7 +9,7 @@
|
||||
onclick="return confirm('This will sync/send IP Pool to Mikrotik?')"><span
|
||||
class="glyphicon glyphicon-refresh" aria-hidden="true"></span> sync</a>
|
||||
</div>
|
||||
{$_L['Pool']}
|
||||
{Lang::T('IP Pool')}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="md-whiteframe-z1 mb20 text-center" style="padding: 15px">
|
||||
@ -20,16 +20,16 @@
|
||||
<span class="fa fa-search"></span>
|
||||
</div>
|
||||
<input type="text" name="name" class="form-control"
|
||||
placeholder="{$_L['Search_by_Name']}...">
|
||||
placeholder="{Lang::T('Search by Name')}...">
|
||||
<div class="input-group-btn">
|
||||
<button class="btn btn-success" type="submit">{$_L['Search']}</button>
|
||||
<button class="btn btn-success" type="submit">{Lang::T('Search')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<a href="{$_url}pool/add" class="btn btn-primary btn-block waves-effect"><i
|
||||
class="ion ion-android-add"> </i> {$_L['New_Pool']}</a>
|
||||
class="ion ion-android-add"> </i> {Lang::T('New Pool')}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
@ -37,10 +37,10 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{$_L['Pool_Name']}</th>
|
||||
<th>{$_L['Range_IP']}</th>
|
||||
<th>{$_L['Routers']}</th>
|
||||
<th>{$_L['Manage']}</th>
|
||||
<th>{Lang::T('Name Pool')}</th>
|
||||
<th>{Lang::T('Range IP')}</th>
|
||||
<th>{Lang::T('Routers')}</th>
|
||||
<th>{Lang::T('Manage')}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -52,10 +52,10 @@
|
||||
<td>{$ds['range_ip']}</td>
|
||||
<td>{$ds['routers']}</td>
|
||||
<td align="center">
|
||||
<a href="{$_url}pool/edit/{$ds['id']}" class="btn btn-info btn-xs">{$_L['Edit']}</a>
|
||||
<a href="{$_url}pool/edit/{$ds['id']}" class="btn btn-info btn-xs">{Lang::T('Edit')}</a>
|
||||
<a href="{$_url}pool/delete/{$ds['id']}" id="{$ds['id']}"
|
||||
onclick="return confirm('{$_L['Delete']}?')"
|
||||
class="btn btn-danger btn-xs">{$_L['Delete']}</a>
|
||||
onclick="return confirm('{Lang::T('Delete')}?')"
|
||||
class="btn btn-danger btn-xs"><i class="glyphicon glyphicon-trash"></i></a>
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
|
@ -3,43 +3,44 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12">
|
||||
<div class="panel panel-primary panel-hovered panel-stacked mb30">
|
||||
<div class="panel-heading">{$_L['Add_Plan']}</div>
|
||||
<div class="panel-heading">{Lang::T('Add Service Plan')}</div>
|
||||
<div class="panel-body">
|
||||
<form class="form-horizontal" method="post" role="form" action="{$_url}services/pppoe-add-post">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Status')}</label>
|
||||
<div class="col-md-10">
|
||||
<label class="radio-inline warning">
|
||||
<input type="radio" checked name="enabled" value="1"> Enable
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" name="enabled" value="0"> Disable
|
||||
</label>
|
||||
<input type="radio" checked name="enabled" value="1"> Enable
|
||||
<input type="radio" name="enabled" value="0"> Disable
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Client Can Purchase')}</label>
|
||||
<div class="col-md-10">
|
||||
<input type="radio" checked name="allow_purchase" value="yes"> Yes
|
||||
<input type="radio" name="allow_purchase" value="no"> No
|
||||
</div>
|
||||
</div>
|
||||
{if $_c['radius_enable']}
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">Radius</label>
|
||||
<div class="col-md-6">
|
||||
<label class="radio-inline">
|
||||
<input type="checkbox" name="radius" onclick="isRadius(this)" value="1"> Radius Plan
|
||||
</label>
|
||||
<input type="checkbox" name="radius" onclick="isRadius(this)" value="1"> Radius Plan
|
||||
</div>
|
||||
<p class="help-block col-md-4">{Lang::T('Cannot be change after saved')}</p>
|
||||
</div>
|
||||
{/if}
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Plan_Name']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Plan Name')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="name_plan" maxlength="40" name="name_plan">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label"><a
|
||||
href="{$_url}bandwidth/add">{$_L['BW_Name']}</a></label>
|
||||
href="{$_url}bandwidth/add">{Lang::T('Bandwidth Name')}</a></label>
|
||||
<div class="col-md-6">
|
||||
<select id="id_bw" name="id_bw" class="form-control select2">
|
||||
<option value="">{$_L['Select_BW']}...</option>
|
||||
<option value="">{Lang::T('Select Bandwidth')}...</option>
|
||||
{foreach $d as $ds}
|
||||
<option value="{$ds['id']}">{$ds['name_bw']}</option>
|
||||
{/foreach}
|
||||
@ -47,7 +48,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Plan_Price']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Plan Price')}</label>
|
||||
<div class="col-md-6">
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon">{$_c['currency_code']}</span>
|
||||
@ -56,25 +57,25 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Plan_Validity']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Plan Validity')}</label>
|
||||
<div class="col-md-4">
|
||||
<input type="text" class="form-control" id="validity" name="validity">
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<select class="form-control" id="validity_unit" name="validity_unit">
|
||||
<option value="Mins">{$_L['Mins']}</option>
|
||||
<option value="Hrs">{$_L['Hrs']}</option>
|
||||
<option value="Days">{$_L['Days']}</option>
|
||||
<option value="Months">{$_L['Months']}</option>
|
||||
<option value="Mins">{Lang::T('Mins')}</option>
|
||||
<option value="Hrs">{Lang::T('Hrs')}</option>
|
||||
<option value="Days">{Lang::T('Days')}</option>
|
||||
<option value="Months">{Lang::T('Months')}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label"><a
|
||||
href="{$_url}routers/add">{$_L['Router_Name']}</a></label>
|
||||
href="{$_url}routers/add">{Lang::T('Router Name')}</a></label>
|
||||
<div class="col-md-6">
|
||||
<select id="routers" name="routers" required class="form-control select2">
|
||||
<option value=''>{$_L['Select_Routers']}</option>
|
||||
<option value=''>{Lang::T('Select Routers')}</option>
|
||||
{foreach $r as $rs}
|
||||
<option value="{$rs['name']}">{$rs['name']}</option>
|
||||
{/foreach}
|
||||
@ -83,27 +84,34 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label"><a href="{$_url}pool/add">{$_L['Pool']}</a></label>
|
||||
<label class="col-md-2 control-label"><a href="{$_url}pool/add">{Lang::T('IP Pool')}</a></label>
|
||||
<div class="col-md-6">
|
||||
<select id="pool_name" name="pool_name" required class="form-control select2">
|
||||
<option value=''>{$_L['Select_Pool']}</option>
|
||||
<option value=''>{Lang::T('Select Pool')}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<legend>{Lang::T('Expired Action')} <sub>{Lang::T('Optional')}</sub></legend>
|
||||
<div class="form-group" id="ipPool">
|
||||
<label class="col-md-2 control-label"><a
|
||||
href="{$_url}pool/add">{Lang::T('Expired IP Pool')}</a></label>
|
||||
<div class="col-md-6">
|
||||
<select id="pool_expired" name="pool_expired" class="form-control select2">
|
||||
<option value=''>{$_L['Select_Pool']}</option>
|
||||
<option value=''>{Lang::T('Select Pool')}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
{* <div class="form-group" id="AddressList">
|
||||
<label class="col-md-2 control-label">{Lang::T('Address List')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" name="list_expired" id="list_expired">
|
||||
</div>
|
||||
</div> *}
|
||||
<div class="form-group">
|
||||
<div class="col-md-offset-2 col-md-10">
|
||||
<button class="btn btn-primary waves-effect waves-light"
|
||||
type="submit">{$_L['Save']}</button>
|
||||
Or <a href="{$_url}services/pppoe">{$_L['Cancel']}</a>
|
||||
type="submit">{Lang::T('Save Changes')}</button>
|
||||
Or <a href="{$_url}services/pppoe">{Lang::T('Cancel')}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@ -142,4 +150,4 @@
|
||||
</script>
|
||||
{/literal}
|
||||
{/if}
|
||||
{include file="sections/footer.tpl"}
|
||||
{include file="sections/footer.tpl"}
|
||||
|
@ -3,20 +3,22 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12">
|
||||
<div class="panel panel-primary panel-hovered panel-stacked mb30">
|
||||
<div class="panel-heading">{$_L['Edit_Plan']}</div>
|
||||
<div class="panel-heading">{Lang::T('Edit Service Plan')} || {$d['name_plan']}</div>
|
||||
<div class="panel-body">
|
||||
<form class="form-horizontal" method="post" role="form" action="{$_url}services/edit-pppoe-post">
|
||||
<input type="hidden" name="id" value="{$d['id']}">
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Status')}</label>
|
||||
<div class="col-md-10">
|
||||
<label class="radio-inline warning">
|
||||
<input type="radio" {if $d['enabled'] == 1}checked{/if} name="enabled" value="1"> Enable
|
||||
</label>
|
||||
<label class="radio-inline">
|
||||
<input type="radio" {if $d['enabled'] == 0}checked{/if} name="enabled" value="0">
|
||||
Disable
|
||||
</label>
|
||||
<input type="radio" name="enabled" value="1" {if $d['enabled'] == 1}checked{/if}> Enable
|
||||
<input type="radio" name="enabled" value="0" {if $d['enabled'] == 0}checked{/if}> Disable
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Client Can Purchase')}</label>
|
||||
<div class="col-md-10">
|
||||
<input type="radio" name="allow_purchase" value="yes" {if $d['allow_purchase'] == yes}checked{/if}> Yes
|
||||
<input type="radio" name="allow_purchase" value="no" {if $d['allow_purchase'] == no}checked{/if}> No
|
||||
</div>
|
||||
</div>
|
||||
{if $_c['radius_enable'] and $d['is_radius']}
|
||||
@ -28,7 +30,7 @@
|
||||
</div>
|
||||
{/if}
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Plan_Name']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Plan Name')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="name_plan" maxlength="40" name="name_plan"
|
||||
value="{$d['name_plan']}">
|
||||
@ -36,7 +38,7 @@
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label"><a
|
||||
href="{$_url}bandwidth/add">{$_L['BW_Name']}</a></label>
|
||||
href="{$_url}bandwidth/add">{Lang::T('Bandwidth Name')}</a></label>
|
||||
<div class="col-md-6">
|
||||
<select id="id_bw" name="id_bw" class="form-control select2">
|
||||
{foreach $b as $bs}
|
||||
@ -47,7 +49,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Plan_Price']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Plan Price')}</label>
|
||||
<div class="col-md-6">
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon">{$_c['currency_code']}</span>
|
||||
@ -56,26 +58,26 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Plan_Validity']}</label>
|
||||
<label class="col-md-2 control-label">{Lang::T('Plan Validity')}</label>
|
||||
<div class="col-md-4">
|
||||
<input type="text" class="form-control" id="validity" name="validity"
|
||||
value="{$d['validity']}">
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<select class="form-control" id="validity_unit" name="validity_unit">
|
||||
<option value="Mins" {if $d['validity_unit'] eq 'Mins'} selected {/if}>{$_L['Mins']}
|
||||
<option value="Mins" {if $d['validity_unit'] eq 'Mins'} selected {/if}>{Lang::T('Mins')}
|
||||
</option>
|
||||
<option value="Hrs" {if $d['validity_unit'] eq 'Hrs'} selected {/if}>{$_L['Hrs']}
|
||||
<option value="Hrs" {if $d['validity_unit'] eq 'Hrs'} selected {/if}>{Lang::T('Hrs')}
|
||||
</option>
|
||||
<option value="Days" {if $d['validity_unit'] eq 'Days'} selected {/if}>{$_L['Days']}
|
||||
<option value="Days" {if $d['validity_unit'] eq 'Days'} selected {/if}>{Lang::T('Days')}
|
||||
</option>
|
||||
<option value="Months" {if $d['validity_unit'] eq 'Months'} selected {/if}>
|
||||
{$_L['Months']}</option>
|
||||
{Lang::T('Months')}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label"><a href="{$_url}pool/add">{$_L['Pool']}</a></label>
|
||||
<label class="col-md-2 control-label"><a href="{$_url}pool/add">{Lang::T('IP Pool')}</a></label>
|
||||
<div class="col-md-6">
|
||||
<select id="pool_name" name="pool_name" required class="form-control select2">
|
||||
{foreach $p as $ps}
|
||||
@ -85,12 +87,20 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{Lang::T('Router Name')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="routers" name="routers" value="{$d['routers']}"
|
||||
readonly>
|
||||
</div>
|
||||
</div>
|
||||
<legend>{Lang::T('Expired Action')} <sub>{Lang::T('Optional')}</sub></legend>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label"><a
|
||||
href="{$_url}pool/add">{Lang::T('Expired IP Pool')}</a></label>
|
||||
<div class="col-md-6">
|
||||
<select id="pool_expired" name="pool_expired" class="form-control select2">
|
||||
<option value=''>{$_L['Select_Pool']}</option>
|
||||
<option value=''>{Lang::T('Select Pool')}</option>
|
||||
{foreach $p as $ps}
|
||||
<option value="{$ps['pool_name']}" {if $d['pool_expired'] eq $ps['pool_name']} selected
|
||||
{/if}>{$ps['pool_name']}</option>
|
||||
@ -98,19 +108,17 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-md-2 control-label">{$_L['Router_Name']}</label>
|
||||
{* <div class="form-group" id="AddressList">
|
||||
<label class="col-md-2 control-label">{Lang::T('Address List')}</label>
|
||||
<div class="col-md-6">
|
||||
<input type="text" class="form-control" id="routers" name="routers" value="{$d['routers']}"
|
||||
readonly>
|
||||
<input type="text" class="form-control" name="list_expired" id="list_expired" value="{$d['list_expired']}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> *}
|
||||
<div class="form-group">
|
||||
<div class="col-lg-offset-2 col-lg-10">
|
||||
<button class="btn btn-success waves-effect waves-light"
|
||||
type="submit">{$_L['Save']}</button>
|
||||
Or <a href="{$_url}services/pppoe">{$_L['Cancel']}</a>
|
||||
type="submit">{Lang::T('Save Changes')}</button>
|
||||
Or <a href="{$_url}services/pppoe">{Lang::T('Cancel')}</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@ -119,7 +127,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{if $_c['radius_enable'] and $d['is_radius']}
|
||||
{if $_c['radius_enable'] && $d['is_radius']}
|
||||
{literal}
|
||||
<script>
|
||||
document.getElementById("routers").required = false;
|
||||
@ -137,4 +145,4 @@
|
||||
</script>
|
||||
{/literal}
|
||||
{/if}
|
||||
{include file="sections/footer.tpl"}
|
||||
{include file="sections/footer.tpl"}
|
||||
|
@ -8,7 +8,7 @@
|
||||
<a class="btn btn-primary btn-xs" title="save" href="{$_url}services/sync/pppoe"
|
||||
onclick="return confirm('This will sync/send PPPOE plan to Mikrotik?')"><span
|
||||
class="glyphicon glyphicon-refresh" aria-hidden="true"></span> sync</a>
|
||||
</div>{$_L['PPPOE_Plans']}
|
||||
</div>{Lang::T('PPPOE Plans')}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="md-whiteframe-z1 mb20 text-center" style="padding: 15px">
|
||||
@ -19,41 +19,42 @@
|
||||
<span class="fa fa-search"></span>
|
||||
</div>
|
||||
<input type="text" name="name" class="form-control"
|
||||
placeholder="{$_L['Search_by_Name']}...">
|
||||
placeholder="{Lang::T('Search by Name')}...">
|
||||
<div class="input-group-btn">
|
||||
<button class="btn btn-success" type="submit">{$_L['Search']}</button>
|
||||
<button class="btn btn-success" type="submit">{Lang::T('Search')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<a href="{$_url}services/pppoe-add" class="btn btn-primary btn-block waves-effect"><i
|
||||
class="ion ion-android-add"> </i> {$_L['New_Plan']}</a>
|
||||
class="ion ion-android-add"> </i> {Lang::T('New Service Plan')}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-striped table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{$_L['Plan_Name']}</th>
|
||||
<th>{$_L['Bandwidth_Plans']}</th>
|
||||
<th>{$_L['Plan_Price']}</th>
|
||||
<th>{$_L['Plan_Validity']}</th>
|
||||
<th>{$_L['Pool']}</th>
|
||||
<th>{Lang::T('Plan Name')}</th>
|
||||
<th>{Lang::T('Bandwidth Plans')}</th>
|
||||
<th>{Lang::T('Plan Price')}</th>
|
||||
<th>{Lang::T('Plan Validity')}</th>
|
||||
<th>{Lang::T('IP Pool')}</th>
|
||||
<th>{Lang::T('Expired IP Pool')}</th>
|
||||
<th>{$_L['Routers']}</th>
|
||||
<th>{$_L['Manage']}</th>
|
||||
<th>{Lang::T('Routers')}</th>
|
||||
<th>{Lang::T('Manage')}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach $d as $ds}
|
||||
<tr {if $ds['enabled'] != 1}class="danger" title="disabled" {/if}>
|
||||
<tr {if $ds['enabled'] != 1}class="danger" title="disabled"
|
||||
{elseif $ds['allow_purchase'] != 'yes'}class="warning" title="Customer can't purchase" {/if}>
|
||||
<td>{$ds['name_plan']}</td>
|
||||
<td>{$ds['name_bw']}</td>
|
||||
<td>{Lang::moneyFormat($ds['price'])}</td>
|
||||
<td>{$ds['validity']} {$ds['validity_unit']}</td>
|
||||
<td>{$ds['pool']}</td>
|
||||
<td>{$ds['pool_expired']}</td>
|
||||
<td>{$ds['pool_expired']}{if $ds['list_expired']}{if $ds['pool_expired']} | {/if}{$ds['list_expired']}{/if}</td>
|
||||
<td>
|
||||
{if $ds['is_radius']}
|
||||
<span class="label label-primary">RADIUS</span>
|
||||
@ -64,10 +65,10 @@
|
||||
{/if}</td>
|
||||
<td>
|
||||
<a href="{$_url}services/pppoe-edit/{$ds['id']}"
|
||||
class="btn btn-info btn-xs">{$_L['Edit']}</a>
|
||||
class="btn btn-info btn-xs">{Lang::T('Edit')}</a>
|
||||
<a href="{$_url}services/pppoe-delete/{$ds['id']}"
|
||||
onclick="return confirm('{$_L['Delete']}?')" id="{$ds['id']}"
|
||||
class="btn btn-danger btn-xs">{$_L['Delete']}</a>
|
||||
onclick="return confirm('{Lang::T('Delete')}?')" id="{$ds['id']}"
|
||||
class="btn btn-danger btn-xs"><i class="glyphicon glyphicon-trash"></i></a>
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user