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

- In the "actions" menu, list only the relations that have a meaning for the selected class.

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@490 a333f486-631f-4898-b8df-5754b55c2be0
dflaven пре 15 година
родитељ
комит
0033ebb434
2 измењених фајлова са 18 додато и 6 уклоњено
  1. 1 1
      application/displayblock.class.inc.php
  2. 17 5
      core/metamodel.class.php

+ 1 - 1
application/displayblock.class.inc.php

@@ -835,7 +835,7 @@ class MenuBlock extends DisplayBlock
 				//if ($bIsModifyAllowed) { $aActions[] = array ('label' => 'Clone...', 'url' => "../pages/$sUIPage?operation=clone&class=$sClass&id=$id&$sContext"); }
 				if ($bIsModifyAllowed) { $aActions[] = array ('label' => Dict::S('UI:Menu:Modify'), 'url' => "../pages/$sUIPage?operation=modify&class=$sClass&id=$id&$sContext"); }
 				if ($bIsDeleteAllowed) { $aActions[] = array ('label' => Dict::S('UI:Menu:Delete'), 'url' => "../pages/$sUIPage?operation=delete&class=$sClass&id=$id&$sContext"); }
-				$aRelations = MetaModel::EnumRelations();
+				$aRelations = MetaModel::EnumRelations($sClass);
 				foreach($aRelations as $sRelationCode)
 				{
 					$aActions[] = array ('label' => MetaModel::GetRelationVerbUp($sRelationCode), 'url' => "../pages/$sUIPage?operation=swf_navigator&relation=$sRelationCode&class=$sClass&id=$id&$sContext");

+ 17 - 5
core/metamodel.class.php

@@ -722,12 +722,24 @@ abstract class MetaModel
 
 	public static function EnumRelations($sClass = '')
 	{
-		if (empty($sClass))
-		{
-			return array_keys(self::$m_aRelationInfos);
+		$aResult = array_keys(self::$m_aRelationInfos);
+		if (!empty($sClass))
+		{
+			// Return only the relations that have a meaning (i.e. for which at least one query is defined)
+			// for the specified class
+			$aClassRelations = array();
+			foreach($aResult as $sRelCode)
+			{	
+				$aQueries = self::EnumRelationQueries($sClass, $sRelCode);
+				if (count($aQueries) > 0)
+				{
+					$aClassRelations[] = $sRelCode;
+				}
+			}
+			return $aClassRelations;
 		}
-
-		return array_keys(self::EnumRelationQueries($sClass, $sRelCode));
+		
+		return $aResult;
 	}
 
 	public static function EnumRelationProperties($sRelCode)