Usuari:Forat Negre/languagetool-ca.js
Aparença
El codi que afegiu en aquesta pàgina podria tenir contingut maliciós que comprometi el vostre compte. Si no esteu segur si el codi a afegir és segur, pregunteu abans en la Taverna. El codi s'executarà en mostrar una previsualització d'aquesta pàgina. |
Nota: Després de desar, heu de netejar la memòria cau del navegador per veure els canvis. En la majoria de navegadors amb Windows o Linux, premeu Ctrl+F5 o bé premeu Shift i cliqueu el botó "Actualitza" (Ctrl i "Actualitza" amb Internet Explorer). Vegeu més informació i instruccions per a cada navegador a Viquipèdia:Neteja de la memòria cau.
//<nowiki>
/* languagetool-ca.js
--------------------------------
Versió actual: 1.1
Autor: Forat Negre
--------------------------------
Corrector ortogràfic per editors.
Si LanguageTool està activat al teu navegador, aquest codi l'utilitza
per analitzar directament el text de l'article.
>> Registre de canvis
Versió 1.0 [8 de gener 2023]
* Versió operativa que s'executa automàticament
Versió 1.1 [12 de gener 2023]
* Implementat JQuery 3.2.1
* Afegit botó "LT" a l'extrem dret del cos del text
*/
function langCheck_Article(button) {
// Obtenir l'element amb el contingut de la pàgina
var content = button.querySelector(".mw-parser-output"); if (!content) { return; } // Sortir si no hi ha text
var prevClick = button.querySelector(".ca-langcheck"); if (prevClick) { return; } // Sortir si ja s'havia aplicat la correcció
// Definir casos excepcionals (table of contents)
content.querySelectorAll(".toc ul").forEach(function(e) {
e.classList.add("ca-langdisabled");
});
// Afegir un nou parent editable als subelements de text
content.querySelectorAll("p, ul, .mw-headline").forEach(function(e) {
var validNode = true;
// Es descarten alguns casos
if (e.classList.contains("ca-langdisabled")) validNode = false;
if (e.id == ("Referències")) validNode = false;
if (e.id == ("Bibliografia")) validNode = false;
// Aplicar el canvi
if (validNode == true) {
var style = "display:inherit; resize:none; border:none; overflow:auto; outline:none;";
e.innerHTML = '<div class="ca-langcheck" contenteditable="true" style="' + style + '">' + e.innerHTML + '</div>';
}
});
// Iteració asincrònica a cada paràgraf
var checkers = document.querySelectorAll(".ca-langcheck");
var i = 0, j = 0, k = 0; for (i; i < checkers.length; i++) {
setTimeout(function(){
// Clicar automàticament cada parent per activar-ne el langtool
checkers[j].focus({ preventScroll: true }); j++;
}, i * 1000);
setTimeout(function(){
// Fer els parents no editables de nou per tornar a activar els enllaços
checkers[k].setAttribute("contenteditable", "false"); k++;
}, (i + 1) * 1000);
}
}
// Afegir un botó als llocs necessaris que en clicar-lo activa la correcció
$(function() {
var content = document.querySelector('.mw-body-content'); if (!content) return;
var lt_button = document.createElement("div");
$(lt_button).addClass("lt_button");
lt_button.onclick = function(button) { langCheck_Article(button.path[1]) };
content.insertBefore(lt_button, content.firstChild);
/* Definir CSS personalitzat */
var css = '.lt_button {' +
' position: absolute;' +
' right: 0;' +
' top: 0;' +
' font-family: serif;' +
' font-weight: 800;' +
' cursor: pointer;' +
' background: url("https://upload.wikimedia.org/wikipedia/commons/thumb/4/45/LanguageTool_Logo.svg/140px-LanguageTool_Logo.svg.png");' +
' background-size: 36px;' +
' width: 36px;' +
' height: 36px;' +
' text-align: center;' +
'}' +
'.lt_button:hover {' +
' filter: hue-rotate(45deg);' +
'}';
/* Importar el CSS a la pàgina actual */
var head = document.head || document.getElementsByTagName('head')[0], style = document.createElement('style');
style.type = 'text/css';
style.appendChild(document.createTextNode(css));
head.appendChild(style);
});
//</nowiki>