diff --git a/.gitignore b/.gitignore index 1f90a3e1..f9978048 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ system/config.php .vscode/ ui/compiled/*.php ui/cache/*.php -test.php \ No newline at end of file +test.php +pages/ \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index fb486e06..43d61eb9 100644 --- a/docs/index.html +++ b/docs/index.html @@ -41,7 +41,7 @@
Download Source - Disquss + Discussions
diff --git a/system/controllers/autoload.php b/system/controllers/autoload.php index 4cfcd61a..d5355493 100644 --- a/system/controllers/autoload.php +++ b/system/controllers/autoload.php @@ -20,26 +20,26 @@ switch ($action) { $routers = _get('routers'); $d = ORM::for_table('tbl_pool')->where('routers', $routers)->find_many(); $ui->assign('d',$d); - + $ui->display('autoload-pool.tpl'); break; - + case 'server': $d = ORM::for_table('tbl_routers')->find_many(); $ui->assign('d',$d); - + $ui->display('autoload-server.tpl'); break; - + case 'plan': $server = _post('server'); $jenis = _post('jenis'); $d = ORM::for_table('tbl_plans')->where('routers', $server)->where('type', $jenis)->find_many(); $ui->assign('d',$d); - + $ui->display('autoload.tpl'); break; - + default: echo 'action not defined'; } \ No newline at end of file diff --git a/system/controllers/bandwidth.php b/system/controllers/bandwidth.php index d1b82b76..d0eb1896 100644 --- a/system/controllers/bandwidth.php +++ b/system/controllers/bandwidth.php @@ -22,7 +22,7 @@ if($admin['user_type'] != 'Admin' AND $admin['user_type'] != 'Sales'){ switch ($action) { case 'list': $ui->assign('xfooter', ''); - + $name = _post('name'); if ($name != ''){ $paginator = Paginator::bootstrap('tbl_bandwidth','name_bw','%'.$name.'%'); @@ -31,7 +31,7 @@ switch ($action) { $paginator = Paginator::bootstrap('tbl_bandwidth'); $d = ORM::for_table('tbl_bandwidth')->offset($paginator['startpoint'])->limit($paginator['limit'])->order_by_desc('id')->find_many(); } - + $ui->assign('d',$d); $ui->assign('paginator',$paginator); $ui->display('bandwidth.tpl'); @@ -67,12 +67,12 @@ switch ($action) { $rate_down_unit = _post('rate_down_unit'); $rate_up = _post('rate_up'); $rate_up_unit = _post('rate_up_unit'); - + $msg = ''; if(Validator::Length($name,16,4) == false){ $msg .= 'Name should be between 5 to 15 characters'. '
'; } - + if($rate_down_unit == 'Kbps'){ $unit_rate_down = $rate_down * 1024; }else{ $unit_rate_down = $rate_down * 1048576; } if($rate_up_unit == 'Kbps'){ $unit_rate_up = $min_up * 1024; }else{ $unit_rate_up = $min_up * 1048576; } @@ -89,7 +89,7 @@ switch ($action) { $d->rate_up = $rate_up; $d->rate_up_unit = $rate_up_unit; $d->save(); - + r2(U . 'bandwidth/list', 's', $_L['Created_Successfully']); }else{ r2(U . 'bandwidth/add', 'e', $msg); @@ -129,7 +129,7 @@ switch ($action) { $d->rate_up = $rate_up; $d->rate_up_unit = $rate_up_unit; $d->save(); - + r2(U . 'bandwidth/list', 's', $_L['Updated_Successfully']); }else{ r2(U . 'bandwidth/edit/'.$id, 'e', $msg); diff --git a/system/controllers/export.php b/system/controllers/export.php index 1132e19a..b830f27c 100644 --- a/system/controllers/export.php +++ b/system/controllers/export.php @@ -35,12 +35,12 @@ switch ($action) { $d->where('recharged_on', $mdate); $d->order_by_desc('id'); $x = $d->find_many(); - + $dr = ORM::for_table('tbl_transactions'); $dr->where('recharged_on', $mdate); $dr->order_by_desc('id'); $xy = $dr->sum('price'); - + $ui->assign('d',$x); $ui->assign('dr',$xy); $ui->assign('mdate',$mdate); @@ -48,20 +48,20 @@ switch ($action) { $ui->display('print-by-date.tpl'); break; - + case 'pdf-by-date': $mdate = date('Y-m-d'); - + $d = ORM::for_table('tbl_transactions'); $d->where('recharged_on', $mdate); $d->order_by_desc('id'); $x = $d->find_many(); - + $dr = ORM::for_table('tbl_transactions'); $dr->where('recharged_on', $mdate); $dr->order_by_desc('id'); $xy = $dr->sum('price'); - + $title = ' Reports ['.$mdate.']'; $title = str_replace('-',' ',$title); @@ -89,7 +89,7 @@ switch ($action) { '; $c = true; foreach ($x as $value) { - + $username = $value['username']; $plan_name = $value['plan_name']; $type = $value['type']; @@ -135,7 +135,7 @@ switch ($action) { #address { width: 300px; float: left; } #logo { text-align: right; float: right; position: relative; margin-top: 15px; border: 5px solid #fff; overflow: hidden; } - + #customers { font-family: Helvetica, sans-serif; @@ -176,31 +176,31 @@ EOF; } break; - + case 'print-by-period': $fdate = _post('fdate'); $tdate = _post('tdate'); $stype = _post('stype'); - + $d = ORM::for_table('tbl_transactions'); if ($stype != ''){ $d->where('type', $stype); } - + $d->where_gte('recharged_on', $fdate); $d->where_lte('recharged_on', $tdate); $d->order_by_desc('id'); $x = $d->find_many(); - + $dr = ORM::for_table('tbl_transactions'); if ($stype != ''){ $dr->where('type', $stype); } - + $dr->where_gte('recharged_on', $fdate); $dr->where_lte('recharged_on', $tdate); $xy = $dr->sum('price'); - + $ui->assign('d',$x); $ui->assign('dr',$xy); $ui->assign('fdate',$fdate); @@ -209,28 +209,28 @@ EOF; $ui->display('print-by-period.tpl'); break; - - + + case 'pdf-by-period': $fdate = _post('fdate'); $tdate = _post('tdate'); $stype = _post('stype'); - + $d = ORM::for_table('tbl_transactions'); if ($stype != ''){ $d->where('type', $stype); } - + $d->where_gte('recharged_on', $fdate); $d->where_lte('recharged_on', $tdate); $d->order_by_desc('id'); $x = $d->find_many(); - + $dr = ORM::for_table('tbl_transactions'); if ($stype != ''){ $dr->where('type', $stype); } - + $dr->where_gte('recharged_on', $fdate); $dr->where_lte('recharged_on', $tdate); $xy = $dr->sum('price'); @@ -262,7 +262,7 @@ EOF; '; $c = true; foreach ($x as $value) { - + $username = $value['username']; $plan_name = $value['plan_name']; $type = $value['type']; @@ -308,7 +308,7 @@ EOF; #address { width: 300px; float: left; } #logo { text-align: right; float: right; position: relative; margin-top: 15px; border: 5px solid #fff; overflow: hidden; } - + #customers { font-family: Helvetica, sans-serif; @@ -349,7 +349,7 @@ EOF; } break; - + default: echo 'action not defined'; } \ No newline at end of file diff --git a/system/controllers/login.php b/system/controllers/login.php index 3c23850d..d7b2181f 100644 --- a/system/controllers/login.php +++ b/system/controllers/login.php @@ -1,12 +1,13 @@ where('username',$username)->find_one(); - if($d){ - $d_pass = $d['password']; - if(Password::_uverify($password,$d_pass) == true){ - $_SESSION['uid'] = $d['id']; - $d->last_login = date('Y-m-d H:i:s'); - $d->save(); - _log($username .' '. $_L['Login_Successful'],'User',$d['id']); - r2(U.'home'); - }else{ - _msglog('e',$_L['Invalid_Username_or_Password']); - _log($username .' '. $_L['Failed_Login'],'User'); - r2(U.'login'); - } - }else{ - _msglog('e',$_L['Invalid_Username_or_Password']); - r2(U.'login'); - } - }else{ - _msglog('e',$_L['Invalid_Username_or_Password']); - r2(U.'login'); - } + $username = _post('username'); + $password = _post('password'); + if ($username != '' and $password != '') { + $d = ORM::for_table('tbl_customers')->where('username', $username)->find_one(); + if ($d) { + $d_pass = $d['password']; + if (Password::_uverify($password, $d_pass) == true) { + $_SESSION['uid'] = $d['id']; + $d->last_login = date('Y-m-d H:i:s'); + $d->save(); + _log($username . ' ' . $_L['Login_Successful'], 'User', $d['id']); + r2(U . 'home'); + } else { + _msglog('e', $_L['Invalid_Username_or_Password']); + _log($username . ' ' . $_L['Failed_Login'], 'User'); + r2(U . 'login'); + } + } else { + _msglog('e', $_L['Invalid_Username_or_Password']); + r2(U . 'login'); + } + } else { + _msglog('e', $_L['Invalid_Username_or_Password']); + r2(U . 'login'); + } break; @@ -52,4 +53,3 @@ switch($do){ $ui->display('login.tpl'); break; } - diff --git a/system/controllers/register.php b/system/controllers/register.php index 9f3f7b90..df71b937 100644 --- a/system/controllers/register.php +++ b/system/controllers/register.php @@ -26,256 +26,60 @@ switch ($do) { $password = _post('password'); $cpassword = _post('cpassword'); $address = _post('address'); - $phonenumber = _post('phonenumber'); - $code = _post('kodevoucher'); - $v1 = ORM::for_table('tbl_voucher')->where('code', $code)->where('status', 0)->find_one(); - if ($v1) { - $msg = ''; - if (Validator::Length($username, 35, 2) == false) { - $msg .= 'Username should be between 3 to 55 characters' . '
'; - } - if (Validator::Length($fullname, 36, 2) == false) { - $msg .= 'Full Name should be between 3 to 25 characters' . '
'; - } - if (!Validator::Length($password, 35, 2)) { - $msg .= 'Password should be between 3 to 35 characters' . '
'; - } - if ($password != $cpassword) { - $msg .= $_L['PasswordsNotMatch'] . '
'; - } + $phonenumber = _post('username'); + $msg = ''; + if (Validator::Length($username, 35, 2) == false) { + $msg .= 'Username should be between 3 to 55 characters' . '
'; + } + if (Validator::Length($fullname, 36, 2) == false) { + $msg .= 'Full Name should be between 3 to 25 characters' . '
'; + } + if (!Validator::Length($password, 35, 2)) { + $msg .= 'Password should be between 3 to 35 characters' . '
'; + } + if ($password != $cpassword) { + $msg .= $_L['PasswordsNotMatch'] . '
'; + } - $d = ORM::for_table('tbl_customers')->where('username', $username)->find_one(); - if ($d) { - $msg .= $_L['account_already_exist'] . '
'; - } - if ($msg == '') { - $d = ORM::for_table('tbl_customers')->create(); - $d->username = $username; - $d->password = $password; - $d->fullname = $fullname; - $d->address = $address; - $d->phonenumber = $phonenumber; - if ($d->save()) { - $user = $d->id(); - //check voucher plan - $p = ORM::for_table('tbl_plans')->find_one($v1['id_plan']); - $c = ORM::for_table('tbl_customers')->find_one($user); - $p = ORM::for_table('tbl_plans')->find_one($v1['id_plan']); - - $date_now = date("Y-m-d H:i:s"); - $date_only = date("Y-m-d"); - $time = date("H:i:s"); - - $mikrotik = Router::_info($v1['routers']); - $date_exp = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d") + $p['validity'], date("Y"))); - - if ($v1['type'] == 'Hotspot') { - try { - $iport = explode(":", $mikrotik['ip_address']); - $client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'], ($iport[1]) ? $iport[1] : null); - } catch (Exception $e) { - die("Unable to connect to the router.
".$e->getMessage()); - } - /* iBNuX Added: - * Time limit to Mikrotik - * 'Time_Limit', 'Data_Limit', 'Both_Limit' - */ - $addRequest = new RouterOS\Request('/ip/hotspot/user/add'); - if ($p['typebp'] == "Limited") { - if ($p['limit_type'] == "Time_Limit") { - if ($p['time_unit'] == 'Hrs') - $timelimit = $p['time_limit'] . ":00:00"; - else - $timelimit = "00:" . $p['time_limit'] . ":00"; - $client->sendSync( - $addRequest - ->setArgument('name', $c['username']) - ->setArgument('profile', $p['name_plan']) - ->setArgument('password', $c['password']) - ->setArgument('limit-uptime', $timelimit) - ); - } else if ($p['limit_type'] == "Data_Limit") { - if ($p['data_unit'] == 'GB') - $datalimit = $p['data_limit'] . "000000000"; - else - $datalimit = $p['data_limit'] . "000000"; - $client->sendSync( - $addRequest - ->setArgument('name', $c['username']) - ->setArgument('profile', $p['name_plan']) - ->setArgument('password', $c['password']) - ->setArgument('limit-bytes-total', $datalimit) - ); - } else if ($p['limit_type'] == "Both_Limit") { - if ($p['time_unit'] == 'Hrs') - $timelimit = $p['time_limit'] . ":00:00"; - else - $timelimit = "00:" . $p['time_limit'] . ":00"; - if ($p['data_unit'] == 'GB') - $datalimit = $p['data_limit'] . "000000000"; - else - $datalimit = $p['data_limit'] . "000000"; - $client->sendSync( - $addRequest - ->setArgument('name', $c['username']) - ->setArgument('profile', $p['name_plan']) - ->setArgument('password', $c['password']) - ->setArgument('limit-uptime', $timelimit) - ->setArgument('limit-bytes-total', $datalimit) - ); - } - } else { - $client->sendSync( - $addRequest - ->setArgument('name', $c['username']) - ->setArgument('profile', $p['name_plan']) - ->setArgument('password', $c['password']) - ); - } - - $d = ORM::for_table('tbl_user_recharges')->create(); - $d->customer_id = $user; - $d->username = $c['username']; - $d->plan_id = $v1['id_plan']; - $d->namebp = $p['name_plan']; - $d->recharged_on = $date_only; - $d->expiration = $date_exp; - $d->time = $time; - $d->status = "on"; - $d->method = "voucher"; - $d->routers = $v1['routers']; - $d->type = "Hotspot"; - $d->save(); - - // insert table transactions - $t = ORM::for_table('tbl_transactions')->create(); - $t->invoice = "INV-" . _raid(5); - $t->username = $c['username']; - $t->plan_name = $p['name_plan']; - $t->price = $p['price']; - $t->recharged_on = $date_only; - $t->expiration = $date_exp; - $t->time = $time; - $t->method = "voucher"; - $t->routers = $v1['routers']; - $t->type = "Hotspot"; - $t->save(); - - $v1->status = "1"; - $v1->user = $c['username']; - $v1->save(); - } else { - try { - $iport = explode(":", $mikrotik['ip_address']); - $client = new RouterOS\Client($iport[0], $mikrotik['username'], $mikrotik['password'], ($iport[1]) ? $iport[1] : null); - } catch (Exception $e) { - die("Unable to connect to the router.
".$e->getMessage()); - } - $addRequest = new RouterOS\Request('/ppp/secret/add'); - $client->sendSync( - $addRequest - ->setArgument('name', $c['username']) - ->setArgument('service', 'pppoe') - ->setArgument('profile', $p['name_plan']) - ->setArgument('password', $c['password']) - ); - - $d = ORM::for_table('tbl_user_recharges')->create(); - $d->customer_id = $user; - $d->username = $c['username']; - $d->plan_id = $v1['id_plan']; - $d->namebp = $p['name_plan']; - $d->recharged_on = $date_only; - $d->expiration = $date_exp; - $d->time = $time; - $d->status = "on"; - $d->method = "voucher"; - $d->routers = $v1['routers']; - $d->type = "PPPOE"; - $d->save(); - - // insert table transactions - $t = ORM::for_table('tbl_transactions')->create(); - $t->invoice = "INV-" . _raid(5); - $t->username = $c['username']; - $t->plan_name = $p['name_plan']; - $t->price = $p['price']; - $t->recharged_on = $date_only; - $t->expiration = $date_exp; - $t->time = $time; - $t->method = "voucher"; - $t->routers = $v1['routers']; - $t->type = "PPPOE"; - $t->save(); - - $v1->status = "1"; - $v1->user = $c['username']; - $v1->save(); - } - r2(U . 'login', 's', $_L['Register_Success']); - } else { - $ui->assign('username', $username); - $ui->assign('fullname', $fullname); - $ui->assign('address', $address); - $ui->assign('phonenumber', $phonenumber); - $ui->assign('notify', '
- -
Failed to register
'); - $ui->display('register.tpl'); - } - //r2(U . 'register', 's', $_L['account_created_successfully']); + $d = ORM::for_table('tbl_customers')->where('username', $username)->find_one(); + if ($d) { + $msg .= $_L['account_already_exist'] . '
'; + } + if ($msg == '') { + $d = ORM::for_table('tbl_customers')->create(); + $d->username = $username; + $d->password = $password; + $d->fullname = $fullname; + $d->address = $address; + $d->phonenumber = $phonenumber; + if ($d->save()) { + $user = $d->id(); + r2(U . 'login', 's', $_L['Register_Success']); } else { $ui->assign('username', $username); $ui->assign('fullname', $fullname); $ui->assign('address', $address); $ui->assign('phonenumber', $phonenumber); $ui->assign('notify', '
- -
' . $msg . '
'); + +
Failed to register
'); $ui->display('register.tpl'); } + //r2(U . 'register', 's', $_L['account_created_successfully']); } else { $ui->assign('username', $username); $ui->assign('fullname', $fullname); $ui->assign('address', $address); $ui->assign('phonenumber', $phonenumber); $ui->assign('notify', '
- -
' . $_L['Voucher_Not_Valid'] . '
'); + +
' . $msg . '
'); $ui->display('register.tpl'); - //r2(U . 'register', 'e', $_L['Voucher_Not_Valid']); } - /*$password = _post('password'); - if($username != '' AND $password != ''){ - $d = ORM::for_table('tbl_customers')->where('username',$username)->find_one(); - if($d){ - $d_pass = $d['password']; - if(Password::_uverify($password,$d_pass) == true){ - $_SESSION['uid'] = $d['id']; - $d->last_login = date('Y-m-d H:i:s'); - $d->save(); - _log($username .' '. $_L['Login_Successful'],'User',$d['id']); - r2(U.'home'); - }else{ - _msglog('e',$_L['Invalid_Username_or_Password']); - _log($username .' '. $_L['Failed_Login'],'User'); - r2(U.'login'); - } - }else{ - _msglog('e',$_L['Invalid_Username_or_Password']); - r2(U.'login'); - } - }else{ - _msglog('e',$_L['Invalid_Username_or_Password']); - r2(U.'login'); - }*/ - break; default: diff --git a/system/controllers/settings.php b/system/controllers/settings.php index a022ac6d..959f7212 100644 --- a/system/controllers/settings.php +++ b/system/controllers/settings.php @@ -204,9 +204,11 @@ switch ($action) { case 'app-post': $company = _post('company'); - $theme = _post('theme'); + $telegram_bot = _post('telegram_bot'); + $telegram_target_id = _post('telegram_target_id'); + $sms_url = _post('sms_url'); $address = _post('address'); - if ($company == '' or $theme == '' or $address == '') { + if ($company == '') { r2(U . 'settings/app', 'e', $_L['All_field_is_required']); } else { $d = ORM::for_table('tbl_appconfig')->where('setting', 'CompanyName')->find_one(); @@ -222,9 +224,38 @@ switch ($action) { $d->value = $phone; $d->save(); - $d = ORM::for_table('tbl_appconfig')->where('setting', 'theme')->find_one(); - $d->value = $theme; - $d->save(); + $d = ORM::for_table('tbl_appconfig')->where('setting', 'telegram_bot')->find_one(); + if($d){ + $d->value = $telegram_bot; + $d->save(); + }else{ + $d = ORM::for_table('tbl_appconfig')->create(); + $d->setting = 'telegram_bot'; + $d->value = $telegram_bot; + $d->save(); + } + + $d = ORM::for_table('tbl_appconfig')->where('setting', 'telegram_target_id')->find_one(); + if($d){ + $d->value = $telegram_target_id; + $d->save(); + }else{ + $d = ORM::for_table('tbl_appconfig')->create(); + $d->setting = 'telegram_target_id'; + $d->value = $telegram_target_id; + $d->save(); + } + + $d = ORM::for_table('tbl_appconfig')->where('setting', 'sms_url')->find_one(); + if($d){ + $d->setting = $sms_url; + $d->save(); + }else{ + $d = ORM::for_table('tbl_appconfig')->create(); + $d->setting = 'sms_url'; + $d->value = $sms_url; + $d->save(); + } $note = _post('note'); $d = ORM::for_table('tbl_appconfig')->where('setting', 'note')->find_one(); diff --git a/system/lan/english/common.lan.php b/system/lan/english/common.lan.php index 51970375..992d28c3 100644 --- a/system/lan/english/common.lan.php +++ b/system/lan/english/common.lan.php @@ -219,7 +219,7 @@ $_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'] = 'PHPMixBill 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.
Watch project in here'; -//update +//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'; diff --git a/system/lan/indonesia/common.lan.php b/system/lan/indonesia/common.lan.php index 45dc5f29..a8fef15c 100644 --- a/system/lan/indonesia/common.lan.php +++ b/system/lan/indonesia/common.lan.php @@ -12,7 +12,7 @@ Contributor: Ibnu Maksum (@ibnux) ------------------------------------ */ -$_L['Login'] = 'Masuk'; +$_L['Login'] = 'Masuk'; $_L['Register'] = 'Daftar'; $_L['Announcement'] = 'Pengumuman'; $_L['Registration_Info'] = 'Info Pendaftaran'; diff --git a/system/lan/turkish/common.lan.php b/system/lan/turkish/common.lan.php index 253cb76b..1f53231f 100755 --- a/system/lan/turkish/common.lan.php +++ b/system/lan/turkish/common.lan.php @@ -3,7 +3,7 @@ ----------------------------------- Language Name: Turkish Contributor: Goktug Bogac OGEL -Web: +Web: Email: goktugogel@gmail.com ------------------------------------ */ diff --git a/ui/theme/default/app-settings.tpl b/ui/theme/default/app-settings.tpl index ac5a9a90..bef1ecf2 100644 --- a/ui/theme/default/app-settings.tpl +++ b/ui/theme/default/app-settings.tpl @@ -1,57 +1,83 @@ {include file="sections/header.tpl"} -
-
-
-
{$_L['General_Settings']}
-
- -
+ +
+
+
+
{$_L['General_Settings']}
+
- -
- - {$_L['App_Name_Help_Text']} -
+ +
+ + {$_L['App_Name_Help_Text']} +
-
- -
- - {$_L['You_can_use_html_tag']} -
+
+ +
+ + {$_L['You_can_use_html_tag']} +
-
- -
- -
+
+ +
+ +
- -
-
+
+ +
+ +
+
+
+
SMS/Whatsapp Notification
+
+
+ +
+ +

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

+
+
+
+
Invoice
+
+
+ +
+ + {$_L['You_can_use_html_tag']} +
+
+
+
+ +
+
+
+
+
+
+ {include file="sections/footer.tpl"} diff --git a/ui/theme/default/register.tpl b/ui/theme/default/register.tpl index 39afc3d7..5e3d63ee 100644 --- a/ui/theme/default/register.tpl +++ b/ui/theme/default/register.tpl @@ -5,7 +5,7 @@ {$_title} - {$_L['Register']} - + @@ -13,14 +13,14 @@ - + - + @@ -65,10 +65,6 @@
-
- - -
@@ -86,11 +82,6 @@ -
-
- - -
@@ -98,7 +89,7 @@ -
+
diff --git a/ui/theme/default/sections/header.tpl b/ui/theme/default/sections/header.tpl index 1b375536..646bdc15 100644 --- a/ui/theme/default/sections/header.tpl +++ b/ui/theme/default/sections/header.tpl @@ -263,9 +263,9 @@
  • - + - Disquss + Discussions
  • {/if} diff --git a/ui/theme/default/user-dashboard.tpl b/ui/theme/default/user-dashboard.tpl index 3a7cc7a4..85d26c61 100644 --- a/ui/theme/default/user-dashboard.tpl +++ b/ui/theme/default/user-dashboard.tpl @@ -2,34 +2,6 @@
    -
    -
    {$_L['Welcome']}, {$_user['fullname']}
    -
    -

    {$_L['Welcome_Text_User']}

    - -
    -
    -
    -
    -
    -
    -
    {$_L['Announcement']}
    -
    - {include file="$_path/../pages/Announcement.html"} -
    -
    -
    -
    -
    -
    -
    {$_L['Account_Information']}
    @@ -51,9 +23,7 @@
    -
    -
    -
    +
    {$_L['Voucher_Activation']}
    @@ -64,16 +34,25 @@
    - +
    - +
    +
    +
    +
    +
    {$_L['Announcement']}
    +
    + {include file="$_path/../pages/Announcement.html"} +
    +
    +
    {include file="sections/user-footer.tpl"}