From 00b7efa1ef05d346fae4f3715e50af442588006a Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Thu, 16 Feb 2017 19:04:19 +0100 Subject: [PATCH] [Done] Partie dynamique du choix des members pour permissions --- build/viewer/view/group/permission_choice.php | 2 +- .../viewer/view/group/permission_choice.twig | 4 +- public_html/view/js/groups.js | 154 ++++++++++++++++-- 3 files changed, 143 insertions(+), 17 deletions(-) diff --git a/build/viewer/view/group/permission_choice.php b/build/viewer/view/group/permission_choice.php index b2dd63a..708fbdd 100644 --- a/build/viewer/view/group/permission_choice.php +++ b/build/viewer/view/group/permission_choice.php @@ -90,7 +90,7 @@ /* (3) On récupère la liste des UID uniquement */ $members_ids = []; foreach($getmembersResponse->get('clusters') as $member) - $members_ids[] = $member['id_source']; + $members_ids[] = $member['id_user_cluster']; diff --git a/build/viewer/view/group/permission_choice.twig b/build/viewer/view/group/permission_choice.twig index fc253f6..cf79f44 100644 --- a/build/viewer/view/group/permission_choice.twig +++ b/build/viewer/view/group/permission_choice.twig @@ -1,8 +1,10 @@ Modifier d'autres permissions

+ +
- +
diff --git a/public_html/view/js/groups.js b/public_html/view/js/groups.js index 2f15609..082a420 100755 --- a/public_html/view/js/groups.js +++ b/public_html/view/js/groups.js @@ -34,8 +34,10 @@ var section = { permissions: { text: '#CONTAINER > section[data-sublink="permissions"] ', element: document.querySelector('#CONTAINER > section[data-sublink="permissions"]'), - searchbar: document.querySelector('#CONTAINER > section[data-sublink="permissions"] > .searchbar') - } + searchbar: document.querySelector('#CONTAINER > section[data-sublink="permissions"] > .searchbar'), + + member_view: document.querySelector('#CONTAINER > section[data-sublink="permissions"] > [data-member-view]') != null + }, }; @@ -131,7 +133,6 @@ if( section.view.element != null ){ section.view.group.rem[i].addEventListener('click', function(e){ var prefix = e.target.getData('cluster')[0]; var cluster = e.target.getData('cluster').slice(1); - console.log(e.target); // {1} On rédige la requête // var request = {}; @@ -159,17 +160,6 @@ if( section.view.element != null ){ /* (7) On gere la "modification" des membres d'un groupe */ for( i = 0 ; i < section.view.group.add.length ; i++ ){ - // Si bouton pour choisir un autre groupe, on l'indexe - section.view.group.change = $('members-change-group') || null; - - // on crée le lien - if( section.view.group.change !== null ) - section.view.group.change.addEventListener('click', function(e){ - pageManager.vars = [ 'members' ]; - pageManager.refresh(); - }, false); - - section.view.group.add[i].addEventListener('mouseup', function(e){ pageManager.vars = [ 'members', e.target.getData('cluster') ]; @@ -178,6 +168,23 @@ if( section.view.element != null ){ }, false); } + + + + + /* (8) On gere la "modification" des membres d'une permission */ + for( i = 0 ; i < section.view.group.add.length ; i++ ){ + + section.view.group.add[i].addEventListener('mouseup', function(e){ + + pageManager.vars = [ 'permissions', e.target.getData('cluster') ]; + pageManager.refresh(); + + }, false); + + } + + } @@ -789,6 +796,16 @@ if( section.members.element != null && section.members.chooser.element != null ) */ if( section.members.element != null && section.members.chooser.element == null ){ + // Si bouton pour revenir au choix de groupe + section.view.group.change_members = $('members-change-group') || null; + + // on crée/gère le lien + if( section.view.group.change_members !== null ) + section.view.group.change_members.addEventListener('click', function(e){ + pageManager.vars = [ 'members' ]; + pageManager.refresh(); + }, false); + /* (1) On initialise le Deflater() */ section.members.deflater = new FormDeflater( @@ -885,7 +902,7 @@ if( section.members.element != null && section.members.chooser.element == null ) /* GESTION DES PERMISSIONS * */ -if( section.permissions.element != null ){ +if( section.permissions.element != null && !section.permissions.member_view ){ /* (1) On récupère toutes les actions de groupes */ section.permissions.group = { @@ -972,3 +989,110 @@ if( section.permissions.element != null ){ } + + + + + + + + +/* GESTION DES PERMISSIONS (MEMBRES) +* +*/ +if( section.permissions.element != null && section.permissions.member_view ){ + + // Si bouton pour revenir au choix de groupe + section.view.group.change_permissions = $('permissions-change-group') || null; + + // on crée/gère le lien + if( section.view.group.change_permissions !== null ) + section.view.group.change_permissions.addEventListener('click', function(e){ + pageManager.vars = [ 'permissions' ]; + pageManager.refresh(); + }, false); + + + /* (1) On initialise le Deflater() */ + section.permissions.deflater = new FormDeflater( + section.permissions.element, + ['input'], + ['data-name'] + ); + + /* (2) On enregistre les données initiales */ + section.permissions.baseData = section.permissions.deflater.deflate()['member']; + + /* (3) On enregistre les données in-HTML */ + section.permissions.idtarget = document.querySelector('#permission-choice-idtarget').value; + section.permissions.idaction = document.querySelector('#permission-choice-idaction').value; + + + /* [1] Dès qu'une valeur est modifiée dans le formulaire + =========================================================*/ + section.permissions.element.addEventListener('click', function(e){ + + /* (0) On récupère les données + initialise les variables */ + var i; + var linked = []; + var unlinked = []; + + var data = section.permissions.deflater.deflate()['member']; + // Si c'est pas un tableau, on le met en tableau + if( !(data instanceof Array) ) + data = [data]; + + /* (1) Si on a ajouté des liens */ + for( i = 0 ; i < data.length ; i++ ) + if( section.permissions.baseData.indexOf(data[i]) == -1 ) // Si pas dans les données initiales, on ajoute + linked.push( data[i] ); + + /* (2) Si on a supprimé des liens */ + for( i = 0 ; i < section.permissions.baseData.length ; i++ ) + if( data.indexOf(section.permissions.baseData[i]) == -1 ) // Si pas dans les données modifiées, on ajoute + unlinked.push( section.permissions.baseData[i] ); + + + /* (3) Gestion de l'ajout de liens */ + for( i = 0 ; i < linked.length ; i++ ){ + // {1} On rédige la requête // + var linkReq = {}; + linkReq.path = 'clusterDefault/addPermission'; + linkReq.id_target = section.permissions.idtarget; + linkReq.id_action = section.permissions.idaction; + linkReq.id_source = linked[i]; + + // {2} On envoie la requête // + api.send(linkReq, function(linkRes){ + if( linkRes.error != 0 ) + console.error('Erreur d\'ajout de membre'); + }); + } + + + + /* (4) Gestion de la suppression de liens */ + for( i = 0 ; i < unlinked.length ; i++ ){ + // {1} On rédige la requête // + var unlinkReq = {}; + unlinkReq.path = 'clusterDefault/remPermission'; + unlinkReq.id_target = section.permissions.idtarget; + unlinkReq.id_action = section.permissions.idaction; + unlinkReq.id_source = unlinked[i]; + + + // {2} On envoie la requête // + api.send(unlinkReq, function(unlinkRes){ + if( unlinkRes.error != 0 ) + console.error('Erreur de retrait de membre'); + }); + } + + + /* (5) On met à jour les données initiales */ + section.permissions.baseData = data; + + + }, false); + +}