Piotr Labudda 11 anni fa
parent
commit
dcb76bba91

+ 2 - 2
SE/se-lib/FilterFactory.php

@@ -15,7 +15,7 @@ class FilterFactory {
 		if ($tbl == 'CRM_PROCES') {
 			{// filtry
 				$filtr = array();
-				if (User_is_admin()) { // filtr_edit, only for admins
+				if (User::hasAccess('procesy_admin')) { // filtr_edit, only for admins
 					$filtr = array();
 					$filtr['TAK'] = '1';
 					$filtr['NIE'] = '0';
@@ -78,7 +78,7 @@ class FilterFactory {
 		else if ($tbl == 'CRM_LISTA_ZASOBOW') {
 			{// filtry
 				$filtr = array();
-				if (User_is_admin()) { // filtr_edit, only for admins
+				if (User::hasAccess('procesy_admin')) { // filtr_edit, only for admins
 					$filtr = array();
 					$filtr['TAK'] = '1';
 					$filtr['NIE'] = '0';

+ 140 - 4
SE/se-lib/ProcesMenu.php

@@ -370,6 +370,14 @@ class ProcesMenu {
 		$treeZasobyFilter = FilterFactory::build('CRM_LISTA_ZASOBOW');
 		$lastZasobyFiltrIds = $treeZasobyFilter->get_arg('filtr_id');
 
+		$userProcesIdsCSV = array();//TODO: get user proces init ids
+		$userProcesIdsCSV = implode(',', $userProcesIdsCSV);
+
+		$typeSpecialProces = TypespecialVariable::getInstance(-1, '__PROCES');
+
+		$treeProcesyFilter = FilterFactory::build('CRM_PROCES');
+		$lastProcesyFiltrIds = $treeProcesyFilter->get_arg('filtr_id');
+
 		?>
 <div id="SE-menu" class="navbar navbar-inverse" style="position: static;">
 	<div class="navbar-inner">
@@ -406,6 +414,132 @@ class ProcesMenu {
 						</ul>
 					</li>
 					<li<?php if ($active == 'procesy') echo ' class="active"'; ?>><a href="procesy5.php?task=CRM_PROCES" title="Wyswietlenie procesow">Procesy</a></li>
+					<li class="dropdown <?php if ($active == 'procesy') echo "active"; ?>">
+						<a id="ProcesMenuProcesDropdownLink" href="#" class="dropdown-toggle" data-toggle="dropdown">Procesy <b class="caret"></b></a>
+						<ul class="dropdown-menu">
+							<?php if (!empty($lastProcesyFiltrIds)) : ?>
+								<li class="nav-header"><nobr>Wróć do ostatniego wyszukiwania:</nobr></li>
+								<li>
+									<a href="procesy5.php?task=CRM_PROCES<?php echo "&filtr_id={$lastProcesyFiltrIds}&filtr_ids=%2B&filtr_ob=%2B&filtr_img=%2B";  ?>"><?php
+											//echo $lastProcesyFiltrIdsLabels;
+											if (!empty($lastProcesyFiltrIds)) {
+												$lastProcesyFiltrIds = explode(',', $lastProcesyFiltrIds);
+												$labels = array();
+												$labelsLimit = 4;
+												$labelsInd = 0;
+												foreach ($lastProcesyFiltrIds as $lastFltr) {
+													$labels[] = '<span class="badge badge-inverse">' . $lastFltr . '</span>';
+													if (++$labelsInd >= $labelsLimit) {
+														$labels[] = '...';
+														break;
+													}
+												}
+												$lastProcesyFiltrIdsLabels = implode(' ', $labels);
+											}
+											echo $lastProcesyFiltrIdsLabels;
+										?></a>
+								</li>
+								<li class="divider"></li>
+							<?php endif; ?>
+							<?php if (!empty($userProcesIdsCSV)) : ?>
+								<li>
+									<a href="procesy5.php?task=CRM_PROCES<?php echo "&filtr_id={$userProcesIdsCSV}&filtr_ids=%2B&filtr_ob=%2B&filtr_img=%2B";  ?>" title="Moje Procesy">Moje Procesy</a>
+								</li>
+							<?php endif; ?>
+							<?php if (0) : // TODO: 'VIEWTABLE_AJAX' == V::get('MENU_INIT', '', $_REQUEST)) : ?>
+								<li>
+									<a href="procesy5.php?task=CRM_PROCES<?php if(!empty($_REQUEST['ZASOB_ID'])) echo "&filtr_id={$_REQUEST['ZASOB_ID']}&filtr_ids=%2B&filtr_ob=%2B";  ?>" title="Struktura aktualnie przeglądanej tabeli">Struktura aktualnie przeglądanej tabeli</a>
+								</li>
+							<?php endif; ?>
+							<li>
+								<a href="procesy5.php?task=CRM_PROCES&filtr_id=" title="Wyświetlenie drzewa procesó">Wszystkie Procesy</a>
+							</li>
+
+							<li class="divider"></li>
+							<li class="nav-header"><nobr>Wyszukaj:</nobr></li>
+								<?php if (!$typeSpecialProces) : ?>
+									<li>
+										<div class="alert alert-error">Brak typespecial __PROCES</div>
+									</li>
+								<?php else : ?>
+									<li>
+										<form id="ProcesMenuProcesFrm" action="procesy5.php" method="GET" style="padding:0 20px">
+											<input type="hidden" name="task" value="CRM_PROCES">
+											<?php
+												$fldName = 'ProcesMenu__Proces_filtr_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['formFieldName'] = 'filtr_id';
+												//$fldParams['ajaxDataUrlBase'] .= "&DBG_TS=3";
+												echo $typeSpecialProces->showFormItem($tblID = -1, $fldName, $selValue = '', $fldParams);
+											?>
+											<input class="btn btn-mini btn-primary" type="submit" value="Wybierz" />
+											<input class="pull-right btn btn-mini btn-default" type="submit" id="ProcesMenuProcesFltrAdd" value="Dodaj do filtra" />
+											<script>
+jQuery(document).ready(function() {
+	if ('procesy5.php' === window.location.pathname.substr(-12)
+			&& window.location.search.search('task=CRM_PROCES') > 0
+			&& window.location.search.search('&filtr_id=') > 0
+		 ) {
+		jQuery('#ProcesMenuProcesFltrAdd').on('click', function(e) {
+			var frm = jQuery(this).get(0).form;
+			var fldNode = frm['<?php echo $fldParams['formFieldName']; ?>'],
+				fltrId = '';
+			if (fldNode && '' != fldNode.value) {
+				fltrId = fldNode.value;
+			} else {
+				return;
+			}
+			var pos = 0, fltrIds = '';
+			if ('procesy5.php' === window.location.pathname.substr(-12)
+					&& window.location.search.search('task=CRM_PROCES') > 0
+					&& (pos = window.location.search.search('&filtr_id=')) > 0
+				 ) {
+				pos += 10;
+				fltrIds = window.location.search.substr(pos);
+				if ((pos = fltrIds.search('&')) > 0) {
+					fltrIds = fltrIds.substr(0, pos);
+				}
+				if (fltrIds) {
+					fltrIds = decodeURIComponent(fltrIds);
+					fltrIds += ',' + fltrId;
+					if (fldNode.selectize) {
+						fldNode.selectize.addOption({id: fltrIds, name: fltrIds});
+						fldNode.selectize.setValue(fltrIds, true);
+					}
+				}
+			}
+		});
+	} else {
+		jQuery('#ProcesMenuProcesFltrAdd').hide();
+	}
+
+	jQuery('#ProcesMenuProcesFrm').on('submit', function(e) {
+		var frm = jQuery(this).get(0),
+				fldNode = frm['<?php echo $fldParams['formFieldName']; ?>'];
+		if (fldNode && '' != fldNode.value) {
+			return true;
+		} else {
+			return false;
+		}
+	});
+	jQuery('#ProcesMenuProcesDropdownLink').on('click', function(e) {
+		setTimeout(function(){
+			jQuery('#ts-<?php echo $fldName; ?>')
+				.next('.selectize-control')
+				.find('input:first')
+				.focus();
+		}, 200);
+	});
+});
+											</script>
+										</form>
+							</li>
+								<?php endif; ?>
+						</ul>
+					</li>
 					<li class="dropdown <?php if ($active == 'zasoby') echo "active"; ?>">
 						<a id="ProcesMenuZasobDropdownLink" href="#" class="dropdown-toggle" data-toggle="dropdown">Zasoby <b class="caret"></b></a>
 						<ul class="dropdown-menu">
@@ -433,9 +567,11 @@ class ProcesMenu {
 								</li>
 								<li class="divider"></li>
 							<?php endif; ?>
-							<li>
-								<a href="procesy5.php?task=CRM_LISTA_ZASOBOW<?php echo "&filtr_id={$userGroupIdsCSV}&filtr_ids=%2B&filtr_ob=%2B&filtr_img=%2B";  ?>" title="Moje Zasoby">Moje Zasoby</a>
-							</li>
+							<?php if (!empty($userGroupIdsCSV)) : ?>
+								<li>
+									<a href="procesy5.php?task=CRM_LISTA_ZASOBOW<?php echo "&filtr_id={$userGroupIdsCSV}&filtr_ids=%2B&filtr_ob=%2B&filtr_img=%2B";  ?>" title="Moje Zasoby">Moje Zasoby</a>
+								</li>
+							<?php endif; ?>
 							<?php if ('VIEWTABLE_AJAX' == V::get('MENU_INIT', '', $_REQUEST)) : ?>
 								<li>
 									<a href="procesy5.php?task=CRM_LISTA_ZASOBOW<?php if(!empty($_REQUEST['ZASOB_ID'])) echo "&filtr_id={$_REQUEST['ZASOB_ID']}&filtr_ids=%2B&filtr_ob=%2B";  ?>" title="Struktura aktualnie przeglądanej tabeli">Struktura aktualnie przeglądanej tabeli</a>
@@ -456,7 +592,7 @@ class ProcesMenu {
 										<form id="ProcesMenuZasobFrm" action="procesy5.php" method="GET" style="padding:0 20px">
 											<input type="hidden" name="task" value="CRM_LISTA_ZASOBOW">
 											<?php
-												$fldName = 'ProcesMenu__filtr_id';
+												$fldName = 'ProcesMenu__Zasob_filtr_id';
 												$fldParams = array();
 												$fldParams['allowCreate'] = false;
 												$fldParams['ajaxDataUrlBase'] = "index.php?FUNCTION_INIT=PROCES_MENU&HEADER_NOT_INIT=YES&_task=TYPESPECIAL&fld={$fldName}";

+ 25 - 0
SE/se-lib/TypespecialVariable.php

@@ -25,6 +25,7 @@ class TypespecialVariable extends TypespecialBase {
 			case '__TELBOXES':
 			case '__TELBOXES_NAME':
 			case '__ZASOB':
+			case '__PROCES':
 			case '__COMPANIES':
 			case 'DEFAULT_ACL_GROUP':
 			case 'VERSION_GIT':
@@ -505,6 +506,30 @@ jQuery(document).ready(function(){
 				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;
 			}
+			case '__PROCES': {
+				$db = DB::getDB();
+				$query = trim($query, ' %');
+				$query = $db->_($query);
+				$sqlLimit = 20;
+				$sqlSelectLabel = "concat(z.`TYPE`, ' ', z.`DESC`)";
+				$sqlWhereAdd = "";
+				$sql = "select z.`ID`
+						, {$sqlSelectLabel} as `LABEL`
+					from `CRM_PROCES` as z
+					where z.`A_STATUS` in('NORMAL', 'WAITING')
+						and (z.`DESC` like '%{$query}%' or z.`ID` like '%{$query}%')
+						{$sqlWhereAdd}
+					-- group by z.`DESC`
+					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;
+			}
 			case '__COMPANIES': {
 				$db = DB::getDB();
 				$query = trim($query, ' %');

+ 31 - 4
SE/superedit-PROCES_MENU.php

@@ -42,9 +42,36 @@ function PROCES_MENU() {
 					echo json_encode($jsonData);
 					break;
 				}
-				case 'ProcesMenu__filtr_id': {
-					$typeSpecialUserId = TypespecialVariable::getInstance(-1, '__ZASOB');
-					if (!$typeSpecialUserId) {
+				case 'ProcesMenu__Proces_filtr_id': {
+					$typeSpecialProces = TypespecialVariable::getInstance(-1, '__PROCES');
+					if (!$typeSpecialProces) {
+						$jsonData = new stdClass();
+						$jsonData->message = "TypeSpecial '__PROCES' not exists";
+						echo json_encode($jsonData);
+						exit;
+					}
+
+					$query = V::get('q', '', $_REQUEST);
+					$rawRows = null;
+					$jsonData = array();
+					$queryParams = array();
+					$rows = $typeSpecialProces->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;
+				}
+				case 'ProcesMenu__Zasob_filtr_id': {
+					$typeSpecialZasob = TypespecialVariable::getInstance(-1, '__ZASOB');
+					if (!$typeSpecialZasob) {
 						$jsonData = new stdClass();
 						$jsonData->message = "TypeSpecial '__ZASOB' not exists";
 						echo json_encode($jsonData);
@@ -55,7 +82,7 @@ function PROCES_MENU() {
 					$rawRows = null;
 					$jsonData = array();
 					$queryParams = array();
-					$rows = $typeSpecialUserId->getValuesWithExports($query, $queryParams);
+					$rows = $typeSpecialZasob->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();