diff --git a/accessibility_tools/accessibility_tools.info.yml b/accessibility_tools/accessibility_tools.info.yml new file mode 100644 index 0000000..59fab22 --- /dev/null +++ b/accessibility_tools/accessibility_tools.info.yml @@ -0,0 +1,4 @@ +name: Module d'accessibilité +description: Ajoute éléments d'accessibilité pour Pléiade, Sites internets, GRU +core_version_requirement: ^10 +type: module diff --git a/accessibility_tools/accessibility_tools.libraries.yml b/accessibility_tools/accessibility_tools.libraries.yml new file mode 100644 index 0000000..4fec052 --- /dev/null +++ b/accessibility_tools/accessibility_tools.libraries.yml @@ -0,0 +1,13 @@ +accessibility_tools: + version: 1.0 + js: + js/accessibility_tools.js: {} + dependencies: + - core/jquery + - core/drupal + - drupal:block +accessibility_tools_css: + version: 1.x + css: + theme: + css/accessibility_tools.css: {} \ No newline at end of file diff --git a/accessibility_tools/accessibility_tools.module b/accessibility_tools/accessibility_tools.module new file mode 100644 index 0000000..6647657 --- /dev/null +++ b/accessibility_tools/accessibility_tools.module @@ -0,0 +1,17 @@ += 'H1' && element.tagName <= 'H6')) { + const posX = event.clientX + 50; + const posY = event.clientY + 50; + + // Met à jour la position de la div + mouseInfoDiv.style.left = posX + 'px'; + mouseInfoDiv.style.top = posY + 'px'; + + // Met à jour le contenu de la div avec les coordonnées de la souris + mouseInfoDiv.textContent = element.textContent; + + // Affiche la div + mouseInfoDiv.style.display = 'block'; + } + } + // Ajouter un écouteur d'événement sur le changement de la case à cocher + checkbox.addEventListener('change', handleCheckboxChange); + + + const contrastCheckbox = document.getElementById('contraste'); + const bwCheckbox = document.getElementById('black_and_white'); + + function updateFilter() { + let filter = ''; + + if (contrastCheckbox.checked) { + filter += 'contrast(200%) '; + } + + if (bwCheckbox.checked) { + filter += 'grayscale(100%) '; + } + + document.body.style.filter = filter.trim(); + } + + contrastCheckbox.addEventListener('change', updateFilter); + bwCheckbox.addEventListener('change', updateFilter); + + + // Assurez-vous que les gestionnaires d'événements sont attachés aux éléments corrects. + $('.btn-group button', context).on('click', function () { + if ($(this).is('#increaseFontSize')) { + increaseFontSize(); + } else if ($(this).is('#decreaseFontSize')) { + decreaseFontSize(); + } else if ($(this).is('#resetFontSize')) { + resetFontSize(); + } + // Ajoutez d'autres conditions pour d'autres boutons si nécessaire. + }); + + // Gestionnaire d'événements pour le bouton du thème sombre + $('#theme-view', context).on('change', function () { + if ($(this).is(':checked')) { + // Logique pour activer le thème sombre + + // Sauvegardez l'état de la case à cocher dans le stockage local + localStorage.setItem('themeViewChecked', 'true'); + } else { + // Logique pour désactiver le thème sombre + + // Supprimez l'état de la case à cocher du stockage local + localStorage.removeItem('themeViewChecked'); + } + }); + + // Vérifiez si l'état de la case à cocher est sauvegardé dans le stockage local + var themeViewChecked = localStorage.getItem('themeViewChecked'); + if (themeViewChecked === 'true') { + // Si oui, cochez la case à cocher et déclenchez le gestionnaire d'événements 'change' + $('#theme-view', context).prop('checked', true).trigger('change'); + } + + + $('#contraste', context).on('change', function () { + if ($(this).is(':checked')) { + // Logique pour activer le thème sombre + + // Sauvegardez l'état de la case à cocher dans le stockage local + localStorage.setItem('contrasteChange', 'true'); + } else { + // Logique pour désactiver le thème sombre + + // Supprimez l'état de la case à cocher du stockage local + localStorage.removeItem('contrasteChange'); + } + }); + + // Vérifiez si l'état de la case à cocher est sauvegardé dans le stockage local + var themeViewChecked = localStorage.getItem('contrasteChange'); + if (themeViewChecked === 'true') { + // Si oui, cochez la case à cocher et déclenchez le gestionnaire d'événements 'change' + $('#contraste', context).prop('checked', true); + updateFilter(); + } + $('#black_and_white', context).on('change', function () { + if ($(this).is(':checked')) { + // Logique pour activer le thème sombre + + // Sauvegardez l'état de la case à cocher dans le stockage local + localStorage.setItem('black_and_whiteChange', 'true'); + } else { + // Logique pour désactiver le thème sombre + + // Supprimez l'état de la case à cocher du stockage local + localStorage.removeItem('black_and_whiteChange'); + } + }); + + // Vérifiez si l'état de la case à cocher est sauvegardé dans le stockage local + var themeViewChecked = localStorage.getItem('black_and_whiteChange'); + if (themeViewChecked === 'true') { + // Si oui, cochez la case à cocher et déclenchez le gestionnaire d'événements 'change' + $('#black_and_white', context).prop('checked', true); + updateFilter(); + } + + + }, 2000); // 1000 millisecondes = 1 seconde + } + + }; +})(jQuery, Drupal, drupalSettings); diff --git a/accessibility_tools/src/Plugin/Block/AccessibilityToolsBlock.php b/accessibility_tools/src/Plugin/Block/AccessibilityToolsBlock.php new file mode 100644 index 0000000..97e3ebb --- /dev/null +++ b/accessibility_tools/src/Plugin/Block/AccessibilityToolsBlock.php @@ -0,0 +1,74 @@ + 'inline_template', + '#template' => ' +
+
+
+ +
+ Taille de la police : + +
+ + + +
+ + +
+ + + +
+ + + + + + + + + +
+
', + '#attached' => [ + 'library' => [ + 'accessibility_tools/accessibility_tools', + ], + ], + ]; + + return $build; + } + + +} diff --git a/api_humhub_pleiade/api_humhub_pleiade.module b/api_humhub_pleiade/api_humhub_pleiade.module index 1923bb4..54413c3 100644 --- a/api_humhub_pleiade/api_humhub_pleiade.module +++ b/api_humhub_pleiade/api_humhub_pleiade.module @@ -8,8 +8,17 @@ function api_humhub_pleiade_preprocess_page(&$variables){ $config = \Drupal::config('api_humhub_pleiade.settings'); $humhub_url = $config->get('humhub_url'); + $sql_server = $config->get('sql_server'); + $sql_user = $config->get('sql_user'); + $sql_password = $config->get('sql_password'); + $sql_database = $config->get('sql_database'); + $variables['#attached']['drupalSettings']['api_humhub_pleiade']['humhub_url'] = $humhub_url; - + $variables['#attached']['drupalSettings']['api_humhub_pleiade']['sql_server'] = $sql_server; + $variables['#attached']['drupalSettings']['api_humhub_pleiade']['sql_user'] = $sql_user; + $variables['#attached']['drupalSettings']['api_humhub_pleiade']['sql_password'] = $sql_password; + $variables['#attached']['drupalSettings']['api_humhub_pleiade']['sql_database'] = $sql_database; + $variables['#attached']['library'][] = 'api_humhub_pleiade/api_humhub_pleiade_js'; $variables['#attached']['library'][] = 'api_humhub_pleiade/api_humhub_pleiade_css'; diff --git a/api_humhub_pleiade/css/api_humhub_pleiade.css b/api_humhub_pleiade/css/api_humhub_pleiade.css index 3b90f82..d89c10b 100644 --- a/api_humhub_pleiade/css/api_humhub_pleiade.css +++ b/api_humhub_pleiade/css/api_humhub_pleiade.css @@ -17,4 +17,9 @@ } .pastille_collab .pastille, #echangersurlerseausocial .pastille, .fa-users .badge{ background-color: #fbbd52!important; +} +#main-wrapper.mini-sidebar #menuLemon .badge{display: none;} + +#humhub_block hr{ + margin: 0.3rem 0!important; } \ No newline at end of file diff --git a/api_humhub_pleiade/js/api_humhub_pleiade.js b/api_humhub_pleiade/js/api_humhub_pleiade.js index 7fe8781..e8c1784 100644 --- a/api_humhub_pleiade/js/api_humhub_pleiade.js +++ b/api_humhub_pleiade/js/api_humhub_pleiade.js @@ -13,13 +13,14 @@ if (xhr.status === 200) { var donnees = (xhr.response); if (donnees) { - - if (donnees['messages'] && donnees['notifs']) { - var total = donnees['notifs'].total + donnees['messages'].total - } - else if (donnees['notifs']) { - var total = donnees['notifs'].total + console.log(donnees['messages']['results'][0]['isUnread']) + if (donnees['messages'] && donnees['notifs'] && donnees['messages']['results'] != ['']) { + + var total = parseInt(donnees['notifs'].total) + parseInt(donnees['messages']['results'][0]['isUnread']) + } else if (donnees['notifs']) { + var total = parseInt(donnees['notifs'].total); } + var addBadges = document.querySelector(".fa-users"); var echangersurlerseausocial = document.querySelector("#echangersurlerseausocial"); var Notifs = createErrorBadge("all_notifs", total); @@ -33,10 +34,6 @@ echangersurlerseausocial.appendChild(Notifs1); } - - - - function createErrorBadge(label, count) { var errorDiv = document.createElement("div"); errorDiv.classList.add("pastille"); @@ -45,8 +42,6 @@ return errorDiv; } - - } else{ console.error('Erreur lors de la récupération des notifications Humhub, veuillez rentrer votre token, ou contacter à défaut un administrateur') diff --git a/api_humhub_pleiade/js/api_humhub_pleiade_block.js b/api_humhub_pleiade/js/api_humhub_pleiade_block.js index cd1f8ef..95fba39 100644 --- a/api_humhub_pleiade/js/api_humhub_pleiade_block.js +++ b/api_humhub_pleiade/js/api_humhub_pleiade_block.js @@ -1,143 +1,242 @@ -// (function ($, Drupal, drupalSettings, once) { -// "use strict"; -// Drupal.behaviors.HumhubBlockBehavior = { -// attach: function (context, settings) { -// // only on frontpage (desktop) -// if (drupalSettings.path.isFront) { -// setTimeout(function () { -// once("HumhubBlockBehavior", "body", context).forEach( -// function () { -// // make ajax call -// var xhr = new XMLHttpRequest(); -// xhr.open("GET", Drupal.url("v1/api_humhub_pleiade/humhub_query")); -// xhr.responseType = "json"; -// xhr.onload = function () { -// var bloc_humhub -// if (xhr.status === 200) { -// var donnees = (xhr.response); -// if (donnees) { -// var donnees_spaces = donnees['spaces'] -// var donnees_notif = donnees['notifs'] -// var donnees_messages = donnees['messages'] +(function ($, Drupal, drupalSettings, once) { + "use strict"; + Drupal.behaviors.HumhubBlockBehavior = { + attach: function (context, settings) { + // only on frontpage (desktop) + if (drupalSettings.path.isFront) { + setTimeout(function () { + once("HumhubBlockBehavior", "body", context).forEach( + function () { + // make ajax call + var xhr = new XMLHttpRequest(); + xhr.open("GET", Drupal.url("v1/api_humhub_pleiade/humhub_query")); + xhr.responseType = "json"; + xhr.onload = function () { + var bloc_humhub + if (xhr.status === 200) { + var donnees = (xhr.response); + if (donnees) { + var donnees_spaces = donnees['spaces'] + var donnees_notif = donnees['notifs'] + var donnees_messages = donnees['messages'] + + if (donnees_spaces && donnees_spaces.length > 6) { + var overflow = 'overflow-y:scroll;' + } + function getContrastColor(hexcolor) { + var r = parseInt(hexcolor.substr(0,2),16); + var g = parseInt(hexcolor.substr(2,2),16); + var b = parseInt(hexcolor.substr(4,2),16); + var yiq = ((r*299)+(g*587)+(b*114))/1000; + return (yiq >= 128) ? 'black' : 'white'; + } + bloc_humhub = '\ +
\ +
\ +
\ +

\ + Réseau social des agents territoriaux

\ +
\ +
\ + ' + bloc_humhub += '
\ +

\ + Mes espaces

' + if (donnees_spaces){ + if (donnees_spaces.length > 0) { -// if (donnees_spaces.results.length > 6) { -// var overflow = 'overflow-y:scroll;' -// } -// bloc_humhub = '\ -//
\ -//
\ -//
\ -//

\ -// Réseau Social Pléiade

\ -//
\ -//
\ -// ' -// bloc_humhub += '
\ -//
\ -// Mes espaces
' -// if (donnees['spaces'].results.length > 0) { -// for (var i = 0; i < donnees_spaces.results.length; i++) { -// var text = donnees_spaces.results[i].name; -// var url = donnees_spaces.results[i].url; -// bloc_humhub += '\ -// \ -//
\ -// '+ text + '\ -//
\ -//
' -// } -// } -// else { -// bloc_humhub += '
Aucun espace disponible ou erreur avec lors de la connexion à Humhub
' -// } -// bloc_humhub += '
' -// bloc_humhub += '
\ -//
\ -// Mes notifications
' -// if (donnees['notifs'] && donnees['notifs'].results.length > 0) { -// console.log('1') -// for (var i = 0; i < donnees_notif.results.length; i++) { -// var text = donnees_notif.results[i].output; -// var date = donnees_notif.results[i].createdAt; -// var formattedDate = new Date(date); // Créer un objet de date -// var day = formattedDate.getDate(); -// var month = formattedDate.getMonth() + 1; // Les mois sont indexés à partir de 0, donc ajouter 1 -// var year = formattedDate.getFullYear(); -// var hours = formattedDate.getHours(); -// var minutes = formattedDate.getMinutes(); -// // Formater la date et l'heure -// var formattedString = day + '/' + (month < 10 ? '0' : '') + month + '/' + year + ' ' + hours + ':' + (minutes < 10 ? '0' : '') + minutes; -// bloc_humhub += '\ -//
\ -//
\ -// '+ formattedString + '\ -// '+ text + '\ -//
\ -//

\ -// ' -// } + for (var i = 0; i < donnees_spaces.length; i++) { + + var color = donnees_spaces[i].color; + var text = donnees_spaces[i].name; + var url = donnees_spaces[i].url; + var imgUrl = drupalSettings.api_humhub_pleiade.humhub_url + donnees_spaces[i].imgUrl; + + if (donnees_spaces[i].imgUrl !== "/static/img/default_space.jpg") { + + + bloc_humhub += '\ + \ +
\ + '+ text + '\ +
\ +
' + } else { + var textColor = getContrastColor(color); + + bloc_humhub += '\ + \ +
\ + '+ text + '\ +
\ +
' + } + } + } + else { + bloc_humhub += '

Vous n\'avez rejoint aucun espace


Rejoindre un espace' + } + } + else{ + bloc_humhub += '

Vous n\'avez rejoint aucun espace. Je rejoins un espace

' + } -// } -// else if (donnees['messages'] && donnees['messages'].results.length > 0) { -// console.log('1') -// for (var i = 0; i < donnees_messages.results.length; i++) { -// var text = donnees_messages.results[i].title; -// var date = donnees_messages.results[i].created_at; -// var href = drupalSettings.api_humhub_pleiade.humhub_url + '/mail/mail/index?id=' + donnees_messages.results[i].id; -// var formattedDate = new Date(date); // Créer un objet de date -// var day = formattedDate.getDate(); -// var month = formattedDate.getMonth() + 1; // Les mois sont indexés à partir de 0, donc ajouter 1 -// var year = formattedDate.getFullYear(); -// var hours = formattedDate.getHours(); -// var minutes = formattedDate.getMinutes(); -// // Formater la date et l'heure -// var formattedString = day + '/' + (month < 10 ? '0' : '') + month + '/' + year + ' ' + hours + ':' + (minutes < 10 ? '0' : '') + minutes; -// if (donnees_messages.results[i].created_by == donnees_messages.results[i].updated_by) { -// bloc_humhub += '\ -//
\ -// \ -//

\ -// ' -// } -// } + bloc_humhub += '
' + bloc_humhub += '
\ +

\ + Mes notifications

' + if (donnees['notifs'] && donnees['notifs'].results.length > 0) { + + for (var i = 0; i < donnees_notif.results.length; i++) { + var text = donnees_notif.results[i].output; + if (donnees_notif.results[i].output.includes("You were added to Space")) { + // Remplace "You were added to Space" par "Vous avez été ajouté à l'espace" + text = donnees_notif.results[i].output.replace("You were added to Space", "Vous avez été ajouté à l'espace"); + } + if (donnees_notif.results[i].output.includes("created post")) { + // Remplace "You were added to Space" par "Vous avez été ajouté à l'espace" + text = donnees_notif.results[i].output.replace("created post", "a publié"); + } + if (donnees_notif.results[i].output.includes(" and ")) { + // Remplace "You were added to Space" par "Vous avez été ajouté à l'espace" + text = donnees_notif.results[i].output.replace(" and ", " et "); + } + if (donnees_notif.results[i].output.includes("likes post")) { + // Remplace "You were added to Space" par "Vous avez été ajouté à l'espace" + text = donnees_notif.results[i].output.replace("likes post", "aime"); + } + if (donnees_notif.results[i].output.includes("commented post")) { + // Remplace "You were added to Space" par "Vous avez été ajouté à l'espace" + text = donnees_notif.results[i].output.replace("commented post", "a commenté"); + } + if (donnees_notif.results[i].output.includes("is now following you")) { + // Remplace "You were added to Space" par "Vous avez été ajouté à l'espace" + text = donnees_notif.results[i].output.replace("is now following you", "vous suit"); + } + if (donnees_notif.results[i].output.includes("sent you a friend request")) { + // Remplace "You were added to Space" par "Vous avez été ajouté à l'espace" + text = donnees_notif.results[i].output.replace("sent you a friend request", "vous a envoyé une demande d'amis"); + } + if (donnees_notif.results[i].output.includes("invited you to the space")) { + // Remplace "You were added to Space" par "Vous avez été ajouté à l'espace" + text = donnees_notif.results[i].output.replace("invited you to the space", "vous a invité à rejoindre"); + } + if (donnees_notif.results[i].output.includes("accepted your invite for the space")) { + // Remplace "You were added to Space" par "Vous avez été ajouté à l'espace" + text = donnees_notif.results[i].output.replace("accepted your invite for the space", "a accepté de rejoindre"); + } + if (donnees_notif.results[i].output.includes("mentioned you in comment")) { + // Remplace "You were added to Space" par "Vous avez été ajouté à l'espace" + text = donnees_notif.results[i].output.replace("mentioned you in comment", "vous a mentionné : "); + } + var date = donnees_notif.results[i].createdAt; + var formattedDate = new Date(date); // Créer un objet de date + var day = formattedDate.getDate(); + var month = formattedDate.getMonth() + 1; // Les mois sont indexés à partir de 0, donc ajouter 1 + var year = formattedDate.getFullYear(); + var hours = formattedDate.getHours(); + var minutes = formattedDate.getMinutes(); + // Formater la date et l'heure + var formattedString = day + '/' + (month < 10 ? '0' : '') + month + '/' + year + ' ' + hours + ':' + (minutes < 10 ? '0' : '') + minutes; + bloc_humhub += '\ + \ +
\ + '+ formattedString + '\ + '+ text + '\ +
\ +

\ + ' + } -// } -// else { -// bloc_humhub += '
Aucune notification
' + } + if (donnees['messages'] && donnees['messages'].results.length > 0) { + var number_notif = donnees_messages.results[0].isUnread; + + var href = drupalSettings.api_humhub_pleiade.humhub_url + '/mail/mail/index'; -// } -// bloc_humhub += '
' -// bloc_humhub += '' -// "\ -//
\ -//
\ -//
\ -// "; -// } + if (donnees_messages.results[0].isUnread == 1) { + bloc_humhub += '\ +
\ + ' + } + else if (donnees_messages.results[0].isUnread > 1) { + bloc_humhub += '\ +
\ + ' + } + else + { + bloc_humhub += '\ +
' + } + + + } + else if((donnees['messages'].results.length = 0) && (donnees['notifs'].results.length = 0)) { + bloc_humhub += '
Aucune notification
' -// document.getElementById("humhub_block").innerHTML = bloc_humhub; + } + bloc_humhub += '
' + bloc_humhub += '' + "\ +
\ +
\ +
\ + "; + } + else + { + bloc_humhub = '\ +
\ +
\ +
\ +

\ + Réseau Social des agents territoriaux

\ +
\ +
\ + '+ donnees +'\ +
\ +
\ +
\ + ' + } -// }; -// xhr.onerror = function () { -// console.log("Error making AJAX call"); -// }; -// xhr.onabort = function () { -// console.log("AJAX call aborted"); -// }; -// xhr.ontimeout = function () { -// console.log("AJAX call timed out"); -// }; -// xhr.onloadend = function () { -// } -// }; -// xhr.send(); -// }); // end once -// }, 2000); // 1000 millisecondes = 1 seconde -// } -// }, -// }; -// })(jQuery, Drupal, drupalSettings, once); + + document.getElementById("humhub_block").innerHTML = bloc_humhub; + + }; + xhr.onerror = function () { + console.log("Error making AJAX call"); + }; + xhr.onabort = function () { + console.log("AJAX call aborted"); + }; + xhr.ontimeout = function () { + console.log("AJAX call timed out"); + }; + xhr.onloadend = function () { + } + }; + xhr.send(); + }); // end once + }, 2000); // 1000 millisecondes = 1 seconde + } + }, + }; +})(jQuery, Drupal, drupalSettings, once); diff --git a/api_humhub_pleiade/src/Controller/humHubController.php b/api_humhub_pleiade/src/Controller/humHubController.php index c8288fb..72d8d91 100644 --- a/api_humhub_pleiade/src/Controller/humHubController.php +++ b/api_humhub_pleiade/src/Controller/humHubController.php @@ -7,66 +7,80 @@ use Drupal\Core\Controller\ControllerBase; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Drupal\module_api_pleiade\ApiPleiadeManager; -use Drupal\Core\Database\Database; + class humHubController extends ControllerBase { public function humhub_query(Request $request) { - // $serveur = "192.168.1.18"; // Adresse du serveur MySQL - // $utilisateur = "humhub_user"; // Nom d'utilisateur MySQL - // $motdepasse = "HSDt8WdGLKa2M*4+@=Z"; // Mot de passe MySQL - // $basededonnees = "humhub"; // Nom de la base de données MySQL - // $user = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id()); + $configHumhub = \Drupal::config('api_humhub_pleiade.settings'); + $serveur = $configHumhub->get('sql_server'); + $utilisateur = $configHumhub->get('sql_user'); + $motdepasse = $configHumhub->get('sql_password'); + $basededonnees = $configHumhub->get('sql_database'); + $user = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id()); + + // Vérifie si l'objet utilisateur est valide + if ($user) { + // Récupère l'adresse e-mail de l'utilisateur connecté + $username = $user->getDisplayName(); + } + else{ + $username = ''; + } + // Connexion à la base de données + // Créer une connexion à la base de données + $conn = mysqli_connect($serveur, $utilisateur, $motdepasse, $basededonnees); + + // Vérifier la connexion + if (!$conn) { + die("Connection failed: " . mysqli_connect_error()); + } + // Requête SQL pour sélectionner tous les utilisateurs de la table "user" + $sql = "SELECT ID FROM user WHERE username = '$username'"; + + $result = mysqli_query($conn, $sql); + + + // Vérifier si la requête a réussi + if (mysqli_num_rows($result) > 0) { + $ID_user = mysqli_fetch_assoc($result)["ID"]; + if($ID_user !== NULL){ + $sql1 = "SELECT token FROM rest_user_bearer_tokens WHERE user_id = '$ID_user'"; + $result1 = mysqli_query($conn, $sql1); + $token = mysqli_fetch_assoc($result1); + if($token !== null){ + $return = []; //our variable to fill with data returned by Pastell + $apiGeneral = new ApiPleiadeManager(); + if($apiGeneral->get_notif_humhub($token) != 'undefined'){ + $return['notifs'] = $apiGeneral->get_notif_humhub($token); + } + if($apiGeneral->get_messages_humhub($token) != 'undefined'){ + $return['messages'] = $apiGeneral->get_messages_humhub($token); + } + if($apiGeneral->get_spaces($token) != 'undefined'){ + $spaces = $apiGeneral->get_spaces($token)["results"]; + foreach($spaces as $space){ + + if (in_array($ID_user, $space['users'])) { + $return['spaces'][] = $space; + } + + } + } + } + else { + $return = "Compte RSE trouvé mais aucun token de connexion trouvé"; + } + } + } + else { + $return = "Aucun utilisateur trouvé sur le RSE correspondant au nom d'utilisateur ". $username; + } + mysqli_close($conn); - // // Vérifie si l'objet utilisateur est valide - // if ($user) { - // // Récupère l'adresse e-mail de l'utilisateur connecté - // $email = $user->getEmail(); - // } - // else{ - // $email = ''; - // } + return new JsonResponse(json_encode($return), 200, [], true); - // try { - // // Paramètres de connexion à la base de données externe - // $connection_info = array( - // 'driver' => 'mysql', - // 'host' => '192.16.1.11', - // 'database' => 'humhub', - // 'username' => 'humhub_user', - // 'password' => 'HSDt8WdGLKa2M*4+@=Z', - // 'port' => '3306', // Optionnel, par défaut 3306 - // 'prefix' => '', // Optionnel, préfixe de table si nécessaire - // 'collation' => 'utf8mb4_general_ci', // Optionnel, collation de la base de données - // ); - - // // Créer une nouvelle connexion à la base de données externe - // $external_db = Database::openConnection($connection_info, 'default'); - - // // Requête SQL pour récupérer des informations - // $query = $external_db->select('humhub', 't') - // ->fields('t', ['id']) // Remplacez 'id' par les colonnes que vous souhaitez récupérer - // ->condition('email', $email); - - // $result = $query->execute(); - - // // Vérifier si la requête a renvoyé des résultats - // if ($result->rowCount() > 0) { - // foreach ($result as $record) { - // echo "ID: " . $record->id . "
"; - // } - // } else { - // echo "Aucun résultat trouvé."; - // } - // } catch (\Exception $e) { - // // Gérer les erreurs de connexion - // echo "Erreur lors de la connexion à la base de données externe : " . $e->getMessage(); - // } - - - // return new JsonResponse(json_encode($resultat), 200, [], true); - } } diff --git a/api_humhub_pleiade/src/Form/HumHubapiFieldsConfig.php b/api_humhub_pleiade/src/Form/HumHubapiFieldsConfig.php index 0c2eba0..d21a884 100644 --- a/api_humhub_pleiade/src/Form/HumHubapiFieldsConfig.php +++ b/api_humhub_pleiade/src/Form/HumHubapiFieldsConfig.php @@ -24,13 +24,41 @@ class HumHubapiFieldsConfig extends ConfigFormBase { '#title' => $this->t('HumHub url'), '#default_value' => $config->get('humhub_url'), '#description' => $this->t('Enter the full HumHub url with /api/v1 at the end'), - ]; + ]; + $form['sql_server'] = [ + '#type' => 'textfield', + '#title' => $this->t('Ip du serveur sql Humhub'), + '#default_value' => $config->get('sql_server'), + '#description' => $this->t('Ip du serveur sql Humhub'), + ]; + $form['sql_user'] = [ + '#type' => 'textfield', + '#title' => $this->t('User du serveur sql Humhub'), + '#default_value' => $config->get('sql_user'), + '#description' => $this->t('User du serveur sql Humhub'), + ]; + $form['sql_password'] = [ + '#type' => 'password', + '#title' => $this->t('Mot de passe du serveur sql Humhub'), + '#default_value' => $config->get('sql_password'), + '#description' => $this->t('Mot de passe du serveur sql Humhub'), + ]; + $form['sql_database'] = [ + '#type' => 'textfield', + '#title' => $this->t('Datatable du serveur sql Humhub'), + '#default_value' => $config->get('sql_database'), + '#description' => $this->t('Datatable du serveur sql Humhub'), + ]; return parent::buildForm($form, $form_state); } public function submitForm(array &$form, FormStateInterface $form_state) { $config = $this->config('api_humhub_pleiade.settings'); $config->set('humhub_url', $form_state->getValue('humhub_url')); + $config->set('sql_server', $form_state->getValue('sql_server')); + $config->set('sql_user', $form_state->getValue('sql_user')); + $config->set('sql_password', $form_state->getValue('sql_password')); + $config->set('sql_database', $form_state->getValue('sql_database')); $config->save(); parent::submitForm($form, $form_state); diff --git a/api_lemon_pleiade/api_lemon_pleiade.routing.yml b/api_lemon_pleiade/api_lemon_pleiade.routing.yml index cd378fd..fd44b35 100644 --- a/api_lemon_pleiade/api_lemon_pleiade.routing.yml +++ b/api_lemon_pleiade/api_lemon_pleiade.routing.yml @@ -24,11 +24,11 @@ api_lemon_pleiade.lemon_session_query: requirements: _access: 'TRUE' -api_lemon_pleiade.my_history: - path: '/history' +api_lemon_pleiade.reset_password: + path: '/v1/api_lemon_pleiade/reset_password' defaults: - _controller: '\Drupal\api_lemon_pleiade\Controller\PleiadeAjaxController::myHistory' - _title: 'Historique de connexion' + _controller: '\Drupal\api_lemon_pleiade\Controller\PleiadeAjaxController::reset_password' + _title: 'Reinitialiser le mot de passe' requirements: _permission: 'access content' diff --git a/api_lemon_pleiade/js/add_submenu.js b/api_lemon_pleiade/js/add_submenu.js index e275c6d..3c4db0e 100644 --- a/api_lemon_pleiade/js/add_submenu.js +++ b/api_lemon_pleiade/js/add_submenu.js @@ -98,7 +98,7 @@ } if (userGroupsTempstore.includes('admin-chatbot')) { liens += '\ - ' } if (userGroupsTempstore.includes('democratie-participative')) { diff --git a/api_lemon_pleiade/js/api_lemon_pleiade_user_infos_block.js b/api_lemon_pleiade/js/api_lemon_pleiade_user_infos_block.js index 0f9ebc3..aa39b45 100644 --- a/api_lemon_pleiade/js/api_lemon_pleiade_user_infos_block.js +++ b/api_lemon_pleiade/js/api_lemon_pleiade_user_infos_block.js @@ -40,7 +40,7 @@ '" alt="user" class="rounded-circle" width="60" height="60" style="object-fit: cover;"/>\ \
\ -

' + +

' + cn + '

\

' + diff --git a/api_lemon_pleiade/src/Controller/PleiadeAjaxController.php b/api_lemon_pleiade/src/Controller/PleiadeAjaxController.php index e48863b..5039bd1 100644 --- a/api_lemon_pleiade/src/Controller/PleiadeAjaxController.php +++ b/api_lemon_pleiade/src/Controller/PleiadeAjaxController.php @@ -47,7 +47,7 @@ class PleiadeAjaxController extends ControllerBase if($dpt[1] != null){ $return['groupes'] .= ' dpt-'.$dpt[1].','; - setcookie('departement', $dpt[1], time() + 3600, '/'); + setcookie('departement', $dpt[1], time() + 36000, '/'); } } $return['groups'] = $return['groupes']; @@ -55,7 +55,7 @@ class PleiadeAjaxController extends ControllerBase // Store groups in Drupal private tempstore to serve to other modules later $tempstore = \Drupal::service('tempstore.private')->get('api_lemon_pleiade'); $tempstore->set('groups', $return["groupes"]); - setcookie('groups', $return['groups'], time() + 3600, '/'); + setcookie('groups', $return['groups'], time() + 36000, '/'); $email = $return["mail"]; // Recherchez l'utilisateur par son adresse e-mail. @@ -119,7 +119,7 @@ class PleiadeAjaxController extends ControllerBase * @return array * A simple renderable array. */ - public function myHistory() + public function reset_password() { return [ '#markup' => ' diff --git a/api_pastell_pleiade/api_pastell_pleiade.module b/api_pastell_pleiade/api_pastell_pleiade.module index 995f4c5..af103a0 100644 --- a/api_pastell_pleiade/api_pastell_pleiade.module +++ b/api_pastell_pleiade/api_pastell_pleiade.module @@ -184,8 +184,9 @@ function ecv_sendparaph($id_e, $id_d) } function _ecv_docs_lots($id_e, $nomfic, $urlfic, $year, $month, $day, $ged, $sstype, $data){ - + $id_d = ecv_creadoc($id_e); + \Drupal::logger('api_pastell_pleiade')->info('Envoi en Lot, id_d dreation: @api', ['@api' => $id_d]); $data = array( 'id_e' => $id_e, 'id_d' => $id_d->id_d, diff --git a/api_pastell_pleiade/js/api_pastell_menu.js b/api_pastell_pleiade/js/api_pastell_menu.js index 5c9c788..cf59ae7 100644 --- a/api_pastell_pleiade/js/api_pastell_menu.js +++ b/api_pastell_pleiade/js/api_pastell_menu.js @@ -171,6 +171,7 @@ break; case 'Document à faire signer': + menu_a_remplir = '' var nouvelElement = document.createElement('div'); nouvelElement.classList.add('sub_menu_eadmin'); nouvelElement.classList.add('collapse'); @@ -227,10 +228,10 @@ '; } -console.log(menu_a_remplir) - nouvelElement.innerHTML = menu_a_remplir - if (menu_doc_a_signer) { + nouvelElement.innerHTML = menu_a_remplir + + if (menu_doc_a_signer ) { menu_doc_a_signer.insertAdjacentElement('afterend', nouvelElement); } diff --git a/api_pastell_pleiade/src/Form/PleiadePastellDocLotsForm.php b/api_pastell_pleiade/src/Form/PleiadePastellDocLotsForm.php index e76de2b..48f1741 100644 --- a/api_pastell_pleiade/src/Form/PleiadePastellDocLotsForm.php +++ b/api_pastell_pleiade/src/Form/PleiadePastellDocLotsForm.php @@ -33,84 +33,86 @@ class PleiadePastellDocLotsForm extends ConfigFormBase // https://pastell.ecollectivites.fr/api/external-data.php?id_e=24&id_d=R3Mmu1m&page=0&field=iparapheur_sous_type // on cree un doc bidon $id_d = ecv_creadoc($id_e); - $data = array( - 'id_e' => $id_e, - 'id_d' => $id_d->id_d, - 'field' => 'iparapheur_sous_type', - ); - - $sstypes = ecv_getsoustype($data); - - - if($sstypes == null || $sstypes['status'] == 'error'){ + if($id_d){ + $data = array( + 'id_e' => $id_e, + 'id_d' => $id_d->id_d, + 'field' => 'iparapheur_sous_type', + ); + + $sstypes = ecv_getsoustype($data); + + + if($sstypes == null || $sstypes['status'] == 'error'){ + $suppr = ecv_suppr($id_e, $id_d->id_d); + \Drupal::messenger()->addError($this->t('Veuillez selectionner une collectivité qui possède des sous-types i-parapheur')); + return $form; + } + $form['#prefix'] = ''; + $form['#suffix'] = ' +

+

Pré-visualisation

En attente de fichiers PDF... +
+ '; + + $form['#attributes']['enctype'] = 'multipart/form-data'; + + // SS TYPE DOCS + $form['soustype'] = array( + '#type' => 'select', + '#title' => t('Circuits iParapheur :'), + '#default_value' => $sstypes['Courrier'], + '#options' => $sstypes, + '#required' => TRUE, + ); + $form['soustype']['#prefix'] = '
1Choisissez un circuit et une date limite.
'; + $suppr = ecv_suppr($id_e, $id_d->id_d); - \Drupal::messenger()->addError($this->t('Veuillez selectionner une collectivité qui possède des sous-types i-parapheur')); + $current_date = new DrupalDateTime(); + $form['datelimite'] = array( + '#title' => t('Date limite de signature :'), + '#type' => 'date', + '#description' => t('Par défaut, fixé au jour même.'), + '#default_value' => $current_date->format('Y-m-d'), + ); + + // GED ? + $form['ged'] = array( + '#type' => 'checkbox', + '#title' => t('Transmission à la GED ?'), + '#default_value' => 1, + + '#description' => t('Cochez cette case si vous souhaitez transmettre à la GED.'), + ); + $form['id_e_lot'] = array( + '#type' => 'textfield', + '#title' => t('Création de documents en lots pour entité n° :'), + '#default_value' => $id_e, + '#attributes' => array('readonly' => 'readonly'), + ); + // ****** FORM FICHIERS ************// + $form['actions'] = array(); + //$form['actions']['#prefix'] = '
2Cliquez sur parcourir, puis la touche CTRL + clic pour sélectionner les fichiers.
'; + $form['actions']['content_upload']['file'] = array( + '#type' => 'file', + '#name' => 'files[]', + '#title' => t('Fichiers locaux (PDF)'), + '#value' => t('Choisir un fichier'), + '#attributes' => array('multiple' => 'multiple'), + '#required' => TRUE, + '#field_prefix' => '
2Cliquez sur Select. fichiers, puis la touche CTRL + clic pour sélectionner les fichiers.
', + '#field_suffix' => '
3Cliquez sur "envoyer les documents à la signature"
', + ); + $form['#attached']['library'][] = 'api_pastell_pleiade/docLots.js'; + + $form['actions']['content_upload']['content_upload_button'] = array( + '#type' => 'submit', + '#name' => 'content_upload_action', + '#value' => t('Envoyer les documents à la signature'), + + ); return $form; } - $form['#prefix'] = ''; - $form['#suffix'] = ' -
-

Pré-visualisation

En attente de fichiers PDF... -
- '; - - $form['#attributes']['enctype'] = 'multipart/form-data'; - - // SS TYPE DOCS - $form['soustype'] = array( - '#type' => 'select', - '#title' => t('Circuits iParapheur :'), - '#default_value' => $sstypes['Courrier'], - '#options' => $sstypes, - '#required' => TRUE, - ); - $form['soustype']['#prefix'] = '
1Choisissez un circuit et une date limite.
'; - - $suppr = ecv_suppr($id_e, $id_d->id_d); - $current_date = new DrupalDateTime(); - $form['datelimite'] = array( - '#title' => t('Date limite de signature :'), - '#type' => 'date', - '#description' => t('Par défaut, fixé au jour même.'), - '#default_value' => $current_date->format('Y-m-d'), - ); - - // GED ? - $form['ged'] = array( - '#type' => 'checkbox', - '#title' => t('Transmission à la GED ?'), - '#default_value' => 1, - - '#description' => t('Cochez cette case si vous souhaitez transmettre à la GED.'), - ); - $form['id_e_lot'] = array( - '#type' => 'textfield', - '#title' => t('Création de documents en lots pour entité n° :'), - '#default_value' => $id_e, - '#attributes' => array('readonly' => 'readonly'), - ); - // ****** FORM FICHIERS ************// - $form['actions'] = array(); - //$form['actions']['#prefix'] = '
2Cliquez sur parcourir, puis la touche CTRL + clic pour sélectionner les fichiers.
'; - $form['actions']['content_upload']['file'] = array( - '#type' => 'file', - '#name' => 'files[]', - '#title' => t('Fichiers locaux (PDF)'), - '#value' => t('Choisir un fichier'), - '#attributes' => array('multiple' => 'multiple'), - '#required' => TRUE, - '#field_prefix' => '
2Cliquez sur Select. fichiers, puis la touche CTRL + clic pour sélectionner les fichiers.
', - '#field_suffix' => '
3Cliquez sur "envoyer les documents à la signature"
', - ); - $form['#attached']['library'][] = 'api_pastell_pleiade/docLots.js'; - - $form['actions']['content_upload']['content_upload_button'] = array( - '#type' => 'submit', - '#name' => 'content_upload_action', - '#value' => t('Envoyer les documents à la signature'), - - ); - return $form; } else { \Drupal::messenger()->addError($this->t('Veuillez séléctionner une collectivité avant d\'envoyer des documents en lots')); return $form; @@ -127,9 +129,12 @@ class PleiadePastellDocLotsForm extends ConfigFormBase ); $id_e = $form['id_e_lot']['#value']; - $sstype = $form['soustype']['#options'][0]; + $sstype_index = $form_state->getValue('soustype'); + $options = $form['soustype']['#options']; + $sstype = $options[$sstype_index]; + \Drupal::logger('api_pastell_pleiade')->info('Sous-type pârapheur: @cookie', ['@cookie' => $sstype]); $num_files = count($_FILES['files']['name']); - + \Drupal::logger('api_pastell_pleiade')->info('Nombre de docs transmis : @cookie', ['@cookie' => $num_files]); for ($i = 0; $i < $num_files; $i++) { $file = file_save_upload($i, array('file_validate_extensions' => array('pdf'), )); if ($file) {