1 files added
16 files modified
| | |
| | | $page = $_REQUEST["s_pg"]; |
| | | */ |
| | | |
| | | $module = 'login'; |
| | | $page = 'index'; |
| | | $module = 'dashboard'; |
| | | $page = 'dashboard'; |
| | | |
| | | if(!preg_match("/^[a-z]{2,20}$/i", $module)) die('module name contains unallowed chars.'); |
| | | if(!preg_match("/^[a-z]{2,20}$/i", $page)) die('page name contains unallowed chars.'); |
| | |
| | | require_once '../lib/config.inc.php'; |
| | | require_once '../lib/app.inc.php'; |
| | | |
| | | if(!isset($_SESSION['s']['module']['name'])) $_SESSION['s']['module']['name'] = 'login'; |
| | | // Check if we have an active users ession and redirect to login if thats not the case. |
| | | if($_SESSION['s']['user']['active'] != 1) { |
| | | header('Location: /login/'); |
| | | die(); |
| | | } |
| | | |
| | | if(!isset($_SESSION['s']['module']['name'])) $_SESSION['s']['module']['name'] = 'dashboard'; |
| | | |
| | | $app->uses('tpl'); |
| | | $app->tpl->newTemplate('main.tpl.htm'); |
| | |
| | | <?php |
| | | |
| | | /* |
| | | Copyright (c) 2005, Till Brehm, projektfarm Gmbh |
| | | Copyright (c) 2005 - 2015, Till Brehm, ISPConfig UG |
| | | All rights reserved. |
| | | |
| | | Redistribution and use in source and binary forms, with or without modification, |
| | |
| | | EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| | | */ |
| | | |
| | | // |
| | | require_once '../../lib/config.inc.php'; |
| | | require_once '../../lib/app.inc.php'; |
| | | |
| | | class login_index { |
| | | |
| | | public $status = ''; |
| | | private $target = ''; |
| | | private $app; |
| | | private $conf; |
| | | |
| | | public function render() { |
| | | |
| | | global $app, $conf; |
| | | |
| | | /* Redirect to page, if login form was NOT send */ |
| | | if(count($_POST) == 0) { |
| | | if(isset($_SESSION['s']['user']) && is_array($_SESSION['s']['user']) && is_array($_SESSION['s']['module'])) { |
| | | die('HEADER_REDIRECT:'.$_SESSION['s']['module']['startpage']); |
| | | } |
| | | // Check if we have an active users ession and no login_as. |
| | | if($_SESSION['s']['user']['active'] == 1 && @$_POST['login_as'] != 1) { |
| | | header('Location: /index.php'); |
| | | die(); |
| | | } |
| | | |
| | | $app->uses('tpl'); |
| | | $app->tpl->newTemplate('form.tpl.htm'); |
| | | $app->tpl->newTemplate('main_login.tpl.htm'); |
| | | $app->tpl->setInclude('content_tpl', 'templates/index.htm'); |
| | | |
| | | $error = ''; |
| | | |
| | |
| | | |
| | | //** Check variables |
| | | if(!preg_match("/^[\w\.\-\_\@]{1,128}$/", $_POST['username'])) $error = $app->lng('user_regex_error'); |
| | | if(!preg_match("/^.{1,64}$/i", $_POST['passwort'])) $error = $app->lng('pw_error_length'); |
| | | if(!preg_match("/^.{1,64}$/i", $_POST['password'])) $error = $app->lng('pw_error_length'); |
| | | |
| | | //** iporting variables |
| | | //** importing variables |
| | | $ip = ip2long($_SERVER['REMOTE_ADDR']); |
| | | $username = $_POST['username']; |
| | | $passwort = $_POST['passwort']; |
| | | $password = $_POST['password']; |
| | | $loginAs = false; |
| | | $time = time(); |
| | | |
| | | if($username != '' && $passwort != '' && $error == '') { |
| | | if($username != '' && $password != '' && $error == '') { |
| | | /* |
| | | * Check, if there is a "login as" instead of a "normal" login |
| | | */ |
| | |
| | | |
| | | /* this is the reseller, that shall be re-logged in */ |
| | | $sql = "SELECT * FROM sys_user WHERE USERNAME = ? and PASSWORT = ?"; |
| | | $tmp = $app->db->queryOneRecord($sql, $username, $passwort); |
| | | $tmp = $app->db->queryOneRecord($sql, $username, $password); |
| | | $client_group_id = $app->functions->intval($tmp['default_group']); |
| | | $tmp_client = $app->db->queryOneRecord("SELECT client.client_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id); |
| | | |
| | |
| | | |
| | | /* this is the user the reseller wants to 'login as' */ |
| | | $sql = "SELECT * FROM sys_user WHERE USERNAME = ? and PASSWORT = ?"; |
| | | $tmp = $app->db->queryOneRecord($sql, $username, $passwort); |
| | | $tmp = $app->db->queryOneRecord($sql, $username, $password); |
| | | $tmp_client = $app->db->queryOneRecord("SELECT client.client_id, client.parent_client_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $tmp["default_group"]); |
| | | |
| | | if(!$tmp || $tmp_client["parent_client_id"] != $res_client["client_id"]) { |
| | |
| | | unset($tmp_client); |
| | | } |
| | | $loginAs = true; |
| | | } |
| | | else { |
| | | |
| | | } else { |
| | | /* normal login */ |
| | | $loginAs = false; |
| | | } |
| | |
| | | //* Check if there are already wrong logins |
| | | $sql = "SELECT * FROM `attempts_login` WHERE `ip`= ? AND `login_time` > (NOW() - INTERVAL 1 MINUTE) LIMIT 1"; |
| | | $alreadyfailed = $app->db->queryOneRecord($sql, $ip); |
| | | |
| | | //* too many failedlogins |
| | | if($alreadyfailed['times'] > 5) { |
| | | $error = $app->lng('error_user_too_many_logins'); |
| | |
| | | |
| | | if ($loginAs){ |
| | | $sql = "SELECT * FROM sys_user WHERE USERNAME = ? and PASSWORT = ?"; |
| | | $user = $app->db->queryOneRecord($sql, $username, $passwort); |
| | | $user = $app->db->queryOneRecord($sql, $username, $password); |
| | | } else { |
| | | |
| | | if(stristr($username, '@')) { |
| | | //* mailuser login |
| | | $sql = "SELECT * FROM mail_user WHERE login = ? or email = ?"; |
| | |
| | | $saved_password = stripslashes($mailuser['password']); |
| | | $salt = '$1$'.substr($saved_password, 3, 8).'$'; |
| | | //* Check if mailuser password is correct |
| | | if(crypt(stripslashes($passwort), $salt) == $saved_password) { |
| | | if(crypt(stripslashes($password), $salt) == $saved_password) { |
| | | //* we build a fake user here which has access to the mailuser module only and userid 0 |
| | | $user = array(); |
| | | $user['userid'] = 0; |
| | |
| | | $user['default_group'] = $mailuser['sys_groupid']; |
| | | } |
| | | } |
| | | |
| | | } else { |
| | | //* normal cp user login |
| | | $sql = "SELECT * FROM sys_user WHERE USERNAME = ?"; |
| | | $user = $app->db->queryOneRecord($sql, $username); |
| | | |
| | | if($user) { |
| | | $saved_password = stripslashes($user['passwort']); |
| | | |
| | | if(substr($saved_password, 0, 3) == '$1$') { |
| | | //* The password is crypt-md5 encrypted |
| | | $salt = '$1$'.substr($saved_password, 3, 8).'$'; |
| | | |
| | | if(crypt(stripslashes($passwort), $salt) != $saved_password) { |
| | | if(crypt(stripslashes($password), $salt) != $saved_password) { |
| | | $user = false; |
| | | } |
| | | } elseif(substr($saved_password, 0, 3) == '$5$') { |
| | | //* The password is crypt-sha256 encrypted |
| | | $salt = '$5$'.substr($saved_password, 3, 16).'$'; |
| | | |
| | | if(crypt(stripslashes($passwort), $salt) != $saved_password) { |
| | | if(crypt(stripslashes($password), $salt) != $saved_password) { |
| | | $user = false; |
| | | } |
| | | } else { |
| | | |
| | | //* The password is md5 encrypted |
| | | if(md5($passwort) != $saved_password) { |
| | | if(md5($password) != $saved_password) { |
| | | $user = false; |
| | | } |
| | | } |
| | |
| | | if($user['active'] == 1) { |
| | | // Maintenance mode - allow logins only when maintenance mode is off or if the user is admin |
| | | if(!$maintenance_mode || $user['typ'] == 'admin'){ |
| | | |
| | | // User login right, so attempts can be deleted |
| | | $sql = "DELETE FROM `attempts_login` WHERE `ip`=?"; |
| | | $app->db->query($sql, $ip); |
| | | $user = $app->db->toLower($user); |
| | | |
| | | if ($loginAs) $oldSession = $_SESSION['s']; |
| | | session_regenerate_id(); |
| | | if (!$loginAs) session_regenerate_id(true); |
| | | $_SESSION = array(); |
| | | if ($loginAs) $_SESSION['s_old'] = $oldSession; // keep the way back! |
| | | $_SESSION['s']['user'] = $user; |
| | |
| | | if(is_file($_SESSION['s']['user']['startmodule'].'/lib/module.conf.php')) { |
| | | include_once $_SESSION['s']['user']['startmodule'].'/lib/module.conf.php'; |
| | | $menu_dir = ISPC_WEB_PATH.'/' . $_SESSION['s']['user']['startmodule'] . '/lib/menu.d'; |
| | | |
| | | if (is_dir($menu_dir)) { |
| | | if ($dh = opendir($menu_dir)) { |
| | | //** Go through all files in the menu dir |
| | |
| | | } |
| | | $_SESSION['s']['module'] = $module; |
| | | } |
| | | |
| | | // check if the user theme is valid |
| | | if($_SESSION['s']['user']['theme'] != 'default') { |
| | | $tmp_path = ISPC_THEMES_PATH."/".$_SESSION['s']['user']['theme']; |
| | |
| | | * We need LOGIN_REDIRECT instead of HEADER_REDIRECT to load the |
| | | * new theme, if the logged-in user has another |
| | | */ |
| | | echo 'LOGIN_REDIRECT:'.$_SESSION['s']['module']['startpage']; |
| | | |
| | | if ($loginAs){ |
| | | echo 'LOGIN_REDIRECT:'.$_SESSION['s']['module']['startpage']; |
| | | exit; |
| | | } else { |
| | | header('Location: /index.php?phpsessid='.session_id()); |
| | | die(); |
| | | } |
| | | } |
| | | } else { |
| | | $error = $app->lng('error_user_blocked'); |
| | | } |
| | | |
| | | } else { |
| | | if(!$alreadyfailed['times'] ) |
| | | { |
| | |
| | | if($app->db->errorMessage != '') $error .= '<br />'.$app->db->errorMessage != ''; |
| | | |
| | | $app->plugin->raiseEvent('login_failed', $this); |
| | | |
| | | //* Save failed login message to var |
| | | $authlog = 'Failed login for user \''. $username .'\' from '. long2ip($ip) .' at '. date('Y-m-d H:i:s'); |
| | | $authlog_handle = fopen($conf['ispconfig_log_dir'].'/auth.log', 'a'); |
| | |
| | | fclose($authlog_handle); |
| | | } |
| | | } |
| | | |
| | | } else { |
| | | //* Username or password empty |
| | | if($error == '') $error = $app->lng('error_user_password_empty'); |
| | | |
| | | $app->plugin->raiseEvent('login_empty', $this); |
| | | } |
| | | } |
| | |
| | | $app->tpl->setVar('login_button_txt', $app->lng('login_button_txt')); |
| | | $app->tpl->setVar('session_timeout', $server_config_array['session_timeout']); |
| | | $app->tpl->setVar('session_allow_endless', $server_config_array['session_allow_endless']); |
| | | $app->tpl->setInclude('content_tpl', 'login/templates/index.htm'); |
| | | //$app->tpl->setInclude('content_tpl', 'login/templates/index.htm'); |
| | | $app->tpl->setVar('current_theme', isset($_SESSION['s']['theme']) ? $_SESSION['s']['theme'] : 'default'); |
| | | //die(isset($_SESSION['s']['theme']) ? $_SESSION['s']['theme'] : 'default'); |
| | | |
| | | // Logo |
| | | $logo = $app->db->queryOneRecord("SELECT * FROM sys_ini WHERE sysini_id = 1"); |
| | | if($logo['custom_logo'] != ''){ |
| | | $base64_logo_txt = $logo['custom_logo']; |
| | | } else { |
| | | $base64_logo_txt = $logo['default_logo']; |
| | | } |
| | | $tmp_base64 = explode(',', $base64_logo_txt, 2); |
| | | $logo_dimensions = $app->functions->getimagesizefromstring(base64_decode($tmp_base64[1])); |
| | | $app->tpl->setVar('base64_logo_width', $logo_dimensions[0].'px'); |
| | | $app->tpl->setVar('base64_logo_height', $logo_dimensions[1].'px'); |
| | | $app->tpl->setVar('base64_logo_txt', $base64_logo_txt); |
| | | |
| | | // Title |
| | | $app->tpl->setVar('company_name', $sys_config['company_name']. ' :: '); |
| | | |
| | | $app->tpl_defaults(); |
| | | |
| | | $this->status = 'OK'; |
| | | |
| | | return $app->tpl->grab(); |
| | | |
| | | } // << end function |
| | | |
| | | } // << end class |
| | | $app->tpl->pparse(); |
| | | |
| | | ?> |
| | |
| | | $wb['pw_reset_mail_msg'] = 'The password to your ISPConfig 3 control panel account has been reset. The new password is: '; |
| | | $wb['pw_reset_mail_title'] = 'ISPConfig 3 Control panel password has been reset.'; |
| | | $wb['user_regex_error'] = 'Username contains unallowed characters or is longer then 64 characters.'; |
| | | $wb['pw_error_length'] = 'The password length is > 64 characters.'; |
| | | $wb['pw_error_length'] = 'The password length is < 1 or > 64 characters.'; |
| | | $wb['username_txt'] = 'Username'; |
| | | $wb['password_txt'] = 'Password'; |
| | | $wb['login_button_txt'] = 'Login'; |
| | |
| | | $wb['pw_reset_mail_msg'] = 'Новата парола за вашия ISPConfig 3 контролен панел е:'; |
| | | $wb['pw_reset_mail_title'] = 'Нова парола за вашия ISPConfig 3 контролен панел'; |
| | | $wb['user_regex_error'] = 'Потребителско име contains unallowed characters or is longer then 64 characters.'; |
| | | $wb['pw_error_length'] = 'The password length is > 64 characters.'; |
| | | $wb['pw_error_length'] = 'The password length is < 1 or > 64 characters.'; |
| | | $wb['error_user_password_empty'] = 'Потребителско име or Password empty.'; |
| | | $wb['error_user_password_incorrect'] = 'Потребителско име or Password wrong.'; |
| | | $wb['error_user_blocked'] = 'User is blocked.'; |
| | |
| | | $wb['pw_error_noinput'] = 'Favor informar nome de usuário e endereço de correio válidos.'; |
| | | $wb['pw_reset_mail_msg'] = 'Sua senha do painel de controle foi restabelecida. A sua nova senha é: '; |
| | | $wb['pw_reset_mail_title'] = 'Sua senha do painel de controle foi restabelecida.'; |
| | | $wb['user_regex_error'] = 'O nome de usuário contém mais de 64 caracteres ou contém caracteres inválidos.'; |
| | | $wb['user_regex_error'] = 'O nome de usuário contém < 1 or mais de 64 caracteres ou contém caracteres inválidos.'; |
| | | $wb['pw_error_length'] = 'Tamanho da senha não pode ser maior do que 64 caracteres.'; |
| | | $wb['username_txt'] = 'Usuário'; |
| | | $wb['password_txt'] = 'Senha'; |
| | |
| | | $wb['pw_reset_mail_msg'] = 'Das Passwort wurde zurückgesetzt. Das neue Passwort lautet: '; |
| | | $wb['pw_reset_mail_title'] = 'Ihr Passwort wurde zurückgesetzt.'; |
| | | $wb['user_regex_error'] = 'Benutzername beinhaltet nicht erlaubte Zeichen oder ist länger als 64 Zeichen.'; |
| | | $wb['pw_error_length'] = 'Die Passwortlänge ist > 64 Zeichen.'; |
| | | $wb['pw_error_length'] = 'Die Passwortlänge ist < 1 oder > 64 Zeichen.'; |
| | | $wb['login_txt'] = 'Anmelden'; |
| | | $wb['username_txt'] = 'Benutzername'; |
| | | $wb['password_txt'] = 'Passwort'; |
| | |
| | | $wb['pw_reset_mail_msg'] = 'The password to your ISPConfig 3 control panel account has been reset. The new password is: '; |
| | | $wb['pw_reset_mail_title'] = 'ISPConfig 3 Control panel password has been reset.'; |
| | | $wb['user_regex_error'] = 'Username contains unallowed characters or is longer than 64 characters.'; |
| | | $wb['pw_error_length'] = 'The password length is > 64 characters.'; |
| | | $wb['pw_error_length'] = 'The password length is < 1 or > 64 characters.'; |
| | | $wb['email_error'] = 'Email contains unallowed characters or has a invalid format.'; |
| | | $wb['login_txt'] = "Login"; |
| | | $wb['username_txt'] = "Username"; |
| | |
| | | '.$wb['login_2_txt'].'<br /> |
| | | <div style="visibility:hidden"> |
| | | <input type="text" name="username" value="' . $dbData['username'] . '" /> |
| | | <input type="password" name="passwort" value="' . $dbData['passwort'] .'" /> |
| | | <input type="password" name="password" value="' . $dbData['passwort'] .'" /> |
| | | </div> |
| | | <input type="hidden" name="s_mod" value="login" /> |
| | | <input type="hidden" name="s_pg" value="index" /> |
| | | <input type="hidden" name="s_mod" value="dashboard" /> |
| | | <input type="hidden" name="s_pg" value="dashboard" /> |
| | | <input type="hidden" name="login_as" value="1" /> |
| | | <div class="wf_actions buttons"> |
| | | <button class="positive iconstxt icoPositive" type="button" value="'.$wb['btn_yes_txt'].'" onclick="submitLoginForm(' . "'pageForm'" . ');"><span>'.$wb['btn_yes_txt'].'</span></button> |
| | | <button class="positive iconstxt icoPositive" type="button" value="'.$wb['btn_yes_txt'].'" data-submit-form="pageForm" data-form-action="/login/index.php"><span>'.$wb['btn_yes_txt'].'</span></button> |
| | | <button class="negative iconstxt icoNegative" type="button" value="'.$wb['btn_back_txt'].'" data-load-content="'.$backlink.'"><span>'.$wb['btn_back_txt'].'</span></button> |
| | | </div> |
| | | '; |
| | |
| | | '.str_replace('{UTYPE}', $utype, $wb['login_as_or_logout_txt']).'<br /> |
| | | <div style="visibility:hidden"> |
| | | <input type="text" name="username" value="' . $_SESSION['s_old']['user']['username'] . '" /> |
| | | <input type="password" name="passwort" value="' . $_SESSION['s_old']['user']['passwort'] .'" /> |
| | | <input type="password" name="password" value="' . $_SESSION['s_old']['user']['passwort'] .'" /> |
| | | </div> |
| | | <input type="hidden" name="s_mod" value="login" /> |
| | | <input type="hidden" name="s_pg" value="index" /> |
| | | <input type="hidden" name="login_as" value="1" /> |
| | | <div class="wf_actions buttons"> |
| | | <button class="positive iconstxt icoPositive" type="button" value="Yes, re-login as ' . $utype . '" onclick="submitLoginForm(' . "'pageForm'" . ');"><span>Yes, re-login as ' . $utype . '</span></button> |
| | | <button class="positive iconstxt icoPositive" type="button" value="Yes, re-login as ' . $utype . '" data-submit-form="pageForm" data-form-action="/login/index.php"><span>Yes, re-login as ' . $utype . '</span></button> |
| | | <button class="negative iconstxt icoNegative" type="button" value="No, logout" data-load-content="login/logout.php?l=1"><span>No, logout</span></button> |
| | | </div> |
| | | '; |
| | |
| | | <?php |
| | | |
| | | /* |
| | | Copyright (c) 2008, Till Brehm, projektfarm Gmbh |
| | | Copyright (c) 2008 - 2015, Till Brehm, ISPConfig UG |
| | | All rights reserved. |
| | | |
| | | Redistribution and use in source and binary forms, with or without modification, |
| | |
| | | |
| | | // Loading the template |
| | | $app->uses('tpl'); |
| | | $app->tpl->newTemplate("form.tpl.htm"); |
| | | $app->tpl->newTemplate('main_login.tpl.htm'); |
| | | $app->tpl->setInclude('content_tpl', 'templates/password_reset.htm'); |
| | | |
| | | $app->tpl_defaults(); |
| | | |
| | | include ISPC_ROOT_PATH.'/web/login/lib/lang/'.$_SESSION['s']['language'].'.lng'; |
| | | $app->tpl->setVar($wb); |
| | | $continue = true; |
| | | |
| | | if(isset($_POST['username']) && $_POST['username'] != '' && $_POST['email'] != '' && $_POST['username'] != 'admin') { |
| | | |
| | | if(!preg_match("/^[\w\.\-\_]{1,64}$/", $_POST['username'])) die($app->lng('user_regex_error')); |
| | | if(!preg_match("/^\w+[\w.-]*\w+@\w+[\w.-]*\w+\.[a-z]{2,10}$/i", $_POST['email'])) die($app->lng('email_error')); |
| | | if(!preg_match("/^[\w\.\-\_]{1,64}$/", $_POST['username'])) { |
| | | $app->tpl->setVar("error", $wb['user_regex_error']); |
| | | $continue = false; |
| | | } |
| | | if(!preg_match("/^\w+[\w.-]*\w+@\w+[\w.-]*\w+\.[a-z]{2,10}$/i", $_POST['email'])) { |
| | | $app->tpl->setVar("error", $wb['email_error']); |
| | | $continue = false; |
| | | } |
| | | |
| | | $username = $_POST['username']; |
| | | $email = $_POST['email']; |
| | |
| | | |
| | | if($client['lost_password_function'] == 0) { |
| | | $app->tpl->setVar("error", $wb['lost_password_function_disabled_txt']); |
| | | } else { |
| | | } elseif ($continue) { |
| | | if($client['client_id'] > 0) { |
| | | $server_config_array = $app->getconf->get_global_config(); |
| | | $min_password_length = 8; |
| | |
| | | } |
| | | } |
| | | } else { |
| | | $app->tpl->setVar("msg", $wb['pw_error_noinput']); |
| | | if(isset($_POST) && count($_POST) > 0) $app->tpl->setVar("msg", $wb['pw_error_noinput']); |
| | | } |
| | | |
| | | $app->tpl->setVar('current_theme', isset($_SESSION['s']['theme']) ? $_SESSION['s']['theme'] : 'default'); |
| | | |
| | | // Logo |
| | | $logo = $app->db->queryOneRecord("SELECT * FROM sys_ini WHERE sysini_id = 1"); |
| | | if($logo['custom_logo'] != ''){ |
| | | $base64_logo_txt = $logo['custom_logo']; |
| | | } else { |
| | | $base64_logo_txt = $logo['default_logo']; |
| | | } |
| | | $tmp_base64 = explode(',', $base64_logo_txt, 2); |
| | | $logo_dimensions = $app->functions->getimagesizefromstring(base64_decode($tmp_base64[1])); |
| | | $app->tpl->setVar('base64_logo_width', $logo_dimensions[0].'px'); |
| | | $app->tpl->setVar('base64_logo_height', $logo_dimensions[1].'px'); |
| | | $app->tpl->setVar('base64_logo_txt', $base64_logo_txt); |
| | | |
| | | // Title |
| | | $app->tpl->setVar('company_name', $sys_config['company_name']. ' :: '); |
| | | |
| | | $app->tpl_defaults(); |
| | | $app->tpl->pparse(); |
| | |
| | | <div class='page-header'> |
| | | <h1><tmpl_var name="login_txt"></h1> |
| | | </div> |
| | | <p><tmpl_var name="list_desc_txt"></p> |
| | | |
| | | <div class="panel panel_login"> |
| | | |
| | | <tmpl_if name="msg"> |
| | | <div id="OKMsg"><p><tmpl_var name="msg"></p></div> |
| | | </tmpl_if> |
| | | <tmpl_if name="error"> |
| | | <div id="errorMsg"><h3>{tmpl_var name='error_txt'}</h3><ol><li><tmpl_var name="error"></li></ol><br /><a href="#" data-load-content="login/password_reset.php">{tmpl_var name='pw_lost_txt'}</a></div> |
| | | <div class="alert alert-danger" role="alert"><tmpl_var name="error"></div> |
| | | </tmpl_if> |
| | | |
| | | <div class="pnl_formsarea"> |
| | | <form accept-charset="UTF-8" role="form" method="post" action="index.php"> |
| | | <fieldset> |
| | | <div class="form-group"> |
| | | <label for="username" class="col-sm-3 control-label">{tmpl_var name='username_txt'}</label> |
| | | <div class="col-sm-9"><input type="text" name="username" id="username" value="" class="form-control" onkeypress="if (event.keyCode && event.keyCode == 13) {ISPConfig.submitLoginForm('pageForm'); return false;};" /></div></div> |
| | | <input class="form-control" placeholder="{tmpl_var name='username_txt'}" name="username" id="username" type="text"> |
| | | </div> |
| | | <div class="form-group"> |
| | | <label for="passwort" class="col-sm-3 control-label">{tmpl_var name='password_txt'}</label> |
| | | <div class="col-sm-9"><input type="password" name="passwort" id="passwort" value="" class="form-control" onkeypress="if (event.keyCode && event.keyCode == 13) {ISPConfig.submitLoginForm('pageForm'); return false;};" /></div></div> |
| | | <input class="form-control" placeholder="{tmpl_var name='password_txt'}" name="password" id="password" type="password" value=""> |
| | | </div> |
| | | <tmpl_if name="session_timeout" op=">" value="0"> |
| | | <tmpl_if name="session_allow_endless" value="y"> |
| | | <div class="form-group"> |
| | | <label for="passwort" class="col-sm-3 control-label">{tmpl_var name='stay_logged_in_txt'}</label> |
| | | <div class="col-sm-9"><input class="form-control" type="checkbox" name="stay" id="stay" value="1" onkeypress="if (event.keyCode && event.keyCode == 13) {ISPConfig.submitLoginForm('pageForm'); return false;};" /></div></div> |
| | | <div class="checkbox"> |
| | | <label> |
| | | <input name="stay" id="stay" type="checkbox" value="1"> {tmpl_var name='stay_logged_in_txt'} |
| | | </label> |
| | | </div> |
| | | </tmpl_if> |
| | | </tmpl_if> |
| | | |
| | | |
| | | <input type="hidden" name="s_mod" value="login" /> |
| | | <input type="hidden" name="s_pg" value="index" /> |
| | | |
| | | <div class="clear"><div class="right"> |
| | | <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='add_new_record_txt'}" onclick="ISPConfig.submitLoginForm('pageForm');">{tmpl_var name='login_button_txt'}</button> |
| | | <tmpl_if name="pw_lost_show"><button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='pw_lost_txt'}" data-load-content="login/password_reset.php">{tmpl_var name='pw_lost_txt'}</button></tmpl_if> |
| | | </div></div> |
| | | <div class="right"> |
| | | <input class="btn btn-default formbutton-default" type="submit" value="{tmpl_var name='login_txt'}"> |
| | | <tmpl_if name="pw_lost_show"><button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='pw_lost_txt'}" onClick="document.location.href='password_reset.php';">{tmpl_var name='pw_lost_txt'}</button></tmpl_if> |
| | | </div> |
| | | |
| | | </div> |
| | | <script language="JavaScript" type="text/javascript"> |
| | | $('#username').closest('form').attr('autocomplete','on'); |
| | | </script> |
| | | </fieldset> |
| | | </form> |
| | |
| | | <div class='page-header'> |
| | | <h1><tmpl_var name="pw_reset_txt"></h1> |
| | | </div> |
| | | <p><tmpl_var name="list_desc_txt"></p> |
| | | |
| | | <div class="panel panel_password_reset"> |
| | | |
| | | <tmpl_if name="msg"> |
| | | <div id="OKMsg"><p><tmpl_var name="msg"></p></div> |
| | | <div class="alert alert-success" role="alert"><tmpl_var name="msg"></div> |
| | | </tmpl_if> |
| | | <tmpl_if name="error"> |
| | | <div id="errorMsg"><h3><tmpl_var name="error_txt"></h3><ol><tmpl_var name="error"></ol></div> |
| | | <div class="alert alert-danger" role="alert"><tmpl_var name="error"></div> |
| | | </tmpl_if> |
| | | |
| | | <div class="pnl_formsarea"> |
| | | <legend>{tmpl_var name='pw_reset_txt'}</legend> |
| | | <h2><tmpl_var name="pw_reset_txt"></h2> |
| | | <p><tmpl_var name="list_desc_txt"></p> |
| | | <form accept-charset="UTF-8" role="form" method="post" action="password_reset.php"> |
| | | <fieldset> |
| | | <div class="form-group"> |
| | | <label for="email" class="col-sm-3 control-label"><em>*</em> {tmpl_var name='email_txt'}</label> |
| | | <div class="col-sm-9"><input type="text" name="email" id="email" value="" class="form-control" /></div></div> |
| | | <input class="form-control" placeholder="{tmpl_var name='email_txt'}" name="email" id="email" type="text"> |
| | | </div> |
| | | <div class="form-group"> |
| | | <label for="username" class="col-sm-3 control-label"><em>*</em> {tmpl_var name='username_txt'}</label> |
| | | <div class="col-sm-9"><input type="text" name="username" id="username" value="" class="form-control" /></div></div> |
| | | |
| | | |
| | | <input class="form-control" placeholder="{tmpl_var name='username_txt'}" name="username" id="username" type="text"> |
| | | </div> |
| | | <input type="hidden" name="s_mod" value="login" /> |
| | | <input type="hidden" name="s_pg" value="index" /> |
| | | |
| | | <div class="clear"><div class="right"> |
| | | <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='pw_button_txt'}" data-submit-form="pageForm" data-form-action="login/password_reset.php">{tmpl_var name='pw_button_txt'}</button> |
| | | <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='back_txt'}" onclick="ISPConfig.loadInitContent();">{tmpl_var name='back_txt'}</button> |
| | | |
| | | </div></div> |
| | | <div class="right"> |
| | | <input class="btn btn-default formbutton-default" type="submit" value="{tmpl_var name='pw_button_txt'}"> |
| | | <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='pw_lost_txt'}" onClick="document.location.href='index.php';">{tmpl_var name='back_txt'}</button> |
| | | </div> |
| | | |
| | | </div> |
| | | </fieldset> |
| | | </form> |
| | |
| | | } |
| | | } else { |
| | | //* Loading Login Module |
| | | /* |
| | | include_once 'login/lib/module.conf.php'; |
| | | $_SESSION['s']['module'] = $module; |
| | | $topnav[] = array( 'title' => 'Login', |
| | | 'active' => 1); |
| | | $module = null; |
| | | unset($module); |
| | | */ |
| | | header('Location: /login/'); |
| | | die(); |
| | | } |
| | | |
| | | //* Topnavigation |
| | |
| | | |
| | | options: { |
| | | useLoadIndicator: false, |
| | | useComboBox: false, |
| | | useComboBox: false |
| | | }, |
| | | |
| | | setOption: function(key, value) { |
| | |
| | | placeholder: '', |
| | | width: 'element', |
| | | selectOnBlur: true, |
| | | allowClear: true, |
| | | allowClear: true |
| | | }); |
| | | } |
| | | }, |
| | |
| | | }, |
| | | |
| | | /* THIS ONE SHOULD BE REMOVED AFTER CREATING THE STATIC LOGIN PAGE!!! */ |
| | | submitLoginForm: function(formname) { |
| | | /*submitLoginForm: function(formname) { |
| | | //* Validate form. TODO: username and password with strip(); |
| | | var frm = document.getElementById(formname); |
| | | var userNameObj = frm.username; |
| | |
| | | ISPConfig.reportError('Ajax Request was not successful.110'); |
| | | } |
| | | }); |
| | | }, |
| | | },*/ |
| | | |
| | | submitForm: function(formname, target, confirmation) { |
| | | var successMessage = arguments[3]; |
| | |
| | | if(jqXHR.responseText.indexOf('HEADER_REDIRECT:') > -1) { |
| | | var parts = jqXHR.responseText.split(':'); |
| | | ISPConfig.loadContent(parts[1]); |
| | | } else if (jqXHR.responseText.indexOf('LOGIN_REDIRECT:') > -1) { |
| | | // Go to the login page |
| | | document.location.href = '/index.php'; |
| | | } else { |
| | | $('#pageContent').html(jqXHR.responseText); |
| | | ISPConfig.onAfterContentLoad(target, $('#'+formname).serialize()); |
| | |
| | | loadInitContent: function() { |
| | | var pageContentObject = $.ajax({ |
| | | type: "GET", |
| | | url: "content.php", |
| | | data: "s_mod=login&s_pg=index", |
| | | url: "dashboard/dashboard.php", |
| | | data: "", |
| | | dataType: "html", |
| | | beforeSend: function() { |
| | | ISPConfig.showLoadIndicator(); |
| | |
| | | ISPConfig.loadContent(parts[1]); |
| | | } else { |
| | | $('#pageContent').html(jqXHR.responseText); |
| | | ISPConfig.onAfterContentLoad('content.php', "s_mod=login&s_pg=index"); |
| | | ISPConfig.onAfterContentLoad('dashboard/dashboard.php', ""); |
| | | ISPConfig.pageFormChanged = false; |
| | | } |
| | | ISPConfig.hideLoadIndicator(); |
| | |
| | | var ISPConfig={pageFormChanged:false,tabChangeWarningTxt:"",tabChangeDiscardTxt:"",tabChangeWarning:false,tabChangeDiscard:false,requestsRunning:0,indicatorCompleted:false,registeredHooks:new Array(),new_tpl_add_id:0,options:{useLoadIndicator:false,useComboBox:false,},setOption:function(a,b){ISPConfig.options[a]=b},setOptions:function(a){$.extend(ISPConfig.options,a)},reportError:function(a){},registerHook:function(a,c){if(!ISPConfig.registeredHooks[a]){ISPConfig.registeredHooks[a]=new Array()}var b=ISPConfig.registeredHooks[a].length;ISPConfig.registeredHooks[a][b]=c},callHook:function(a,c){if(!ISPConfig.registeredHooks[a]){return}for(var b=0;b<ISPConfig.registeredHooks[a].length;b++){var d=ISPConfig.registeredHooks[a][b];d(a,c)}},resetFormChanged:function(){ISPConfig.pageFormChanged=false},showLoadIndicator:function(){document.body.style.cursor="wait";if(ISPConfig.options.useLoadIndicator==true){ISPConfig.requestsRunning+=1;if(ISPConfig.requestsRunning<2){var a=$("#ajaxloader");if(a.length<1){a=$('<div id="ajaxloader" style="display: none;"></div>');a.appendTo("body")}var b=$("#content");if(b.length<1){return}ISPConfig.indicatorCompleted=false;var d=b.offset().left+150;var c=b.offset().top+150;a.css({left:d,top:c}).fadeIn("fast",function(){ISPConfig.indicatorCompleted=true;if(ISPConfig.requestsRunning<1){$(this).fadeOut("fast",function(){$(this).hide()})}})}}},hideLoadIndicator:function(){document.body.style.cursor="";ISPConfig.requestsRunning-=1;if(ISPConfig.requestsRunning<1){ISPConfig.requestsRunning=0;if(ISPConfig.indicatorCompleted==true){$("#ajaxloader").fadeOut("fast",function(){$("#ajaxloader").hide()})}}},onAfterSideNavLoaded:function(){if(ISPConfig.options.useComboBox==true){$("#sidebar").find("select:not(.chosen-select)").select2({placeholder:"",width:"element",selectOnBlur:true,allowClear:true,})}},onAfterContentLoad:function(a,b){if(!b){b=""}else{b="&"+b}if(ISPConfig.options.useComboBox==true){$("#pageContent").find("select:not(.chosen-select)").select2({placeholder:"",width:"element",selectOnBlur:true,allowClear:true,formatResult:function(c){if(c.id&&$(c.element).parent().hasClass("flags")){return'<span class="flags flag-'+c.id.toLowerCase()+'">'+c.text+"</span>"}else{return c.text}},formatSelection:function(c){if(c.id&&$(c.element).parent().hasClass("flags")){return'<span class="flags flag-'+c.id.toLowerCase()+'">'+c.text+"</span>"}else{return c.text}}}).on("change",function(c){if($("#pageForm .table #Filter").length>0){$("#pageForm .table #Filter").trigger("click")}})}$('input[data-input-element="date"]').datetimepicker({language:"en",todayHighlight:true,todayBtn:"linked",bootcssVer:3,fontAwesome:true,autoclose:true,minView:"month"});$('input[data-input-element="datetime"]').datetimepicker({language:"en",todayHighlight:true,todayBtn:"linked",bootcssVer:3,fontAwesome:true,autoclose:true});ISPConfig.callHook("onAfterContentLoad",{url:a,data:b})},submitLoginForm:function(d){var c=document.getElementById(d);var b=c.username;if(b.value==""){b.focus();return}var e=c.passwort;if(e.value==""){e.focus();return}$("#dummy_username").val(b.value);$("#dummy_passwort").val(e.value);$("#dummy_login_form").submit();var a=$.ajax({type:"POST",url:"content.php",data:$("#"+d).serialize(),dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(g,i,f){if(f.responseText.indexOf("HEADER_REDIRECT:")>-1){var h=f.responseText.split(":");ISPConfig.loadContent(h[1])}else{if(f.responseText.indexOf("LOGIN_REDIRECT:")>-1){document.location.href="index.php"}else{$("#pageContent").html(f.responseText);ISPConfig.onAfterContentLoad("content.php",$("#"+d).serialize());ISPConfig.pageFormChanged=false}}ISPConfig.loadMenus();ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator();ISPConfig.reportError("Ajax Request was not successful.110")}})},submitForm:function(d,e,c){var b=arguments[3];if(!c){c=false}if(!c||window.confirm(c)){var a=$.ajax({type:"POST",url:e,data:$("#"+d).serialize(),dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(g,i,f){if(b){alert(b)}if(f.responseText.indexOf("HEADER_REDIRECT:")>-1){var h=f.responseText.split(":");ISPConfig.loadContent(h[1])}else{$("#pageContent").html(f.responseText);ISPConfig.onAfterContentLoad(e,$("#"+d).serialize());ISPConfig.pageFormChanged=false}ISPConfig.hideLoadIndicator()},error:function(f,i,h){ISPConfig.hideLoadIndicator();var g=f.responseText.split(":");ISPConfig.reportError("Ajax Request was not successful. 111")}})}},submitUploadForm:function(c,d){var b=function(l){var g,h=l.contentWindow.document.body.innerHTML;try{g=JSON.parse(h)}catch(i){g=h}var j="";var f=$("#OKMsg",g).html();if(f){j='<div id="OKMsg">'+f+"</div>"}var k=$("#errorMsg",g).html();if(k){j=j+'<div id="errorMsg">'+k+"</div>"}return j};var a="ajaxUploader-iframe-"+Math.round(new Date().getTime()/1000);$("body").after('<iframe width="0" height="0" style="display:none;" name="'+a+'" id="'+a+'"/>');$('input[type="file"]').closest("form").attr({target:a,action:d}).submit();$("#"+a).load(function(){var e=b(this);$("#errorMsg").remove();$("#OKMsg").remove();$('input[name="id"]').before(e);$(this).remove()})},capp:function(b,c){var a=$.ajax({type:"GET",url:"capp.php",data:"mod="+b+((c!=undefined)?"&redirect="+c:""),dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(e,h,d){if(d.responseText!=""){if(d.responseText.indexOf("HEADER_REDIRECT:")>-1){var g=d.responseText.split(":");ISPConfig.loadContent(g[1])}else{if(d.responseText.indexOf("URL_REDIRECT:")>-1){var f=d.responseText.substr(d.responseText.indexOf("URL_REDIRECT:")+"URL_REDIRECT:".length);document.location.href=f}else{}}}ISPConfig.loadMenus();ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator();ISPConfig.reportError("Ajax Request was not successful."+b)}})},loadContent:function(b){var c=arguments[1];var a=$.ajax({type:"GET",url:b,data:(c?c:null),dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(e,h,d){if(d.responseText.indexOf("HEADER_REDIRECT:")>-1){var g=d.responseText.split(":");ISPConfig.loadContent(g[1])}else{if(d.responseText.indexOf("URL_REDIRECT:")>-1){var f=d.responseText.substr(d.responseText.indexOf("URL_REDIRECT:")+"URL_REDIRECT:".length);document.location.href=f}else{$("#pageContent").html(d.responseText);ISPConfig.onAfterContentLoad(b,(c?c:null));ISPConfig.pageFormChanged=false}}ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator();ISPConfig.reportError("Ajax Request was not successful. 113")}})},loadContentRefresh:function(b){if($("#refreshinterval").val()>0){var a=$.ajax({type:"GET",url:b,data:"refresh="+document.getElementById("refreshinterval").value,dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(d,e,c){ISPConfig.hideLoadIndicator();$("#pageContent").html(c.responseText);ISPConfig.onAfterContentLoad(b,"refresh="+document.getElementById("refreshinterval").value);ISPConfig.pageFormChanged=false},error:function(){ISPConfig.hideLoadIndicator();ISPConfig.reportError("Ajax Request was not successful."+b)}});setTimeout("ISPConfig.loadContentRefresh('"+b+"&refresh="+document.getElementById("refreshinterval").value+"')",document.getElementById("refreshinterval").value*1000*60)}},loadInitContent:function(){var a=$.ajax({type:"GET",url:"content.php",data:"s_mod=login&s_pg=index",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(c,e,b){if(b.responseText.indexOf("HEADER_REDIRECT:")>-1){var d=b.responseText.split(":");ISPConfig.loadContent(d[1])}else{$("#pageContent").html(b.responseText);ISPConfig.onAfterContentLoad("content.php","s_mod=login&s_pg=index");ISPConfig.pageFormChanged=false}ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator();ISPConfig.reportError("Ajax Request was not successful. 114")}});ISPConfig.loadMenus();ISPConfig.keepalive();setTimeout(function(){try{$("form#pageForm").find('input[name="username"]').focus()}catch(b){}},1000)},loadMenus:function(){var b=$.ajax({type:"GET",url:"nav.php",data:"nav=side",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(d,e,c){ISPConfig.hideLoadIndicator();$("#sidebar").html(c.responseText);ISPConfig.onAfterSideNavLoaded();ISPConfig.loadPushyMenu()},error:function(){ISPConfig.hideLoadIndicator();ISPConfig.reportError("Ajax Request was not successful. 115")}});var a=$.ajax({type:"GET",url:"nav.php",data:"nav=top",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(d,e,c){ISPConfig.hideLoadIndicator();$("#topnav-container").html(c.responseText);ISPConfig.loadPushyMenu()},error:function(c){ISPConfig.hideLoadIndicator();ISPConfig.reportError("Ajax Request was not successful. 116")}})},changeTab:function(c,e,d){if(ISPConfig.requestsRunning>0){return false}document.pageForm.next_tab.value=c;var b=$("form#pageForm").find('[name="id"]');var f=null;if(b.length>0){f=b.val()}if(ISPConfig.tabChangeDiscard=="y"&&!d){if((b.length<1||f)&&(ISPConfig.pageFormChanged==false||window.confirm(ISPConfig.tabChangeDiscardTxt))){var a=c;if(f){ISPConfig.loadContent(e,{next_tab:a,id:f})}else{ISPConfig.loadContent(e,{next_tab:a})}}else{return false}}else{if(f&&ISPConfig.tabChangeWarning=="y"&&ISPConfig.pageFormChanged==true){if(window.confirm(ISPConfig.tabChangeWarningTxt)){ISPConfig.submitForm("pageForm",e)}else{var a=c;if(f){ISPConfig.loadContent(e,{next_tab:a,id:f})}else{ISPConfig.loadContent(e,{next_tab:a})}}}else{ISPConfig.submitForm("pageForm",e)}}},confirm_action:function(b,a){if(window.confirm(a)){ISPConfig.loadContent(b)}},loadContentInto:function(b,c){var a=$.ajax({type:"GET",url:c,dataType:"html",beforeSend:function(){},success:function(e,f,d){$("#"+b).html(d.responseText)},error:function(){ISPConfig.reportError("Ajax Request was not successful. 118")}})},loadOptionInto:function(b,c,d){var a=$.ajax({type:"GET",url:c,dataType:"html",beforeSend:function(){},success:function(h,l,g){var j=g.responseText;var k=j.split("#");el=document.getElementById(b);el.innerHTML="";for(var f=0;f<k.length;++f){var e=document.createElement("option");e.appendChild(document.createTextNode(k[f]));e.value=k[f];el.appendChild(e)}if(typeof(d)!="undefined"){d(b,c)}},error:function(){ISPConfig.reportError("Ajax Request was not successful. 119")}})},keepalive:function(){var a=$.ajax({type:"GET",url:"keepalive.php",dataType:"html",success:function(c,d,b){setTimeout(function(){ISPConfig.keepalive()},1000000)},error:function(){ISPConfig.reportError("Session expired. Please login again.")}})},addAdditionalTemplate:function(){var e=$("#template_additional").val();var a=$("#tpl_add_select").val().split("|",2);var d=a[0];var f=a[1];if(d>0){var c=e.split("/");ISPConfig.new_tpl_add_id+=1;var b=$('<a href="#"></a>').attr("class","button icons16 icoDelete").click(function(g){g.preventDefault();ISPConfig.delAdditionalTemplate($(this).parent().attr("rel"))});c[c.length]="n"+ISPConfig.new_tpl_add_id+":"+d;$("<li>"+f+"</li>").attr("rel","n"+new_tpl_add_id).append(b).appendTo("#template_additional_list ul");$("#template_additional").val(c.join("/"));alert("additional template "+f+" added to customer")}else{alert("no additional template selcted")}},delAdditionalTemplate:function(d){var a=$("#template_additional").val();if(d){var l=$("#template_additional_list ul").find('li[rel="'+d+'"]').eq(0);var k=l.text();l.remove();var j=a.split("/");var b=new Array();for(var e=0;e<j.length;e++){var f=j[e].split(":",2);if(f.length==2&&f[0]==d){continue}b[b.length]=j[e]}$("#template_additional").val(b.join("/"));alert("additional template "+k+" deleted from customer")}else{if(a!=""){var c=document.getElementById("tpl_add_select").value.split("|",2);var h=c[0];var k=c[1];$("#template_additional_list ul").find("li:not([rel])").each(function(){var i=$(this).text();if(i==k){$(this).remove();return false}return this});var b=a;var g=new RegExp("(^|/)"+h+"(/|$)");b=b.replace(g,"");b=b.replace("//","/");$("#template_additional").val(b);alert("additional template "+k+" deleted from customer")}else{alert("no additional template selcted")}}}};$(document).on("change",function(a){var b=a.target.localName;if($("#pageForm .table #Filter").length>0&&b=="select"){a.preventDefault();$("#pageForm .table #Filter").trigger("click")}if(b=="select"||b=="input"||b=="textarea"){if($(a.target).hasClass("no-page-form-change")==false){ISPConfig.pageFormChanged=true}}});$(document).on("click","a[data-load-content],button[data-load-content]",function(b){var a=$(this).attr("data-load-content");if(!a){return this}ISPConfig.loadContent(a)});$(document).on("click","a[data-capp],button[data-capp]",function(b){var a=$(this).attr("data-capp");if(!a){return this}ISPConfig.capp(a)});$(document).on("click","a[data-submit-form],button[data-submit-form]",function(d){var b=$(this);var a=b.attr("data-form-action");var c=b.attr("data-submit-form");if(b.attr("data-form-upload")=="true"){ISPConfig.submitUploadForm(c,a)}else{ISPConfig.submitForm(c,a)}});$(document).bind("keypress",function(a){if(a.which=="13"&&$("#pageForm .table #Filter").length>0&&$(a.target).hasClass("ui-autocomplete-input")==false){a.preventDefault();$("#pageForm .table #Filter").trigger("click")}if(a.which=="13"&&$(".pnl_formsarea button.positive").length>0&&a.target.localName!="textarea"&&$(a.target).is(":input")){a.preventDefault();$(".pnl_formsarea button.positive:first").not("[disabled='disabled']").trigger("click")}});$(document).on("click","th[data-column]",function(h){var i=$(this);var d=i.attr("data-column");if(!d){return this}if($("#pageForm .table #Filter").length>0&&i.attr("data-sortable")!="false"){var c=$("#Filter");var a=c.attr("data-form-action");var f=c.attr("data-submit-form");var b=i.attr("data-ordered");var g="?";if(a.indexOf("?")>=0){g="&"}a=a+g+"orderby="+d;ISPConfig.submitForm(f,a);$(document).ajaxComplete(function(){var e=$('#pageForm .table th[data-column="'+d+'"]');e.parent().children("th[data-column]").removeAttr("data-ordered");if(b&&b=="asc"){e.attr("data-ordered","desc")}else{e.attr("data-ordered","asc")}})}});$(document).on("click",".addPlaceholder",function(){var a=$(this).text();var b=$(this).siblings(":input");b.insertAtCaret(a)});$(document).on("click",".addPlaceholderContent",function(){var b=$(this).find(".addPlaceholderContent").text();var a=$(this).siblings(":input");a.insertAtCaret(b)});$(document).on("ready",function(){$.fn.extend({insertAtCaret:function(a){return this.each(function(d){if(document.selection){this.focus();sel=document.selection.createRange();sel.text=a;this.focus()}else{if(this.selectionStart||this.selectionStart=="0"){var c=this.selectionStart;var b=this.selectionEnd;var e=this.scrollTop;this.value=this.value.substring(0,c)+a+this.value.substring(b,this.value.length);this.focus();this.selectionStart=c+a.length;this.selectionEnd=c+a.length;this.scrollTop=e}else{this.value+=a;this.focus()}}})}});$(".progress .progress-bar").css("width",function(){return $(this).attr("aria-valuenow")+"%"});ISPConfig.loadInitContent();$("#searchform").submit(function(a){a.preventDefault()});$("#pageForm").submit(function(a){if($("#pageForm .table #Filter").length>0){a.preventDefault()}})}); |
| | | var ISPConfig={pageFormChanged:!1,tabChangeWarningTxt:"",tabChangeDiscardTxt:"",tabChangeWarning:!1,tabChangeDiscard:!1,requestsRunning:0,indicatorCompleted:!1,registeredHooks:[],new_tpl_add_id:0,options:{useLoadIndicator:!1,useComboBox:!1},setOption:function(a,b){ISPConfig.options[a]=b},setOptions:function(a){$.extend(ISPConfig.options,a)},reportError:function(a){},registerHook:function(a,b){ISPConfig.registeredHooks[a]||(ISPConfig.registeredHooks[a]=[]);ISPConfig.registeredHooks[a][ISPConfig.registeredHooks[a].length]= |
| | | b},callHook:function(a,b){if(ISPConfig.registeredHooks[a])for(var c=0;c<ISPConfig.registeredHooks[a].length;c++)(0,ISPConfig.registeredHooks[a][c])(a,b)},resetFormChanged:function(){ISPConfig.pageFormChanged=!1},showLoadIndicator:function(){document.body.style.cursor="wait";if(1==ISPConfig.options.useLoadIndicator&&(ISPConfig.requestsRunning+=1,2>ISPConfig.requestsRunning)){var a=$("#ajaxloader");1>a.length&&(a=$('<div id="ajaxloader" style="display: none;"></div>'),a.appendTo("body"));var b=$("#content"); |
| | | if(!(1>b.length)){ISPConfig.indicatorCompleted=!1;var c=b.offset().left+150,b=b.offset().top+150;a.css({left:c,top:b}).fadeIn("fast",function(){ISPConfig.indicatorCompleted=!0;1>ISPConfig.requestsRunning&&$(this).fadeOut("fast",function(){$(this).hide()})})}}},hideLoadIndicator:function(){document.body.style.cursor="";--ISPConfig.requestsRunning;1>ISPConfig.requestsRunning&&(ISPConfig.requestsRunning=0,1==ISPConfig.indicatorCompleted&&$("#ajaxloader").fadeOut("fast",function(){$("#ajaxloader").hide()}))}, |
| | | onAfterSideNavLoaded:function(){1==ISPConfig.options.useComboBox&&$("#sidebar").find("select:not(.chosen-select)").select2({placeholder:"",width:"element",selectOnBlur:!0,allowClear:!0})},onAfterContentLoad:function(a,b){b=b?"&"+b:"";if(1==ISPConfig.options.useComboBox)$("#pageContent").find("select:not(.chosen-select)").select2({placeholder:"",width:"element",selectOnBlur:!0,allowClear:!0,formatResult:function(a){return a.id&&$(a.element).parent().hasClass("flags")?'<span class="flags flag-'+a.id.toLowerCase()+ |
| | | '">'+a.text+"</span>":a.text},formatSelection:function(a){return a.id&&$(a.element).parent().hasClass("flags")?'<span class="flags flag-'+a.id.toLowerCase()+'">'+a.text+"</span>":a.text}}).on("change",function(a){0<$("#pageForm .table #Filter").length&&$("#pageForm .table #Filter").trigger("click")});$('input[data-input-element="date"]').datetimepicker({language:"en",todayHighlight:!0,todayBtn:"linked",bootcssVer:3,fontAwesome:!0,autoclose:!0,minView:"month"});$('input[data-input-element="datetime"]').datetimepicker({language:"en", |
| | | todayHighlight:!0,todayBtn:"linked",bootcssVer:3,fontAwesome:!0,autoclose:!0});ISPConfig.callHook("onAfterContentLoad",{url:a,data:b})},submitForm:function(a,b,c,e){c||(c=!1);c&&!window.confirm(c)||$.ajax({type:"POST",url:b,data:$("#"+a).serialize(),dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(c,f,g){e&&alert(e);-1<g.responseText.indexOf("HEADER_REDIRECT:")?(c=g.responseText.split(":"),ISPConfig.loadContent(c[1])):-1<g.responseText.indexOf("LOGIN_REDIRECT:")? |
| | | document.location.href="/index.php":($("#pageContent").html(g.responseText),ISPConfig.onAfterContentLoad(b,$("#"+a).serialize()),ISPConfig.pageFormChanged=!1);ISPConfig.hideLoadIndicator()},error:function(a,b,c){ISPConfig.hideLoadIndicator();a.responseText.split(":");ISPConfig.reportError("Ajax Request was not successful. 111")}})},submitUploadForm:function(a,b){var c="ajaxUploader-iframe-"+Math.round((new Date).getTime()/1E3);$("body").after('<iframe width="0" height="0" style="display:none;" name="'+ |
| | | c+'" id="'+c+'"/>');$('input[type="file"]').closest("form").attr({target:c,action:b}).submit();$("#"+c).load(function(){var a,b=this.contentWindow.document.body.innerHTML;try{a=JSON.parse(b)}catch(c){a=b}var b="",f=$("#OKMsg",a).html();f&&(b='<div id="OKMsg">'+f+"</div>");(a=$("#errorMsg",a).html())&&(b=b+'<div id="errorMsg">'+a+"</div>");a=b;$("#errorMsg").remove();$("#OKMsg").remove();$('input[name="id"]').before(a);$(this).remove()})},capp:function(a,b){$.ajax({type:"GET",url:"capp.php",data:"mod="+ |
| | | a+(void 0!=b?"&redirect="+b:""),dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,d){""!=d.responseText&&(-1<d.responseText.indexOf("HEADER_REDIRECT:")?(a=d.responseText.split(":"),ISPConfig.loadContent(a[1])):-1<d.responseText.indexOf("URL_REDIRECT:")&&(a=d.responseText.substr(d.responseText.indexOf("URL_REDIRECT:")+13),document.location.href=a));ISPConfig.loadMenus();ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator();ISPConfig.reportError("Ajax Request was not successful."+ |
| | | a)}})},loadContent:function(a,b){$.ajax({type:"GET",url:a,data:b?b:null,dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(c,e,d){-1<d.responseText.indexOf("HEADER_REDIRECT:")?(c=d.responseText.split(":"),ISPConfig.loadContent(c[1])):-1<d.responseText.indexOf("URL_REDIRECT:")?(c=d.responseText.substr(d.responseText.indexOf("URL_REDIRECT:")+13),document.location.href=c):($("#pageContent").html(d.responseText),ISPConfig.onAfterContentLoad(a,b?b:null),ISPConfig.pageFormChanged= |
| | | !1);ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator();ISPConfig.reportError("Ajax Request was not successful. 113")}})},loadContentRefresh:function(a){0<$("#refreshinterval").val()&&($.ajax({type:"GET",url:a,data:"refresh="+document.getElementById("refreshinterval").value,dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(b,c,e){ISPConfig.hideLoadIndicator();$("#pageContent").html(e.responseText);ISPConfig.onAfterContentLoad(a,"refresh="+ |
| | | document.getElementById("refreshinterval").value);ISPConfig.pageFormChanged=!1},error:function(){ISPConfig.hideLoadIndicator();ISPConfig.reportError("Ajax Request was not successful."+a)}}),setTimeout("ISPConfig.loadContentRefresh('"+a+"&refresh="+document.getElementById("refreshinterval").value+"')",6E4*document.getElementById("refreshinterval").value))},loadInitContent:function(){$.ajax({type:"GET",url:"dashboard/dashboard.php",data:"",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()}, |
| | | success:function(a,b,c){-1<c.responseText.indexOf("HEADER_REDIRECT:")?(a=c.responseText.split(":"),ISPConfig.loadContent(a[1])):($("#pageContent").html(c.responseText),ISPConfig.onAfterContentLoad("dashboard/dashboard.php",""),ISPConfig.pageFormChanged=!1);ISPConfig.hideLoadIndicator()},error:function(){ISPConfig.hideLoadIndicator();ISPConfig.reportError("Ajax Request was not successful. 114")}});ISPConfig.loadMenus();ISPConfig.keepalive();setTimeout(function(){try{$("form#pageForm").find('input[name="username"]').focus()}catch(a){}}, |
| | | 1E3)},loadMenus:function(){$.ajax({type:"GET",url:"nav.php",data:"nav=side",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()},success:function(a,b,c){ISPConfig.hideLoadIndicator();$("#sidebar").html(c.responseText);ISPConfig.onAfterSideNavLoaded();ISPConfig.loadPushyMenu()},error:function(){ISPConfig.hideLoadIndicator();ISPConfig.reportError("Ajax Request was not successful. 115")}});$.ajax({type:"GET",url:"nav.php",data:"nav=top",dataType:"html",beforeSend:function(){ISPConfig.showLoadIndicator()}, |
| | | success:function(a,b,c){ISPConfig.hideLoadIndicator();$("#topnav-container").html(c.responseText);ISPConfig.loadPushyMenu()},error:function(a){ISPConfig.hideLoadIndicator();ISPConfig.reportError("Ajax Request was not successful. 116")}})},changeTab:function(a,b,c){if(0<ISPConfig.requestsRunning)return!1;document.pageForm.next_tab.value=a;var e=$("form#pageForm").find('[name="id"]'),d=null;0<e.length&&(d=e.val());if("y"!=ISPConfig.tabChangeDiscard||c)d&&"y"==ISPConfig.tabChangeWarning&&1==ISPConfig.pageFormChanged? |
| | | window.confirm(ISPConfig.tabChangeWarningTxt)?ISPConfig.submitForm("pageForm",b):d?ISPConfig.loadContent(b,{next_tab:a,id:d}):ISPConfig.loadContent(b,{next_tab:a}):ISPConfig.submitForm("pageForm",b);else if((1>e.length||d)&&(0==ISPConfig.pageFormChanged||window.confirm(ISPConfig.tabChangeDiscardTxt)))d?ISPConfig.loadContent(b,{next_tab:a,id:d}):ISPConfig.loadContent(b,{next_tab:a});else return!1},confirm_action:function(a,b){window.confirm(b)&&ISPConfig.loadContent(a)},loadContentInto:function(a, |
| | | b){$.ajax({type:"GET",url:b,dataType:"html",beforeSend:function(){},success:function(b,e,d){$("#"+a).html(d.responseText)},error:function(){ISPConfig.reportError("Ajax Request was not successful. 118")}})},loadOptionInto:function(a,b,c){$.ajax({type:"GET",url:b,dataType:"html",beforeSend:function(){},success:function(e,d,f){e=f.responseText.split("#");el=document.getElementById(a);el.innerHTML="";for(d=0;d<e.length;++d)f=document.createElement("option"),f.appendChild(document.createTextNode(e[d])), |
| | | f.value=e[d],el.appendChild(f);"undefined"!=typeof c&&c(a,b)},error:function(){ISPConfig.reportError("Ajax Request was not successful. 119")}})},keepalive:function(){$.ajax({type:"GET",url:"keepalive.php",dataType:"html",success:function(a,b,c){setTimeout(function(){ISPConfig.keepalive()},1E6)},error:function(){ISPConfig.reportError("Session expired. Please login again.")}})},addAdditionalTemplate:function(){var a=$("#template_additional").val(),b=$("#tpl_add_select").val().split("|",2),c=b[0],b= |
| | | b[1];if(0<c){a=a.split("/");ISPConfig.new_tpl_add_id+=1;var e=$('<a href="#"></a>').attr("class","button icons16 icoDelete").click(function(a){a.preventDefault();ISPConfig.delAdditionalTemplate($(this).parent().attr("rel"))});a[a.length]="n"+ISPConfig.new_tpl_add_id+":"+c;$("<li>"+b+"</li>").attr("rel","n"+new_tpl_add_id).append(e).appendTo("#template_additional_list ul");$("#template_additional").val(a.join("/"));alert("additional template "+b+" added to customer")}else alert("no additional template selcted")}, |
| | | delAdditionalTemplate:function(a){var b=$("#template_additional").val();if(a){var c=$("#template_additional_list ul").find('li[rel="'+a+'"]').eq(0),e=c.text();c.remove();for(var b=b.split("/"),c=[],d=0;d<b.length;d++){var f=b[d].split(":",2);if(2!=f.length||f[0]!=a)c[c.length]=b[d]}$("#template_additional").val(c.join("/"));alert("additional template "+e+" deleted from customer")}else""!=b?(a=document.getElementById("tpl_add_select").value.split("|",2),c=a[0],e=a[1],$("#template_additional_list ul").find("li:not([rel])").each(function(){return $(this).text()== |
| | | e?($(this).remove(),!1):this}),c=b.replace(new RegExp("(^|/)"+c+"(/|$)"),""),c=c.replace("//","/"),$("#template_additional").val(c),alert("additional template "+e+" deleted from customer")):alert("no additional template selcted")}}; |
| | | $(document).on("change",function(a){var b=a.target.localName;0<$("#pageForm .table #Filter").length&&"select"==b&&(a.preventDefault(),$("#pageForm .table #Filter").trigger("click"));"select"!=b&&"input"!=b&&"textarea"!=b||0!=$(a.target).hasClass("no-page-form-change")||(ISPConfig.pageFormChanged=!0)});$(document).on("click","a[data-load-content],button[data-load-content]",function(a){a=$(this).attr("data-load-content");if(!a)return this;ISPConfig.loadContent(a)}); |
| | | $(document).on("click","a[data-capp],button[data-capp]",function(a){a=$(this).attr("data-capp");if(!a)return this;ISPConfig.capp(a)});$(document).on("click","a[data-submit-form],button[data-submit-form]",function(a){a=$(this);var b=a.attr("data-form-action"),c=a.attr("data-submit-form");"true"==a.attr("data-form-upload")?ISPConfig.submitUploadForm(c,b):ISPConfig.submitForm(c,b)}); |
| | | $(document).bind("keypress",function(a){"13"==a.which&&0<$("#pageForm .table #Filter").length&&0==$(a.target).hasClass("ui-autocomplete-input")&&(a.preventDefault(),$("#pageForm .table #Filter").trigger("click"));"13"==a.which&&0<$(".pnl_formsarea button.positive").length&&"textarea"!=a.target.localName&&$(a.target).is(":input")&&(a.preventDefault(),$(".pnl_formsarea button.positive:first").not("[disabled='disabled']").trigger("click"))}); |
| | | $(document).on("click","th[data-column]",function(a){var b=$(this),c=b.attr("data-column");if(!c)return this;if(0<$("#pageForm .table #Filter").length&&"false"!=b.attr("data-sortable")){var e=$("#Filter");a=e.attr("data-form-action");var e=e.attr("data-submit-form"),d=b.attr("data-ordered"),b="?";0<=a.indexOf("?")&&(b="&");ISPConfig.submitForm(e,a+b+"orderby="+c);$(document).ajaxComplete(function(){var a=$('#pageForm .table th[data-column="'+c+'"]');a.parent().children("th[data-column]").removeAttr("data-ordered"); |
| | | d&&"asc"==d?a.attr("data-ordered","desc"):a.attr("data-ordered","asc")})}});$(document).on("click",".addPlaceholder",function(){var a=$(this).text();$(this).siblings(":input").insertAtCaret(a)});$(document).on("click",".addPlaceholderContent",function(){var a=$(this).find(".addPlaceholderContent").text();$(this).siblings(":input").insertAtCaret(a)}); |
| | | $(document).on("ready",function(){$.fn.extend({insertAtCaret:function(a){return this.each(function(b){if(document.selection)this.focus(),sel=document.selection.createRange(),sel.text=a,this.focus();else if(this.selectionStart||"0"==this.selectionStart){b=this.selectionStart;var c=this.selectionEnd,e=this.scrollTop;this.value=this.value.substring(0,b)+a+this.value.substring(c,this.value.length);this.focus();this.selectionStart=b+a.length;this.selectionEnd=b+a.length;this.scrollTop=e}else this.value+= |
| | | a,this.focus()})}});$(".progress .progress-bar").css("width",function(){return $(this).attr("aria-valuenow")+"%"});ISPConfig.loadInitContent();$("#searchform").submit(function(a){a.preventDefault()});$("#pageForm").submit(function(a){0<$("#pageForm .table #Filter").length&&a.preventDefault()})}); |
New file |
| | |
| | | <!DOCTYPE html> |
| | | <html lang='en'> |
| | | <head> |
| | | <meta charset='utf-8' /> |
| | | |
| | | <title><tmpl_var name="company_name"><tmpl_var name="app_title"></title> |
| | | |
| | | <meta name='viewport' content='width=device-width, user-scalable=yes'> |
| | | <meta name='description' lang='en' content='' /> |
| | | <meta name='keywords' lang='en' content='' /> |
| | | <meta name='robots' content='index, follow' /> |
| | | |
| | | <link rel='stylesheet' href='../themes/<tmpl_var name='current_theme'>/assets/stylesheets/bootstrap.min.css' /> |
| | | <link rel='stylesheet' href='../themes/<tmpl_var name='current_theme'>/assets/stylesheets/fonts.min.css' /> |
| | | <link rel='stylesheet' href='../themes/<tmpl_var name='current_theme'>/assets/stylesheets/ispconfig.min.css' /> |
| | | <link rel='stylesheet' href='../themes/<tmpl_var name='current_theme'>/assets/stylesheets/pushy.min.css' /> |
| | | <link rel='stylesheet' href='../themes/<tmpl_var name='current_theme'>/assets/stylesheets/bootstrap-datetimepicker.min.css' /> |
| | | <link rel='stylesheet' href='../themes/<tmpl_var name='current_theme'>/assets/stylesheets/responsive.min.css' /> |
| | | <link rel='stylesheet' href='../themes/<tmpl_var name='current_theme'>/assets/stylesheets/themes/default/theme.min.css' /> |
| | | <link rel='stylesheet' href='../themes/<tmpl_var name='current_theme'>/assets/stylesheets/select2.css' /> |
| | | <link rel='stylesheet' href='../themes/<tmpl_var name='current_theme'>/assets/stylesheets/select2-bootstrap.css' /> |
| | | <link rel='stylesheet' href='../themes/<tmpl_var name='current_theme'>/assets/stylesheets/login.css' /> |
| | | </head> |
| | | |
| | | <body> |
| | | <div class="container" style="min-height: 100%; min-height: 100vh; display: flex;"> |
| | | <div class="row" style="margin: auto; width:100%;"> |
| | | <div class="col-md-4 col-md-offset-4"> |
| | | <div class="panel panel-default"> |
| | | <div class="panel-heading" style="background: linear-gradient(to bottom, white, #eef0f2);"> |
| | | <img src="{tmpl_var name='base64_logo_txt'}"> |
| | | </div> |
| | | <div class="panel-body"> |
| | | <tmpl_dyninclude name="content_tpl"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <script type="text/javascript" src="js/jquery.min.js"></script> |
| | | <script src='../themes/<tmpl_var name='current_theme'>/assets/javascripts/bootstrap.min.js'></script> |
| | | <script src='../themes/<tmpl_var name='current_theme'>/assets/javascripts/bootstrap-datetimepicker.min.js'></script> |
| | | <script src='../themes/<tmpl_var name='current_theme'>/assets/javascripts/ispconfig.min.js'></script> |
| | | <script src='../themes/<tmpl_var name='current_theme'>/assets/javascripts/modernizr.custom.min.js'></script> |
| | | <script src='../themes/<tmpl_var name='current_theme'>/assets/javascripts/pushy.min.js'></script> |
| | | <script src='../themes/<tmpl_var name='current_theme'>/assets/javascripts/responsive.min.js'></script> |
| | | <script src='../js/select2/select2.min.js'></script> |
| | | <script src='../js/scrigo.js.php'></script> |
| | | <script type="text/javascript" src="../js/jquery.ispconfigsearch.js"></script> |
| | | <script type="text/javascript" src="../js/jquery.tipsy.js"></script> |
| | | <tmpl_loop name="js_d_includes"> |
| | | <script type="text/javascript" src="../js/js.d/<tmpl_var name='file'>"></script> |
| | | </tmpl_loop> |
| | | </body> |
| | | |
| | | </html> |