notifications.ctp 6.78 KB
<?php

/*
use App\Controller\MaterielsController;
use App\Controller\SuivisController;
use App\Controller\EmpruntsController;
use App\Controller\DocumentsController;
use App\Controller\UsersController;
use App\Controller\ConfigurationsController;
use App\Controller\FournisseursController;
use App\Controller\PagesController;
use App\Controller\SurCategoriesController;
use App\Controller\FichemetrologiquesController;
use App\Controller\FormulesController;
use App\Controller\QrCodesController;
*/

// Variables passées à la vue par le controleur
$configuration = $configuration;
$lab_name = $lab_name;




$log_info_page_link = $this->Html->link("log", ['action' => "logs?level=info"]);
$nice_notifs = [
    //'both' => 'log et courriel',
    'both' => $log_info_page_link.' et courriel',
    'log' => $log_info_page_link.' seulement',
    'mail' => 'mail seulement',
];

//$controllers = ['Materiels'];
$controllers = [
    'Configurations',
    'Materiels', 
    'Suivis',
    'Emprunts',
    'Documents',
    'Users',
    'Fournisseurs',
];
/*
$controllers = [
    new MaterielsController(),
    new SuivisController(),
    new EmpruntsController(),
    new DocumentsController(),
    new UsersController(),
    new FournisseursController(),
    /S
    new SurCategoriesController(),
    new ConfigurationsController(),
    new FichemetrologiquesController(),
    new FormulesController(),
    new QrCodesController(),
    S/
];
*/



function displayNotificationsForController($c, $lab_name, $nice_notifs) {

    $entity_name = $c->name;
    if ($entity_name == 'Configurations') {
        $entity_name = 'Configuration';
    }
    $article = ($entity_name == 'Configuration') ? "la" : "les";
    $entities_name = "$article $entity_name";
    ?>

    <a id="<?=$entity_name?>">
    <u><b>Notifications pour <?=$entities_name?> :</b></u>
    </a>
    <br><br>
    
    Pour changer ces notifications, ouvrir le fichier /src/Controller/<?=$c->name?>Controller.php :
    <ul>
    <li>
    	modifier les règles (LOCALES) dans la fonction setAuthorizations_<?=$lab_name?>() => elles ne s'appliqueront qu'à CE laboratoire
    </li>
    <li>
    	modifier les règles (GÉNÉRALES) dans la fonction setAuthorizations() => elles s'appliqueront à TOUS les laboratoires
    </li>
    <li>
    	dans la fonction setAuthorizations choisie, modifier les arguments de la fonction setNotificationAllowedOnActions()
    </li>
    </ul>
    <i>
    Pour modifier la liste spécifique d'emails, aller sur la page de configuration du logiciel.
    <br>
    (Veuillez ensuite partager ces modifications en les intégrant au code source général du logiciel (ainsi que toute autre modification effectuée) 
    via la commande "./PUSH_MODIFS")
    </i>
    <p>
    

	<!-- 
	<table border=1>
    -->
	<table>
		<thead>
		<tr>
			<th scope="col">ACTION</th>
			<th scope="col">NOTIFICATION</th>
		</tr>
		</thead>
		
		<tbody>
		<?php
		$notifs = $c->getNotifications();
		//debug($notifs);
		foreach ($notifs as $a=>$notif) {
		    $noun = $c->getActionNounAndPastVerb($a)['noun'];
		?>
			<!--  Notifications pour chaque action ($a) -->
    		<tr>
    			<th class="action" scope="row"><?="'$a' ($noun)"?></th>
		        <td><?=$nice_notifs[$notif]?></td>
    		</tr>
		<?php 
		}
		?>
		</tbody>

	</table>
	
<?php	
} // displayNotificationsForController
?>


<style>
table {
    /* 
    border-collapse: separate; 
    border: 1mm ridge grey;
    */
    border: 1mm ridge grey;
}
td, th {
    border: 1px solid #000;
    /*
    padding: 5px;
    */
}
th {
    text-align: center;
}
th.action {
    text-align: left;
}
</style>


	<h2>
		<!-- 
		<i class="icon-print"></i> 
		 -->
		<center>
			NOTIFICATIONS ACTIVES<p> 
			(log et envoi de mail pour certaines actions sur certaines entités)
		</center>
	</h2>

	<p>
		<!--  Lien GDOC -->
		=> <a href="https://docs.google.com/document/d/1-OhEeoi96j6ueUl5NQCQ9ZsTfbJTFw3ZVaWU2iYly_o/edit?pli=1#heading=h.ioktqtn9azyc">
			Lien vers le chapitre sur les Notifications dans la documentation technique (TODO)
		</a>
	</p>
    <hr/>

	<p>
	<?php 
    //http://labinvent.devv/configurations/view
    $page_config_link = $this->Html->link("page de configuration générale", ['controller'=>'Configurations', 'action' => "view"]);
    echo "<u><b>Etat actuel des notifications par email (configurable via la $page_config_link):</b></u>";
    echo "<ul>";
        $activated1 = $configuration->envoi_mail ? 'ACTIVÉ' : 'DÉSACTIVÉ';
        $activated2 = $configuration->envoi_mail_guests ? 'ACTIVÉ' : 'DÉSACTIVÉ';
        echo "<li>";
        echo "Etat des notifications par email à la liste générale : $activated1 ";
        echo "</li>";
        echo "<li>";
        echo "Etat des notifications par email à la liste spécifique : $activated2";
        echo "</li>";
    echo "</ul>";
    ?>
    </p>
	
	<p>
    <b>Par défaut, les notifications par email sont envoyées :</b>
    <ul>
        <li>
    		à l'utilisateur destinataire du matériel
        </li>
        <li>
    		au gestionnaire de référence du matériel
        </li>
        <li>
    		aux responsables (thématique ou métier) du matériel
        </li>
        <li>
    		et aussi à une liste de mails prédéfinie et configurable via la page web de configuration générale
        </li>
        <li>
    		(TODO) peut-être plus tard, aux responsables (scientifique et chef projet) du projet auquel le matériel est associé
        </li>
    </ul>
    Bien sûr, l'auteur de l'action n'est pas notifié (il est déjà au courant...)
    </p>
    <hr />


    
    

	<u><b>Tableaux des notifications par entité</b></u>
	<br>
	<br>
	<p>
    Les tableaux ci-dessous sont générés dynamiquement en fonction des notifications configurées (pour chaque entité) :
    </p>
	<?php 
	echo '<u>';
	foreach ($controllers as $controller) {
	    $controller = "App\\Controller\\".$controller.'Controller';
	    $controller = new $controller();
	    if ($controller->getNotifications()) {
            $entity_name = $controller->name;
            if ($entity_name == 'Configurations') $entity_name = 'Configuration';
            echo "<li><a href='#$entity_name'>$entity_name</a></li>";
    	    //echo '<br>';
	    }
	}
	echo '</u>';
	?>
	<hr />
	

<?php

//var_dump($mc->getAuthorizationForAction('edit'));
foreach ($controllers as $controller) {
    //$mc = new MaterielsController();
    /*
    $controller_name = 'MaterielsController';
    $controller = new $controller_name ();
    $controller_name = $c.'Controller';
    $controller = (new $controller_name());
    */
    $controller = "App\\Controller\\".$controller.'Controller';
    $controller = new $controller();
    if ($controller->getNotifications()) {
        echo '<br>';
        displayNotificationsForController($controller, $lab_name, $nice_notifs);
        echo '<br>';
        echo "<a href='#'>Haut de page</a>";
        echo '<hr />';
    }
}

?>