Skip to content
Snippets Groups Projects
Commit f21a9e20 authored by Lucie Bader's avatar Lucie Bader
Browse files

Réorganisation fichiers

parent 2343c079
No related branches found
No related tags found
1 merge request!3Menu de l'extension et barre latérale
sélection_recherche/icons/border-48.png

225 B

sélection_recherche/icons/loupe-256.png

13.6 KiB

// Création de la zone blanche initiale(prototype menu contextuel)
if (!document.getElementById('whiteBox')) {
// Création de la zone blanche
const whiteBox = document.createElement('div');
whiteBox.id = 'whiteBox';
// Ajout de contenu dans la zone
whiteBox.innerHTML = '<p id="selectedWord"> Mot sélectionné </p>';
// Ajouter la zone au document
document.body.appendChild(whiteBox);
}
// Variable globale pour stocker le token
let authToken = '';
// Fonction pour lire et afficher le contenu du fichier token
function readTokenFile() {
const tokenFilePath = browser.runtime.getURL('token.txt');
console.log('Chemin du fichier token :', tokenFilePath);
return fetch(tokenFilePath)
.then((response) => {
if (!response.ok) {
throw new Error(`Erreur lors de la lecture du fichier token : ${response.statusText}`);
}
return response.text();
})
.then((token) => {
console.log('Contenu du fichier token :', token);
authToken = token.trim(); // Stocke le token dans une variable globale
})
.catch((error) => {
console.error('Erreur lors de la lecture du fichier token :', error);
});
}
// Appeler la fonction et attendre qu’elle soit terminée
readTokenFile().then(() => {
console.log("Le token est bien enregistré : ", authToken);
});
// Ecouteur de la sélection de texte
document.addEventListener('contextmenu', (event) => {
const selectedText = window.getSelection().toString().trim(); // Récupérer le texte sélectionné
// SI on a du texte sélectionné, on modifie le contenu et affiche le bouton de recherche dans le lexique
if (selectedText) {
console.log("Texte sélectionné :", selectedText);
// Modifier le contenu de la boîte blanche avec le texte sélectionné
const selectedWordElement = document.getElementById('selectedWord');
if (selectedWordElement) {
selectedWordElement.textContent = selectedText;
}
// Bouton de recherche dans le lexique perso
if (!document.getElementById('searchLexiconButton')) {
// Création du bouton "Rechercher dans le lexique" (lexique perso)
const searchLexiconButton = document.createElement('input');
searchLexiconButton.id = 'searchLexiconButton';
searchLexiconButton.type = 'button';
searchLexiconButton.value = 'Rechercher dans le lexique personnel';
searchLexiconButton.className = 'searchButton';
// Événement sur le bouton de recherche
searchLexiconButton.addEventListener('click', () => {
console.log("Recherche du mot dans le lexique:", selectedText);
searchInLexicon(selectedText);
});
// Ajout du bouton sous le texte
const whiteBox = document.getElementById('whiteBox');
whiteBox.appendChild(searchLexiconButton);
}
// Bouton de recherche requête sur le wiktionnaire
if (!document.getElementById('searchWikiButton')) {
// Création du bouton "Recherche sur le Wiktionnaire"
const searchWikiButton = document.createElement('input');
searchWikiButton.id = 'searchWikiButton';
searchWikiButton.type = 'button';
searchWikiButton.value = 'Rechercher sur le Wiktionnaire';
searchWikiButton.className = 'searchButton';
// // Évènement sur le bouton de recherche
searchWikiButton.addEventListener('click', () => {
console.log("Recherche du mot dans le Wiktionnaire:", selectedText);
searchInWiki(selectedText);
});
// Ajout du bouton sous le texte
const whiteBox = document.getElementById('whiteBox');
whiteBox.appendChild(searchWikiButton);
}
}
// Définition des fonctions APPELS API
// Fonction pour rechercher dans le lexique personnel (français)
function searchInLexicon(selectedText) {
const lexiconsApiUrl = 'https://babalex.lezinter.net/api/user/lexicons';
if (!authToken) {
console.error('Token non disponible.');
return;
}
//Récupérer les lexiques de l'utilisateur
fetch(lexiconsApiUrl, {
method: 'GET',
headers: {
'Authorization': `Bearer ${authToken}`,
'Content-Type': 'application/json',
},
})
.then((response) => {
if (!response.ok) {
throw new Error(`Erreur lors de la récupération des lexiques : ${response.statusText}`);
}
return response.json();
})
.then((lexicons) => {
console.log('Lexiques de l’utilisateur :', lexicons);
//todo : Utiliser la variable "lang" pour chercher le mot dans le bon lexique
// Rechercher l'ID du lexique français
const frenchLexicon = lexicons.find((lexicon) => lexicon.language === 'fr');
if (!frenchLexicon) {
throw new Error('Aucun lexique pour la langue française trouvé.');
}
const idLexicon = frenchLexicon.id;
console.log('ID du lexique français :', idLexicon);
//Récupérer les graphies du lexique français
const entriesApiUrl = `https://babalex.lezinter.net/api/lexicon/entries/${idLexicon}`;
return fetch(entriesApiUrl, {
method: 'GET',
headers: {
'Authorization': `Bearer ${authToken}`,
'Content-Type': 'application/json',
},
});
})
.then((response) => {
if (!response.ok) {
throw new Error(`Erreur lors de la récupération des graphies : ${response.statusText}`);
}
return response.json();
})
.then((entries) => {
console.log('Graphies dans le lexique français :', entries);
//Comparer les graphies avec le mot sélectionné
let isWordPresent = false;
for (const entry of entries) {
console.log("Mots dans le lexique :", entry);
if (entry.graphy === selectedText) {
isWordPresent = true;
break;
}
}
if (isWordPresent) {
alert(`Mot présent dans le lexique : "${selectedText}"`);
} else {
alert(`Le mot "${selectedText}" n'est pas présent dans le lexique.`);
}
})
.catch((error) => {
console.error('Erreur lors de la requête API :', error);
});
}
//console.log('Token utilisé :', authToken);
});
{
"manifest_version": 2,
"name": "Rechercher si le mot est dans le lexique",
"version": "1.0",
"description": "Sélectionne un mot et affiche le mot sélectionné dans la zone pour vérifier s'il est dans un lexique",
"icons": {
"48": "icons/loupe-256.png"
},
"permissions": [
"https://babalex.lezinter.net/*",
"activeTab"],
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["main.js"],
"css": ["style.css"]
}
],
"web_accessible_resources": [
"token",
"token.txt"
],
"browser_action": {
"default_icon": "icons/loupe-256.png",
"default_title": "Recherche du mot"
}
}
\ No newline at end of file
#whiteBox {
position: fixed;
top: 10px;
right: 10px;
background-color: rgb(255, 255, 255);
border: 5px solid rgb(0, 0, 0);
padding: 10px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
z-index: 10000;
}
#selectedWord {
margin: 0;
font-size: 14px;
line-height: 1.5;
color: black;
font-weight: bold;
}
/* Style des boutons */
.searchButton {
margin-top: 10px;
padding: 8px 12px;
background-color: #4CAF50;
color: white;
border: none;
cursor: pointer;
font-size: 14px;
border-radius: 5px;
display: block;
width: 100%;
}
.searchButton:hover {
background-color: #45a049;
}
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiJwcmlzbXMiLCJqdGkiOiJkYWU4Mzc5OGJkMTk1Y2M1NzIyMGM5MTZiZDBjYjNjZDkwNjQ0NzYyNjViNWY4YzgwOWYwYTBkNWQyYzFlNjNhNTk1M2ZmZWM2ZmEzNWQ0YyIsImlhdCI6MTczNjk3Mjk4OS4wMjk2MiwibmJmIjoxNzM2OTcyOTg5LjAyOTYzMiwiZXhwIjoxNzM2OTc2NTg5LjAwNDQzMiwic3ViIjoiYXNvdW5hbGF0aCIsInNjb3BlcyI6WyJlbWFpbCIsInBzZXVkbyIsInV1aWQiXSwia2lkIjoiMSIsImN1c3RvbSI6eyJmb28iOiJiYXIifX0.AKd1wP8mCWSkZ9iPhuyDxb5OEeLf6pyu3b4iv4yDOYqzjEXEm3He2umAYHvvTLEt701NW_6_6uzzGKt8tm-sqsGp_sff6LEBZE9j2108nonBtYS6Hi4LtSTPS9Ls9DeKvQ_mRxpT2ENOF7Lnfgy2a7PHIYrxfV3Q4jc_1LE9K4rStJdwX-UjSyzdJzmlpJ651knsg32yLDAUWzgcfyf4Vn41vqMnwn3gXi3Yez4biVM1cxOX9iwL8QdIDiPlcF83KOULrtvErLSlWzKgmmwrT8b1o2PqxEdhbehSgkpiyAU9ewmwVoZSXqql4ITg9tzOvUcLR4qyJGceAnLrNJdRnw
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment