Procházet zdrojové kódy

ProcesMenu Moje group proces list by parent id

Piotr Labudda před 11 roky
rodič
revize
8dca85e3cb
2 změnil soubory, kde provedl 55 přidání a 22 odebrání
  1. 54 5
      SE/se-lib/ProcesMenu.php
  2. 1 17
      SE/superedit-MENU_SELECT_PROCES.php

+ 54 - 5
SE/se-lib/ProcesMenu.php

@@ -172,8 +172,8 @@ class ProcesMenu {
 		$this->menuAction();
 		$userAcl = User::getAcl();
 
-		$procesy_init_ids = $this->_acl->getUsedProcesInitList();
-		if (empty($procesy_init_ids)) {
+		$procesyInitGroup = $this->getUsedProcesInitGroupedList();
+		if (empty($procesyInitGroup)) {
 			echo '<p>' . "Brak przypisanych procesów." . '</p>';
 			return;
 		}
@@ -200,9 +200,18 @@ class ProcesMenu {
 		$idZasobowUsera = array_keys($userGroups);
 		$idZasobowUsera = reset($idZasobowUsera);
 		?>
+<?php foreach ($procesyInitGroup as $vProcesGroup) : ?>
+<div class="container tbl-wyniki-testow page-header">
+	<h3>
+		<?php echo $vProcesGroup->label; ?>
+		<?php if ($vProcesGroup->nr > 0) : ?>
+		<small><a href="procesy5.php?task=CRM_PROCES&filtr_id=<?php echo $vProcesGroup->nr; ?>">{<?php echo $vProcesGroup->nr; ?>}</a></small>
+		<?php endif; ?>
+	</h3>
+</div>
 <div class="container tbl-wyniki-testow">
 	<div class="row">
-	<?php $i = 0; foreach ($procesy_init_ids as $proces_id => $proces_desc) : ?>
+	<?php $i = 0; foreach ($vProcesGroup->sub as $proces_id => $proces_desc) : ?>
 		<?php
 			$wynik_teoretyczny = $this->get_ocena_testu($proces_id, 'TEORETYCZNY');
 			$wynik_teoretyczny_value = $this->get_ocena_testu_value($proces_id, 'TEORETYCZNY');
@@ -215,8 +224,8 @@ class ProcesMenu {
 		<div class="col-md-3 wynik-cell wynik-<?php echo $wynik_teoretyczny; ?>">
 			<div class="panel panel-default">
 				<div class="panel-heading">
-					<h3 class="panel-title"><a class="badge" href="procesy5.php?task=PROCES_VIEW&id_proces=<?php echo $proces_id; ?>" title="zobacz instrukcję do procesu <?php echo $proces_id; ?>" target="_blank"><?php echo $proces_id; ?></a>
-					<small class="proces-title"><?php echo $proces_desc; ?></small></h3>
+					<span data-toggle="tooltip" title="<?php echo $proces_desc; ?>"><?php echo V::strShortUtf8($proces_desc, 80); ?></span>
+					<a href="procesy5.php?task=PROCES_VIEW&id_proces=<?php echo $proces_id; ?>" title="zobacz instrukcję do procesu <?php echo $proces_id; ?>" target="_blank">{<?php echo $proces_id; ?>}</a>
 				</div>
 				<div class="panel-body">
 					<li>
@@ -259,7 +268,47 @@ class ProcesMenu {
 	<?php endforeach; ?>
 	</div>
 </div>
+<?php endforeach; ?>
+<script>
+jQuery(document).ready(function() {
+	jQuery('[data-toggle="tooltip"]').tooltip();
+});
+</script>
 		<?php
+		SE_Layout::dol();
+		exit;
+	}
+
+	private function getUsedProcesInitGroupedList() {
+		$procesyInitGroup = array();
+		$procesyInitList = $this->_acl->getUsedProcesInitList();
+		if (empty($procesyInitList)) {
+			return;
+		}
+		$sqlProcesyInitIds = implode(",", array_keys($procesyInitList));
+		$sql = "select p.`ID`, p.`PARENT_ID`, pp.`DESC` as pp__DESC
+			from `CRM_PROCES` as p
+				join `CRM_PROCES` as pp on(pp.`ID`=p.`PARENT_ID`)
+			where p.`ID` in({$sqlProcesyInitIds})
+		";
+		$groupedProcesyInit = array();
+		$db = DB::getDB();
+		$res = $db->query($sql);
+		while ($r = $db->fetch($res)) {
+			if (!array_key_exists($r->PARENT_ID, $procesyInitGroup)) {
+				$procesyInitGroup[$r->PARENT_ID] = (object)array('nr'=>$r->PARENT_ID, 'label'=>$r->pp__DESC, 'sub'=>array());
+			}
+			$procesyInitGroup[$r->PARENT_ID]->sub[$r->ID] = $procesyInitList[$r->ID];
+			$groupedProcesyInit[] = $r->ID;
+		}
+		$ungroupedProcesyInit = array_diff(array_keys($procesyInitList), $groupedProcesyInit);
+		if (!empty($ungroupedProcesyInit)) {
+			$procesyInitGroup[$r->PARENT_ID] = (object)array('nr'=>null, 'label'=>"Pozostałe", 'sub'=>array());
+			foreach ($ungroupedProcesyInit as $nr) {
+				$procesyInitGroup[$r->PARENT_ID]->sub[$nr] = $procesyInitList[$nr];
+			}
+		}
+		return $procesyInitGroup;
 	}
 
 	function menuAction() {

+ 1 - 17
SE/superedit-MENU_SELECT_PROCES.php

@@ -1,25 +1,9 @@
 <?php
 
 
-function MENU_SELECT_PROCES($ARG1 = null, $ARG1_VAL = null) {
-	//funkcja do wyboru ktorym procesem sie zajmuje user aktualnie - ma filtrowac cale menu i dac tylko to co wynika z danego procesu. 
-	//Po jej wylaczeniu system ma robic domyslna inicjalizacje ? 
-	//funkcja ma wystawić URL'e i MENU tylko te powiązane z procesem.
-	
-	//jezeli zostala wlaczona to zostaaa usatwiona zmienna:
-	//tutaj zapisuje menu URL etc
-	// $_SESSION['MENU_SELECT_PROCES_DATA']['MENU_COLUMN']
-	//tutaj jest zapisany numer aktualnie filtrowanego procesu
-	// $_SESSION['MENU_SELECT_PROCES_DATA']['uruchom_filtr_uprawnien_dla_procesu']
-	//tutaj jesta zapisane jakie jest aktualnie uruchomione menu w funkcji
-	// $_SESSION['MENU_SELECT_PROCES']
-	
-	require_once dirname(__FILE__) . '/' . 'se-lib' . '/' . 'Lib.php';
-	Lib::loadClass('DB');
-
+function MENU_SELECT_PROCES() {
 	Lib::loadClass('ProcesMenu');
 
 	$menu_select = ProcesMenu::getInstance();
 	$menu_select->show();
-
 }