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

Modifications du menu contextuel

parent 2ef7dd0a
No related branches found
No related tags found
No related merge requests found
File moved
File moved
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Menu Contextuel Lexique</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<p>Sélectionnez un mot dans ce texte pour voir le menu contextuel personnalisé.</p>
<script src="../sélection_recherche/main.js"></script>
</body>
</html>
let isExtensionActive = true; // Création du menu contextuel
let areStatsActive = false; browser.contextMenus.create({
id: "addToLexicon",
console.log("ff2BaLex est chargé."); title: "Ajouter au lexique personnel",
contexts: ["selection"]
});
browser.runtime.onInstalled.addListener(() => { browser.contextMenus.create({
console.log("ff2BaLex est installé."); id: "searchWiktionary",
title: "Rechercher sur le Wiktionnaire",
contexts: ["selection"]
}); });
browser.storage.onChanged.addListener((changes) => { // Actions lors du clic
if (changes.extensionActive) { browser.contextMenus.onClicked.addListener((info, tab) => {
isExtensionActive = changes.extensionActive.newValue; if (info.menuItemId === "addToLexicon") {
console.log("Extension activée :", isExtensionActive); browser.tabs.sendMessage(tab.id, {
action: "addToLexicon",
word: info.selectionText
});
} }
if (changes.statsActive) { if (info.menuItemId === "searchWiktionary") {
areStatsActive = changes.statsActive.newValue; browser.tabs.sendMessage(tab.id, {
console.log("Statistiques activées :", areStatsActive); action: "searchWiktionary",
word: info.selectionText
});
} }
}); });
...@@ -3,11 +3,23 @@ ...@@ -3,11 +3,23 @@
"name": "ff2BaLex", "name": "ff2BaLex",
"version": "1.0", "version": "1.0",
"description": "Extension Firefox avec paramètres personnalisés.", "description": "Extension Firefox avec paramètres personnalisés.",
"permissions": ["storage", "activeTab"], "permissions": [
"storage",
"activeTab",
"contextMenus",
"scripting"
],
"background": { "background": {
"scripts": ["background.js"], "scripts": ["background.js"],
"persistent": true "persistent": true
}, },
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["../sélection_recherche/main.js", "../sélection_recherche/recherche.js"],
"css": ["../menu_contextuel/style.css"]
}
],
"options_ui": { "options_ui": {
"page": "options.html", "page": "options.html",
"open_in_tab": false "open_in_tab": false
...@@ -15,10 +27,12 @@ ...@@ -15,10 +27,12 @@
"browser_action": { "browser_action": {
"default_popup": "popup.html", "default_popup": "popup.html",
"default_icon": { "default_icon": {
"16": "icon-16.png", "48": "../icons/border-48.png"
"48": "icon-48.png",
"128": "icon-128.png"
}, },
"default_title": "ff2BaLex" "default_title": "ff2BaLex"
},
"icons": {
"48": "../icons/border-48.png",
"128": "../icons/loupe-256.png"
} }
} }
// Vérifier avant de créer une nouvelle zone si elle y est déjà // Modification script précédent :
// - Ajout de la fonction createButton pour créer des boutons
// et éviter les redondances
// Création de la boîte blanche si elle n'existe pas
if (!document.getElementById('whiteBox')) { if (!document.getElementById('whiteBox')) {
// Création de la zone blanche
const whiteBox = document.createElement('div'); const whiteBox = document.createElement('div');
whiteBox.id = 'whiteBox'; whiteBox.id = 'whiteBox';
whiteBox.innerHTML = '<p id="selectedWord">Mot sélectionné</p>';
// Ajout de contenu dans la zone
whiteBox.innerHTML = '<p id="selectedWord"> Mot sélectionné </p>';
// Ajouter la zone au document
document.body.appendChild(whiteBox); document.body.appendChild(whiteBox);
} }
// Ecouteur de la sélection de texte // Réception des messages du menu contextuel
document.addEventListener('contextmenu', (event) => { browser.runtime.onMessage.addListener((message) => {
const selectedText = window.getSelection().toString(); // Récupérer le texte sélectionné if (message.action === "addToLexicon") {
alert(`Ajouté au lexique : ${message.word}`);
// 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';
// Ajouter 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';
// Ajouter du bouton sous le texte
const whiteBox = document.getElementById('whiteBox');
whiteBox.appendChild(searchWikiButton);
}
//Récupérer le token dans le local storage
//Ajouter les évènements API sur les boutons
if (message.action === "searchWiktionary") {
window.open(`https://fr.wiktionary.org/wiki/${message.word}`, '_blank');
} }
}); });
{
"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": ["activeTab"],
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["main.js"],
"css": ["style.css"]
}
],
"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;
}
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