Beispiel #1
0
 public function __construct($REQUEST, $model, $view)
 {
     $UI = \CORE\UI::init();
     switch ($REQUEST->get('act')) {
         case 'add':
             $model->create();
             break;
         case 'get':
             $model->get();
             break;
         case 'update':
             $model->update();
             break;
         case 'del':
             $model->delete();
             break;
         default:
             $UI->pos['main'] .= $view->main($model);
             break;
     }
     if (\CORE::init()->is_ajax()) {
         \DB::init()->close();
         exit;
     }
 }
Beispiel #2
0
 public function get_list_of_modules()
 {
     $modules['all'] = '-- ' . \CORE::t('all', 'все') . ' --';
     $type = array(' (core)', ' (app)');
     foreach (\CORE::init()->get_modules() as $key => $value) {
         $modules[$key] = $key . $type[(int) $value];
     }
     return $modules;
 }
Beispiel #3
0
 public function km1($model)
 {
     $result = '';
     $path = DIR_APP . '/forms/km1_' . \CORE::init()->lng() . '.php';
     if (is_readable($path)) {
         $result = file_get_contents($path);
     }
     return $result;
 }
Beispiel #4
0
 public function __construct($REQUEST, $model, $view)
 {
     $UI = \CORE\UI::init();
     switch ($REQUEST->get('act')) {
         case 'km1':
             $UI->pos['main'] .= $view->km1($model);
             break;
         default:
             $UI->pos['main'] .= $view->main($model);
             break;
     }
     if (\CORE::init()->is_ajax()) {
         \DB::init()->close();
         exit;
     }
 }
Beispiel #5
0
 public function __construct($REQUEST, $model, $view)
 {
     switch ($REQUEST->get('act')) {
         case 'login':
             $model->login();
             break;
         case 'logout':
             $model->logout();
             break;
         case 'profile':
             $view->profile($model);
             break;
         case 'change_password':
             $UI = \CORE\BC\UI::init();
             $UI->pos['main'] .= $view->change_pwd();
             break;
         case 'passwd':
             $model->passwd();
             break;
         case 'manage':
             if (isset($_GET['do'])) {
                 switch ($_GET['do']) {
                     case 'add':
                         $model->add();
                         break;
                     case 'edit':
                         $model->edit();
                         break;
                     case 'update':
                         $model->update();
                         break;
                     case 'del':
                         $model->del();
                         break;
                 }
             } else {
                 $UI = \CORE\BC\UI::init();
                 $UI->pos['main'] .= $view->manage($model);
             }
             break;
     }
     if (\CORE::init()->is_ajax()) {
         \DB::init()->close();
         exit;
     }
 }
Beispiel #6
0
    public function main($model)
    {
        $result = '';
        $groups = $model->get_groups();
        $counter = count($groups);
        $UI = \CORE\UI::init();
        $result .= '<div>
	<h4>Groups: <span class="badge">' . $counter . '</span>&nbsp;
	' . $UI::bootstrap_modal_btn('ShowNewGroup', 'NewGroup', 'New group') . '
	</h4>
</div>
';
        $modal_body_new = '<div class="form-group">
	<label for="new_group">Group name</label>
	<input type="text" class="form-control" id="new_group" placeholder="">
</div>
';
        $result .= $UI::bootstrap_modal('NewGroup', 'New group', ' id="frm_NewGroup"', $modal_body_new, 'addGroup', 'Add');
        $modal_body_edit = '<div class="form-group">
	<input type="hidden" id="gid" value="0">
	<label for="edit_group">Group name</label>
	<input type="text" class="form-control" id="edit_group" placeholder="">
</div>
';
        $result .= $UI::bootstrap_modal('EditGroup', 'Edit group', ' id="frm_EditGroup"', $modal_body_edit, 'updateGroup', 'Update');
        if ($counter > 0) {
            $result .= '
<table class="table table-bordered table-hover" style="width:auto;">
<thead>
<tr>
<th>#</th>
<th>Group</th>
<th>gid</th>
<th class="text-center">ACTION</th>
</tr>
</thead>
<tbody>
';
            $cnt = 0;
            foreach ($groups as $gid => $group) {
                $cnt++;
                $result .= '
<tr>
	<td>' . $cnt . '</td>
	<td>' . $group . '</td>
	<td>' . $gid . '</td>
	<td>
	<div id="' . $gid . '" class="btn-group btn-group-xs">
		<button type="button" class="btn btn-default group_edit" data-toggle="modal" data-target="#EditGroup">edit</button>
		<button type="button" class="btn btn-default group_del">delete</button>
	</div>
	</td>
</tr>
';
            }
            $result .= '</tbody></table>';
        } else {
            $result .= '<div class="well">' . \CORE::init()->lang('norecdb', 'No records found in the database.') . '</div>';
        }
        $UI->pos['js'] .= '
<script type="text/javascript">
	$(document).ready(function(){

		// ADD

		function IsJsonString(str) {
	    	try { JSON.parse(str); } catch(e) { return false; }
	    	return true;
		}

		$("#NewGroup").on("shown.bs.modal", function() {
		    $("#new_group").focus();
		});

		$("#frm_NewGroup").submit(function(e){
			e.preventDefault();
		});

		$("#addGroup").click(function(){
			var new_group = $("#new_group").val();
			$.post("./?c=group&act=add&ajax=add", {newgroup:new_group}, function(data){
				if(data=="Group successfully added."){
					location.reload();
				} else {
					alert("Error. Check JS console log.");
					console.log(data);
				}
			});
		});

		// EDIT
		
		$("#EditGroup").on("shown.bs.modal", function() {
		    $("#edit_group").focus();
		});

		$("#frm_EditGroup").submit(function(e){
			e.preventDefault();
		});

		$("button.group_edit").click(function(){
			var xgid = $(this).parent("div").attr("id");
			$.post("./?c=group&act=edit&ajax", {gid:xgid}, function(data){
				if(IsJsonString(data)){
					var obj = JSON.parse(data);
					$("#gid").val(xgid);
					$("#edit_group").val(obj.group);					
				} else {
					alert("Error. Check JS console log.");
					console.log(data);
				}
			});
		});

		// UPDATE

		$("#updateGroup").click(function(){
			var edit_gid = $("#gid").val();
			var edit_group = $("#edit_group").val();
			$.post("./?c=group&act=update&ajax", {gid:edit_gid,group:edit_group}, function(data){
				if(data=="Group successfully updated."){
					location.reload();
				} else {
					alert("The operation failed. Check JS console log.");
					console.log(data);
				}
			});
		});

		// DEL

		$("button.group_del").click(function(){
			var del_gid = $(this).parent("div").attr("id");
			if(confirm("Delete this group?")){
				$.post("./?c=group&act=del&ajax", {gid:del_gid}, function(data){
					if(data=="Group successfully deleted."){
						location.reload();
					} else {
						alert("Error. Check JS console log.");
						console.log(data);
					}
				});
			}
		});

	});
</script>	
';
        return $result;
    }
Beispiel #7
0
 function __construct()
 {
     $this->modules = \CORE::init()->get_modules();
 }
Beispiel #8
0
    public static function SWITCHER($user = false)
    {
        $lang = \CORE::init()->lang;
        $result = '';
        if ($user) {
            if ($lang == 'ru') {
                $result = '<ul class="nav navbar-nav">
				<li class="dropdown">
	              <a href="#" title="Русский" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
				  <small><i class="langflag langflag-ru"></i></small>&nbsp; RU
	              <span class="caret"></span></a>
	              <ul class="dropdown-menu">
	                <li>
	                	<a href="./?lang=tj" class="change_language" rel="tj">
	                		<small><i class="langflag langflag-tj"></i></small>&nbsp; TJ
	                	</a>
	                </li>
	              </ul>
	            </li>
		    </ul>
	        ';
            } else {
                $result = '<ul class="nav navbar-nav">
				<li class="dropdown">
	              <a href="#" title="Тоҷикӣ" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
				  <small><i class="langflag langflag-tj"></i></small>&nbsp; TJ
	              <span class="caret"></span></a>
	              <ul class="dropdown-menu">
	                <li>
	                	<a href="./?lang=ru" class="change_language" rel="ru">
	                		<small><i class="langflag langflag-ru"></i></small>&nbsp; RU
	                	</a>
	                </li>
	              </ul>
	            </li>
		    </ul>
	        ';
            }
        } else {
            if ($lang == 'ru') {
                $result = '<div class="form-group">
	            <div class="dropdown">
	              <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu2" data-toggle="dropdown" aria-expanded="true">
	                <i class="langflag langflag-ru"></i>&nbsp;<small>RU</small>
	                <span class="caret"></span>
	              </button>
	              <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu2">
	                    <li role="usermenu">
	                        <a role="menuitem" tabindex="-1" href="./?lang=tj" class="change_language" rel="tj">
	                        <i class="langflag langflag-tj"></i>&nbsp;<small>TJ</small>
	                        </a>
	                    </li>                    
	              </ul>
	            </div>
	        </div>
	        ';
            } else {
                $result = '<div class="form-group">
	            <div class="dropdown">
	              <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu2" data-toggle="dropdown" aria-expanded="true">
	                <i class="langflag langflag-tj"></i>&nbsp;<small>TJ</small>
	                <span class="caret"></span>
	              </button>
	              <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu2">
	                    <li role="usermenu">
	                        <a role="menuitem" tabindex="-1" href="./?lang=ru" class="change_language" rel="ru">
	                        <i class="langflag langflag-ru"></i>&nbsp;<small>RU</small>
	                        </a>
	                    </li>                    
	              </ul>
	            </div>
	        </div>
	        ';
            }
        }
        return $result;
    }
Beispiel #9
0
 public function static_page($alias = '')
 {
     if (isset($this->pages[$alias])) {
         if (\CORE::init()->lang != '') {
             $lang = '_' . \CORE::init()->lang;
         } else {
             $lang = '';
         }
         $path = DIR_APP . '/pages/' . $this->pages[$alias] . $lang . '.php';
         if (is_readable($path)) {
             include $path;
             // \CORE::msg('debug','include page: '.$this->pages[$alias]);
         } else {
             \CORE::msg('error', 'Page is not found');
         }
     } else {
         \CORE::msg('error', 'Page is not available');
     }
 }
Beispiel #10
0
 public static function init()
 {
     if (empty(self::$inst)) {
         self::$inst = new self();
         \CORE::msg('debug', 'app initialization');
         if (is_readable(DIR_APP . '/appmain.php')) {
             include DIR_APP . '/appmain.php';
         } else {
             \CORE::init()->msg('debug', 'application main script not found');
         }
         $modules = \CORE::init()->get_modules();
         $REQUEST = new REQUEST();
         ROUTER::init($REQUEST, $modules);
         // check modules
     }
     return self::$inst;
 }
Beispiel #11
0
 public function stop()
 {
     \CORE::init()->unload();
 }
Beispiel #12
0
<?php

if (!defined('DIR_BASE')) {
    echo '[+_+]';
    exit;
}
if (is_readable(DIR_CORE . '/classes/core.php')) {
    require DIR_CORE . '/classes/core.php';
} else {
    echo 'class CORE not found';
    exit;
}
$CORE = CORE::init();
$USER = USER::init();
$UI = \CORE\UI::init();
$APP = \CORE\APP::init();
$APP->run();
$APP->stop();
$UI->render();
Beispiel #13
0
 public function update($uid = 0, $gid = 0, $user = '', $chpwd = 0, $pwd = '', $status = 1, $pid = 0)
 {
     $valid = true;
     $errors = '';
     if ($uid == 0 && isset($_POST['uid'])) {
         $uid = (int) $_POST['uid'];
     }
     // user data initialization
     if ($user == '' && isset($_POST['user'])) {
         $user = trim($_POST['user']);
     }
     if ($pwd == '' && isset($_POST['password'])) {
         $pwd = trim($_POST['password']);
     }
     if ($uid == 0 && isset($_POST['uid'])) {
         $uid = (int) $_POST['uid'];
     }
     if ($gid == 0 && isset($_POST['gid'])) {
         $gid = (int) $_POST['gid'];
     }
     if ($chpwd == 0 && isset($_POST['chpwd'])) {
         $chpwd = (int) $_POST['chpwd'];
     }
     if ($status == 1 && isset($_POST['status'])) {
         $status = (int) $_POST['status'];
     }
     if ($pid == 0 && isset($_POST['pid'])) {
         $pid = (int) $_POST['pid'];
     }
     // validation
     if ($user == '' || !$this->check_login($user)) {
         $valid = false;
     }
     if ($chpwd != 0) {
         if ($pwd == '' || !$this->check_password($pwd)) {
             $valid = false;
         }
     }
     if ($uid == 0) {
         $valid = false;
     }
     if ($gid == 0) {
         $valid = false;
     }
     if ($status < 0 || $status > 1) {
         $valid = false;
     }
     if ($pid == 0) {
         $pid = NULL;
     }
     // if valid for with db
     if ($valid) {
         $DB = \DB::init();
         if ($DB->connect()) {
             $sql = "SELECT * FROM `n-users` WHERE LOWER(`usr-login`)=LOWER(:user) AND `usr-uid`=:uid;";
             $sth = $DB->dbh->prepare($sql);
             $sth->execute(array('user' => $user, 'uid' => $uid));
             $DB->query_count();
             if ($sth->rowCount() == 1) {
                 $pwd_array = $this->generate_pwd($pwd);
                 $usr = array('hash' => $pwd_array['hash'], 'salt' => $pwd_array['salt'], 'hint' => $pwd_array['hint'], 'gid' => $gid, 'pid' => $pid, 'status' => $status, 'uid' => $uid);
                 if (!$this->hint()) {
                     $usr['hint'] = NULL;
                 }
                 // choose: insert lowercase login or not
                 if ($chpwd > 0) {
                     $sql = "UPDATE `n-users` SET \n\t\t\t\t\t`usr-pwd`=:hash, \n\t\t\t\t\t`usr-salt`=:salt, \n\t\t\t\t\t`usr-hint`=:hint, \n\t\t\t\t\t`usr-gid`=:gid, \n\t\t\t\t\t`usr-pid`=:pid, \n\t\t\t\t\t`usr-status`=:status\n\t\t\t\t\tWHERE `usr-uid`=:uid;";
                 } else {
                     $usr = array('gid' => $gid, 'pid' => $pid, 'status' => $status, 'uid' => $uid);
                     $sql = "UPDATE `n-users` SET \n\t\t\t\t\t`usr-gid`=:gid, \n\t\t\t\t\t`usr-pid`=:pid, \n\t\t\t\t\t`usr-status`=:status\n\t\t\t\t\tWHERE `usr-uid`=:uid;";
                 }
                 $sth = $DB->dbh->prepare($sql);
                 $sth->execute($usr);
                 $DB->query_count();
                 \CORE::init()->msg('info', 'User data successfully updated.');
             } else {
                 // check is exists
                 $sql = "SELECT * FROM `n-users` WHERE LOWER(`usr-login`)=LOWER(:user);";
                 $sth = $DB->dbh->prepare($sql);
                 $sth->execute(array('user' => $user));
                 if ($sth->rowCount() > 0) {
                     $valid = false;
                     // \CORE::init()->msg('error','Such user exists in the database.');
                     $errors .= 'Such user exists in the database.';
                 } else {
                     $pwd_array = $this->generate_pwd($pwd);
                     $usr = array('login' => $user, 'hash' => $pwd_array['hash'], 'salt' => $pwd_array['salt'], 'hint' => $pwd_array['hint'], 'gid' => $gid, 'pid' => $pid, 'status' => $status, 'uid' => $uid);
                     if (!$this->hint()) {
                         $usr['hint'] = NULL;
                     }
                     // choose: insert lowercase login or not
                     if ($chpwd > 0) {
                         $sql = "UPDATE `n-users` SET \n\t\t\t\t\t\t`usr-login`=LOWER(:login), \n\t\t\t\t\t\t`usr-pwd`=:hash, \n\t\t\t\t\t\t`usr-salt`=:salt, \n\t\t\t\t\t\t`usr-hint`=:hint, \n\t\t\t\t\t\t`usr-gid`=:gid, \n\t\t\t\t\t\t`usr-pid`=:pid, \n\t\t\t\t\t\t`usr-status`=:status\n\t\t\t\t\t\tWHERE `usr-uid`=:uid;";
                     } else {
                         $usr = array('login' => $user, 'gid' => $gid, 'pid' => $pid, 'status' => $status, 'uid' => $uid);
                         $sql = "UPDATE `n-users` SET \n\t\t\t\t\t\t`usr-login`=LOWER(:login), \n\t\t\t\t\t\t`usr-gid`=:gid, \n\t\t\t\t\t\t`usr-pid`=:pid, \n\t\t\t\t\t\t`usr-status`=:status\n\t\t\t\t\t\tWHERE `usr-uid`=:uid;";
                     }
                     $sth = $DB->dbh->prepare($sql);
                     $sth->execute($usr);
                     $DB->query_count();
                     \CORE::init()->msg('info', 'User data successfully updated.');
                 }
             }
         }
     } else {
         // \CORE::init()->msg('error','User data is incorrect.');
         $errors .= 'User data is incorrect.';
     }
     if ($errors != '') {
         echo json_encode(array('errors' => $errors));
     }
 }
Beispiel #14
0
<?php

$pages = array('home' => 'home', 'user' => 'user', 'admin' => 'admin', 'about' => 'about', 'about_opendata' => 'about_opendata', 'team' => 'team');
\CORE\UI::init()->set_pages($pages);
\CORE::init()->set_modules(array('mt' => 1, 'frm' => 1, 'stat' => 1, 'map' => 1, 'vs' => 1, 'od' => 1, 'apps' => 1, 'translation' => 1));
$USER = \USER::init();
if ($USER->auth()) {
    // for authorized users (!) because of $DB->connect()
    // load translations from DB
    $new_lng = array();
    $c_lang = \CORE::lng();
    $DB = \DB::init();
    if ($DB->connect()) {
        if (\CORE::get_c() != '') {
            $sql = "SELECT * FROM `mt-translation` WHERE `t-module`=:module OR `t-module`='all';";
            $sth = $DB->dbh->prepare($sql);
            $sth->execute(array('module' => \CORE::get_c()));
        } else {
            $sql = "SELECT * FROM `mt-translation` WHERE `t-module`='all';";
            $sth = $DB->dbh->prepare($sql);
            $sth->execute();
        }
        $DB->query_count();
        if ($sth->rowCount() > 0) {
            while ($r = $sth->fetch()) {
                $new_lng[$r['t-alias']] = $r['t-' . $c_lang];
            }
        }
    }
    \CORE::msg('debug', 'load translations from DB');
    \CORE::set_lng($new_lng);
Beispiel #15
0
 public function close()
 {
     if ($this->dbh != null && $this->connected) {
         $this->dbh = null;
         $this->connected = false;
         CORE::init()->dbcon = false;
         CORE::msg('debug', 'Closing db connection (queries: ' . $this->queries . ')');
     }
 }
Beispiel #16
0
    public function manage($model)
    {
        $result = '';
        $UI = \CORE\BC\UI::init();
        $groups = $model->get_groups();
        $users = $model->get_users();
        $counter = count($users);
        $result .= '
<div>
	<h4>Users: <span class="badge">' . $counter . '</span>&nbsp;
	' . $UI::bootstrap_modal_btn('show_NewUser', 'NewUser', 'New user') . '
	</h4>
</div>
';
        $modal_body_new = '
<div class="form-group">
	<label for="new_group">Group</label>
	' . $UI::html_list($groups, '', ' id="new_group" class="form-control"', 2) . '
</div>		
<div class="form-group">
	<label for="new_user">Username</label>
	<input type="text" class="form-control" id="new_user" placeholder="username">
</div>
<div class="form-group">
	<label for="new_pwd">Password</label>
	<input type="password" class="form-control" id="new_pwd" placeholder="password">
</div>
<div class="form-group">
	<input type="button" class="btn btn-default" id="new_pwd_gen" value="Generate password">
	<span id="new_pwd_gen_val" style="margin-left:10px;"></span>
</div>
<div>
  <div class="checkbox">
    <label for="new_status">
      <input type="checkbox" id="new_status" value="1" checked>
      User enabled
    </label>
  </div>
</div>
';
        $result .= $UI::bootstrap_modal('NewUser', 'New user', ' id="frm_NewUser"', $modal_body_new, 'addUser', 'Add');
        $modal_body_edit = '
<div class="form-group">
	<label for="edit_group">Group</label>
	' . $UI::html_list($groups, '', ' id="edit_group" class="form-control"', 2) . '
</div>		
<div class="form-group">
	<input type="hidden" id="edit_uid" value="0">
	<label for="edit_user">Username</label>
	<input type="text" class="form-control" id="edit_user" placeholder="username">
</div>
<div>
  <div class="checkbox">
    <label for="edit_pwd_change">
      <input type="checkbox" id="edit_pwd_change" value="1">
      Change password
    </label>
  </div>
</div>
<div id="pwd_box" class="hidden">
	<div class="form-group">
		<label for="edit_pwd">New password</label>
		<input type="password" class="form-control" id="edit_pwd" placeholder="new password">
	</div>
	<div class="form-group">
		<input type="button" class="btn btn-default" id="edit_pwd_gen" value="Generate password">
		<span id="edit_pwd_gen_val" style="margin-left:10px;"></span>
	</div>
</div>
<div>
  <div class="checkbox">
    <label for="edit_status">
      <input type="checkbox" id="edit_status" value="1" checked>
      User enabled
    </label>
  </div>
</div>
';
        $result .= $UI::bootstrap_modal('EditUser', 'Edit user', ' id="frm_EditUser"', $modal_body_edit, 'updateUser', 'Update');
        if ($counter > 0) {
            $result .= '
<table class="table table-bordered table-hover" style="width:auto;">
	<thead>
		<tr>
			<th>#</th>
			<th>USER</th>
			<th>GROUP</th>
			<th>STATUS</th>
			<th>LOGIN TIME</th>
			<th class="text-center">ACTION</th>
		</tr>
	</thead>
<tbody>
';
            $cnt = 0;
            foreach ($users as $uid => $user) {
                $cnt++;
                $result .= '
<tr>
	<td>' . $cnt . '</td>
	<td>' . $user['user'] . '</td>
	<td>' . $user['gid'] . '</td>
	<td>' . $user['status'] . '</td>
	<td>' . $user['lastlogin'] . '</td>
	<td>
		<div id="' . $uid . '" class="btn-group btn-group-xs">
		<button type="button" class="btn btn-default user_edit" data-toggle="modal" data-target="#EditUser">edit</button>
		<button type="button" class="btn btn-default user_del">delete</button>
		</div>
	</td>
</tr>
';
            }
            $result .= "</tbody></table>\n";
        } else {
            $result .= '<div class="well">' . \CORE::init()->lang('norecdb', 'No records found in the database.') . '</div>';
        }
        $UI->pos['js'] .= '
<script type="text/javascript">
	$(document).ready(function() {

		function IsJsonString(str) {
			try { JSON.parse(str); } catch(e) { return false; }
			return true;
		}

		function generate_pwd(len) {
		    var length = len,
		        charset = "abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
		        retVal = "";
		    for (var i = 0, n = charset.length; i < length; ++i) {
		        retVal += charset.charAt(Math.floor(Math.random() * n));
		    }
		    return retVal;
		}

		$("#new_pwd_gen").click(function(){
			var xpwd=generate_pwd(10);
			$("#new_pwd").val(xpwd);
			$("#new_pwd_gen_val").text(xpwd);			
		});

		// ADD

		$("#NewUser").on("shown.bs.modal", function() {
			$("#new_user").focus();
		});

		$("#frm_NewUser").submit(function(e){
			e.preventDefault();
		});

		$("#addUser").click(function(e){
			var xgid = $("#new_group").val();
			var xuser = $("#new_user").val();
			var xpwd = $("#new_pwd").val();
			var xstatus = 1;
			if(!$("#new_status").prop("checked")){ xstatus=0; }
			$.post("./?c=user&act=manage&do=add&ajax", {user:xuser,password:xpwd,gid:xgid,status:xstatus}, function(data){
				if(data=="New user successfully added."){
					location.reload();
				} else {
					if(IsJsonString(data)){
						var obj = JSON.parse(data);
						alert(obj.errors);
					} else {
						alert("Error. Check JS console log.");
						console.log(data);
					}
				}
			});
		});

		// EDIT

		$("#EditUser").on("shown.bs.modal", function() {
		    $("#edit_user").focus();
		});

		$("#frm_EditUser").submit(function(e){
			e.preventDefault();
		});

		$("#edit_pwd_gen").click(function(){
			var xpwd=generate_pwd(10);
			$("#edit_pwd").val(xpwd);
			$("#edit_pwd_gen_val").text(xpwd);
		});

		$("#edit_pwd_change").click(function(){
			if($(this).prop("checked")){
				$("#pwd_box").removeClass("hidden");
			} else {
				$("#edit_pwd").val("");
				$("#edit_pwd_gen_val").text("");
				$("#pwd_box").addClass("hidden");
			}
		});

		$("button.user_edit").click(function(){
			var xuid = $(this).parent("div").attr("id");
			$.post("./?c=user&act=manage&do=edit&ajax", {uid:xuid}, function(data){
				$("#edit_pwd").val("");
				$("#edit_pwd_gen_val").text("");
				if(IsJsonString(data)){
					var obj = JSON.parse(data);
					$("#edit_uid").val(obj.uid);
					$("#edit_group").val(obj.gid);
					$("#edit_user").val(obj.user);
					if(obj.status==1){
						$("#edit_status").prop("checked",true);
					} else {
						$("#edit_status").prop("checked",false);
					}
				} else {
					alert("Error. Check JS console log.");
					console.log(data);
				}
			});
		});

		// UPDATE

		$("#updateUser").click(function(e){
			var xuid = $("#edit_uid").val();
			var xgid = $("#edit_group").val();
			var xuser = $("#edit_user").val();
			var xchpwd = 0;
			var xpwd = $("#edit_pwd").val();
			var xstatus = 1;
			if($("#edit_pwd_change").prop("checked")){ xchpwd=1; }
			if(!$("#edit_status").prop("checked")){ xstatus=0; }
			$.post("./?c=user&act=manage&do=update&ajax", {uid:xuid,gid:xgid,user:xuser,chpwd:xchpwd,password:xpwd,status:xstatus}, function(data){
				if(data=="User data successfully updated."){
					location.reload();
				} else {
					if(IsJsonString(data)){
						var obj = JSON.parse(data);
						alert(obj.errors);
					} else {
						alert("Error. Check JS console log.");
						console.log(data);
					}
				}
			});
		});

		// DEL

		$("button.user_del").click(function(){
			var xuid = $(this).parent("div").attr("id");
			if(confirm("Delete this user?")){
				$.post("./?c=user&act=manage&do=del&ajax", {uid:xuid}, function(data){
					if(data=="User successfully deleted."){
						location.reload();
					} else {
						alert("Error. Check JS console log.");
						console.log(data);
					}
				});
			}
		});

	});
</script>
';
        return $result;
    }