Преглед изворни кода

Fix #34 Pokaż testy pracownika create typespecial __USER_ID

Piotr Labudda пре 11 година
родитељ
комит
4bb5f1642c
3 измењених фајлова са 125 додато и 30 уклоњено
  1. 32 29
      SE/se-lib/ProcesMenu.php
  2. 44 1
      SE/se-lib/TypespecialVariable.php
  3. 49 0
      SE/superedit-PROCES_MENU.php

+ 32 - 29
SE/se-lib/ProcesMenu.php

@@ -4,6 +4,10 @@ require_once dirname(__FILE__) . '/' . 'Lib.php';
 Lib::loadClass('V');
 Lib::loadClass('User');
 Lib::loadClass('ProcesTestyHelper');
+Lib::loadClass('TypespecialVariable');
+Lib::loadClass('UsersHelper');
+Lib::loadClass('DB');
+Lib::loadClass('UserBookmarks');
 
 class ProcesMenu {
 
@@ -30,7 +34,6 @@ class ProcesMenu {
 			}
 		}
 
-		Lib::loadClass('UsersHelper');
 		$this->_acl = UsersHelper::getUserAcl($this->_user_id);
 		if (!$this->_acl) {
 			die('Error Acl');
@@ -176,7 +179,6 @@ class ProcesMenu {
 		}
 
 		$procesy_init_ids = array();
-		Lib::loadClass('DB');
 		$db = DB::getDB();
 		$sql = "select `ID`,`DESC` from `CRM_PROCES` where `TYPE`='PROCES_INIT' and `ID` in (".implode(",", $menu_to_show).") ";
 		$res = $db->query($sql);
@@ -342,7 +344,6 @@ class ProcesMenu {
 /*
  * $_SESSION['USER_PROFILE'][section][key] = val;
  */
-		Lib::loadClass('UserBookmarks');
 		$userBookmarks = UserBookmarks::getInstance();
 
 		$bookmarksJson = array();
@@ -359,6 +360,11 @@ class ProcesMenu {
 		$userGroupIdsCSV = User::getGroupsIds();
 		$userGroupIdsCSV = implode(',', $userGroupIdsCSV);
 
+		$typeSpecialUserId = null;
+		if (User::isAdmin()) {
+			$typeSpecialUserId = TypespecialVariable::getInstance(-1, '__USER_ID');
+		}
+
 		?>
 <div id="SE-menu" class="navbar navbar-inverse" style="position: static;">
 	<div class="navbar-inner">
@@ -502,32 +508,29 @@ jQuery(document).ready(function() {
 							<li><a href="index.php?LOGIN=PERMS_RELOAD" title="Przeładuj uprawnienia"><i class="icon-refresh"></i> Przeładuj uprawnienia</a></li>
 							<?php if (User::isAdmin()) : ?>
 								<li class="divider"></li>
-								<li class="nav-header">Pokaż testy pracownika:</li>
-								<li>
-									<?php
-										Lib::loadClass('UsersHelper');
-										$users = UsersHelper::get_users_list(null, 100, 0, 'ADM_NAME', 'ASC');
-										$user_sel = array();
-										foreach ($users as $r) {
-											$user_sel [$r->ID] = "{$r->ID}: {$r->ADM_NAME} ({$r->ADM_ACCOUNT}, {$r->EMAIL}, {$r->ADM_PHONE})";
-										}
-
-										if (!empty($user_sel)) {
-											echo '<form action="index.php" method="POST">';
-											echo '<input type="hidden" name="FUNCTION_INIT" value="MENU_SELECT_PROCES">';
-											echo '<input type="hidden" name="_action" value="showMyTests">';
-											echo '<select name="_user_id">';
-											foreach ($user_sel as $k_option => $v_label) {
-												$sel = ($k_option == $this->_user_id)? ' selected="selected"' : '';
-												echo '<option value="' . $k_option . '"' . $sel . '>' . $v_label . '</option>';
-											}
-											echo '</select>';
-											echo ' ';
-											echo '<input type="submit" value="Wybierz" />';
-											echo '</form>';
-										}
-									?>
-								</li>
+							<li class="nav-header"><nobr>Pokaż testy pracownika:</nobr></li>
+								<?php if (!$typeSpecialUserId) : ?>
+									<li>
+										<div class="alert alert-error">Brak typespecial __USERS_ID</div>
+									</li>
+								<?php else : ?>
+									<li>
+										<form action="index.php" method="POST">
+											<input type="hidden" name="FUNCTION_INIT" value="MENU_SELECT_PROCES">
+											<input type="hidden" name="_action" value="showMyTests">
+											<?php
+												$fldName = '_user_id';
+												$fldParams = array();
+												$fldParams['allowCreate'] = false;
+												$fldParams['ajaxDataUrlBase'] = "index.php?FUNCTION_INIT=PROCES_MENU&HEADER_NOT_INIT=YES&_task=TYPESPECIAL&fld={$fldName}";
+												$fldParams['placeholder'] = 'Szukaj...';
+												//$fldParams['ajaxDataUrlBase'] .= "&DBG_TS=3";
+												echo $typeSpecialUserId->showFormItem($tblID = -1, $fldName, $selValue = '', $fldParams);
+											?>
+											<input class="btn btn-mini btn-warning" type="submit" value="Wybierz" />
+										</form>
+									</li>
+								<?php endif; ?>
 							<?php endif; ?>
 							<li class="divider"></li>
 							<li><a href="index.php?LOGIN=LOGOUT"><i class="icon-off"></i> Wyloguj</a></li>

+ 44 - 1
SE/se-lib/TypespecialVariable.php

@@ -28,6 +28,7 @@ class TypespecialVariable extends TypespecialBase {
 			case '__COMPANIES':
 			case 'DEFAULT_ACL_GROUP':
 			case 'VERSION_GIT':
+			case '__USER_ID':
 				return new TypespecialVariable($fldID, $fldName);
 				break;
 		}
@@ -65,6 +66,7 @@ class TypespecialVariable extends TypespecialBase {
 			case 'A_CLASSIFIED':
 			case 'DEFAULT_ACL_GROUP':
 			case 'VERSION_GIT':
+			case '__USER_ID':
 				$jsonAllowCreate = 'false';
 				break;
 			default:
@@ -90,7 +92,11 @@ class TypespecialVariable extends TypespecialBase {
 
 		$optionsJson = 'null';
 		$out .= '<div class="typepsecial">';
-		$out .= '<select id="ts-' . $fName . '">';
+		$outPlaceholder = '';
+		if ('' != ($paramPlaceholder = V::get('placeholder', '', $params))) {
+			$outPlaceholder = ' placeholder="' . $paramPlaceholder . '"';
+		}
+		$out .= '<select id="ts-' . $fName . '"' . $outPlaceholder . '>';
 			if (!empty($selValue)) {
 				$tsVal = (!empty($tsValue))? $tsValue : $selValue;
 				//$out .= '<option value="' . $selValue . '" selected="selected" typespecial="'.$tsVal.'">' . $tsVal . '</option>';
@@ -547,6 +553,43 @@ class TypespecialVariable extends TypespecialBase {
 					$values[] = (object)array('id'=>$version, 'param_out'=>$version);
 				}
 			}
+			case '__USER_ID': {
+				$db = DB::getDB();
+				$query = trim($query, ' %');
+				$query = $db->_($query);
+				$sqlLimit = 20;
+				$sqlSelectLabel = array();
+				$sqlSelectLabel[] = 'u.`ADM_NAME`';
+				$sqlSelectLabel[] = "' ('";
+				$sqlSelectLabel[] = 'u.`ADM_ACCOUNT`';
+				$sqlSelectLabel[] = "', '";
+				$sqlSelectLabel[] = 'u.`EMAIL`';
+				$sqlSelectLabel[] = "', '";
+				$sqlSelectLabel[] = 'u.`ADM_PHONE`';
+				$sqlSelectLabel[] = "')'";
+				$sqlSelectLabel = "concat(" . implode(", ", $sqlSelectLabel) . ")";
+
+				$sql = "select u.`ID`
+						, {$sqlSelectLabel} as `LABEL`
+					from `ADMIN_USERS` as u
+					where u.`A_STATUS` in('NORMAL', 'WAITING','MONITOR','WARNING')
+						and u.`EMPLOYEE_TYPE` in('Pracownik','Partner')
+						and (u.`ID` like '%{$query}%'
+							or u.`ADM_ACCOUNT` like '%{$query}%'
+							or u.`ADM_NAME` like '%{$query}%'
+							or u.`ADM_PHONE` like '%{$query}%'
+							or u.`EMAIL` like '%{$query}%'
+						)
+					limit {$sqlLimit}
+				";
+				if(V::get('DBG_TS', 0, $_GET) > 2){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">sql (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sql);echo'</pre>';}
+				$res = $db->query($sql);
+				while ($r = $db->fetch($res)) {
+					$values[] = (object)array('id'=>$r->ID, 'param_out'=>$r->LABEL);
+				}
+				if(V::get('DBG_TS', 0, $_GET) > 2){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">values (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($values);echo'</pre>';}
+				break;
+			}
 			default:
 				
 		}

+ 49 - 0
SE/superedit-PROCES_MENU.php

@@ -0,0 +1,49 @@
+<?php
+
+Lib::loadClass('TypespecialVariable');
+
+function PROCES_MENU() {
+
+	$taskMsgs = array();
+	$taskErrors = array();
+
+	$task = V::get('_task', '', $_REQUEST);
+	switch ($task) {
+		case 'TYPESPECIAL': {
+			$DBG = ('1' == V::get('DBG', '', $_REQUEST));
+			header("Content-type: application/json");
+
+			$fld = V::get('fld', '', $_GET);
+			switch ($fld) {
+				case '_user_id': {
+					$typeSpecialUserId = TypespecialVariable::getInstance(-1, '__USER_ID');
+					if (!$typeSpecialUserId) {
+						$jsonData = new stdClass();
+						$jsonData->message = "TypeSpecial '__USER_ID' not exists";
+						echo json_encode($jsonData);
+						exit;
+					}
+
+					$query = V::get('q', '', $_REQUEST);
+					$rawRows = null;
+					$jsonData = array();
+					$queryParams = array();
+					$rows = $typeSpecialUserId->getValuesWithExports($query, $queryParams);
+					if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">rows('.$query.') (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($rows);echo'</pre>';}
+					foreach ($rows as $kID => $vItem) {
+						$itemJson = new stdClass();
+						$itemJson->id = $vItem->id;
+						$itemJson->name = $vItem->param_out;
+						if (!empty($vItem->exports)) {
+							$itemJson->exports = $vItem->exports;
+						}
+						$jsonData[] = $itemJson;
+					}
+					echo json_encode($jsonData);
+					break;
+				}
+			}
+			exit;
+		}
+	}
+}