Changes In Branch FixWebext Through [625b15ea09] Excluding Merge-Ins
This is equivalent to a diff from a6d823b2a6 to 625b15ea09
2017-10-28
| ||
07:06 | [build][fr] revert string format for Python check-in: 47b9222f8a user: olr tags: fr, build, FixWebext | |
06:57 | [fx] fix menu button size check-in: 625b15ea09 user: olr tags: fx, FixWebext | |
01:16 | Permet de pouvoir utiliser Grammalecte sur twitter check-in: 686fe8194d user: IllusionPerdu tags: fx, FixWebext | |
00:16 | Ajout de MutationObserver, ajout dans le css et isolation du xNode du menu (tester uniquement sur Chrome check-in: c422898599 user: IllusionPerdu tags: fx, FixWebext | |
2017-10-27
| ||
21:46 | [fr] phonet_simil: handicap/handicape check-in: 00a95e2427 user: olr tags: trunk, fr | |
20:41 | [fx] use a debug profile for Firefox check-in: a6d823b2a6 user: olr tags: trunk, fx | |
19:32 | [fx][bug] retrieving text content from node check-in: e1ac68ef1a user: olr tags: trunk, fx | |
Modified gc_lang/fr/build.py from [e6bfac7235] to [b7f960ec85].
︙ | ︙ | |||
26 27 28 29 30 31 32 | os.system("web-ext build") def _createOptionsForWebExtension (dVars): sHTML = "" sLang = dVars['sDefaultUILang'] for sSection, lOpt in dVars['lStructOpt']: | | | | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | os.system("web-ext build") def _createOptionsForWebExtension (dVars): sHTML = "" sLang = dVars['sDefaultUILang'] for sSection, lOpt in dVars['lStructOpt']: sHTML += '\n<div id="subsection_{sSection}" class="opt_subsection">\n <h2 data-l10n-id="option_{sSection}">{dVars["dOptLabel"][sLang][sSection][0]}</h2>\n' for lLineOpt in lOpt: for sOpt in lLineOpt: sHTML += ' <p><input type="checkbox" id="option_{sOpt}" class="gc_option" data-option="{sOpt}"/><label id="option_label_{sOpt}" for="option_{sOpt}" data-l10n-id="option_{sOpt}">{dVars["dOptLabel"][sLang][sOpt][0]}</label></p>\n' sHTML += '</div>\n' return sHTML def createFirefoxExtension (sLang, dVars): "create extension for Firefox" print("Building extension for Firefox") |
︙ | ︙ |
Modified gc_lang/fr/webext/content_scripts/init.js from [08d2b10057] to [b8d0b75897].
︙ | ︙ | |||
294 295 296 297 298 299 300 | /* Start */ oGrammalecte.listenRightClick(); oGrammalecte.createMenus(); | > > > > > > > > > > > > > > > > > > > > > > > > > | 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 | /* Start */ oGrammalecte.listenRightClick(); oGrammalecte.createMenus(); /* When a textarea is added via jascript we add the menu :) */ let observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { for(let i = 0; i < mutation.addedNodes.length; i++){ if ( mutation.addedNodes[i].getElementsByTagName ){ if ( mutation.addedNodes[i].tagName == "TEXTAREA" ) { oGrammalecte.lMenu.push(new GrammalecteMenu(oGrammalecte.nMenu, mutation.addedNodes[i])); oGrammalecte.nMenu += 1; } else { for (let xNode of mutation.addedNodes[i].getElementsByTagName("textarea")) { oGrammalecte.lMenu.push(new GrammalecteMenu(oGrammalecte.nMenu, xNode)); oGrammalecte.nMenu += 1; } } } } }); }); observer.observe(document.body, { childList: true, subtree: true }); |
Modified gc_lang/fr/webext/content_scripts/menu.css from [2b784470a7] to [f923dd2e95].
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /* CSS Button and menu for Grammalecte */ /* Button */ .grammalecte_menu_main_button { position: absolute; display: none; margin: -8px 0 0 -8px; width: 8px; height: 8px; background-color: hsla(210, 80%, 80%, .5); border: 4px solid hsla(210, 80%, 60%, .5); border-top: 4px solid hsla(210, 100%, 40%, .7); | > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | /* CSS Button and menu for Grammalecte */ /* Button */ .grammalecte_menu_main_button { position: absolute; box-sizing: border-box; display: none; margin: -8px 0 0 -8px; width: 8px; height: 8px; background-color: hsla(210, 80%, 80%, .5); border: 4px solid hsla(210, 80%, 60%, .5); border-top: 4px solid hsla(210, 100%, 40%, .7); |
︙ | ︙ | |||
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 | margin-left: -10px; border-radius: 5px; border: 3px solid hsl(210, 50%, 30%); box-shadow: 0px 0px 2px hsla(210, 10%, 10%, .5); background-color: hsl(210, 50%, 30%); font-family: "Trebuchet MS", "Fira Sans", "Liberation Sans", sans-serif; z-index: 2147483640; /* maximum is 2147483647: https://stackoverflow.com/questions/491052/minimum-and-maximum-value-of-z-index */ } .grammalecte_menu_close_button { float: right; margin: 2px 2px 0 0; padding: 1px 5px; border-radius: 2px; background-color: hsl(0, 50%, 50%); color: hsl(0, 20%, 90%); font-size: 12px; font-weight: bold; cursor: pointer; } .grammalecte_menu_close_button:hover { background-color: hsl(0, 60%, 50%); color: hsl(0, 30%, 96%); } .grammalecte_menu_item { | > > > | 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 | margin-left: -10px; border-radius: 5px; border: 3px solid hsl(210, 50%, 30%); box-shadow: 0px 0px 2px hsla(210, 10%, 10%, .5); background-color: hsl(210, 50%, 30%); font-family: "Trebuchet MS", "Fira Sans", "Liberation Sans", sans-serif; z-index: 2147483640; /* maximum is 2147483647: https://stackoverflow.com/questions/491052/minimum-and-maximum-value-of-z-index */ text-align: left; line-height: 21px; } .grammalecte_menu_close_button { float: right; margin: 2px 2px 0 0; padding: 1px 5px; border-radius: 2px; background-color: hsl(0, 50%, 50%); color: hsl(0, 20%, 90%); font-size: 12px; font-weight: bold; cursor: pointer; height: 20px; } .grammalecte_menu_close_button:hover { background-color: hsl(0, 60%, 50%); color: hsl(0, 30%, 96%); } .grammalecte_menu_item { |
︙ | ︙ |
Modified gc_lang/fr/webext/content_scripts/menu.js from [2428c12fef] to [0a15c1c9ea].
1 2 3 4 5 6 7 8 9 10 11 12 | // JavaScript "use strict"; class GrammalecteMenu { constructor (nMenu, xNode) { this.sMenuId = "grammalecte_menu" + nMenu; this.xButton = oGrammalecte.createNode("div", {className: "grammalecte_menu_main_button", textContent: " "}); this.xButton.onclick = () => { this.switchMenu(); }; this.xButton.style.zIndex = (xNode.style.zIndex.search(/^[0-9]+$/) !== -1) ? (parseInt(xNode.style.zIndex) + 1).toString() : xNode.style.zIndex; | > | > > > > > > > > > | > > | > > | | | | > > > > | | | < | | < | | | | 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 95 | // JavaScript "use strict"; class GrammalecteMenu { constructor (nMenu, xNode) { this.xNode = xNode; this.sMenuId = "grammalecte_menu" + nMenu; this.xButton = oGrammalecte.createNode("div", {className: "grammalecte_menu_main_button", textContent: " "}); this.xButton.onclick = () => { this.switchMenu(); }; this.xButton.style.zIndex = (xNode.style.zIndex.search(/^[0-9]+$/) !== -1) ? (parseInt(xNode.style.zIndex) + 1).toString() : xNode.style.zIndex; this.xMenu = this._createMenu(); let style = window.getComputedStyle(this.xNode); let topMargin = -1 * (8 + parseInt(style.marginBottom.replace('px', ''), 10)); let insAfterThis = this.xNode; if ( document.location.host == "twitter.com" && this.xNode.classList.contains('rich-editor')){ insAfterThis = this.xNode.parentNode; } this._insertAfter(this.xButton, insAfterThis); this.xButton.style.marginTop = topMargin + 'px'; this._insertAfter(this.xMenu, insAfterThis); this.xMenu.style.marginTop = (topMargin + 8) + 'px'; this._createListenersOnReferenceNode(); } _insertAfter (xNewNode, xReferenceNode) { xReferenceNode.parentNode.insertBefore(xNewNode, xReferenceNode.nextSibling); } _createListenersOnReferenceNode () { this.xNode.addEventListener('focus', (e) => { this.xButton.style.display = "block"; }); this.xNode.addEventListener('blur', (e) => { window.setTimeout(() => {this.xButton.style.display = "none";}, 300); }); } _getText () { return (this.xNode.tagName == "TEXTAREA") ? this.xNode.value : this.xNode.innerText; } _createMenu () { try { let xMenu = oGrammalecte.createNode("div", {id: this.sMenuId, className: "grammalecte_menu"}); let xCloseButton = oGrammalecte.createNode("div", {className: "grammalecte_menu_close_button", textContent: "×"} ); xCloseButton.onclick = () => { this.switchMenu(); } xMenu.appendChild(xCloseButton); xMenu.appendChild(oGrammalecte.createNode("div", {className: "grammalecte_menu_header", textContent: "GRAMMALECTE"})); // Text formatter if (this.xNode.tagName == "TEXTAREA") { let xTFButton = oGrammalecte.createNode("div", {className: "grammalecte_menu_item", textContent: "Formateur de texte"}); xTFButton.onclick = () => { this.switchMenu(); oGrammalecte.createTFPanel(); oGrammalecte.oTFPanel.start(this.xNode); oGrammalecte.oTFPanel.show(); }; xMenu.appendChild(xTFButton); } // lexicographe let xLxgButton = oGrammalecte.createNode("div", {className: "grammalecte_menu_item", textContent: "Lexicographe"}); xLxgButton.onclick = () => { this.switchMenu(); oGrammalecte.startLxgPanel(); xGrammalectePort.postMessage({ sCommand: "getListOfTokens", dParam: {sText: this._getText()}, dInfo: {sTextAreaId: this.xNode.id} }); }; xMenu.appendChild(xLxgButton); // Grammar checker let xGCButton = oGrammalecte.createNode("div", {className: "grammalecte_menu_item", textContent: "Correction grammaticale"}); xGCButton.onclick = () => { this.switchMenu(); oGrammalecte.startGCPanel(this.xNode); xGrammalectePort.postMessage({ sCommand: "parseAndSpellcheck", dParam: {sText: this._getText(), sCountry: "FR", bDebug: false, bContext: false}, dInfo: {sTextAreaId: this.xNode.id} }); }; xMenu.appendChild(xGCButton); // Conjugation tool let xConjButton = oGrammalecte.createNode("div", {className: "grammalecte_menu_item_block", textContent: "Conjugueur"}); let xConjButtonTab = oGrammalecte.createNode("div", {className: "grammalecte_menu_button", textContent: "Onglet"}); xConjButtonTab.onclick = () => { |
︙ | ︙ |