add.ctp 5.69 KB

<?php
//var_dump($users_option_list);
//var_dump($users_login_and_email);

/*
 * (EP)
 * Variables passed to this view by the Controller :
 */
$users_option_list = $users_option_list;
$users_login_and_email = $users_login_and_email;
// TODO: yena d'autres... il faut les lister toutes ici, pour plus de clarté


?>

<div class="utilisateurs form">
    <?= $this->Form->create($user) ?>
    <?php $LDAP_USED = $configuration->ldap_used; ?>
    <fieldset>
		<h2>
			<i class="icon-plus"></i> Ajouter un utilisateur privilégié
		</h2>
        <?php
        
        // LDAP
        if ($LDAP_USED) {
            echo $this->Form->control('nom', [
                'options' => $users_option_list,
                'empty' => 'Choisir un utilisateur',
                'label' => 'Nom (LDAP)',
                'div' => 'input required'
            ]);
        }
        
        // fake LDAP
        else {
            echo $this->Form->control('newname', [
                'label' => 'Nom',
                'div' => 'input required'
            ]);
            echo $this->Form->control('newgivenname', [
                'label' => 'Prénom',
                'div' => 'input required'
            ]);
        }

        echo '<div style="color: grey; font-size: 10px;">Note: un utilisateur ne peut pas être présent deux fois dans l\'inventaire.</div>';
        
        $READONLY = $LDAP_USED ? true : false;
        
        echo $this->Form->control('username', [
            'label' => 'Login',
            'div' => 'input required',
            'readonly' => $READONLY
        ]);
        
        if (! $LDAP_USED) {
            echo $this->Form->control('password');
        }
        
        echo $this->Form->control('email', [
            'label' => 'E-mail',
            'div' => 'input required',
            'readonly' => $READONLY
        ]);
        
        echo $this->Form->control('role', [
            'label' => 'Rôle',
        	'empty' => 'N/A',
            'options' => [
                'Super Administrateur' => 'Super Administrateur',
                //'Administration Plus' => 'Administration Plus',
                'Administration' => 'Administration',
                'Responsable' => 'Responsable',
                'Utilisateur' => 'Utilisateur'
            ]
        ]);
        
        // Groupe métier
        echo $this->Form->control('groupes_metier_id', [
            'label' => $configuration->nom_groupe_metier,
            'options' => $groupesMetiers,
            'default' => 1
        ]);
        echo $this->Form->control('is_resp_groupes_metier', [
            'label' => 'Responsable du '.$configuration->nom_groupe_metier,
        ]);
        
        // Groupe thematique
        echo $this->Form->control('groupes_thematique_id', [
            'label' => $configuration->nom_groupe_thematique,
            'options' => $groupesThematiques,
            'default' => 1
        ]);
        echo $this->Form->control('is_resp_groupes_thematique', [
            'label' => 'Responsable du '.$configuration->nom_groupe_thematique,
        ]);
        
        // Domaine
        echo $this->Form->control('sur_categorie_id', [
            'label' => 'Domaine',
            'options' => $sur_categorie,
            'default' => 0
        ]);
        
        ?>
    </fieldset>
    <?= $this->Form->submit(__('Valider')) ?>
    <?= $this->Form->end() ?>
</div>

<!--
<div class="actions">
<php
    echo $this->element('menu');
    echo $this->element('menu_form', [ 'pluralHumanName' => 'Utilisateurs' ]);
?>
</div>
-->

<?php
// Javascript functions, only if LDAP
if ($LDAP_USED) {
?>

<script type="text/javascript">

/** 
 * Quand on selectionne un utilisateur dans la liste => on met à jour son login et son email (en readonly)
 
 * (EP 6/5/19) New method, quicker, get email directly from PHP $users_login_and_email array
 * (OLD code is at end of file) 
 *
 * Event "Nom utilisateur" change => "login" and "email" change
 *
 * TODO: Code commun avec edit.ctp => factoriser quelque part, mais comment, vu qu'on a besoin du tableau users_login_and_email ???
 */

$(document).ready(function () {

	// Convert (once for all) PHP $users_login_and_email array to JAVASCRIPT array 
	//Implode Method
	//var array = [INF?php echo implode($array, ","); ?SUP];
	//JSON Method
	var users_login_and_email = <?php echo json_encode($users_login_and_email); ?>;
	
	/* (EP) ON "nom" change => update login and email */
	$("#nom").bind("change", function(event) {
		//if ( $("#nom").val() == "" ) return false;
		var user_name = $("#nom").val();
		var new_login = '';
		var new_email = '';
		if (user_name != '') {
			new_login = users_login_and_email[user_name]["login"];
			new_email = users_login_and_email[user_name]["email"];
		}
		$("#username").val(new_login);
		$("#email").val(new_email);
	});
	
}); // ON document.ready()

/*
//OLD method, fetch login and email via AJAX request to UsersController.getLdapLogin and getLdapEmail()
	$("#nom").bind("change", function (event) {
		if ( $("#nom").val() == "" ) return false;
		var url = document.URL;

		/* Mise a jour du login */
		/* Pour tester manuellement :
		Quand on est sur la page d'ajout d'un utilisateur,
		remplacer dans l'url "/users/add" par "/users/getLdapLogin/Pallier Etienne" par exemple
		*/
		/*
		var loginUrl = url.replace("add", "getLdapLogin/");
		$.ajax({
			url: loginUrl + $("#nom").val()
		}).done(function(data) {
			$("#username").val(data)
		});
		
		/* Mise a jour du mail */
		/* Pour tester manuellement : Voir exemple precedent, c'est le meme principe */
		/*
		var emailUrl = url.replace("add", "getLdapEmail/");
		$.ajax({
			url: emailUrl + $("#nom").val()
		}).done(function(data) { 
			$("#email").val(data)
		});
		
	}); // ON "nom" field change

*/


</script>

<?php
} // if ($LDAP_USED)
?>