Explorar el Código

added row functions with type URL_ACTION in TableAjax

Piotr Labudda hace 10 años
padre
commit
c7415b12e4
Se han modificado 2 ficheros con 81 adiciones y 4 borrados
  1. 48 0
      SE/se-lib/Route/UrlAction.php
  2. 33 4
      SE/se-lib/TableAjax.php

+ 48 - 0
SE/se-lib/Route/UrlAction.php

@@ -79,4 +79,52 @@ class Route_UrlAction extends RouteBase {// TODO: UrlActionBase
 		}
 	}
 
+	public static function getTableFunctions($idTbl, $idRecord, $tblName = '') {
+		$pdo = DB::getPDO();
+		/*
+			636  TABELA IN7_MK_BAZA_DYSTRYBUCJI Projekty
+				763  KOMORKA ID Nr
+				22332 22317 URL_ACTION ProjektyKosztyWstepnychRobot
+					22335 763 PARAM_IN ID_PROJECT
+
+			25  TYPESPECIALS TYPESPECIALS Powiązania tabel
+				22317  URL_ACTION ProjektyKosztyWstepnychRobot
+					22324  PARAM_IN ID_PROJECT
+		 */
+		$sth = $pdo->prepare("
+			select z.ID as ID
+				, z.`DESC_PL` as fun_label
+				, za.`DESC` as fun_name
+				, zp.ALIAS_ID as param_in_to_cell_id
+				, zp.DESC as param_in_name
+			from CRM_LISTA_ZASOBOW z
+				join CRM_LISTA_ZASOBOW za on(za.ID = z.ALIAS_ID)
+				left join CRM_LISTA_ZASOBOW zp on(zp.PARENT_ID = z.ID and zp.`TYPE` = 'PARAM_IN')
+				left join CRM_LISTA_ZASOBOW zpa on(zpa.ID = zp.ALIAS_ID and zpa.`TYPE` = 'PARAM_IN' and zpa.`DESC` = zp.`DESC`)
+			where z.PARENT_ID = :id_zasob
+				and z.`TYPE` = 'URL_ACTION'
+		");
+		$sth->bindValue(':id_zasob', $idTbl, PDO::PARAM_STR);
+		$sth->execute();
+		$rows = $sth->fetchAll();
+		$functions = array();
+		foreach ($rows as $row) {
+			if (!array_key_exists($row['ID'], $functions)) {
+				$fun = array();
+				$fun['label'] = $row['fun_label'];
+				$fun['name'] = $row['fun_name'];
+				$fun['baseLink'] = "index.php?_route=UrlAction_{$row['fun_name']}";
+				$fun['ico'] = "glyphicon glyphicon-share";
+				$fun['cell_id_params'] = array();
+				$functions[$row['ID']] = $fun;
+			}
+			$funParams = $functions[$row['ID']]['cell_id_params'];
+			if ($row['param_in_to_cell_id'] > 0 && !empty($row['param_in_name'])) {
+				$funParams[$row['param_in_to_cell_id']] = $row['param_in_name'];
+				$functions[$row['ID']]['cell_id_params'] = $funParams;
+			}
+		}
+		return $functions;
+	}
+
 }

+ 33 - 4
SE/se-lib/TableAjax.php

@@ -9,6 +9,7 @@ Lib::loadClass('FileUploader');
 Lib::loadClass('UserProfile');
 Lib::loadClass('ProcesHelper');
 Lib::loadClass('Router');
+Lib::loadClass('Route_UrlAction');
 
 class TableAjax extends ViewAjax {
 
@@ -1123,6 +1124,7 @@ class TableAjax extends ViewAjax {
 		};
 
 		priv.ajaxLoadMoreFunctionsCell = function(rowPK) {
+			var dbg = priv.options.debug;
 			if (_popoverCellAjaxXhr) {
 				_popoverCellAjaxXhr.abort();
 			}
@@ -1166,16 +1168,16 @@ class TableAjax extends ViewAjax {
 									popoverRowFuncNode = popoverNode.find('.popoverRowFunctions');
 							;
 							{// fix generated row Functions by loaded from ajax call
-								console.log('popoverRowFunctions. popoverRowFuncNode', popoverRowFuncNode);
-								console.log('popoverRowFunctions. funcNodesToUpdate', funcNodesToUpdate);
+								if(dbg) console.log('popoverRowFunctions. popoverRowFuncNode', popoverRowFuncNode);
+								if(dbg) console.log('popoverRowFunctions. funcNodesToUpdate', funcNodesToUpdate);
 								funcNodesToUpdate.forEach(function(funcNodeInfo) {
 									var className = 'func_name-' + funcNodeInfo.id,
 											foundRowFuncNode = null
 									;
-									console.log('popoverRowFunctions. funcNodesToUpdate loop:', funcNodeInfo);
+									if(dbg) console.log('popoverRowFunctions. funcNodesToUpdate loop:', funcNodeInfo);
 									popoverRowFuncNode.find('li > a').each(function(ind, n) {
 										var n$ = $(n);
-										console.log('popoverRowFunctions loop(',ind,'):', n, 'data(func_name)', n$.data('func_name'), 'data', n$.data());
+										if(dbg) console.log('popoverRowFunctions loop(',ind,'):', n, 'data(func_name)', n$.data('func_name'), 'data', n$.data());
 										if (n$.hasClass(className)) {
 											foundRowFuncNode = n$;
 										}
@@ -6063,6 +6065,33 @@ jQuery(document).ready(function(){
 				$response->rowFunctions[] = $rowFunc;
 			}
 		}
+
+		$acl = $this->_acl;
+		if ($urlFunctions = Route_UrlAction::getTableFunctions($acl->getID(), $id, $acl->getName())) {
+			foreach ($urlFunctions as $urlFunction) {
+				$rowFunction = array();
+				$rowFunction['href'] = $urlFunction['baseLink'];
+				$rowFunction['ico'] = V::get('ico', 'glyphicon glyphicon-share', $urlFunction);
+				$rowFunction['label'] = $urlFunction['label'];
+				$rowFunction['title'] = V::get('title', $urlFunction['label'], $urlFunction);
+				if (!empty($urlFunction['cell_id_params'])) {
+					$record = $acl->getItem($id);
+					$urlParams = array();// [ "{$urlParamName}={$paramValue}" ]
+					foreach ($urlFunction['cell_id_params'] as $idField => $urlParamName) {
+						$paramValue = '';
+						$fld = $acl->getField($idField);
+						if ($fld) {
+							$fldName = $fld['name'];
+							$paramValue = V::get($fldName, '', $record);
+							$urlParams[] = "{$urlParamName}={$paramValue}";
+						}
+					}
+					if (!empty($urlParams)) $rowFunction['href'] .= "&" . implode("&", $urlParams);
+				}
+				$response->rowFunctions[] = $rowFunction;
+			}
+		}
+
 		return $response;
 	}