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;
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
});
}
});
......@@ -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"
}
}
// 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');
}
});
{
"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