Merge pull request #298 from Focuslinkstech/Development

add styles to some tables
This commit is contained in:
iBNu Maksum 2024-09-12 23:40:11 +07:00 committed by GitHub
commit 5f50d725f1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 303 additions and 235 deletions

View File

@ -13,25 +13,27 @@ class Admin
{ {
global $db_pass, $config; global $db_pass, $config;
$enable_session_timeout = $config['enable_session_timeout']; $enable_session_timeout = $config['enable_session_timeout'];
if ($enable_session_timeout) { $session_timeout_duration = $config['session_timeout_duration'] ? intval($config['session_timeout_duration'] * 60) : intval(60 * 60); // Convert minutes to seconds
$timeout = 60;
if ($config['session_timeout_duration']) { // Check if the session is active and valid
$timeout = intval($config['session_timeout_duration']); if (isset($_SESSION['aid']) && isset($_SESSION['aid_expiration'])) {
if ($_SESSION['aid_expiration'] > time()) {
if ($enable_session_timeout) {
$_SESSION['aid_expiration'] = time() + $session_timeout_duration;
}
return $_SESSION['aid'];
}
// Session expired, log out the user
elseif ($enable_session_timeout && $_SESSION['aid_expiration'] <= time()) {
self::removeCookie();
session_destroy();
_alert(Lang::T('Session has expired. Please log in again.'), 'danger', "admin");
return 0;
} }
$session_timeout_duration = $timeout * 60; // Convert minutes to seconds
} }
if (isset($_SESSION['aid']) && isset($_SESSION['aid_expiration']) && $_SESSION['aid_expiration'] > time()) { // Check if the cookie is set and valid
return $_SESSION['aid'];
} elseif ($enable_session_timeout && isset($_SESSION['aid']) && isset($_SESSION['aid_expiration']) && $_SESSION['aid_expiration'] <= time()) {
self::removeCookie();
session_destroy();
_alert(Lang::T('Session has expired. Please log in again.'), 'danger', "admin");
return 0;
}
// Check if cookie is set and valid
elseif (isset($_COOKIE['aid'])) { elseif (isset($_COOKIE['aid'])) {
// id.time.sha1
$tmp = explode('.', $_COOKIE['aid']); $tmp = explode('.', $_COOKIE['aid']);
if (sha1($tmp[0] . '.' . $tmp[1] . '.' . $db_pass) == $tmp[2]) { if (sha1($tmp[0] . '.' . $tmp[1] . '.' . $db_pass) == $tmp[2]) {
if (time() - $tmp[1] < 86400 * 7) { if (time() - $tmp[1] < 86400 * 7) {

View File

@ -214,6 +214,12 @@ if ($config['router_check']) {
$ui->assign('routeroffs', $routeroffs); $ui->assign('routeroffs', $routeroffs);
} }
$timestampFile = "$UPLOAD_PATH/cron_last_run.txt";
if (file_exists($timestampFile)) {
$lastRunTime = file_get_contents($timestampFile);
$ui->assign('run_date', date('Y-m-d h:i:s A', $lastRunTime));
}
// Assign the monthly sales data to Smarty // Assign the monthly sales data to Smarty
$ui->assign('start_date', $start_date); $ui->assign('start_date', $start_date);
$ui->assign('current_date', $current_date); $ui->assign('current_date', $current_date);

View File

@ -1,6 +1,27 @@
<?php <?php
include "../init.php"; include "../init.php";
$lockFile = "$CACHE_PATH/router_monitor.lock";
if (!is_dir($CACHE_PATH)) {
echo "Directory '$CACHE_PATH' does not exist. Exiting...\n";
exit;
}
$lock = fopen($lockFile, 'c');
if ($lock === false) {
echo "Failed to open lock file. Exiting...\n";
exit;
}
if (!flock($lock, LOCK_EX | LOCK_NB)) {
echo "Script is already running. Exiting...\n";
fclose($lock);
exit;
}
$isCli = true; $isCli = true;
if (php_sapi_name() !== 'cli') { if (php_sapi_name() !== 'cli') {
$isCli = false; $isCli = false;
@ -81,27 +102,7 @@ foreach ($d as $ds) {
if ($config['router_check']) { if ($config['router_check']) {
echo "Checking router status...\n";
$lockFile = $CACHE_PATH . '/router_monitor.lock';
if (!is_dir($CACHE_PATH)) {
echo "Directory '$CACHE_PATH' does not exist. Exiting...\n";
exit;
}
$lock = fopen($lockFile, 'c');
if ($lock === false) {
echo "Failed to open lock file. Exiting...\n";
exit;
}
if (!flock($lock, LOCK_EX | LOCK_NB)) {
echo "Script is already running. Exiting...\n";
fclose($lock);
exit;
}
$routers = ORM::for_table('tbl_routers')->where('enabled', '1')->find_many(); $routers = ORM::for_table('tbl_routers')->where('enabled', '1')->find_many();
if (!$routers) { if (!$routers) {
echo "No active routers found in the database.\n"; echo "No active routers found in the database.\n";
@ -186,14 +187,20 @@ if ($config['router_check']) {
Message::SendEmail($adminEmail, $subject, $message); Message::SendEmail($adminEmail, $subject, $message);
sendTelegram($message); sendTelegram($message);
} }
echo "Router monitoring finished\n";
if (defined('PHP_SAPI') && PHP_SAPI === 'cli') {
echo "Cronjob finished\n";
} else {
echo "</pre>";
}
flock($lock, LOCK_UN);
fclose($lock);
unlink($lockFile);
} }
if (defined('PHP_SAPI') && PHP_SAPI === 'cli') {
echo "Cronjob finished\n";
} else {
echo "</pre>";
}
flock($lock, LOCK_UN);
fclose($lock);
unlink($lockFile);
$timestampFile = "$UPLOAD_PATH/cron_last_run.txt";
file_put_contents($timestampFile, time());

View File

@ -194,6 +194,25 @@
</div> </div>
</div> </div>
{/if} {/if}
{if $run_date}
{assign var="current_time" value=$smarty.now}
{assign var="run_time" value=strtotime($run_date)}
{if $current_time - $run_time > 3600}
<div class="panel panel-warning panel-hovered mb20 activities">
<div class="panel-heading"><i class="fa fa-clock-o"></i> &nbsp; {Lang::T('Cron has not run for over 1 hour. Please
check your setup.')}</div>
</div>
{else}
<div class="panel panel-success panel-hovered mb20 activities">
<div class="panel-heading">{Lang::T('Cron Job last ran on')}: {$run_date}</div>
</div>
{/if}
{else}
<div class="panel panel-danger panel-hovered mb20 activities">
<div class="panel-heading"><i class="fa fa-warning"></i> &nbsp; {Lang::T('Cron appear not been setup, please check
your cron setup.')}</div>
</div>
{/if}
{if $_c['hide_pg'] != 'yes'} {if $_c['hide_pg'] != 'yes'}
<div class="panel panel-success panel-hovered mb20 activities"> <div class="panel panel-success panel-hovered mb20 activities">
<div class="panel-heading">{Lang::T('Payment Gateway')}: {str_replace(',',', ',$_c['payment_gateway'])} <div class="panel-heading">{Lang::T('Payment Gateway')}: {str_replace(',',', ',$_c['payment_gateway'])}

View File

@ -35,8 +35,8 @@
<select class="form-control" id="type2" name="type2"> <select class="form-control" id="type2" name="type2">
<option value="">{Lang::T('Type')}</option> <option value="">{Lang::T('Type')}</option>
{foreach $type2s as $t} {foreach $type2s as $t}
<option value="{$t}" {if $type2 eq $t }selected{/if}>{Lang::T($t)} <option value="{$t}" {if $type2 eq $t }selected{/if}>{Lang::T($t)}
</option> </option>
{/foreach} {/foreach}
</select> </select>
</div> </div>
@ -44,9 +44,9 @@
<select class="form-control" id="bandwidth" name="bandwidth"> <select class="form-control" id="bandwidth" name="bandwidth">
<option value="">Bandwidth</option> <option value="">Bandwidth</option>
{foreach $bws as $b} {foreach $bws as $b}
<option value="{$b['id']}" {if $bandwidth eq $b['id'] }selected{/if}> <option value="{$b['id']}" {if $bandwidth eq $b['id'] }selected{/if}>
{$b['name_bw']} {$b['name_bw']}
</option> </option>
{/foreach} {/foreach}
</select> </select>
</div> </div>
@ -54,8 +54,8 @@
<select class="form-control" id="type3" name="type3"> <select class="form-control" id="type3" name="type3">
<option value="">{Lang::T('Category')}</option> <option value="">{Lang::T('Category')}</option>
{foreach $type3s as $t} {foreach $type3s as $t}
<option value="{$t}" {if $type3 eq $t }selected{/if}>{$t} <option value="{$t}" {if $type3 eq $t }selected{/if}>{$t}
</option> </option>
{/foreach} {/foreach}
</select> </select>
</div> </div>
@ -63,8 +63,8 @@
<select class="form-control" id="valid" name="valid"> <select class="form-control" id="valid" name="valid">
<option value="">{Lang::T('Validity')}</option> <option value="">{Lang::T('Validity')}</option>
{foreach $valids as $v} {foreach $valids as $v}
<option value="{$v}" {if $valid eq $v }selected{/if}>{$v} <option value="{$v}" {if $valid eq $v }selected{/if}>{$v}
</option> </option>
{/foreach} {/foreach}
</select> </select>
</div> </div>
@ -72,7 +72,7 @@
<select class="form-control" id="router" name="router"> <select class="form-control" id="router" name="router">
<option value="">{Lang::T('Location')}</option> <option value="">{Lang::T('Location')}</option>
{foreach $routers as $r} {foreach $routers as $r}
<option value="{$r}" {if $router eq $r }selected{/if}>{$r}</option> <option value="{$r}" {if $router eq $r }selected{/if}>{$r}</option>
{/foreach} {/foreach}
<option value="radius" {if $router eq 'radius' }selected{/if}>Radius</option> <option value="radius" {if $router eq 'radius' }selected{/if}>Radius</option>
</select> </select>
@ -81,7 +81,7 @@
<select class="form-control" id="device" name="device"> <select class="form-control" id="device" name="device">
<option value="">{Lang::T('Device')}</option> <option value="">{Lang::T('Device')}</option>
{foreach $devices as $r} {foreach $devices as $r}
<option value="{$r}" {if $device eq $r }selected{/if}>{$r}</option> <option value="{$r}" {if $device eq $r }selected{/if}>{$r}</option>
{/foreach} {/foreach}
</select> </select>
</div> </div>
@ -104,38 +104,40 @@
</div> </div>
</form> </form>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-bordered table-striped table-condensed"> <div style="margin-left: 5px; margin-right: 5px;">
<thead> <table class="table table-bordered table-striped table-condensed">
<tr> <thead>
<th></th> <tr>
<th colspan="5" class="text-center">{Lang::T('Internet Package')}</th> <th></th>
<th colspan="2" class="text-center" style="background-color: rgb(246, 244, 244);">{Lang::T('Limit')}</th> <th colspan="5" class="text-center">{Lang::T('Internet Package')}</th>
<th colspan="2"></th> <th colspan="2" class="text-center" style="background-color: rgb(246, 244, 244);">
<th colspan="2" class="text-center" style="background-color: rgb(243, 241, 172);"> {Lang::T('Limit')}</th>
{Lang::T('Expired')}</th> <th colspan="2"></th>
<th colspan="3"></th> <th colspan="2" class="text-center" style="background-color: rgb(243, 241, 172);">
</tr> {Lang::T('Expired')}</th>
<tr> <th colspan="3"></th>
<th>{Lang::T('Name')}</th> </tr>
<th>{Lang::T('Type')}</th> <tr>
<th><a href="{$_url}bandwidth/list">Bandwidth</a></th> <th>{Lang::T('Name')}</th>
<th>{Lang::T('Category')}</th> <th>{Lang::T('Type')}</th>
<th>{Lang::T('Price')}</th> <th><a href="{$_url}bandwidth/list">Bandwidth</a></th>
<th>{Lang::T('Validity')}</th> <th>{Lang::T('Category')}</th>
<th style="background-color: rgb(246, 244, 244);">{Lang::T('Time')}</th> <th>{Lang::T('Price')}</th>
<th style="background-color: rgb(246, 244, 244);">{Lang::T('Data')}</th> <th>{Lang::T('Validity')}</th>
<th><a href="{$_url}routers/list">{Lang::T('Location')}</a></th> <th style="background-color: rgb(246, 244, 244);">{Lang::T('Time')}</th>
<th>{Lang::T('Device')}</th> <th style="background-color: rgb(246, 244, 244);">{Lang::T('Data')}</th>
<th style="background-color: rgb(243, 241, 172);">{Lang::T('Internet Package')}</th> <th><a href="{$_url}routers/list">{Lang::T('Location')}</a></th>
<th style="background-color: rgb(243, 241, 172);">{Lang::T('Date')}</th> <th>{Lang::T('Device')}</th>
<th>{Lang::T('ID')}</th> <th style="background-color: rgb(243, 241, 172);">{Lang::T('Internet Package')}</th>
<th>{Lang::T('Manage')}</th> <th style="background-color: rgb(243, 241, 172);">{Lang::T('Date')}</th>
</tr> <th>{Lang::T('ID')}</th>
</thead> <th>{Lang::T('Manage')}</th>
<tbody> </tr>
{foreach $d as $ds} </thead>
<tbody>
{foreach $d as $ds}
<tr {if $ds['enabled'] !=1}class="danger" title="disabled" {elseif $ds['prepaid'] !='yes' <tr {if $ds['enabled'] !=1}class="danger" title="disabled" {elseif $ds['prepaid'] !='yes'
}class="warning" title="Postpaid" {/if}> }class="warning" title="Postpaid" {/if}>
<td class="headcol">{$ds['name_plan']}</td> <td class="headcol">{$ds['name_plan']}</td>
<td>{if $ds['prepaid'] == no}<b>Postpaid</b>{else}Prepaid{/if} {$ds['plan_type']}</td> <td>{if $ds['prepaid'] == no}<b>Postpaid</b>{else}Prepaid{/if} {$ds['plan_type']}</td>
<td>{$ds['name_bw']}</td> <td>{$ds['name_bw']}</td>
@ -146,11 +148,11 @@
<td>{$ds['data_limit']} {$ds['data_unit']}</td> <td>{$ds['data_limit']} {$ds['data_unit']}</td>
<td> <td>
{if $ds['is_radius']} {if $ds['is_radius']}
<span class="label label-primary">RADIUS</span> <span class="label label-primary">RADIUS</span>
{else} {else}
{if $ds['routers']!=''} {if $ds['routers']!=''}
<a href="{$_url}routers/edit/0&name={$ds['routers']}">{$ds['routers']}</a> <a href="{$_url}routers/edit/0&name={$ds['routers']}">{$ds['routers']}</a>
{/if} {/if}
{/if} {/if}
</td> </td>
<td>{$ds['device']}</td> <td>{$ds['device']}</td>
@ -163,13 +165,14 @@
<a href="{$_url}services/edit/{$ds['id']}" <a href="{$_url}services/edit/{$ds['id']}"
class="btn btn-info btn-xs">{Lang::T('Edit')}</a> class="btn btn-info btn-xs">{Lang::T('Edit')}</a>
<a href="{$_url}services/delete/{$ds['id']}" id="{$ds['id']}" <a href="{$_url}services/delete/{$ds['id']}" id="{$ds['id']}"
onclick="return confirm('{Lang::T('Delete')}?')" class="btn btn-danger btn-xs"><i onclick="return confirm('{Lang::T('Delete')}?')"
class="glyphicon glyphicon-trash"></i></a> class="btn btn-danger btn-xs"><i class="glyphicon glyphicon-trash"></i></a>
</td> </td>
</tr> </tr>
{/foreach} {/foreach}
</tbody> </tbody>
</table> </table>
</div>
</div> </div>
<div class="panel-footer"> <div class="panel-footer">
{include file="pagination.tpl"} {include file="pagination.tpl"}
@ -182,4 +185,4 @@
</div> </div>
</div> </div>
{include file="sections/footer.tpl"} {include file="sections/footer.tpl"}

View File

@ -5,19 +5,19 @@
<div class="panel panel-hovered mb20 panel-primary"> <div class="panel panel-hovered mb20 panel-primary">
<div class="panel-heading"> <div class="panel-heading">
{if in_array($_admin['user_type'],['SuperAdmin','Admin'])} {if in_array($_admin['user_type'],['SuperAdmin','Admin'])}
<div class="btn-group pull-right"> <div class="btn-group pull-right">
<a class="btn btn-primary btn-xs" title="save" href="{$_url}plan/sync" <a class="btn btn-primary btn-xs" title="save" href="{$_url}plan/sync"
onclick="return confirm('This will sync/send Caustomer active plan to Mikrotik?')"><span onclick="return confirm('This will sync/send Caustomer active plan to Mikrotik?')"><span
class="glyphicon glyphicon-refresh" aria-hidden="true"></span> sync</a> class="glyphicon glyphicon-refresh" aria-hidden="true"></span> sync</a>
</div> </div>
{* <div class="btn-group pull-right"> {* <div class="btn-group pull-right">
<a class="btn btn-info btn-xs" title="save" href="{$_url}plan/csv{$append_url}" <a class="btn btn-info btn-xs" title="save" href="{$_url}plan/csv{$append_url}"
onclick="return confirm('This will export to CSV?')"><span class="glyphicon glyphicon-download" onclick="return confirm('This will export to CSV?')"><span class="glyphicon glyphicon-download"
aria-hidden="true"></span> CSV</a> aria-hidden="true"></span> CSV</a>
</div> *} </div> *}
{/if} {/if}
&nbsp; &nbsp;
{Lang::T('Active Customers')} {Lang::T('Active Customers')}
</div> </div>
<form id="site-search" method="post" action="{$_url}plan/list/"> <form id="site-search" method="post" action="{$_url}plan/list/">
<div class="panel-body"> <div class="panel-body">
@ -36,8 +36,8 @@
<select class="form-control" id="router" name="router"> <select class="form-control" id="router" name="router">
<option value="">{Lang::T('Location')}</option> <option value="">{Lang::T('Location')}</option>
{foreach $routers as $r} {foreach $routers as $r}
<option value="{$r}" {if $router eq $r }selected{/if}>{$r} <option value="{$r}" {if $router eq $r }selected{/if}>{$r}
</option> </option>
{/foreach} {/foreach}
</select> </select>
</div> </div>
@ -45,8 +45,8 @@
<select class="form-control" id="plan" name="plan"> <select class="form-control" id="plan" name="plan">
<option value="">{Lang::T('Plan Name')}</option> <option value="">{Lang::T('Plan Name')}</option>
{foreach $plans as $p} {foreach $plans as $p}
<option value="{$p['id']}" {if $plan eq $p['id'] }selected{/if}>{$p['name_plan']} <option value="{$p['id']}" {if $plan eq $p['id'] }selected{/if}>{$p['name_plan']}
</option> </option>
{/foreach} {/foreach}
</select> </select>
</div> </div>
@ -70,33 +70,34 @@
</div> </div>
</form> </form>
<div class="table-responsive"> <div class="table-responsive">
<table id="datatable" class="table table-bordered table-striped table-condensed"> <div style="margin-left: 5px; margin-right: 5px;">&nbsp;
<thead> <table id="datatable" class="table table-bordered table-striped table-condensed">
<tr> <thead>
<th>{Lang::T('Username')}</th> <tr>
<th>{Lang::T('Plan Name')}</th> <th>{Lang::T('Username')}</th>
<th>{Lang::T('Type')}</th> <th>{Lang::T('Plan Name')}</th>
<th>{Lang::T('Created On')}</th> <th>{Lang::T('Type')}</th>
<th>{Lang::T('Expires On')}</th> <th>{Lang::T('Created On')}</th>
<th>{Lang::T('Method')}</th> <th>{Lang::T('Expires On')}</th>
<th><a href="{$_url}routers/list">{Lang::T('Location')}</a></th> <th>{Lang::T('Method')}</th>
<th>{Lang::T('Manage')}</th> <th><a href="{$_url}routers/list">{Lang::T('Location')}</a></th>
</tr> <th>{Lang::T('Manage')}</th>
</thead> </tr>
<tbody> </thead>
{foreach $d as $ds} <tbody>
<tr {if $ds['status']=='off'}class="danger" {/if}> {foreach $d as $ds}
<tr {if $ds['status']=='off' }class="danger" {/if}>
<td> <td>
{if $ds['customer_id'] == '0'} {if $ds['customer_id'] == '0'}
<a href="{$_url}plan/voucher/&search={$ds['username']}">{$ds['username']}</a> <a href="{$_url}plan/voucher/&search={$ds['username']}">{$ds['username']}</a>
{else} {else}
<a href="{$_url}customers/viewu/{$ds['username']}">{$ds['username']}</a> <a href="{$_url}customers/viewu/{$ds['username']}">{$ds['username']}</a>
{/if} {/if}
</td> </td>
{if $ds['type'] == 'Hotspot'} {if $ds['type'] == 'Hotspot'}
<td><a href="{$_url}services/edit/{$ds['plan_id']}">{$ds['namebp']}</a></td> <td><a href="{$_url}services/edit/{$ds['plan_id']}">{$ds['namebp']}</a></td>
{else} {else}
<td><a href="{$_url}services/pppoe-edit/{$ds['plan_id']}">{$ds['namebp']}</a></td> <td><a href="{$_url}services/pppoe-edit/{$ds['plan_id']}">{$ds['namebp']}</a></td>
{/if} {/if}
<td>{$ds['type']}</td> <td>{$ds['type']}</td>
<td>{Lang::dateAndTimeFormat($ds['recharged_on'],$ds['recharged_time'])}</td> <td>{Lang::dateAndTimeFormat($ds['recharged_on'],$ds['recharged_time'])}</td>
@ -107,19 +108,20 @@
<a href="{$_url}plan/edit/{$ds['id']}" class="btn btn-warning btn-xs" <a href="{$_url}plan/edit/{$ds['id']}" class="btn btn-warning btn-xs"
style="color: black;">{Lang::T('Edit')}</a> style="color: black;">{Lang::T('Edit')}</a>
{if in_array($_admin['user_type'],['SuperAdmin','Admin'])} {if in_array($_admin['user_type'],['SuperAdmin','Admin'])}
<a href="{$_url}plan/delete/{$ds['id']}" id="{$ds['id']}" <a href="{$_url}plan/delete/{$ds['id']}" id="{$ds['id']}"
onclick="return confirm('{Lang::T('Delete')}?')" class="btn btn-danger btn-xs"><i onclick="return confirm('{Lang::T('Delete')}?')"
class="glyphicon glyphicon-trash"></i></a> class="btn btn-danger btn-xs"><i class="glyphicon glyphicon-trash"></i></a>
{/if} {/if}
{if $ds['status']=='off' && $_c['extend_expired']} {if $ds['status']=='off' && $_c['extend_expired']}
<a href="javascript:extend('{$ds['id']}')" <a href="javascript:extend('{$ds['id']}')"
class="btn btn-info btn-xs">{Lang::T('Extend')}</a> class="btn btn-info btn-xs">{Lang::T('Extend')}</a>
{/if} {/if}
</td> </td>
</tr> </tr>
{/foreach} {/foreach}
</tbody> </tbody>
</table> </table>
</div>
</div> </div>
{include file="pagination.tpl"} {include file="pagination.tpl"}
</div> </div>
@ -131,10 +133,10 @@
var res = prompt("Extend for many days?", "3"); var res = prompt("Extend for many days?", "3");
if (res) { if (res) {
if (confirm("Extend for " + res + " days?")) { if (confirm("Extend for " + res + " days?")) {
window.location.href = "{$_url}plan/extend/"+idP+"/"+res+"&stoken={App::getToken()}"; window.location.href = "{$_url}plan/extend/" + idP + "/" + res + "&stoken={App::getToken()}";
} }
} }
} }
</script> </script>
{include file="sections/footer.tpl"} {include file="sections/footer.tpl"}

View File

@ -35,8 +35,8 @@
<select class="form-control" id="type2" name="type2"> <select class="form-control" id="type2" name="type2">
<option value="">{Lang::T('Type')}</option> <option value="">{Lang::T('Type')}</option>
{foreach $type2s as $t} {foreach $type2s as $t}
<option value="{$t}" {if $type2 eq $t }selected{/if}>{Lang::T($t)} <option value="{$t}" {if $type2 eq $t }selected{/if}>{Lang::T($t)}
</option> </option>
{/foreach} {/foreach}
</select> </select>
</div> </div>
@ -44,9 +44,9 @@
<select class="form-control" id="bandwidth" name="bandwidth"> <select class="form-control" id="bandwidth" name="bandwidth">
<option value="">Bandwidth</option> <option value="">Bandwidth</option>
{foreach $bws as $b} {foreach $bws as $b}
<option value="{$b['id']}" {if $bandwidth eq $b['id'] }selected{/if}> <option value="{$b['id']}" {if $bandwidth eq $b['id'] }selected{/if}>
{$b['name_bw']} {$b['name_bw']}
</option> </option>
{/foreach} {/foreach}
</select> </select>
</div> </div>
@ -54,8 +54,8 @@
<select class="form-control" id="type3" name="type3"> <select class="form-control" id="type3" name="type3">
<option value="">{Lang::T('Category')}</option> <option value="">{Lang::T('Category')}</option>
{foreach $type3s as $t} {foreach $type3s as $t}
<option value="{$t}" {if $type3 eq $t }selected{/if}>{$t} <option value="{$t}" {if $type3 eq $t }selected{/if}>{$t}
</option> </option>
{/foreach} {/foreach}
</select> </select>
</div> </div>
@ -63,8 +63,8 @@
<select class="form-control" id="valid" name="valid"> <select class="form-control" id="valid" name="valid">
<option value="">{Lang::T('Validity')}</option> <option value="">{Lang::T('Validity')}</option>
{foreach $valids as $v} {foreach $valids as $v}
<option value="{$v}" {if $valid eq $v }selected{/if}>{$v} <option value="{$v}" {if $valid eq $v }selected{/if}>{$v}
</option> </option>
{/foreach} {/foreach}
</select> </select>
</div> </div>
@ -72,7 +72,7 @@
<select class="form-control" id="router" name="router"> <select class="form-control" id="router" name="router">
<option value="">{Lang::T('Location')}</option> <option value="">{Lang::T('Location')}</option>
{foreach $routers as $r} {foreach $routers as $r}
<option value="{$r}" {if $router eq $r }selected{/if}>{$r}</option> <option value="{$r}" {if $router eq $r }selected{/if}>{$r}</option>
{/foreach} {/foreach}
<option value="radius" {if $router eq 'radius' }selected{/if}>Radius</option> <option value="radius" {if $router eq 'radius' }selected{/if}>Radius</option>
</select> </select>
@ -81,7 +81,7 @@
<select class="form-control" id="device" name="device"> <select class="form-control" id="device" name="device">
<option value="">{Lang::T('Device')}</option> <option value="">{Lang::T('Device')}</option>
{foreach $devices as $r} {foreach $devices as $r}
<option value="{$r}" {if $device eq $r }selected{/if}>{$r}</option> <option value="{$r}" {if $device eq $r }selected{/if}>{$r}</option>
{/foreach} {/foreach}
</select> </select>
</div> </div>
@ -104,36 +104,38 @@
</div> </div>
</form> </form>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-bordered table-striped table-condensed"> <div style="margin-left: 5px; margin-right: 5px;">
<thead> <table class="table table-bordered table-striped table-condensed">
<tr> <thead>
<th></th> <tr>
<th colspan="4" class="text-center">{Lang::T('Internet Plan')}</th> <th></th>
<th></th> <th colspan="4" class="text-center">{Lang::T('Internet Plan')}</th>
<th colspan="2" class="text-center" style="background-color: rgb(243, 241, 172);"> <th></th>
{Lang::T('Expired')}</th> <th colspan="2" class="text-center" style="background-color: rgb(243, 241, 172);">
<th colspan="4"></th> {Lang::T('Expired')}</th>
</tr> <th colspan="4"></th>
<tr> </tr>
<th>{Lang::T('Name')}</th> <tr>
<th>{Lang::T('Type')}</th> <th>{Lang::T('Name')}</th>
<th><a href="{$_url}bandwidth/list">{Lang::T('Bandwidth')}</a></th> <th>{Lang::T('Type')}</th>
<th>{Lang::T('Price')}</th> <th><a href="{$_url}bandwidth/list">{Lang::T('Bandwidth')}</a></th>
<th>{Lang::T('Validity')}</th> <th>{Lang::T('Price')}</th>
<th><a href="{$_url}pool/list">{Lang::T('IP Pool')}</a></th> <th>{Lang::T('Validity')}</th>
<th style="background-color: rgb(243, 241, 172);">{Lang::T('Internet Plan')}</th> <th><a href="{$_url}pool/list">{Lang::T('IP Pool')}</a></th>
<th style="background-color: rgb(243, 241, 172);">{Lang::T('Date')}</th> <th style="background-color: rgb(243, 241, 172);">{Lang::T('Internet Plan')}</th>
<th><a href="{$_url}routers/list">{Lang::T('Location')}</a></th> <th style="background-color: rgb(243, 241, 172);">{Lang::T('Date')}</th>
<th>{Lang::T('Device')}</th> <th><a href="{$_url}routers/list">{Lang::T('Location')}</a></th>
<th>{Lang::T('Manage')}</th> <th>{Lang::T('Device')}</th>
<th>ID</th> <th>{Lang::T('Manage')}</th>
</tr> <th>ID</th>
</thead> </tr>
<tbody> </thead>
{foreach $d as $ds} <tbody>
<tr {if $ds['enabled'] != 1}class="danger" title="disabled" {/if}> {foreach $d as $ds}
<tr {if $ds['enabled'] !=1}class="danger" title="disabled" {/if}>
<td>{$ds['name_plan']}</td> <td>{$ds['name_plan']}</td>
<td>{$ds['plan_type']} {if $ds['prepaid'] != 'yes'}<b>{Lang::T('Postpaid')}</b>{else}{Lang::T('Prepaid')}{/if}</td> <td>{$ds['plan_type']} {if $ds['prepaid'] !=
'yes'}<b>{Lang::T('Postpaid')}</b>{else}{Lang::T('Prepaid')}{/if}</td>
<td>{$ds['name_bw']}</td> <td>{$ds['name_bw']}</td>
<td>{Lang::moneyFormat($ds['price'])}</td> <td>{Lang::moneyFormat($ds['price'])}</td>
<td>{$ds['validity']} {$ds['validity_unit']}</td> <td>{$ds['validity']} {$ds['validity_unit']}</td>
@ -144,11 +146,11 @@
<td>{if $ds['prepaid'] == no}{$ds['expired_date']}{/if}</td> <td>{if $ds['prepaid'] == no}{$ds['expired_date']}{/if}</td>
<td> <td>
{if $ds['is_radius']} {if $ds['is_radius']}
<span class="label label-primary">RADIUS</span> <span class="label label-primary">RADIUS</span>
{else} {else}
{if $ds['routers']!=''} {if $ds['routers']!=''}
<a href="{$_url}routers/edit/0&name={$ds['routers']}">{$ds['routers']}</a> <a href="{$_url}routers/edit/0&name={$ds['routers']}">{$ds['routers']}</a>
{/if} {/if}
{/if} {/if}
</td> </td>
<td>{$ds['device']}</td> <td>{$ds['device']}</td>
@ -161,9 +163,10 @@
</td> </td>
<td>{$ds['id']}</td> <td>{$ds['id']}</td>
</tr> </tr>
{/foreach} {/foreach}
</tbody> </tbody>
</table> </table>
</div>
</div> </div>
<div class="panel-footer"> <div class="panel-footer">
{include file="pagination.tpl"} {include file="pagination.tpl"}
@ -176,4 +179,4 @@
</div> </div>
</div> </div>
{include file="sections/footer.tpl"} {include file="sections/footer.tpl"}

View File

@ -148,12 +148,26 @@
color: inherit; color: inherit;
background-color: transparent; background-color: transparent;
border-color: transparent; border-color: transparent;
border-bottom-right-radius: 21px;
border-bottom-left-radius: 21px;
} }
.panel-primary>.panel-heading { .panel-success>.panel-heading {
color: inherit; border-bottom-right-radius: 21px;
background-color: transparent; border-bottom-left-radius: 21px;
border-color: transparent; }
.panel-warning>.panel-heading {
border-bottom-right-radius: 21px;
border-bottom-left-radius: 21px;
}
.panel-danger>.panel-heading {
color: #a94442;
background-color: #f2dede;
border-color: #ebccd1;
border-bottom-right-radius: 21px;
border-bottom-left-radius: 21px;
} }
.panel-heading { .panel-heading {
@ -656,6 +670,9 @@
} }
.toggle-container { .toggle-container {
position: absolute;
top: 17px;
right: 15px;
cursor: pointer; cursor: pointer;
} }
@ -666,6 +683,11 @@
} }
@media (max-width: 600px) { @media (max-width: 600px) {
.toggle-container {
top: 15px;
right: 60px;
}
.toggle-container .toggle-icon { .toggle-container .toggle-icon {
font-size: 20px; font-size: 20px;
color: rgb(100 116 139); color: rgb(100 116 139);

View File

@ -17,11 +17,12 @@
<div class="panel panel-hovered mb20 panel-primary"> <div class="panel panel-hovered mb20 panel-primary">
<div class="panel-heading"> <div class="panel-heading">
{if in_array($_admin['user_type'],['SuperAdmin','Admin'])} {if in_array($_admin['user_type'],['SuperAdmin','Admin'])}
<div class="btn-group pull-right"> <div class="btn-group pull-right">
<a class="btn btn-danger btn-xs" title="Remove used Voucher" href="{$_url}plan/remove-voucher" <a class="btn btn-danger btn-xs" title="Remove used Voucher" href="{$_url}plan/remove-voucher"
onclick="return confirm('Delete all used voucher code more than 3 months?')"><span class="glyphicon glyphicon-trash" onclick="return confirm('Delete all used voucher code more than 3 months?')"><span
aria-hidden="true"></span> {Lang::T('Delete')} &gt; {Lang::T('3 Months')}</a> class="glyphicon glyphicon-trash" aria-hidden="true"></span> {Lang::T('Delete')} &gt; {Lang::T('3
</div> Months')}</a>
</div>
{/if} {/if}
&nbsp; &nbsp;
</div> </div>
@ -41,8 +42,8 @@
<select class="form-control" id="router" name="router"> <select class="form-control" id="router" name="router">
<option value="">{Lang::T('Location')}</option> <option value="">{Lang::T('Location')}</option>
{foreach $routers as $r} {foreach $routers as $r}
<option value="{$r}" {if $router eq $r }selected{/if}>{$r} <option value="{$r}" {if $router eq $r }selected{/if}>{$r}
</option> </option>
{/foreach} {/foreach}
</select> </select>
</div> </div>
@ -50,7 +51,7 @@
<select class="form-control" id="plan" name="plan"> <select class="form-control" id="plan" name="plan">
<option value="">{Lang::T('Plan Name')}</option> <option value="">{Lang::T('Plan Name')}</option>
{foreach $plans as $p} {foreach $plans as $p}
<option value="{$p['id']}" {if $plan eq $p['id'] }selected{/if}>{$p['name_plan']}</option> <option value="{$p['id']}" {if $plan eq $p['id'] }selected{/if}>{$p['name_plan']}</option>
{/foreach} {/foreach}
</select> </select>
</div> </div>
@ -65,7 +66,7 @@
<select class="form-control" id="customer" name="customer"> <select class="form-control" id="customer" name="customer">
<option value="">{Lang::T('Customer')}</option> <option value="">{Lang::T('Customer')}</option>
{foreach $customers as $c} {foreach $customers as $c}
<option value="{$c['user']}" {if $customer eq $c['user'] }selected{/if}>{$c['user']}</option> <option value="{$c['user']}" {if $customer eq $c['user'] }selected{/if}>{$c['user']}</option>
{/foreach} {/foreach}
</select> </select>
</div> </div>
@ -76,8 +77,8 @@
class="fa fa-search"></span></button> class="fa fa-search"></span></button>
</div> </div>
<div class="btn-group" role="group"> <div class="btn-group" role="group">
<a class="btn btn-warning btn-block" title="Clear Search Query" href="{$_url}plan/voucher/"><span <a class="btn btn-warning btn-block" title="Clear Search Query"
class="glyphicon glyphicon-remove-circle"></span></a> href="{$_url}plan/voucher/"><span class="glyphicon glyphicon-remove-circle"></span></a>
</div> </div>
</div> </div>
</div> </div>
@ -85,24 +86,25 @@
</form> </form>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table id="datatable" class="table table-bordered table-striped table-condensed"> <div style="margin-left: 5px; margin-right: 5px;">&nbsp;
<thead> <table id="datatable" class="table table-bordered table-striped table-condensed">
<tr> <thead>
<th>ID</th> <tr>
<th>{Lang::T('Type')}</th> <th>ID</th>
<th>{Lang::T('Routers')}</th> <th>{Lang::T('Type')}</th>
<th>{Lang::T('Plan Name')}</th> <th>{Lang::T('Routers')}</th>
<th>{Lang::T('Code Voucher')}</th> <th>{Lang::T('Plan Name')}</th>
<th>{Lang::T('Status Voucher')}</th> <th>{Lang::T('Code Voucher')}</th>
<th>{Lang::T('Customer')}</th> <th>{Lang::T('Status Voucher')}</th>
<th>{Lang::T('Used Date')}</th> <th>{Lang::T('Customer')}</th>
<th>{Lang::T('Generated By')}</th> <th>{Lang::T('Used Date')}</th>
<th>{Lang::T('Manage')}</th> <th>{Lang::T('Generated By')}</th>
</tr> <th>{Lang::T('Manage')}</th>
</thead> </tr>
<tbody> </thead>
{foreach $d as $ds} <tbody>
<tr {if $ds['status'] eq '1'}class="danger" {/if}> {foreach $d as $ds}
<tr {if $ds['status'] eq '1' }class="danger" {/if}>
<td>{$ds['id']}</td> <td>{$ds['id']}</td>
<td>{$ds['type']}</td> <td>{$ds['type']}</td>
<td>{$ds['routers']}</td> <td>{$ds['routers']}</td>
@ -112,33 +114,35 @@
onmouseenter="this.style.backgroundColor = 'white';"> onmouseenter="this.style.backgroundColor = 'white';">
{$ds['code']}</td> {$ds['code']}</td>
<td>{if $ds['status'] eq '0'} <label class="btn-tag btn-tag-success"> Not Use <td>{if $ds['status'] eq '0'} <label class="btn-tag btn-tag-success"> Not Use
</label> {else} <label class="btn-tag btn-tag-danger">Used</label> </label> {else} <label class="btn-tag btn-tag-danger">Used</label>
{/if}</td> {/if}</td>
<td>{if $ds['user'] eq '0'} - <td>{if $ds['user'] eq '0'} -
{else}<a href="{$_url}customers/viewu/{$ds['user']}">{$ds['user']}</a> {else}<a href="{$_url}customers/viewu/{$ds['user']}">{$ds['user']}</a>
{/if}</td> {/if}</td>
<td>{if $ds['used_date']}{Lang::dateTimeFormat($ds['used_date'])}{/if}</td> <td>{if $ds['used_date']}{Lang::dateTimeFormat($ds['used_date'])}{/if}</td>
<td>{if $ds['generated_by']} <td>{if $ds['generated_by']}
<a href="{$_url}settings/users-view/{$ds['generated_by']}">{$admins[$ds['generated_by']]}</a> <a
href="{$_url}settings/users-view/{$ds['generated_by']}">{$admins[$ds['generated_by']]}</a>
{else} - {else} -
{/if} {/if}
</td> </td>
<td> <td>
{if $ds['status'] neq '1'} {if $ds['status'] neq '1'}
<a href="{$_url}plan/voucher-view/{$ds['id']}" id="{$ds['id']}" style="margin: 0px;" <a href="{$_url}plan/voucher-view/{$ds['id']}" id="{$ds['id']}" style="margin: 0px;"
class="btn btn-success btn-xs">&nbsp;&nbsp;{Lang::T('View')}&nbsp;&nbsp;</a> class="btn btn-success btn-xs">&nbsp;&nbsp;{Lang::T('View')}&nbsp;&nbsp;</a>
{/if} {/if}
{if in_array($_admin['user_type'],['SuperAdmin','Admin'])} {if in_array($_admin['user_type'],['SuperAdmin','Admin'])}
<a href="{$_url}plan/voucher-delete/{$ds['id']}" id="{$ds['id']}" class="btn btn-danger btn-xs" <a href="{$_url}plan/voucher-delete/{$ds['id']}" id="{$ds['id']}"
onclick="return confirm('{Lang::T('Delete')}?')"><i class="btn btn-danger btn-xs" onclick="return confirm('{Lang::T('Delete')}?')"><i
class="glyphicon glyphicon-trash"></i></a> class="glyphicon glyphicon-trash"></i></a>
{/if} {/if}
</td> </td>
</tr> </tr>
{/foreach} {/foreach}
</tbody> </tbody>
</table> </table>
</div>
</div> </div>
{include file="pagination.tpl"} {include file="pagination.tpl"}
</div> </div>
{include file="sections/footer.tpl"} {include file="sections/footer.tpl"}