// ==UserScript==
// @name action
// @namespace http://tampermonkey.net/
// @version 0.21
// @description Ajouter plusieurs boutons de gel pour différentes durées pendant les heures de bureau
// @author Tony Gargaud, Florian Villeret, Clément Bahuaud
// @match *://*/*
// @match https://tck.mydstny.fr/Ticket/*
// @match https://tck.mydstny.fr/Secure/Tickets/Ticket/Detail?ticketId=*
// @match https://tck.mydstny.fr/Tickets
// @match https://extranet.kosc-telecom.fr/diagnostics/*
// @grant GM_addStyle
// @grant GM_xmlhttpRequest
// @grant GM_setValue
// @grant GM_getValue
// @license MIT
// @require https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js
// @require https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/jquery-ui-timepicker-addon/1.6.3/jquery-ui-timepicker-addon.min.js
// ==/UserScript==
(function() {
const currentURL = window.location.href;
// extration des infos d'ouverture de ticket fournisseur
// Prend la ref de liaison
function getServiceStatus(element) {
GM_xmlhttpRequest({
method: 'GET',
url: element.href,
onload: function(response) {
const parser = new DOMParser();
const doc = parser.parseFromString(response.responseText, 'text/html');
let tdList = doc.querySelectorAll('td');
let state = null;
for (let i = 0; i < tdList.length - 1; i++) {
if (tdList[i].textContent.trim() === 'Identifiant') {
state = tdList[i + 1].textContent.trim();
break;
}
}
if (state) {
console.log(state);
GM_setValue("RefLiaison", state);
}
}
});
}
// extration des infos
function extraitlesdonnees() {
let element = document.getElementById("main-questionnaire-container");
if (element) {
let dataValues = element.getAttribute("data-values");
let parsedData = JSON.parse(dataValues);
let contactPhone = parsedData["contact_sur_site_telephone"];
// Assurez-vous d'extraire correctement les heures d'ouverture depuis votre source de données
let openingHours = `${parsedData["horaires_matin"]} / ${parsedData["horaires_apres_midi"]}`;
GM_setValue("contactPhone", contactPhone);
GM_setValue("openingHours", openingHours); // Sauvegarde des heures d'ouverture
}
}
// FIN des extractions
// FIN des extractions
// FIN des extractions
//FONCTION POUR OUVERTURE LIEN ORANGE
//CHECK DES LIENS
function checkDSL() {
// Recherche du formulaire par son identifiant textuel dans la page
const formText = Array.from(document.querySelectorAll('td')).find(td => td.textContent.includes('FRM-DSLACCESSONLYETH'));
return formText !== undefined; // Retourne true si le texte est trouvé, sinon false
}
function checkFTTH() {
// Recherche du formulaire par son identifiant textuel dans la page
const formText = Array.from(document.querySelectorAll('td')).find(td => td.textContent.includes('103_FRM_ARIANE_PBO'));
return formText !== undefined; // Retourne true si le texte est trouvé, sinon false
}
// LISTE DES ACTIONS EN FONCTION DES LIENS
function LienOrangeFTTH() {
if (!checkFTTH()) {
console.log('Lien FTTH non trouvé ❌');
return; // Arrête l'exécution si le formulaire n'est pas présent
}
console.log('Lien FTTH trouvé ✅');
// Numéro de téléphone
let contactPhone = GM_getValue('contactPhone');
if (contactPhone) {
const inputField = document.querySelector('input[name="INFO_CONTACT_CLI"]');
if (inputField) {
inputField.value = contactPhone;
}
}
// Horaires d'ouverture
const openingHours = GM_getValue('openingHours');
const openingHoursField = document.querySelector('input[name="INFO_HEUR_OUV_SITE"]');
if (openingHoursField && openingHours) {
openingHoursField.value = openingHours;
}
// Cocher les boutons radio
document.querySelector('input[name="INFO_PRELOC"][value="PRELOC_CLI"]').checked = true;
document.querySelector('input[name="INFO_ALIM"][value="VOYALIMBOX_VERTFIX"]').checked = true;
document.querySelector('input[name="INFO_FIB"][value="VOYFIB_ETEINT"]').checked = true;
document.querySelector('input[name="INFO_INT"][value="VOYINT_ETEINT"]').checked = true;
document.querySelector('input[name="INFO_ALIM_ONT"][value="VOYALIMONT_VERTFIX"]').checked = true;
document.querySelector('input[name="DEFECT_LOC_DEFAUT"][value="ONT_KO"]').checked = true;
document.querySelector('input[name="forcing"][value="true"]').checked = true;
// Cocher le checkbox
document.querySelector('input[name="DEFECT_SYNCH_KO"]').checked = true;
// Écrire dans le textarea
const descriptionText = "Bonjour,\nNous constatons un défaut au niveau de l'ont, pouvez-vous intervenir ?";
const descriptionTextarea = document.querySelector('textarea[name="description"]');
if (descriptionTextarea) {
descriptionTextarea.value = descriptionText;
}
}
function LienOrangeDSL() {
if (!checkDSL()) {
console.log('Lien DSL non trouvé ❌');
return; // Arrête l'exécution si le formulaire n'est pas présent
}
console.log('Lien DSL trouvé ✅');
// Numéro de téléphone
let contactPhone = GM_getValue('contactPhone');
if (contactPhone) {
const inputField = document.querySelector('input[name="INFO_CONTACT_CLI"]');
if (inputField) {
inputField.value = contactPhone;
GM_setValue('contactPhone', null); // Réinitialiser la clé 'contactPhone' à null
}
}
// Horaires d'ouverture
const openingHours = GM_getValue('openingHours');
const openingHoursField = document.querySelector('input[name="INFO_HEUR_OUV_SITE"]');
if (openingHoursField && openingHours) {
openingHoursField.value = openingHours;
GM_setValue('openingHours', null); // Réinitialiser la clé 'openingHours' à null
}
// Cocher les boutons radio
document.querySelector('input[name="INFO_SECUR_SITE"][value="OUI"]').checked = true;
document.querySelector('input[name="INFO_PRELOC"][value="PRELOC_CLI"]').checked = true;
document.querySelector('input[name="forcing"][value="true"]').checked = true;
// Cocher le checkbox
document.querySelector('input[name="DEFECT_PLUS_SYNCH"]').checked = true;
// Écrire dans le textarea
const descriptionText = "Bonjour,\nNous constatons un défaut de ligne, pouvez-vous intervenir ?";
const descriptionTextarea = document.querySelector('textarea[name="description"]');
if (descriptionTextarea) {
descriptionTextarea.value = descriptionText;
}
}
//FIN FONCTION POUR OUVERTURE LIEN ORANGE
//FIN FONCTION POUR OUVERTURE LIEN ORANGE
//FIN FONCTION POUR OUVERTURE LIEN ORANGE
//FIN FONCTION POUR OUVERTURE LIEN ORANGE
// Gestionnaire d'événement pour les raccourcis clavier
document.addEventListener('keydown', function(e) {
if (e.altKey && e.key === 'k') {
handleShiftK();
} else if (e.altKey && e.key === 'j') {
askForNumber();
}
});
// Fonctions spécifiques pour les raccourcis clavier
function handleShiftK() {
let selectedText = window.getSelection().toString();
if (/^[\d .]+$/.test(selectedText)) {
let formattedNumber = selectedText.replace(/[ .]/g, '');
navigator.clipboard.writeText(formattedNumber)
.then(() => console.log('Numéro copié dans le presse-papiers:', formattedNumber))
.catch(err => console.error('Erreur lors de la copie:', err));
} else {
console.log('Le texte sélectionné n\'est pas un numéro.');
}
}
// Fonction pour demander le numéro via une popup
function askForNumber() {
var numero = prompt("Entrez le numéro à rechercher :");
if (numero !== null && numero.trim() !== '') {
// Si l'utilisateur entre un numéro valide, ouvrir le site avec le numéro en tant que paramètre
openSite(numero);
}
}
// Fonction pour ouvrir le site avec le numéro en tant que paramètre
function openSite(numero) {
var siteUrl = 'https://jupiter.mydstny.fr/GestionDesNumeros/Liste';
// Ajouter le numéro comme paramètre à l'URL du site
siteUrl += '?number=' + encodeURIComponent(numero);
// Ouvrir la page dans une nouvelle fenêtre
window.open(siteUrl, '_blank');
// Appliquer la recherche sur la nouvelle fenêtre
}
if (window.location.href.includes('https://jupiter.mydstny.fr/Secure/dbnum/list')) {
// Fonction pour extraire le numéro de l'URL
const params = new URLSearchParams(window.location.search);
const numero = params.get('number'); // Récupère la valeur du paramètre 'number'
if (numero) {
console.log('Numéro extrait:', numero);
// Mettre à jour le champ value de l'input
document.getElementById('tx_number').value = numero;
// Lancer la recherche en cliquant sur le bouton "Rechercher"
document.querySelector("[name='search']").click();
} else {
console.log('Numéro non trouvé dans l\'URL');
}
}
if (window.location.href.includes('https://jupiter.mydstny.fr/GestionDesNumeros/Liste')) {
// Fonction pour extraire le numéro de l'URL
const params = new URLSearchParams(window.location.search);
const numero = params.get('number'); // Récupère la valeur du paramètre 'number'
if (numero) {
console.log('Numéro extrait:', numero);
// Mettre à jour le champ value de l'input
document.getElementById('tx_number').value = numero;
// Lancer la recherche en cliquant sur le bouton "Rechercher"
document.querySelector("[name='search']").click();
} else {
console.log('Numéro non trouvé dans l\'URL');
}
}
// Vérifier si l'URL actuelle correspond au modèle attendu
if (window.location.href.match(/https:\/\/jupiter\.mydstny\.fr\/GestionDesNumeros\/Liste\?number=\d+/)) {
// Extraire le numéro de l'URL
var numeroFromUrl = window.location.href.match(/\?number=(\d+)/)[1];
// Mettre à jour le champ value de l'input
document.getElementById('tx_number').value = numeroFromUrl;
// Lancer la recherche en cliquant sur le bouton "Rechercher"
document.querySelector("[name='search']").click();
}
if (window.location.href.includes('https://tck.mydstny.fr/Tickets')) {
// Function to create buttons
function createButton(id, text) {
var button = document.createElement('button');
button.type = 'submit';
button.className = 'btn btn-gradient';
button.id = id;
button.textContent = text;
button.style.margin = '5px';
return button;
}
// Function to open links based on time criteria
function openLinks(timeLimit) {
var rows = document.querySelectorAll('tbody[data-tickets="all"] tr');
rows.forEach(function(row) {
var durationSpan = row.querySelector('td.text-center span[data-duration]');
var duration = parseInt(durationSpan.getAttribute('data-duration'), 10);
if (durationSpan && duration < 0 && duration >= timeLimit) {
var ticketLink = Array.from(row.querySelectorAll('td a[href]')).find(link => link.getAttribute('href').includes('Ticket'));
if (ticketLink) {
window.open(ticketLink.getAttribute('href'), '_blank');
}
}
});
}
// Find the target div
var targetDiv = document.querySelector('.col-md-6');
if (targetDiv) {
// Add buttons to the target div
targetDiv.appendChild(createButton('button-5hr', 'Ticket -05h00')).addEventListener('click', function() { openLinks(-18000); });
targetDiv.appendChild(createButton('button-15hr', 'Ticket -15h00')).addEventListener('click', function() { openLinks(-54000); });
targetDiv.appendChild(createButton('button-all-negative', 'Ticket négatif')).addEventListener('click', function() { openLinks(-Infinity); });
}
}
if (window.location.href.includes('https://tck.mydstny.fr/Ticket')) {
function retrieveRefLiaisonValue() {
// Sélectionnez l'élément avec la classe "dl-flex"
var dlElement = document.querySelector('.dl-flex');
if (!dlElement) {
console.log("Élément .dl-flex non trouvé.");
return;
}
console.log("Élément .dl-flex trouvé.");
// Trouver tous les liens dans l'élément avec la classe "dl-flex"
var links = dlElement.querySelectorAll('a');
var serLink = null;
for (var i = 0; i < links.length; i++) {
var linkText = links[i].textContent.trim();
// Si le texte du lien commence par "SER" suivi de chiffres
if (/^SER\d+$/.test(linkText)) {
serLink = links[i];
break;
}
}
if (!serLink) {
console.log("Lien SER non trouvé.");
return;
}
console.log("Lien SER trouvé : " + serLink.href);
// Utilisez l'URL du lien pour récupérer l'identifiant
GM_xmlhttpRequest({
method: "GET",
url: serLink.href,
onload: function(response) {
console.log("Requête GET effectuée sur l'URL : " + serLink.href);
var parser = new DOMParser();
var doc = parser.parseFromString(response.responseText, "text/html");
// Trouvez l'élément qui contient l'identifiant
var tdElements = doc.querySelectorAll('td');
var identifiant = null;
for (var i = 0; i < tdElements.length - 1; i++) {
if (tdElements[i].textContent.trim() === "Identifiant") {
identifiant = tdElements[i + 1].textContent.trim();
break;
}
}
if (identifiant) {
console.log("Identifiant trouvé : " + identifiant);
// Accédez à l'URL de la deuxième page avec l'identifiant
var secondURL = "https://pdmanager.as48504.oip/mng-edit.php?username=" + encodeURIComponent(identifiant);
console.log("Accès à la deuxième URL avec l'identifiant : " + secondURL);
GM_xmlhttpRequest({
method: "GET",
url: secondURL,
onload: function(response) {
console.log("Requête GET effectuée sur la deuxième URL : " + secondURL);
var parser = new DOMParser();
var doc = parser.parseFromString(response.responseText, "text/html");
// Recherchez la valeur du champ "Ref Liaison"
var refLiaisonInput = doc.querySelector('input#reflien');
var refLiaison = null;
if (refLiaisonInput) {
refLiaison = refLiaisonInput.value;
console.log("Valeur du champ 'Ref Liaison' trouvée : " + refLiaison);
// Créez les éléments pour la valeur de "Ref Liaison"
var refLiaisonDtElement = document.createElement('dt');
refLiaisonDtElement.textContent = "Ref Liaison";
var refLiaisonDdElement = document.createElement('dd');
refLiaisonDdElement.textContent = refLiaison;
// Ajoutez les éléments de la valeur de "Ref Liaison" à la liste
dlElement.appendChild(refLiaisonDtElement);
dlElement.appendChild(refLiaisonDdElement);
}
}
});
}
}
});
}
// Appel de la fonction principale
retrieveRefLiaisonValue();
// Ajout des styles CSS pour le thème orange/marron et correction des flèches
const style = `
<style>
/* Style pour le DatePicker */
.ui-datepicker {
background-color: #ffcc80; /* Couleur orange clair */
border: 1px solid #cc7a00; /* Bordure marron */
padding: 10px;
border-radius: 10px;
position: relative;
}
.ui-datepicker-header {
background-color: #cc7a00; /* Marron foncé pour l'en-tête */
color: white;
border-radius: 8px;
text-align: center;
position: relative;
}
.ui-datepicker-title {
color: #fff;
}
.ui-datepicker .ui-datepicker-prev,
.ui-datepicker .ui-datepicker-next {
display: block;
width: 20px;
height: 20px;
line-height: 20px;
background-color: transparent;
color: black; /* Flèches en noir */
font-size: 18px;
font-weight: bold;
border: none;
cursor: pointer;
padding: 0 10px;
}
.ui-datepicker .ui-datepicker-prev:before {
content: "<"; /* Flèche gauche */
color: black;
}
.ui-datepicker .ui-datepicker-next:before {
content: ">"; /* Flèche droite */
color: black;
}
.ui-datepicker .ui-datepicker-prev:hover,
.ui-datepicker .ui-datepicker-next:hover {
color: #ff9800; /* Orange vif au survol */
}
.ui-datepicker .ui-datepicker-prev {
float: left;
}
.ui-datepicker .ui-datepicker-next {
float: right;
}
.ui-datepicker-calendar td a {
background-color: #ffe0b2; /* Orange clair pour les jours */
color: #000;
border-radius: 4px;
padding: 5px;
text-align: center;
}
.ui-datepicker-calendar td a:hover {
background-color: #ff9800; /* Orange vif au survol */
color: white;
}
/* Fermer bouton du popup en haut à droite avec un X */
.ui-dialog-titlebar-close {
background-color: transparent;
border: none;
color: #cc7a00;
font-size: 16px;
position: absolute;
top: 5px;
right: 5px;
cursor: pointer;
}
.ui-dialog-titlebar-close:hover {
color: #ff9800;
}
/* Styles pour le TimePicker */
#timepickerDialog {
display: grid;
grid-template-columns: repeat(4, 1fr); /* 4 boutons par ligne */
gap: 10px;
padding: 20px;
background-color: #ffcc80;
border-radius: 10px;
justify-content: center;
}
.time-button {
padding: 10px;
background-color: #ff9800;
color: white;
border: none;
border-radius: 8px;
cursor: pointer;
font-size: 16px;
transition: background-color 0.3s ease;
}
.time-button:hover {
background-color: #cc7a00; /* Changement de couleur au survol */
}
/* Style pour le popup */
.ui-dialog {
background-color: #fff3e0; /* Fond orange très clair */
border: 2px solid #cc7a00; /* Bordure marron */
border-radius: 10px;
position: relative;
}
</style>
`;
$('head').append(style);
// Traduction du DatePicker en français
$.datepicker.regional['fr'] = {
closeText: 'Fermer',
prevText: '<', // Utilisation de < pour mois précédent
nextText: '>', // Utilisation de > pour mois suivant
currentText: 'Aujourd\'hui',
monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',
'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],
monthNamesShort: ['Janv.','Févr.','Mars','Avril','Mai','Juin',
'Juil.','Août','Sept.','Oct.','Nov.','Déc.'],
dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
dayNamesShort: ['Dim.','Lun.','Mar.','Mer.','Jeu.','Ven.','Sam.'],
dayNamesMin: ['D','L','M','M','J','V','S'],
weekHeader: 'Sem.',
dateFormat: 'dd/mm/yy',
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: ''
};
$.datepicker.setDefaults($.datepicker.regional['fr']);
function performActions7() {
// Créer l'élément pour le DatePicker avec un style épuré
const $datePicker = $("<div id='datepicker'></div>").appendTo("body");
// Initialiser le DatePicker
$datePicker.datepicker({
dateFormat: "dd/mm/yy",
onSelect: function(dateText) {
$datePicker.dialog('close');
promptForTime(dateText);
}
}).dialog({
modal: true,
autoOpen: false,
width: 300, // Taille du dialogue ajustée
closeText: 'X', // Le texte X pour fermer le pop-up
close: function() {
$(this).remove();
}
});
// Ouvrir le dialogue DatePicker
$datePicker.dialog('open');
}
function promptForTime(date) {
$('#timepickerDialog').remove(); // Nettoyer les dialogues précédents
// Créer un conteneur Timepicker stylé
const $timePickerContainer = $('<div id="timepickerDialog"></div>').appendTo("body");
// Générer les boutons pour chaque heure et demi-heure
for (let i = 6; i <= 22; i++) {
createTimeButton(i, '00', date, $timePickerContainer);
if (i < 22) {
createTimeButton(i, '30', date, $timePickerContainer);
}
}
// Afficher le conteneur du TimePicker dans une boîte de dialogue
$timePickerContainer.dialog({
modal: true,
autoOpen: true,
width: 400, // Taille ajustée pour les boutons
closeText: 'X', // Le texte X pour fermer le pop-up
close: function() {
$(this).remove();
}
});
}
function createTimeButton(hour, minute, date, container) {
const formattedTime = hour.toString().padStart(2, '0') + ':' + minute;
$('<button>')
.text(formattedTime)
.addClass('time-button')
.data('time', formattedTime)
.on('click', function() {
const selectedTime = $(this).data('time');
insertMessage(date, selectedTime, calculateEndTime(selectedTime));
container.dialog('close');
})
.appendTo(container);
}
function calculateEndTime(time) {
const [startHour, minute] = time.split(":");
const endHour = (parseInt(startHour) + 2).toString().padStart(2, '0');
return `${endHour}:${minute}`;
}
function insertMessage(date, startTime, endTime) {
// Simulation d'un clic sur le bouton pour ajouter un nouveau message
const nouveauMessageButton = document.querySelector('button[data-toggle="modal"][data-target="#addPostModal"]');
if (nouveauMessageButton) {
nouveauMessageButton.click();
}
// Insérer le message avec une personnalisation du délai d'attente
setTimeout(() => {
if (typeof CKEDITOR !== "undefined" && CKEDITOR.instances) {
for (let editor in CKEDITOR.instances) {
if (CKEDITOR.instances.hasOwnProperty(editor)) {
const message = `
Bonjour,<br><br>
Nous vous confirmons qu'une intervention est prévue pour le ${date} entre ${startTime} et ${endTime}.<br>
Nous reviendrons vers vous suite à celle-ci.
`;
CKEDITOR.instances[editor].setData(message);
}
}
}
}, 1500); // Délai réduit pour une meilleure réactivité
}
function waitForJQuery(callback) {
if (typeof jQuery === "undefined" || typeof jQuery.ui === "undefined") {
setTimeout(() => {
waitForJQuery(callback);
}, 100);
} else {
callback();
}
}
function performActions6() {
GM_setValue('boutonclique', 1);
extraitlesdonnees();
const serviceLinkElement = document.querySelector('a[href^="https://psm.mydstny.fr/Service"]');
if (serviceLinkElement) {
getServiceStatus(serviceLinkElement);
}
}
// fonction relance 1
function performActions() {
// Cliquez sur le bouton "Nouveau message"
let nouveauMessageButton = document.querySelector('button[data-toggle="modal"][data-target="#addPostModal"]');
if (nouveauMessageButton) {
nouveauMessageButton.click();
}
// Cochez le bouton radio "Public" (attente de l'apparition du bouton radio après avoir cliqué sur "Nouveau message")
setTimeout(() => {
let publicRadioButton = document.querySelector('input[type="radio"][id="rd_addPostVisibility_2"]');
if (publicRadioButton) {
publicRadioButton.checked = true;
publicRadioButton.dispatchEvent(new Event('change', { 'bubbles': true }));
}
}, 1000);
// Sélectionnez "En attente retour client" pour "État suivant" et déclenchez l'événement de changement pour afficher les choix du "Questionnaire"
setTimeout(() => {
let etatSuivantDropdown = document.getElementById('se_addPostNextState');
if (etatSuivantDropdown) {
etatSuivantDropdown.value = "12";
etatSuivantDropdown.dispatchEvent(new Event('change', { 'bubbles': true }));
}
}, 1500);
// NOTE: Après avoir déclenché l'événement de changement pour "État suivant", le "Questionnaire" devrait être visible. À ce stade, nous pouvons essayer de sélectionner "Réponse" pour le "Questionnaire".
setTimeout(() => {
let questionnaireDropdown = document.getElementById('se_addPostFormId');
if (questionnaireDropdown) {
questionnaireDropdown.value = "10243";
}
}, 2000);
setTimeout(() => {
if (typeof CKEDITOR !== "undefined" && CKEDITOR.instances) {
for (let editor in CKEDITOR.instances) {
if (CKEDITOR.instances.hasOwnProperty(editor)) {
CKEDITOR.instances[editor].setData("Bonjour,<br><br>Avez-vous un retour à nous fournir ?");
}
}
}
}, 2500);
}
// Fonction relance 2
function performActions2() {
// Cliquez sur le bouton "Nouveau message"
let nouveauMessageButton = document.querySelector('button[data-toggle="modal"][data-target="#addPostModal"]');
if (nouveauMessageButton) {
nouveauMessageButton.click();
}
// Cochez le bouton radio "Public" (attente de l'apparition du bouton radio après avoir cliqué sur "Nouveau message")
setTimeout(() => {
let publicRadioButton = document.querySelector('input[type="radio"][id="rd_addPostVisibility_2"]');
if (publicRadioButton) {
publicRadioButton.checked = true;
publicRadioButton.dispatchEvent(new Event('change', { 'bubbles': true }));
}
}, 1000);
// Sélectionnez "En attente retour client" pour "État suivant" et déclenchez l'événement de changement pour afficher les choix du "Questionnaire"
setTimeout(() => {
let etatSuivantDropdown = document.getElementById('se_addPostNextState');
if (etatSuivantDropdown) {
etatSuivantDropdown.value = "12";
etatSuivantDropdown.dispatchEvent(new Event('change', { 'bubbles': true }));
}
}, 1500);
// NOTE: Après avoir déclenché l'événement de changement pour "État suivant", le "Questionnaire" devrait être visible. À ce stade, nous pouvons essayer de sélectionner "Réponse" pour le "Questionnaire".
setTimeout(() => {
let questionnaireDropdown = document.getElementById('se_addPostFormId');
if (questionnaireDropdown) {
questionnaireDropdown.value = "10243";
}
}, 2000);
setTimeout(() => {
if (typeof CKEDITOR !== "undefined" && CKEDITOR.instances) {
for (let editor in CKEDITOR.instances) {
if (CKEDITOR.instances.hasOwnProperty(editor)) {
CKEDITOR.instances[editor].setData("Suite à notre précédent post, avez-vous un retour à nous fournir ?<br><br>Dans l'attente d'une réponse de votre part, nous restons à votre disposition pour toute nouvelle demande.");
}
}
}
}, 2500);
}
// Fonction Ouverture ticket fournisseur
function performActions3() {
// Cliquez sur le bouton "Nouveau message"
let nouveauMessageButton = document.querySelector('button[data-toggle="modal"][data-target="#addPostModal"]');
if (nouveauMessageButton) {
nouveauMessageButton.click();
}
// Cochez le bouton radio "Public" (attente de l'apparition du bouton radio après avoir cliqué sur "Nouveau message")
setTimeout(() => {
let publicRadioButton = document.querySelector('input[type="radio"][id="rd_addPostVisibility_2"]');
if (publicRadioButton) {
publicRadioButton.checked = true;
publicRadioButton.dispatchEvent(new Event('change', { 'bubbles': true }));
}
}, 1000);
// Sélectionnez "En attente retour client" pour "État suivant" et déclenchez l'événement de changement pour afficher les choix du "Questionnaire"
setTimeout(() => {
let etatSuivantDropdown = document.getElementById('se_addPostNextState');
if (etatSuivantDropdown) {
etatSuivantDropdown.value = "12";
etatSuivantDropdown.dispatchEvent(new Event('change', { 'bubbles': true }));
}
}, 1500);
// NOTE: Après avoir déclenché l'événement de changement pour "État suivant", le "Questionnaire" devrait être visible. À ce stade, nous pouvons essayer de sélectionner "Réponse" pour le "Questionnaire".
setTimeout(() => {
let questionnaireDropdown = document.getElementById('se_addPostFormId');
if (questionnaireDropdown) {
questionnaireDropdown.value = "10243";
}
}, 2000);
setTimeout(() => {
if (typeof CKEDITOR !== "undefined" && CKEDITOR.instances) {
for (let editor in CKEDITOR.instances) {
if (CKEDITOR.instances.hasOwnProperty(editor)) {
CKEDITOR.instances[editor].setData("Bonjour,<br><br>Nous vous confirmons qu'une signalisation a été ouverte auprès de l'opérateur de boucle locale.<br>Nous revenons vers vous au plus vite.");
}
}
}
}, 2500);
}
//Bouton cloture immédiat
function performActions4() {
// Click on the specific "Actions" dropdown
const actionsDropdown = document.querySelector('button[aria-expanded]:not([aria-expanded="true"])');
if (actionsDropdown && actionsDropdown.textContent.includes("Actions")) {
actionsDropdown.click();
}
// Check if "Clôturer" option is present and click it
setTimeout(() => {
const cloturerOption = document.querySelector('a[data-target="#closingModal"]');
if (cloturerOption) {
cloturerOption.click();
}
// Actions inside the modal
setTimeout(() => {
// Check the radio button for "Clôture immédiate"
const clotureImmediateRadio = document.getElementById('rd_closingType_DEFAULT');
if (clotureImmediateRadio) {
clotureImmediateRadio.click();
}
// Check the radio button for "Oui"
const ouiRadio = document.querySelector('input[name="closingResolution"][value="YES"]');
if (ouiRadio) {
ouiRadio.click();
}
// Check the radio button for "Dstny"
const dstnyRadio = document.querySelector('input[name="closingResponsibleEntity"][value="OPENIP"]');
if (dstnyRadio) {
dstnyRadio.click();
}
// Add the closing comment
const closingCommentTextarea = document.getElementById('ta_closingComment');
if (closingCommentTextarea) {
closingCommentTextarea.value = "Merci pour votre retour, suite à ce dernier nous clôturons ce ticket.\nN'hésitez pas à revenir vers nous pour toutes nouvelles demandes.";
}
}, 500); // Wait for the modal to fully appear
}, 500); // Wait for the dropdown to fully appear
}
// bouton autocloture
function performActions5() {
// Click on the specific "Actions" dropdown
const actionsDropdown = document.querySelector('button[aria-expanded]:not([aria-expanded="true"])');
if (actionsDropdown && actionsDropdown.textContent.includes("Actions")) {
actionsDropdown.click();
}
// Check if "Clôturer" option is present and click it
setTimeout(() => {
const cloturerOption = document.querySelector('a[data-target="#closingModal"]');
if (cloturerOption) {
cloturerOption.click();
}
// Actions inside the modal
setTimeout(() => {
// Check the radio button for "Auto-clôture"
const autoClotureRadio = document.getElementById('rd_closingType_AUTO_CLOSING');
if (autoClotureRadio) {
autoClotureRadio.click();
}
// Check the radio button for "Oui"
const ouiRadio = document.querySelector('input[name="closingResolution"][value="YES"]');
if (ouiRadio) {
ouiRadio.click();
}
// Check the radio button for "Dstny"
const dstnyRadio = document.querySelector('input[name="closingResponsibleEntity"][value="OPENIP"]');
if (dstnyRadio) {
dstnyRadio.click();
}
// Click on "1 jour" button
const unJourButton = document.querySelector('button[data-target="dt_closingDate"]');
if (unJourButton) {
unJourButton.click();
}
// Add the closing comment
const closingCommentTextarea = document.getElementById('ta_closingComment');
if (closingCommentTextarea) {
closingCommentTextarea.value = "Suite aux informations qui vous ont été transmises, sans retour de votre part, ce ticket sera clôturer dans 24h.\nN'hésitez pas à revenir vers nous pour toutes nouvelles demandes.";
}
}, 500); // Wait for the modal to fully appear
}, 500); // Wait for the dropdown to fully appear
}
// Fonction lien connecté
function performActions8() {
// Cliquez sur le bouton "Nouveau message"
let nouveauMessageButton = document.querySelector('button[data-toggle="modal"][data-target="#addPostModal"]');
if (nouveauMessageButton) {
nouveauMessageButton.click();
}
// Cochez le bouton radio "Public" (attente de l'apparition du bouton radio après avoir cliqué sur "Nouveau message")
setTimeout(() => {
let publicRadioButton = document.querySelector('input[type="radio"][id="rd_addPostVisibility_2"]');
if (publicRadioButton) {
publicRadioButton.checked = true;
publicRadioButton.dispatchEvent(new Event('change', { 'bubbles': true }));
}
}, 1000);
// Sélectionnez "En attente retour client" pour "État suivant" et déclenchez l'événement de changement pour afficher les choix du "Questionnaire"
setTimeout(() => {
let etatSuivantDropdown = document.getElementById('se_addPostNextState');
if (etatSuivantDropdown) {
etatSuivantDropdown.value = "12";
etatSuivantDropdown.dispatchEvent(new Event('change', { 'bubbles': true }));
}
}, 1500);
// NOTE: Après avoir déclenché l'événement de changement pour "État suivant", le "Questionnaire" devrait être visible. À ce stade, nous pouvons essayer de sélectionner "Réponse" pour le "Questionnaire".
setTimeout(() => {
let questionnaireDropdown = document.getElementById('se_addPostFormId');
if (questionnaireDropdown) {
questionnaireDropdown.value = "10243";
}
}, 2000);
setTimeout(() => {
if (typeof CKEDITOR !== "undefined" && CKEDITOR.instances) {
for (let editor in CKEDITOR.instances) {
if (CKEDITOR.instances.hasOwnProperty(editor)) {
CKEDITOR.instances[editor].setData("Bonjour,<br><br>Nous constatons que le lien est actuellement connecté et stable<br>Avez-vous un retour à nous fournir ?");
}
}
}
}, 2500);
}
// Vérifiez régulièrement si le bouton "Actions" est présent
let intervalId = setInterval(() => {
let actionsButtonDiv = document.querySelector('div.btn-group.text-right');
if (actionsButtonDiv) {
clearInterval(intervalId); // Arrêtez l'intervalle une fois le bouton trouvé
// Créez le nouveau bouton déroulant " Actions rapides "
let newButtonDiv = document.createElement('div');
newButtonDiv.className = "btn-group text-right";
newButtonDiv.innerHTML = `
<button type="button" class="btn btn-block btn-primary btn-gradient btn-lg dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Actions rapides <span class="caret"></span>
</button>
<ul class="dropdown-menu dropdown-menu-right">
<li>
<a id="performActionsLink">Relance 1</a>
</li>
<li>
<a id="performActions2Link">Relance 2</a>
</li>
<li>
<a id="performActions3Link">Ouverture ticket fournisseur</a>
</li>
<li>
<a id="performActions7Link">Ouverture ticket fournisseur DATA</a>
</li>
<li>
<a id="performActions4Link">Clôture</a>
</li>
<li>
<a id="performActions5Link">Auto Clôture</a>
</li>
<li>
<a id="performActions6Link">Prend les infos fournisseur</a>
</li>
<li>
<a id="performActions8Link">Lien connecté</a>
</li>
</ul>
`;
// Insérez le nouveau bouton juste avant le bouton "Actions"
actionsButtonDiv.parentNode.insertBefore(newButtonDiv, actionsButtonDiv);
// Ajoutez un écouteur d'événements pour "Relance 1"
let action1Link = document.querySelector('#performActionsLink');
action1Link.addEventListener('click', performActions);
// Ajoutez un écouteur d'événements pour "Relance 2"
let action2Link = document.querySelector('#performActions2Link');
action2Link.addEventListener('click', performActions2);
// Ajoutez un écouteur d'événements pour "Ouverture ticket fournisseur"
let action3Link = document.querySelector('#performActions3Link');
action3Link.addEventListener('click', performActions3);
// Ajoutez un écouteur d'événements pour "Clôture"
let action4Link = document.querySelector('#performActions4Link');
action4Link.addEventListener('click', performActions4);
// Ajoutez un écouteur d'événements pour "Clôture"
let action5Link = document.querySelector('#performActions5Link');
action5Link.addEventListener('click', performActions5);
let action6Link = document.querySelector('#performActions6Link');
action6Link.addEventListener('click', performActions6);
let action7Link = document.querySelector('#performActions7Link');
action7Link.addEventListener('click', performActions7);
let action8Link = document.querySelector('#performActions8Link');
action8Link.addEventListener('click', performActions8);
}
}, 500);
}
if (currentURL.includes('https://www.e-sav-signalisation.operateurs.orange-business.com/ipsiteTT/rdvSelectAction.do?contextRdv=0&rdvSessionId=')) {
if (GM_getValue('boutonclique') === 1) {
console.log("Bouton cliqué ( valeur mise à 1 )");
LienOrangeFTTH(); // Vérifie la présence du formulaire et exécute les actions supplémentaires si présent
LienOrangeDSL();
GM_setValue('boutonclique', 0);
} else {
console.log("Bouton pas cliqué ( valeur pas à 1 )");
}
}
})();