cruge / views / ui / _authitem.php

Diff from to

views/ui/_authitem.php

 			
 		$data es una instancia de CAuthItem
 	*/
+
+	$rbac = Yii::app()->user->rbac;
+
+
+	$asignaciones = $rbac->getCountUsersAssigned($data->name);
 	
-	$asignaciones = Yii::app()->user->rbac->getCountUsersAssigned($data->name);
-	
-	$referencias =  Yii::app()->user->rbac->getParents($data->name);
+	$referencias =  $rbac->getParents($data->name);
 	$count_ref = count($referencias);
+
+	// da un color especial a aquellos TASK que son marcadas como
+	// MENUES o SUBMENUES usando la sintaxis de la descripcion del CAuthItem
+	//
+	$colorEspecialBkTaskTipoMenuitem='';
+	if($data->type == CAuthItem::TYPE_TASK){
+		$extra='';
+		if($rbac->isTaskTopMenuItem($data))
+			$extra = 'border: 2px solid gray;';
+		if($rbac->isTaskMenuItem($data))	
+			$colorEspecialBkTaskTipoMenuitem="style='background-color: #ffffe0;{$extra}'";
+		if($rbac->isTaskSubMenuItem($data)){	
+			$colorEspecialBkTaskTipoMenuitem="style='background-color: #e0ffff;{$extra}'";
+			if(!$rbac->getParentMenuAuthItem($data))
+				$colorEspecialBkTaskTipoMenuitem="style='background-color: #ffaaaa;{$extra}'";
+		}
+	}
+
 	
+	// crea un DropDownList con las operaciones de la tarea
+	// pre seleccionando aquella que esta marcada en la sintaxis de la tarea
+	//
+	//	el evento 'onchange' del dropdown sera manejado en la vista maestra:
+	//		_listaauthitems.php
+	//
+	$oplist = '';
+	if($data->type == CAuthItem::TYPE_TASK){
+		if($rbac->isTaskSubMenuItem($data)){
+			// enumera las operaciones bajo esta tarea	
+			$oplistitems = array();
+			foreach($rbac->getItemChildren($data->name) as $item)
+				if($item->type == CAuthItem::TYPE_OPERATION)
+					if(strtolower(substr($item->name,0,7))=='action_')
+						$oplistitems[] = $item;
+
+			if(!empty($oplistitems)){
+				// tiene operaciones hijas
+				$current_action = $rbac->getTaskActionItemName($data);
+				$oplist = CHtml::dropDownList('crugeavailableops_'.$data->name
+						,$current_action
+						,array(''=>'--'.CrugeTranslator::t('seleccione action')
+							.'--')+CHtml::listData($oplistitems,'name','name')
+						,array('alt'=>$data->name)
+					);
+			}
+		}	
+	}
+
+	//  a las TAREAS que son menues de 1er nivel les crea un link ajax
+	//	para que el usuario cree una nueva tarea hija (sub menu) con 
+	//  la sintaxis de enlace lista.
+	$newChildTask='';
+	if($data->type == CAuthItem::TYPE_TASK){
+		if($rbac->isTaskTopMenuItem($data)){
+
+			$url = Yii::app()->user->ui->getRbacAuthItemCreateUrl(
+				CAuthItem::TYPE_TASK, $data->name);
+
+			$newChildTask = CHtml::link(
+				 CrugeTranslator::t("Nuevo sub menu"),$url);
+		}
+	}
+
+
 ?>
 
-<div class='row'>
+<div class='row' <?php echo $colorEspecialBkTaskTipoMenuitem;?> >
 	<div class='col authname'><?php echo $data->name;?></div>
 	
 	
 	<div class='col operacion'>
 		<b><?php 
 			if($asignaciones > 0) 
-				echo "<span style='cursor: pointer;' title='".CrugeTranslator::t("Usuarios a los que les ha sido asignado este ".Yii::app()->user->rbac->getAuthItemTypeName($data->type))."'>".$asignaciones."&nbsp;".CrugeTranslator::t("asignaciones")."</span>";
+				echo "<span style='cursor: pointer;' title='".CrugeTranslator::t("Usuarios a los que les ha sido asignado este ".$rbac->getAuthItemTypeName($data->type))."'>".$asignaciones."&nbsp;".CrugeTranslator::t("asignaciones")."</span>";
 			?>
 		</b>
 	</div>
 	<div class='col descr'>	
 		<?php 	
 			if(trim($data->description) != '')
-				echo "<hr/>".$data->description;
+				echo "<hr/>"."<span class='description'>"
+					.$data->description."</span>";
 		?>
 	</div>
-</div>
+
+	<?php if($oplist != '') { ?>
+	<div style='float: right;' title='<?php echo CrugeTranslator::t("action que sera tomado como url del menuitem") ?>' >
+		<?php 
+			echo CrugeTranslator::t("Action Maestro")." : ".$oplist;
+		?>
+	</div>
+	<?php } ?>
+
+	<?php if($newChildTask != '') { ?>
+	<div style='float: right;' title='<?php echo CrugeTranslator::t("Creara un sub menu item enlazado a esta tarea.") ?>' >
+		<?php 
+			echo $newChildTask;
+		?>
+	</div>
+	<?php } ?>
+
+
+
+</div>
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.