diff --git "a/s\303\251lection_recherche/icons/border-48.png" b/icons/border-48.png similarity index 100% rename from "s\303\251lection_recherche/icons/border-48.png" rename to icons/border-48.png diff --git "a/s\303\251lection_recherche/icons/loupe-256.png" b/icons/loupe-256.png similarity index 100% rename from "s\303\251lection_recherche/icons/loupe-256.png" rename to icons/loupe-256.png diff --git a/menu_contextuel/index.html b/menu_contextuel/index.html new file mode 100644 index 0000000000000000000000000000000000000000..7726b55a8497244aab08fa00b89c589ff0958b82 --- /dev/null +++ b/menu_contextuel/index.html @@ -0,0 +1,16 @@ +<!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> diff --git a/menu_contextuel/style.css b/menu_contextuel/style.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/menu_extension/background.js b/menu_extension/background.js index 2c13d9651ffc0f112c557d5aa77f49a451d08740..be272649cc087cb72d10101ed134b5dcbcc422d4 100644 --- a/menu_extension/background.js +++ b/menu_extension/background.js @@ -1,20 +1,29 @@ -let isExtensionActive = true; -let areStatsActive = false; - -console.log("ff2BaLex est chargé."); +// Création du menu contextuel +browser.contextMenus.create({ + id: "addToLexicon", + title: "Ajouter au lexique personnel", + contexts: ["selection"] +}); -browser.runtime.onInstalled.addListener(() => { - console.log("ff2BaLex est installé."); +browser.contextMenus.create({ + id: "searchWiktionary", + title: "Rechercher sur le Wiktionnaire", + contexts: ["selection"] }); -browser.storage.onChanged.addListener((changes) => { - if (changes.extensionActive) { - isExtensionActive = changes.extensionActive.newValue; - console.log("Extension activée :", isExtensionActive); +// Actions lors du clic +browser.contextMenus.onClicked.addListener((info, tab) => { + if (info.menuItemId === "addToLexicon") { + browser.tabs.sendMessage(tab.id, { + action: "addToLexicon", + word: info.selectionText + }); } - if (changes.statsActive) { - areStatsActive = changes.statsActive.newValue; - console.log("Statistiques activées :", areStatsActive); + if (info.menuItemId === "searchWiktionary") { + browser.tabs.sendMessage(tab.id, { + action: "searchWiktionary", + word: info.selectionText + }); } }); diff --git a/menu_extension/manifest.json b/menu_extension/manifest.json index 1f8ec330a09670f0b0266e6bcf67e311e7dd2a91..8b0bfcc282022a8fe3b51bc022bb6bc6af90f438 100644 --- a/menu_extension/manifest.json +++ b/menu_extension/manifest.json @@ -3,11 +3,23 @@ "name": "ff2BaLex", "version": "1.0", "description": "Extension Firefox avec paramètres personnalisés.", - "permissions": ["storage", "activeTab"], + "permissions": [ + "storage", + "activeTab", + "contextMenus", + "scripting" + ], "background": { "scripts": ["background.js"], "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": { "page": "options.html", "open_in_tab": false @@ -15,10 +27,12 @@ "browser_action": { "default_popup": "popup.html", "default_icon": { - "16": "icon-16.png", - "48": "icon-48.png", - "128": "icon-128.png" + "48": "../icons/border-48.png" }, "default_title": "ff2BaLex" + }, + "icons": { + "48": "../icons/border-48.png", + "128": "../icons/loupe-256.png" } } diff --git "a/s\303\251lection_recherche/main.js" "b/s\303\251lection_recherche/main.js" index 978af056b69a0dec2cc17d0bbf918a651b268431..50a44e04f4c70e46b8e90c106ba9a642c69bdd84 100644 --- "a/s\303\251lection_recherche/main.js" +++ "b/s\303\251lection_recherche/main.js" @@ -1,61 +1,22 @@ -// 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')) { - // 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 + whiteBox.innerHTML = '<p id="selectedWord">Mot sélectionné</p>'; document.body.appendChild(whiteBox); } -// Ecouteur de la sélection de texte -document.addEventListener('contextmenu', (event) => { - const selectedText = window.getSelection().toString(); // 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'; - - // 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 +// Réception des messages du menu contextuel +browser.runtime.onMessage.addListener((message) => { + if (message.action === "addToLexicon") { + alert(`Ajouté au lexique : ${message.word}`); + } + if (message.action === "searchWiktionary") { + window.open(`https://fr.wiktionary.org/wiki/${message.word}`, '_blank'); } }); - diff --git "a/s\303\251lection_recherche/manifest.json" "b/s\303\251lection_recherche/manifest.json" deleted file mode 100644 index 146201c8562e943993f009ace2f500781afd8d3c..0000000000000000000000000000000000000000 --- "a/s\303\251lection_recherche/manifest.json" +++ /dev/null @@ -1,22 +0,0 @@ -{ - "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 diff --git "a/s\303\251lection_recherche/recherche.js" "b/s\303\251lection_recherche/recherche.js" new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/s\303\251lection_recherche/style.css" "b/s\303\251lection_recherche/style.css" deleted file mode 100644 index 60e994e0c3e489b7981b06a20af04964cd8c49b2..0000000000000000000000000000000000000000 --- "a/s\303\251lection_recherche/style.css" +++ /dev/null @@ -1,37 +0,0 @@ -#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; -} -