script.js
À propos du fichier
- Type de fichier
- Fichier JS de 15 Ko (text/plain)
- Confidentialité
- Fichier public, envoyé le 12 avril 2024 à 09:31, depuis l'adresse IP 193.248.x.x (France)
- Sécurité
- Ne contient aucun Virus ou Malware connus - Dernière vérification: 24 heures
- Statistiques
- La présente page de téléchargement a été vue 214 fois depuis l'envoi du fichier
- Page de téléchargement
-
Aperçu du fichier
// Fonction pour rendre les URL cliquables dans un élément
function renderClickableLinks(element, isSpan) {
// Récupérer le texte de l'élément
var text = isSpan ? element.textContent : element.value ? element.value : false;
// Vérifier si le texte commence par l'URL spécifiée
if (text && text.startsWith('https://api.owner-academy.com')) {
// Créer un élément de lien <a>
var link = document.createElement('a');
// Définir l'URL du lien
link.href = text;
// Définir le texte du lien
link.textContent = text;
link.setAttribute('target', '_blank');
// Remplacer le contenu de l'élément par le lien
element.innerHTML = '';
if(isSpan) {
element.appendChild(link);
} else {
element.after(link);
element.hidden = true;
}
}
};
// Fonction pour observer les mutations dans le DOM
function observeDOM() {
// Sélectionner le nœud racine pour observer les mutations
var targetNode = document.body; // Vous pouvez changer cela pour correspondre à votre modal
// Options pour l'observateur (qui mutations observer)
var config = { childList: true, subtree: true };
// Créer un nouvel observateur de mutations
var observer = new MutationObserver(function(mutationsList, observer) {
// Parcourir les mutations
for(var mutation of mutationsList) {
// Vérifier si des nœuds ont été ajoutés
if (mutation.type === 'childList') {
// Parcourir les nœuds ajoutés
mutation.addedNodes.forEach(function(addedNode) {
// Vérifier si le nœud ajouté est un élément <span> avec la classe text-xs
if (addedNode instanceof Element && addedNode.classList.contains('text-xs')) {
// Rendre les URL cliquables dans cet élément
renderClickableLinks(addedNode, true);
}
if(addedNode.classList && addedNode.classList.contains('n-input__input-el') && addedNode.attr('placeholder').contains('lien bilan sport et santé')) {
renderClickableLinks(addedNode, false);
}
// Vérifier les nœuds enfants de l'élément ajouté
if (addedNode instanceof Element) {
var childSpans = addedNode.querySelectorAll('.text-xs');
let childInputs = addedNode.querySelectorAll('input.n-input__input-el[placeholder="lien bilan sport et santé"]');
childSpans.forEach(function(childSpan) {
renderClickableLinks(childSpan, true);
});
childInputs.forEach(function(childInput) {
renderClickableLinks(childInput, false);
});
}
});
}
}
});
// Commencer à observer le nœud cible pour les mutations spécifiées dans la configuration
observer.observe(targetNode, config);
};
// Appeler la fonction pour observer les mutations dans le DOM
observeDOM();
// Sélectionner l'élément à déplacer
const elementToMove = document.getElementById("dfa5daf9-b016-41b4-9e32-88a700dec281");
// Sélectionner l'élément après lequel vous voulez déplacer elementToMove
const referenceElement = document.getElementById("sb_opportunities");
// Vérifier si les éléments existent
if (elementToMove && referenceElement) {
// Insérer elementToMove après referenceElement
referenceElement.parentNode.insertBefore(elementToMove, referenceElement.nextSibling);
}
// Fonction pour exécuter lorsque des mutations sont détectées dans le DOM
function handleMutations(mutationsList, observer) {
executeWhenPageChanged();
}
// Fonction pour exécuter le code une fois que la page est modifiée
function executeWhenPageChanged() {
var smsTab = document.getElementById("sms-tab");
// Vérification si l'élément a la classe active
if (smsTab && smsTab.classList.contains("active")) {
// Sélection de tous les éléments avec la classe tab-content
var tabContents = document.querySelectorAll(".tab-content");
// Parcours de chaque élément tab-content et masquage
tabContents.forEach(function(tabContent) {
tabContent.style.display = "none";
});
} else {
var tabContents = document.querySelectorAll(".tab-content");
// Parcours de chaque élément tab-content et masquage
tabContents.forEach(function(tabContent) {
tabContent.style.display = "block";
});
}
// Définition du tableau de remplacement
let motsAChanger = [
{mot: "All courses", equivalent: "Tous les cours"},
{mot: "Appointments Report", equivalent: "Rapport de rendez-vous"},
{mot: "Send", equivalent: "Envoyer"},
{mot: "Clear", equivalent: "Effacer"},
{mot: "There has been no message initiated from user in past 24hrs. Please use a", equivalent: "Aucun message n'a été envoyé par le prospect depuis 24h."},
{mot: "template to initiate a chat", equivalent: "Clique ici pour sélectionner le modèle 'lancer conversation' "},
{mot: "Use Template", equivalent: "Utiliser modèle"},
{mot: " Marketing ", equivalent: " Réseaux sociaux"},
{mot: " Sites ", equivalent: " Widgets"},
{mot: "Booked by lead", equivalent: "Réservé par prospect"},
{mot: "Booked", equivalent: "Réservé"},
{mot: "Feb", equivalent: "Fév"},
{mot: "Apr", equivalent: "Avr"},
{mot: "May", equivalent: "Mai"},
{mot: "Jun", equivalent: "Juin"},
{mot: "Jul", equivalent: "Juil."},
{mot: "Aug", equivalent: "Août"},
{mot: "Confirmed", equivalent: "Confirmé"},
{mot: "Showed", equivalent: "Venu"},
{mot: "No Show", equivalent: "Non venu"},
{mot: "Cancelled", equivalent: "Annulé"},
{mot: "Cancel", equivalent: "Annuler"},
{mot: "Outcomes", equivalent: "Résultats"},
{mot: "Outcome", equivalent: "Résultat"},
{mot: "Requested Time", equivalent: "Date du RDV"},
{mot: "Date Added", equivalent: "Date d'ajout du RDV"},
{mot: "Contact Name", equivalent: "Nom du contact"},
{mot: "Funnels", equivalent: "Qualification clients"},
{mot: "Funnel", equivalent: "Qualification clients"},
{mot: "Listes intelligentes", equivalent: "Liste contacts"},
{mot: "Le client dépense", equivalent: "Dépense"},
{mot: "Il marque un but!", equivalent: "Score"},
{mot: "1 Les étoiles", equivalent: "1 Étoile"},
{mot: "Les étoiles", equivalent: "Étoiles"},
{mot: "Inviter les tendances", equivalent: "Demandes d’avis"},
{mot: "Dernières critiques", equivalent: "Derniers avis"},
{mot: "Dernières demandes de révision", equivalent: "Dernières demandes de révision"},
{mot: "Analyse des tendances", equivalent: "Analyse des avis"},
{mot: "Prochain", equivalent: "Suivant"},
{mot: "In Library", equivalent: "Accéder"},
{mot: "Resume Course", equivalent: "Reprendre mon cours"},
{mot: "Lessons Completed", equivalent: "Cours complété(s)"},
{mot: "Start Quiz", equivalent: "Commencer"},
{mot: "Previous", equivalent: "Précédent"},
{mot: "Next", equivalent: "Suivant"},
{mot: "Lesson", equivalent: "Cours"},
{mot: " of ", equivalent: " de "},
{mot: "Mark As Complete", equivalent: "Marquer terminé"},
{mot: "My Courses", equivalent: "Mes cours"},
{mot: "Google Business Profile", equivalent: "Profil Google Business"},
{mot: "(Last 30 Days)", equivalent: "(30 derniers jours)"},
{mot: "Total views", equivalent: "Vues totales"},
{mot: "Bookings", equivalent: "Réservations"},
{mot: "Website visits", equivalent: "Visites site web"},
{mot: "Calls", equivalent: "Appels"},
{mot: "(Last 12 months)", equivalent: "(12 derniers mois)"},
{mot: "Tasks", equivalent: "Tâches"},
{mot: "Pending", equivalent: "En attente"},
{mot: "No data found", equivalent: "Aucune donnée disponible"},
{mot: "Google Ads Report", equivalent: "Rapport Google Ads"},
{mot: "Facebook Ads Report", equivalent: "Rapport Facebook Ads"},
{mot: "Total Visitors", equivalent: "Total visiteurs"},
{mot: "Total Page Views", equivalent: "Total pages vues"},
{mot: "Direct Views", equivalent: "Vues directes"},
{mot: "Paid Views", equivalent: "Vues sponsorisées"},
{mot: "Social Views", equivalent: "Vues réseaux sociaux"},
{mot: "Organic Views", equivalent: "Vue organiques"},
{mot: "Stage Distribution", equivalent: "Résultats des appels"},
{mot: "Win%", equivalent: "Signé%"},
{mot: "Won", equivalent: "Signé"},
{mot: "won", equivalent: "signé"},
{mot: "Open", equivalent: "En cours"},
{mot: "open", equivalent: "en cours"},
{mot: "Lost", equivalent: "Perdu"},
{mot: "lost", equivalent: "perdu"},
{mot: "Abandoned", equivalent: "Abandonné"},
{mot: "abandoned", equivalent: "abandonné"},
{mot: "Total Values", equivalent: "Valeur totale"},
{mot: "Switch to Sub-Account", equivalent: "Passer au sous-compte"},
{mot: "All", equivalent: "Tous"},
{mot:"Active services", equivalent:"Services actifs"},
{mot:"Day", equivalent:"Jour"},
{mot:"Add New Service", equivalent:"Ajouter nouveau service"},
{mot:"Month", equivalent:"Mois"},
{mot:"Social Profiles", equivalent:"Profils réseaux sociaux"},
{mot:"Week", equivalent:"Semaine"},
{mot:"Task", equivalent:"Tâches"},
{mot:"Calendars", equivalent:"Calendriers"},
{mot:"Account Details", equivalent:"Détails du compte"},
{mot:"Today", equivalent:"Aujourd'hui"},
{mot:"January", equivalent:"Janvier"},
{mot:"February", equivalent:"Février"},
{mot:"March", equivalent:"Mars"},
{mot:"April", equivalent:"Avril"},
{mot:"May", equivalent:"May"},
{mot:"June", equivalent:"Juin"},
{mot:"July", equivalent:"Juillet"},
{mot:"August", equivalent:"Août"},
{mot:"September", equivalent:"Septembre"},
{mot:"October", equivalent:"Octobre"},
{mot:"November", equivalent:"Novembre"},
{mot:"December", equivalent:"Décembre"},
{mot:"Users", equivalent:"Utilisateurs"},
{mot:"User ", equivalent:"Utilisateur"},
{mot:"Search for", equivalent:"Rechercher"},
{mot:"Updates", equivalent:"Mises à jour "},
{mot:"Update ", equivalent:"Actualiser"},
{mot:"Confirmed", equivalent:"Confirmé"},
{mot:"Name", equivalent:"Nom"},
{mot:"Status", equivalent:"Statut"},
{mot:"Title", equivalent:"Titre"},
{mot:"Requested time", equivalent:"Temps requis"},
{mot:"Date added", equivalent:"Date ajoutée"},
{mot:"Appointment owner", equivalent:"Responsable du RDV"},
{mot:"Load more", equivalent:"Charger plus"},
{mot:"Latest - all", equivalent:"Tous les derniers"},
{mot:"Unread", equivalent:"Non lu"},
{mot:"Appointments", equivalent:"Rendez-vous"},
{mot:"All", equivalent:"Tous "},
{mot:"Type a message", equivalent:"Rédiger un message"},
{mot:"Clear", equivalent:"Effacer"},
{mot:"Send", equivalent:"Envoyer"},
{mot:"No conversation selected", equivalent:"Aucune discussion sélectionnée"},
{mot:"No contact selected", equivalent:"Aucun contact sélectionné"},
{mot:"No unread conversation", equivalent:"Aucune discussion non lue"},
{mot:"First name", equivalent:"Prénom"},
{mot:"Last name", equivalent:"Nom "},
{mot:"Phone", equivalent:"Téléphone"},
{mot:"Date of birth", equivalent:"Date de naissance"},
{mot:"Contact type", equivalent:"Type de contact"},
{mot:"Sex", equivalent:"Sexe"},
{mot:"General info", equivalent:"Infos générales"},
{mot:"Additional info", equivalent:"Infos supplémentaires"},
{mot:"Business name", equivalent:"Nom de l'entreprise"},
{mot:"Street address", equivalent:"Adresse postale"},
{mot:"City", equivalent:"Ville"},
{mot:"Country", equivalent:"Pays"},
{mot:"State", equivalent:"Etat"},
{mot:"Postal code", equivalent:"Code postal"},
{mot:"Website", equivalent:"Site Web"},
{mot:"Time zone", equivalent:"Fuseau horaire"},
{mot:"Alert", equivalent:"Alerte"},
{mot:"Report", equivalent:"Rapport"},
{mot:"Channel", equivalent:"Réseau "},
{mot:"Booked by lead", equivalent:"Réservé par le prospect"},
{mot:"Other", equivalent:"Autre"},
{mot:"Lost connection, make sure you are connected to the internet and refresh the page.", equivalent:"Connexion perdue, assurez-vous que vous êtes connecté à Internet"},
];
// Sélectionne tous les éléments de la page
let elements = document.getElementsByTagName('*');
// Parcourt tous les éléments pour remplacer le texte
for (let i = 0; i < elements.length; i++) {
let element = elements[i];
// Vérifie si l'élément est un noeud de texte
if (element.nodeType === 3) {
let texte = element.nodeValue;
// Remplace toutes les occurrences des mots spécifiés par leurs équivalents
motsAChanger.forEach(obj => {
texte = texte.replace(new RegExp(obj.mot, 'g'), obj.equivalent);
});
// Assigne le nouveau texte à l'élément
if (texte !== element.nodeValue) {
element.nodeValue = texte;
}
} else if (element.hasChildNodes()) {
// Récursivement, parcourt les enfants de l'élément
for (let j = 0; j < element.childNodes.length; j++) {
let childNode = element.childNodes[j];
// Vérifie si le noeud enfant est un noeud de texte
if (childNode.nodeType === 3) {
let texte = childNode.nodeValue;
// Remplace toutes les occurrences des mots spécifiés par leurs équivalents
motsAChanger.forEach(obj => {
texte = texte.replace(new RegExp(obj.mot, 'g'), obj.equivalent);
});
// Assigne le nouveau texte au noeud enfant
if (texte !== childNode.nodeValue) {
childNode.nodeValue = texte;
}
}
}
}
}
}
// Création d'un observateur de mutations pour surveiller les changements dans le DOM
const observer = new MutationObserver(handleMutations);
// Configuration de l'observateur pour observer les changements dans les nœuds enfants, les attributs et le texte des nœuds
const observerConfig = { childList: true, subtree: true, characterData: true };
// Démarrage de l'observation du DOM avec la configuration spécifiée
observer.observe(document.body, observerConfig);
// Exécuter la fonction initiale pour traiter les éléments existants lors de l'initialisation
executeWhenPageChanged();
function gup( name )
{
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
return "";
else
return results[1];
}
if(gup("popup") == "confirm"){
alert("Merci d'avoir mis votre contact à jour");
}
Partager le fichier script.js sur le Web et les réseaux sociaux:
Télécharger le fichier script.js