Просмотр исходного кода

added link target param for UrlAction routes

Piotr Labudda 9 лет назад
Родитель
Сommit
201613fb25
2 измененных файлов с 14 добавлено и 5 удалено
  1. 12 4
      SE/se-lib/Route/UrlAction.php
  2. 2 1
      SE/se-lib/TableAjax.php

+ 12 - 4
SE/se-lib/Route/UrlAction.php

@@ -115,6 +115,7 @@ class Route_UrlAction extends RouteBase {// TODO: UrlActionBase
 				, za.`DESC` as fun_name
 				, zp.ALIAS_ID as param_in_to_cell_id
 				, zp.DESC as param_in_name
+				, param.`DESC` as link_param
 			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')
@@ -122,6 +123,7 @@ class Route_UrlAction extends RouteBase {// TODO: UrlActionBase
 				join CRM_WSKAZNIK w on(w.ID_ZASOB = z.ID)
 --				join CRM_PROCES p on(p.ID = w.ID_PROCES)
 				join CRM_PROCES_idx_USER_to_PROCES_VIEW upv on(upv.ID_PROCES = w.ID_PROCES)
+				left join CRM_LISTA_ZASOBOW param on(param.PARENT_ID = z.ID and param.`TYPE` = 'DANE')
 			where z.PARENT_ID = :id_zasob
 				and z.`TYPE` = 'URL_ACTION'
 				and upv.ADM_ACCOUNT = :usr_login
@@ -140,6 +142,7 @@ class Route_UrlAction extends RouteBase {// TODO: UrlActionBase
 		} else {
 			$rows = self::fetchTableFunctions($idTbl, $idRecord);
 		}
+		DBG::_('DBG', '>1', 'rows', $rows, __CLASS__, __FUNCTION__, __LINE__);
 		$functions = array();
 		foreach ($rows as $row) {
 			// TODO: Router::getRoute("UrlAction_{$row['fun_name']}")->isRecordAllowed($idTbl, $idRecord, $tblName);
@@ -150,14 +153,19 @@ class Route_UrlAction extends RouteBase {// TODO: UrlActionBase
 				$fun['baseLink'] = "index.php?_route=UrlAction_{$row['fun_name']}";
 				$fun['ico'] = "glyphicon glyphicon-share";
 				$fun['cell_id_params'] = array();
-				$functions[$row['ID']] = $fun;
+				$fun['link_target'] = '_blank';// LINK_TARGET_SELF
+				$functions[ $row['ID'] ] = $fun;
 			}
-			$funParams = $functions[$row['ID']]['cell_id_params'];
+			$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;
+				$funParams[ $row['param_in_to_cell_id'] ] = $row['param_in_name'];
+				$functions[ $row['ID'] ]['cell_id_params'] = $funParams;
+			}
+			if ('LINK_TARGET_SELF' == $row['link_param']) {
+				unset($functions[ $row['ID'] ]['link_target']);
 			}
 		}
+		DBG::_('DBG', '>1', 'functions', $functions, __CLASS__, __FUNCTION__, __LINE__);
 		return $functions;
 	}
 

+ 2 - 1
SE/se-lib/TableAjax.php

@@ -6297,12 +6297,13 @@ jQuery(document).ready(function(){
 		$acl = $this->_acl;
 		if ($urlFunctions = Route_UrlAction::getTableFunctions($acl->getID(), $id, $acl->getName(), User::getLogin())) {
 			foreach ($urlFunctions as $urlFunction) {
+				// TODO: is allowed to view - test by Router::getRoute('UrlAction')->isFunctionAllowedForRecord($routeName = $urlFunction['name'], $acl->getID(), $id);
 				$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);
-				$rowFunction['target'] = '_blank';
+				if (!empty($urlFunction['link_target'])) $rowFunction['target'] = $urlFunction['link_target'];
 				if (!empty($urlFunction['cell_id_params'])) {
 					$record = $acl->getItem($id);
 					$urlParams = array();// [ "{$urlParamName}={$paramValue}" ]