Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
ff2balex
Manage
Activity
Members
Labels
Plan
Issues
9
Issue boards
Milestones
Wiki
External wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Lex gaMe
ff2balex
Commits
f2573a1a
Commit
f2573a1a
authored
6 months ago
by
Lucie Bader
Browse files
Options
Downloads
Patches
Plain Diff
Réglages affichage def Wiktionnaire
parent
a5c94654
No related branches found
No related tags found
1 merge request
!4
Définitions (lexiques de l'utilisateur + Wiktionnaire)
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
background/browser_context_menu.js
+38
-5
38 additions, 5 deletions
background/browser_context_menu.js
barre_latérale/sidebar.html
+23
-7
23 additions, 7 deletions
barre_latérale/sidebar.html
barre_latérale/sidebar.js
+52
-61
52 additions, 61 deletions
barre_latérale/sidebar.js
with
113 additions
and
73 deletions
background/browser_context_menu.js
+
38
−
5
View file @
f2573a1a
...
...
@@ -204,17 +204,50 @@ async function getDefinition(selectedText) {
// Fonction pour rechercher une définition sur le Wiktionnaire
async
function
getDefinitionWiki
(
selectedText
)
{
try
{
const
result
=
await
fetch
(
`https://fr.wiktionary.org/wiki/
${
encodeURIComponent
(
selectedText
)}
`
);
if
(
result
.
ok
)
{
console
.
log
(
`🌐 Définition trouvée pour "
${
selectedText
}
". Consultez le Wiktionnaire.`
);
}
else
{
alert
(
`❌ Aucune définition trouvée sur le Wiktionnaire pour "
${
selectedText
}
".`
);
console
.
log
(
`🌐 Recherche sur le Wiktionnaire pour '
${
selectedText
}
'...`
);
if
(
!
selectedText
||
selectedText
.
trim
()
===
""
)
{
console
.
warn
(
"
⚠️ Aucun texte sélectionné.
"
);
return
;
}
const
wiktionaryURL
=
`https://fr.wiktionary.org/w/api.php?action=query&format=json&origin=*&prop=extracts&explaintext=true&redirects=1&titles=
${
encodeURIComponent
(
selectedText
)}
`
;
const
response
=
await
fetch
(
wiktionaryURL
);
if
(
!
response
.
ok
)
{
console
.
error
(
`❌ Erreur API Wiktionnaire:
${
response
.
statusText
}
`
);
alert
(
`❌ Aucune définition trouvée pour "
${
selectedText
}
" sur le Wiktionnaire.`
);
return
;
}
const
data
=
await
response
.
json
();
if
(
!
data
.
query
||
!
data
.
query
.
pages
)
{
alert
(
`❌ Aucune définition trouvée pour "
${
selectedText
}
" sur le Wiktionnaire.`
);
return
;
}
const
pages
=
Object
.
values
(
data
.
query
.
pages
);
if
(
pages
.
length
===
0
||
!
pages
[
0
].
extract
)
{
alert
(
`❌ Aucune définition trouvée pour "
${
selectedText
}
" sur le Wiktionnaire.`
);
return
;
}
const
cleanText
=
pages
[
0
].
extract
.
trim
();
console
.
log
(
`✅ Définition trouvée :
${
cleanText
}
`
);
// Envoyer la définition au script de la barre latérale
browser
.
runtime
.
sendMessage
({
action
:
"
fetchWiktionaryDefinitionResponse
"
,
selectedText
,
definitions
:
[{
source
:
"
Wiktionnaire
"
,
text
:
cleanText
}],
});
}
catch
(
error
)
{
console
.
error
(
"
❌ Erreur lors de la recherche sur le Wiktionnaire :
"
,
error
);
}
}
// Fonction pour extraire les définitions d'une réponse API
function
extractDefinitions
(
response
)
{
if
(
!
response
||
!
response
.
attributes
||
!
response
.
attributes
.
Items
)
{
...
...
This diff is collapsed.
Click to expand it.
barre_latérale/sidebar.html
+
23
−
7
View file @
f2573a1a
...
...
@@ -103,10 +103,10 @@
background-color
:
#ccc
;
margin-right
:
10px
;
flex-shrink
:
0
;
}
}
/* Définition */
#definition
{
#definition
Container
{
margin-top
:
10px
;
background-color
:
#444
;
padding
:
10px
;
...
...
@@ -114,6 +114,14 @@
color
:
white
;
}
#definitionsList
li
{
margin-bottom
:
10px
;
}
.definition-source
{
font-weight
:
bold
;
color
:
#ffa500
;
}
/* Activer/désactiver le surlignage */
#highlighting-options
p
{
...
...
@@ -155,13 +163,21 @@
</div>
<!-- Définition affichée -->
<div
id=
"definitionContainer"
>
<h3>
Définitions
</h3>
<ul
id=
"definitionsList"
></ul>
<div
id=
"definitionContainer"
>
<h3>
Définitions
</h3>
<!-- Définitions des lexiques de l'utilisateur -->
<div
id=
"mesLexiquesContainer"
>
<h4>
📚 Mes lexiques
</h4>
<ul
id=
"mesLexiquesList"
></ul>
</div>
<div
id=
"notificationContainer"
style=
"display: none; padding: 10px; background: #ffeb3b; color: #000; border-radius: 5px;"
>
<!-- Définitions issues du Wiktionnaire -->
<div
id=
"wiktionnaireContainer"
>
<h4>
🌍 Wiktionnaire
</h4>
<ul
id=
"wiktionnaireList"
></ul>
</div>
</div>
</body>
</html>
This diff is collapsed.
Click to expand it.
barre_latérale/sidebar.js
+
52
−
61
View file @
f2573a1a
...
...
@@ -299,15 +299,12 @@ async function fetchWiktionaryDefinition(word) {
const
cleanText
=
pages
[
0
].
extract
.
trim
();
console
.
log
(
"
✅ Définition extraite :
"
,
cleanText
);
return
[
cleanText
];
}
catch
(
error
)
{
console
.
error
(
"
❌ Erreur lors de la récupération de la définition du Wiktionnaire :
"
,
error
);
return
[
"
⚠️ Aucune définition disponible.
"
];
}
// Retourner sous le format [{ source: "Wiktionnaire", text: "définition" }]
return
[{
source
:
"
Wiktionnaire
"
,
text
:
cleanText
}];
}
catch
(
error
)
{
console
.
error
(
"
❌ Erreur lors de la récupération de la définition du Wiktionnaire :
"
,
error
);
return
[];
}
}
/**
...
...
@@ -315,57 +312,56 @@ async function fetchWiktionaryDefinition(word) {
* et un bouton "Afficher la suite" si le texte est trop long.
*/
function
displayDefinitions
(
definitions
)
{
const
definitionsList
=
document
.
getElementById
(
"
definitionsList
"
);
if
(
!
definitionsList
)
{
console
.
warn
(
"
❌ Élément #definitionsList introuvable dans le DOM !
"
);
console
.
log
(
"
📖 Tentative d'affichage des définitions, données reçues :
"
,
definitions
);
if
(
!
Array
.
isArray
(
definitions
))
{
console
.
error
(
"
❌ Structure de définition incorrecte, attendu un tableau !
"
);
return
;
}
// Rendre visible si c’était caché
definitionsList
.
style
.
display
=
"
block
"
;
// Vider le c
ont
e
ne
u
r
avant d’ajouter du contenu
definitionsList
.
innerHTML
=
""
;
const
mesLexiquesList
=
document
.
getElementById
(
"
mesLexiquesList
"
);
const
wiktionnaireList
=
document
.
getElementById
(
"
wiktionnaireList
"
)
;
const
mesLexiquesC
ont
ai
ner
=
document
.
getElementById
(
"
mesLexiquesContainer
"
);
const
wiktionnaireContainer
=
document
.
getElementById
(
"
wiktionnaireContainer
"
)
;
if
(
!
definitions
||
definitions
.
length
===
0
)
{
definitionsList
.
innerHTML
=
"
<li>⚠️ Aucune définition trouvée.</li>
"
;
if
(
!
mesLexiquesList
||
!
wiktionnaireList
)
{
console
.
warn
(
"
❌ Impossible de trouver les conteneurs de définitions !
"
)
;
return
;
}
// Parcours de chaque définition
definitions
.
forEach
((
def
)
=>
{
const
li
=
document
.
createElement
(
"
li
"
);
mesLexiquesList
.
innerHTML
=
""
;
wiktionnaireList
.
innerHTML
=
""
;
let
hasLexiconDefinitions
=
false
;
let
hasWiktionaryDefinitions
=
false
;
// Tronquer à 300 caractères
let
truncated
=
def
;
const
maxLength
=
300
;
if
(
def
.
length
>
maxLength
)
{
truncated
=
def
.
slice
(
0
,
maxLength
)
+
"
...
"
;
definitions
.
forEach
(({
source
,
text
})
=>
{
if
(
!
source
||
!
text
)
{
console
.
warn
(
"
⚠️ Structure incorrecte détectée pour une définition :
"
,
{
source
,
text
});
return
;
}
const
li
=
document
.
createElement
(
"
li
"
);
li
.
textContent
=
text
;
if
(
source
===
"
Lexiques
"
)
{
mesLexiquesList
.
appendChild
(
li
);
hasLexiconDefinitions
=
true
;
}
else
if
(
source
===
"
Wiktionnaire
"
)
{
wiktionnaireList
.
appendChild
(
li
);
hasWiktionaryDefinitions
=
true
;
}
});
// Affichage brut dans un <pre> pour garder les sauts de ligne
const
pre
=
document
.
createElement
(
"
pre
"
);
pre
.
style
.
whiteSpace
=
"
pre-wrap
"
;
pre
.
textContent
=
truncated
;
mesLexiquesContainer
.
style
.
display
=
hasLexiconDefinitions
?
"
block
"
:
"
none
"
;
wiktionnaireContainer
.
style
.
display
=
hasWiktionaryDefinitions
?
"
block
"
:
"
none
"
;
li
.
appendChild
(
pre
);
console
.
log
(
`📚 Mes lexiques affichés:
${
hasLexiconDefinitions
}
`
);
console
.
log
(
`🌍 Wiktionnaire affiché:
${
hasWiktionaryDefinitions
}
`
);
}
// S’il y a un tronquage, on ajoute le bouton "Afficher la suite"
if
(
def
.
length
>
maxLength
)
{
const
readMoreBtn
=
document
.
createElement
(
"
button
"
);
readMoreBtn
.
textContent
=
"
Afficher la suite
"
;
readMoreBtn
.
addEventListener
(
"
click
"
,
()
=>
{
pre
.
textContent
=
def
;
// On remplace par la définition complète
readMoreBtn
.
remove
();
// On retire le bouton
});
// Petite séparation
li
.
appendChild
(
document
.
createElement
(
"
br
"
));
li
.
appendChild
(
readMoreBtn
);
}
definitionsList
.
appendChild
(
li
);
});
}
/**
...
...
@@ -375,13 +371,16 @@ function displayDefinitions(definitions) {
async
function
showDefinitions
(
word
)
{
console
.
log
(
`📖 Recherche des définitions pour '
${
word
}
'...`
);
// Récupère définitions du lexique
const
lexiconDefinitions
=
await
fetchLexiconDefinitions
(
word
);
// Récupère définitions des lexiques (sera vide pour l'instant)
const
lexiconDefinitions
=
[];
// À remplacer avec une vraie requête API plus tard
// Récupère définitions du Wiktionnaire
const
wiktionaryDefinitions
=
await
fetchWiktionaryDefinition
(
word
);
// Fusion des résultats et affichage
const
allDefinitions
=
[...
lexiconDefinitions
,
...
wiktionaryDefinitions
];
console
.
log
(
"
📚 Définitions combinées :
"
,
allDefinitions
);
displayDefinitions
(
allDefinitions
);
}
...
...
@@ -479,29 +478,21 @@ document.addEventListener("DOMContentLoaded", async () => {
}
console
.
log
(
"
✅ Bouton #chercherDef détecté dans le DOM.
"
);
// Forcer l'activation du bouton
chercherDefButton
.
style
.
pointerEvents
=
"
auto
"
;
chercherDefButton
.
style
.
display
=
"
block
"
;
chercherDefButton
.
style
.
visibility
=
"
visible
"
;
chercherDefButton
.
disabled
=
false
;
chercherDefButton
.
addEventListener
(
"
click
"
,
()
=>
{
const
selectedWord
=
document
.
getElementById
(
"
motSelectionne
"
)
?.
textContent
?.
trim
();
chercherDefButton
.
addEventListener
(
"
click
"
,
async
()
=>
{
const
selectedWord
=
document
.
getElementById
(
"
motSelectionne
"
)?.
textContent
?.
trim
();
console
.
log
(
"
📖 Mot sélectionné :
"
,
selectedWord
);
if
(
selectedWord
&&
selectedWord
!==
"
Aucun mot sélectionné
"
)
{
console
.
log
(
`📩 Envoi du message 'getDefinitionWiki' pour '
${
selectedWord
}
'`
);
browser
.
runtime
.
sendMessage
({
action
:
"
getDefinitionWiki
"
,
selectedText
:
selectedWord
,
});
console
.
log
(
`📩 Recherche des définitions pour '
${
selectedWord
}
'`
);
await
showDefinitions
(
selectedWord
);
}
else
{
console
.
warn
(
"
⚠️ Aucun mot sélectionné pour la recherche.
"
);
}
});
});
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment