Overview
| Comment: | [fx] WebExt: remove wrapper around textareas, add button and menu |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk | fx |
| Files: | files | file ages | folders |
| SHA3-256: |
3cd8dde332fb086db06ee3a453d2b498 |
| User & Date: | olr on 2017-09-06 17:40:22 |
| Other Links: | manifest | tags |
Context
|
2017-09-06
| ||
| 19:15 | [fx] WebExt: help update check-in: aa0b62f525 user: olr tags: trunk, fx | |
| 17:40 | [fx] WebExt: remove wrapper around textareas, add button and menu check-in: 3cd8dde332 user: olr tags: trunk, fx | |
| 09:10 | [fx] WebExt: run content scripts at document_end (before the page finishes to load all external resources) check-in: 24c1fb45bc user: olr tags: trunk, fx | |
Changes
Modified gc_lang/fr/webext/content_scripts/init.js from [79f4d2add2] to [ccdc2aeb0d].
| ︙ | ︙ | |||
41 42 43 44 45 46 47 |
oElem.appendChild(img);
});
}
*/
const oGrammalecte = {
| | | | | | | 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
oElem.appendChild(img);
});
}
*/
const oGrammalecte = {
nMenu: 0,
lMenu: [],
oTFPanel: null,
oLxgPanel: null,
oGCPanel: null,
createMenus: function () {
let lNode = document.getElementsByTagName("textarea");
for (let xNode of lNode) {
this.lMenu.push(new GrammalecteMenu(this.nMenu, xNode));
this.nMenu += 1;
}
},
createTFPanel: function () {
if (this.oTFPanel === null) {
this.oTFPanel = new GrammalecteTextFormatter("grammalecte_tf_panel", "Formateur de texte", 800, 620, false);
//this.oTFPanel.logInnerHTML();
|
| ︙ | ︙ | |||
130 131 132 133 134 135 136 |
}
});
/*
Start
*/
| | | 130 131 132 133 134 135 136 137 |
}
});
/*
Start
*/
oGrammalecte.createMenus();
|
Added gc_lang/fr/webext/content_scripts/menu.css version [6770b05fc9].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
/*
CSS
Menu for Grammalecte
*/
.grammalecte_menu_main_button {
position: absolute;
margin: -17px 0 0 -16px;
border-radius: 16px;
background-color: hsla(210, 50%, 50%, .5);
background-image: url('data:image/png;base64,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');
background-repeat: no-repeat;
width: 32px;
height: 32px;
cursor: pointer;
z-index: 100000000;
}
.grammalecte_menu {
display: none;
position: absolute;
margin-left: -10px;
border-radius: 5px;
border: 3px solid hsl(210, 50%, 30%);
box-shadow: 0px 0px 2px hsla(210, 10%, 10%, .5);
font-family: "Trebuchet MS", "Liberation Sans", sans-serif;
}
.grammalecte_menu_item {
padding: 3px 10px;
background-color: hsl(210, 50%, 50%);
font-size: 14px;
color: hsl(210, 50%, 92%);
cursor: pointer;
}
.grammalecte_menu_item:hover {
background-color: hsl(210, 60%, 60%);
color: hsl(210, 60%, 100%);
}
.grammalecte_menu_item_block {
padding: 3px 10px;
background-color: hsl(210, 50%, 50%);
font-size: 14px;
color: hsl(210, 50%, 92%);
border-top: 1px solid hsl(210, 50%, 30%);;
}
.grammalecte_menu_button {
display: inline-block;
padding: 0 5px;
margin-left: 10px;
border-radius: 2px;
background-color: hsl(210, 50%, 55%);
font-size: 12px;
line-height: 1.6;
text-align: center;
cursor: pointer;
}
.grammalecte_menu_button:hover {
background-color: hsl(210, 60%, 60%);
}
.grammalecte_menu_header {
padding: 2px 10px;
background-color: hsl(210, 50%, 30%);
font-size: 12px;
font-variant-caps: small-caps;
color: hsl(210, 50%, 90%);
text-shadow: 0px 0px 2px hsla(210, 10%, 10%, .9);
text-align: center;
}
|
Added gc_lang/fr/webext/content_scripts/menu.js version [de706e9682].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
// JavaScript
"use strict";
class GrammalecteMenu {
constructor (nMenu, xTextArea) {
this.sMenuId = "grammalecte_menu" + nMenu;
let xButton = createNode("div", {className: "grammalecte_menu_main_button"});
xButton.onclick = () => { this.switchMenu(); };
let xMenu = this._createMenu(xTextArea);
this._insertAfter(xButton, xTextArea);
this._insertAfter(xMenu, xTextArea);
}
_insertAfter (xNewNode, xReferenceNode) {
xReferenceNode.parentNode.insertBefore(xNewNode, xReferenceNode.nextSibling);
}
_createMenu (xTextArea) {
try {
let xMenu = createNode("div", {id: this.sMenuId, className: "grammalecte_menu"});
// Text formatter
let xTFButton = createNode("div", {className: "grammalecte_menu_item", textContent: "Formateur de texte"});
xTFButton.onclick = () => {
this.switchMenu();
oGrammalecte.createTFPanel();
oGrammalecte.oTFPanel.start(xTextArea);
oGrammalecte.oTFPanel.show();
};
// lexicographe
let xLxgButton = createNode("div", {className: "grammalecte_menu_item", textContent: "Lexicographe"});
xLxgButton.onclick = () => {
this.switchMenu();
oGrammalecte.createLxgPanel();
oGrammalecte.oLxgPanel.clear();
oGrammalecte.oLxgPanel.show();
oGrammalecte.oLxgPanel.startWaitIcon();
xGrammalectePort.postMessage({
sCommand: "getListOfTokens",
dParam: {sText: xTextArea.value},
dInfo: {sTextAreaId: xTextArea.id}
});
};
// Grammar checker
let xGCButton = createNode("div", {className: "grammalecte_menu_item", textContent: "Correction grammaticale"});
xGCButton.onclick = () => {
this.switchMenu();
oGrammalecte.createGCPanel();
oGrammalecte.oGCPanel.start(xTextArea);
oGrammalecte.oGCPanel.show();
oGrammalecte.oGCPanel.startWaitIcon();
xGrammalectePort.postMessage({
sCommand: "parseAndSpellcheck",
dParam: {sText: xTextArea.value, sCountry: "FR", bDebug: false, bContext: false},
dInfo: {sTextAreaId: xTextArea.id}
});
};
// Conjugation tool
let xConjButton = createNode("div", {className: "grammalecte_menu_item_block", textContent: "Conjugueur"});
let xConjButtonTab = createNode("div", {className: "grammalecte_menu_button", textContent: "Onglet"});
xConjButtonTab.onclick = () => {
this.switchMenu();
xGrammalectePort.postMessage({sCommand: "openConjugueurTab", dParam: null, dInfo: null});
};
let xConjButtonWin = createNode("div", {className: "grammalecte_menu_button", textContent: "Fenêtre"});
xConjButtonWin.onclick = () => {
this.switchMenu();
xGrammalectePort.postMessage({sCommand: "openConjugueurWindow", dParam: null, dInfo: null});
};
xConjButton.appendChild(xConjButtonTab);
xConjButton.appendChild(xConjButtonWin);
// Create
xMenu.appendChild(createNode("div", {className: "grammalecte_menu_header", textContent: "Grammalecte"}));
xMenu.appendChild(xTFButton);
xMenu.appendChild(xLxgButton);
xMenu.appendChild(xGCButton);
xMenu.appendChild(xConjButton);
//xMenu.appendChild(createNode("img", {scr: browser.extension.getURL("img/logo-16.png")}));
// can’t work, due to content-script policy: https://bugzilla.mozilla.org/show_bug.cgi?id=1267027
xMenu.appendChild(createNode("div", {className: "grammalecte_menu_header"}));
return xMenu;
}
catch (e) {
showError(e);
}
}
switchMenu () {
let xMenu = document.getElementById(this.sMenuId);
xMenu.style.display = (xMenu.style.display == "block") ? "none" : "block";
}
}
|
Deleted gc_lang/fr/webext/content_scripts/wrapper.css version [bbf425edb7].
|
| < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < |
Deleted gc_lang/fr/webext/content_scripts/wrapper.js version [41723fc48c].
|
| < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < |
Modified gc_lang/fr/webext/manifest.json from [f6f86f5cfc] to [33a68fe1cd].
| ︙ | ︙ | |||
40 41 42 43 44 45 46 |
{
"matches": ["<all_urls>"],
"css": [
"content_scripts/panel.css",
"content_scripts/panel_tf.css",
"content_scripts/panel_gc.css",
"content_scripts/panel_lxg.css",
| | | | 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
{
"matches": ["<all_urls>"],
"css": [
"content_scripts/panel.css",
"content_scripts/panel_tf.css",
"content_scripts/panel_gc.css",
"content_scripts/panel_lxg.css",
"content_scripts/menu.css",
"3rd/font-awesome-4.7.0/css/font-awesome.min.css"
],
"js": [
"content_scripts/panel.js",
"grammalecte/fr/textformatter.js",
"content_scripts/panel_tf.js",
"content_scripts/panel_gc.js",
"content_scripts/panel_lxg.js",
"content_scripts/menu.js",
"content_scripts/init.js"
],
"run_at": "document_end"
}
],
"commands": {
"conjugueur_tab": {
|
| ︙ | ︙ |