view.ctp 10.1 KB
<?php
/*
use App\Controller\SurCategoriesController;
use Cake\ORM\Entity;
use App\Model\Entity\GroupesThematique;
use App\Model\Entity\GroupesMetier;
*/

$DEBUG=false;
//$DEBUG=true;

// Arguments passés par le contrôleur

$role = $role;

$id = $id;

$entity = $entity;
//debug($entity);
//$parent_entity_infos=$parent_entity_infos;
$parent_entities_infos = $parent_entities_infos;
$fields_label = $fields_label;
/*
$parent_entity_controller_name = $parent_entity_controller_name;
$parent_entity_type_name = $parent_entity_type_name;
$parent_entity_name = $parent_entity_name;
$parent_entity_id = $parent_entity_id;
*/

//$categories = $categories;
//$materiels = $materiels;
$entity_article = $entity_article;
$entity_type_name_singular = $entity_type_name_singular;
$entity_name = $entity_name;

// Liste des entités à afficher (en tant qu'entité associée) :
// En général, par défaut : "Matériels associés" et "Utilisateurs associés"
$child_entities_list = $child_entities_list;

// OPTIONNELS
if (isset($sub_controller)) {
    $sub_controller = $sub_controller;
    $sub_controller_singular = $sub_controller_singular;
}
    
// Fonctions
//$displayElement = $displayElement;

//debug($entity);
//debug($entity->getSource());
//exit;

?>


<!-- 
<div class="surCategories view">
 -->
<div class="Entity view">

	<!-- 
	<h2>Détail domaine</h2>
	 -->
	 
	<h2>Informations sur <?=$entity_article.$entity_type_name_singular.' "'.$entity_name.'"'?></h2>
	
	<?= $this->Html->link("Voir toutes les entités (liste)", ['action'=>'index']) ?>
	<br />
	<br />

	<table style="margin-bottom: 30px;">
	
		<tr>
			<th style="width: 250px;"></th>
			<th></th>
		</tr>
    	
    	<?php
    	
    	// Lien Editer
        if (in_array($role, [
            //'Administration Plus',
            'Administration',
            'Super Administrateur'
        ])) {
            echo $this->Html->link(__('<i class="icon-pencil"></i> Editer'), [
                'action' => 'edit',
                //$surCategory->id
                $entity->id
            ], [
            	'style' => 'margin-right: 40px; display: inline-block',
                'escape' => false,
                'onclick' => 'return true;'
            ]);
        }
        
        // Lien Supprimer
        if (in_array($role, [
            'Super Administrateur'
        ])) {
            echo $this->Form->postLink(__('<i class="icon-trash"></i> Supprimer'), [
                'action' => 'delete',
                $entity->id
            ], [
                'style' => 'display: inline-block',
                'escape' => false,
                'confirm' => __('Êtes-vous sur de vouloir supprimer cette entité ?')
                //'confirm' => __('Êtes-vous sur de vouloir supprimer # {0}?', $surCategory->id)
            ]);
        }

        /* 
         * I - Affichage des champs de l'entité (nom, description, ...)
         * 
         *  avec les entités associées "PARENTES" (groupes metier/thema, projet, user, ...)
         */
        
        //debug($entity);
        //debug($fields_label);
        //debug($parent_entities_infos); 
        foreach ($entity->toArray() as $fname=>$fval) {
            if ( $fval!==null && $fname!='id' && $fname!='description' && !is_array($fval) ) {
                //debug($fname);
                //debug($fval);
                $flabel = ucfirst($fields_label[$fname]);
                $fvalue = $fval;
                // Si le champ n'est pas une FK (terminant par '_id') => on l'affiche directement
                if ( strpos($fname,'_id') !== strlen($fname)-3 )
                    $this->MyHelper->displayElement(__($flabel), h($fvalue));
                // Si le champ est une FK => on récupère la valeur du 'contained'
                else {
                    //debug($fname);
                    $parent_entity_infos = &$parent_entities_infos[$fname];
                    //debug($parent_entity_infos);
                    $fk_contained_name = $parent_entity_infos['fk_contained_name'];
                    //debug($fk_contained_name);
                    //$fvalue = $associated_entity_infos['name'];
                    $fvalue = $entity->$fk_contained_name->nom;
                    $this->MyHelper->displayElement(
                        __(ucfirst($parent_entity_infos['type_name'])),
                        //$category->has('sur_category') ? $this->Html->link($category->sur_category->nom, [
                        $this->Html->link($fvalue, [
                            'controller' => $parent_entity_infos['controller_name'],
                            //'controller' => 'SurCategories',
                            'action' => 'view',
                            //$associated_entity_infos['id']
                            $fval
                            //$category->sur_category->id
                        ])
                    );
                }
                //$this->MyHelper->displayElement(__(ucfirst($fname)), h($fval));
            } // if
        } // foreach

        //$displayElement(__('Nom'), h($entity_name));
        /*
        $this->MyHelper->displayElement(__('Nom'), h($entity_name));
        $this->MyHelper->displayElement(__('Description'), h($entity->description));
        */
        // Affichage du nom de l'entité parente si elle existe 
        // (ex: Domaine pour une catégorie, ou catégorie pour une sous-catégorie)
        //debug($entity->sur_category->getSource()); // 'SurCategories'
        /*
        $e = new SurCategory();
        debug($e->getSource());
        */
        /*
        if($parent_entity_infos)
            //$this->MyHelper->displayElement(__('Domaine'), h($entity->sur_category->nom));
            //$this->MyHelper->displayElement(__(ucfirst($parent_entity_type_name)), h($parent_entity_name));
            $this->MyHelper->displayElement(
                __(ucfirst($parent_entity_infos['type_name'])), 
                //$category->has('sur_category') ? $this->Html->link($category->sur_category->nom, [
                $this->Html->link($parent_entity_infos['name'], [
                    'controller' => $parent_entity_infos['controller_name'],
                    //'controller' => 'SurCategories',
                    'action' => 'view',
                    $parent_entity_infos['id']
                    //$category->sur_category->id
                ])
            );
        */
            /*
            $this->MyHelper->displayElement(__('Domaine'), $this->Html->link($entity->sur_category->nom, [
                    'controller' => 'SurCategories',
                    'action' => 'view',
                    $entity->sur_category->id
                ])
            );
            */
        ?>

    </table>
    
    <!-- champ DESCRIPTION (affichage spécial pour sauts de lignes) -->
    <!-- 
    <=$this->Text->autoParagraph(h($entity->description));?>
     -->
    <?php 
    if ($entity->has('description') && $entity->description) {
        echo "<b><u>Description :</b></u>";
        echo "<br/><br/>";
        echo $this->Text->autoParagraph(h($entity->description));
        echo "<br/><br/>";
    }
    ?>
    

	<!-- Bouton "Ajouter" pour ajouter un nouvel élément (ssi autorisé) -->
	<?php
	if (isset($sub_controller)) {
    	echo $this->element('button_add', compact(
    	    'id',
        	'sub_controller',
    	    'sub_controller_singular'
    	));
    	/*
    	echo $this->element('button_add', [
    	    'id' => $id,
    	    'sub_controller' => $sub_controller,
    	    'sub_controller_singular' => $sub_controller_singular
    	]);
    	*/
    	//echo "<br />";
	}
	?>
	

	<!-- II - Affichage des entités associées "ENFANTS" (matériels, utilisateurs, ...) -->
	
	<?php
	//debug($entity);
	//debug($child_entities_list);
	foreach ($child_entities_list as $child_controller_name => $es) {
	    //debug($es);
	    // function displaySectionShowHide($controller_name, $entity_type_name, $title, $id_name, $is_masculine, $name_field_name, $entities) {
	    $fk_contained_name = $es['fk_contained_name'];
	    //debug($entity->$fk_contained_name);
	    //$entities = $entity->$fk_contained_name;
	    //debug($entities); exit;
	    
	    /* (EP202010)
	     * CAS TRES PARTICULIER DES UTILISATEURS ASSOCIÉS À UN GROUPE THÉMATIQUE OU MÉTIER
	     * => On ajoute à chaque nom d'utilisateur la mention '(responsable)' s'il est responsabble du groupe 
	     * (bidouille, pas très clean, mais difficile de gérer des cas très particuliers dans des algos génériques...)
	     */
	    if ( 
	       ($entity instanceof GroupesThematique || $entity instanceof GroupesMetier)
	       && 
	       $child_controller_name == 'Users'
        ) {
            $f_isresp_name = ($entity instanceof GroupesThematique) ? 'is_resp_groupes_thematique' : 'is_resp_groupes_metier';
            foreach ($entity->$fk_contained_name as $user)
                if ($user->$f_isresp_name) $user->nom = $user->nom.' (responsable)';
	    }
	    
	    $this->MyHelper->displayAssociatedEntitiesAsSectionShowHide(
    	    //$es['controller_name'],
	        $child_controller_name,
    	    $es['entity_type_name_singular'],
    	    $es['entity_title'],
    	    //$es['id_name'],
    	    $es['is_masculin'],
    	    $es['name_field_label'],
	        $entity->$fk_contained_name
	    );
	    /*
	    $this->MyHelper->displayAssociatedEntitiesAsSectionShowHide(
	       $es['controller_name'],
	       $es['entity_type_name_singular'],
	       $es['entity_title'], 
	       //$es['id_name'], 
	       $es['is_masculin'], 
	       $es['name_field_label'], 
	       $es['entities'] 
	    );
	    */
    	//displaySectionShowHide($this->Html, false, 'Aucune catégorie liée', 'categs', 'Catégories', $categories, 'nom', 'Categories', 'catégorie');
    	//$this->MyButton->displaySectionShowHide(false, 'Aucune catégorie liée', 'categs', 'Catégories', $categories, 'nom', 'Categories', 'catégorie');
    	//$this->MyButton->displaySectionShowHide(true, 'Aucun matériel lié', 'materiels', 'Matériels', $materiels, 'designation', 'Materiels', 'matériel');
	}
	?>

</div>

<!--
<div class="actions">
			<php echo $this->element('menu') ?>
			<php

echo $this->element('menu_view', [
    'pluralHumanName' => 'Domaines',
    'singularHumanName' => 'Domaine',
    'lien' => $surCategory->id
])?>
		</div>
-->