מדיה ויקי:Gadget-FlowDeluxeLocal.js
הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
/*
Created by User:FlowDeluxe from frwiki and localized here.
Code à inclure dans le common.js depuis wikipédia.fr
obtenir('FlowDeluxe');
Depuis un autre wiki
mw.loader.load("https://fr.wikipedia.org/w/index.php?title=MediaWiki:Gadget-FlowDeluxe.js&action=raw&ctype=text/javascript");
Documentation complète : https://www.mediawiki.org/wiki/Help:Structured_Discussions/FlowDeluxe/fr
//Options Flow Deluxe à inclure également :
flowDeluxeBoutonsResumes = true; //Barre d'insertion rapide de modèles de résumé
flowDeluxeIndentationColors = true; //Indentation colorée comme dans l'ancien système de discussions
flowDeluxeButtonsInline = true; //Bouttons, historique, liens du sujet en une seule ligne
*/
/* local values */
var flowDeluxeBoutonsResumesLocal = true;
var flowDeluxeIndentationColorsLocal = true;
var flowDeluxeButtonsInlineLocal = true;
var flowDeluxeBoutonsResumes = typeof window.flowDeluxeBoutonsResumes !== 'undefined' ?
window.flowDeluxeBoutonsResumes : flowDeluxeBoutonsResumesLocal;
var flowDeluxeIndentationColors = typeof window.flowDeluxeIndentationColors !== 'undefined' ?
window.flowDeluxeIndentationColors : flowDeluxeIndentationColorsLocal;
var flowDeluxeButtonsInline = typeof window.flowDeluxeButtonsInline !== 'undefined' ?
window.flowDeluxeButtonsInline : flowDeluxeButtonsInlineLocal;
var resumesPredefinis = [{
libelle:'Répondu',
modele:'Répondu'
},{
libelle:'Lu',
modele:'Lu'
},{
libelle:'Fait',
modele:'Fait.'
},{
libelle:'Ok',
modele:'Ok'
},{
libelle:'En attente réponse',
modele:'En attente d\'une réponse'
},{
libelle:'Publication',
modele:'Publication'
},{
libelle:'FDN autre avis',
modele:'Forum des nouveaux autre avis'
},{
libelle:'FDN hors-sujet',
modele:'Forum des nouveaux hors-sujet'
},{
libelle:'FDN en attente',
modele:'Forum des nouveaux en attente'
},{
libelle:'FDN en cours',
modele:'Forum des nouveaux en cours'
}
];
function ajouterResume(texte,parent){
var zones = parent.getElementsByTagName("textarea");
if(zones.length) {
if (zones[0]) {
zones[0].value += "{{"+texte+"}}";
}
} else {
insertContent([{
type: 'mwTransclusionBlock',
attributes: {
mw: {
parts: [
{
template: {
target: {
href: wgFormattedNamespaces[10] + ':' + texte,
wt: texte
},
params: { }
}
}
]
}
}
}]);
}
}
function lienBar(resume,parent) {
var li = document.createElement('li');
var a = document.createElement('a');
a.innerHTML = resume.libelle;
a.setAttribute("title", "Ajouter ce modèle au résumé de la discussion");
a.style.cursor = "pointer";
a.addEventListener("click", function(event) {
ajouterResume(resume.modele,parent);
});
li.appendChild(a);
return li;
}
function addBoutonsResumes() {
var resumes = document.getElementsByClassName('flow-ui-editTopicSummaryWidget');
for(var i=0, len=resumes.length; i<len; i++) {
var element = resumes[i];
if(element.firstChild && element.firstChild.className != 'FlowDeluxeResume') {
var bouttonBar = document.createElement('div');
bouttonBar.innerHTML = "Résumés prédéfinis :";
bouttonBar.className = "FlowDeluxeResume";
var ul = document.createElement('ul');
ul.className = 'liste-horizontale';
ul.style.display = 'inline';
ul.style.marginLeft = '3px';
for(var index in resumesPredefinis) {
var li = lienBar(resumesPredefinis[index],element);
ul.appendChild(li);
}
bouttonBar.appendChild(ul);
element.insertBefore(bouttonBar, element.firstChild);
}
}
}
function insertContent (content, annotate) {
var offset, newRange, range = {
start : 0
};
var surfaceModel = ve.init.target.getSurface().getModel();
var collapse = surfaceModel.getFragment().collapseToEnd();
var doc = collapse.getDocument();
offset = range.start;
if (content.length) {
tx = ve.dm.Transaction.newFromInsertion(doc, offset, content);
newRange = tx.getModifiedRange();
collapse.change(tx, newRange ? new ve.dm.LinearSelection(doc,newRange) : new ve.dm.NullSelection(doc));
}
return this;
}
function switchColor(color) {
if (color == '#e8f4ff')
return 'white';
else
return '#e8f4ff';
}
function indentPostWithColors() {
var posts = document.getElementsByClassName('flow-post-main');
var element;
var color;
for(var i=0, len=posts.length; i<len; i++) {
element = posts[[i]];
color = switchColor(color);
element.style.backgroundColor = color;
//element.style.padding = "5px";
}
}
function buttonsInline() {
var elements = document.getElementsByClassName('flow-list');
for(var i=0, len=elements.length; i<len-1; i++) {
if(elements[i].className.indexOf("moved-flow-list") < 0 &&
elements[i].innerHTML.indexOf("flow-ui-summarize-topic-link") > 0 ) {
var parentItem = elements[i].parentElement;
var grandParentItem = elements[i].parentElement.parentElement;
grandParentItem.insertBefore(elements[i],null);
elements[i].className = elements[i].className + " moved-flow-list";
elements[i].style.fontSize= "13px";
var sections = elements[i].getElementsByTagName( "section" );
for(var j=0; j<sections.length; j++) {
sections[j].style.display="inline";
}
var li = elements[i].getElementsByTagName( "li" );
for(j=0; j<li.length; j++) {
li[j].style.display="inline";
li[j].getElementsByTagName("a")[0].style.paddingLeft="10px";
li[j].getElementsByTagName("a")[0].style.paddingRight="0";
}
parentItem.remove();
}
}
}
function applyChanges() {
var usersDiscuterContribs = document.getElementsByClassName('mw-usertoollinks');
var datesSujets = document.getElementsByClassName('flow-timestamp');
if(flowDeluxeIndentationColors)
indentPostWithColors();
if(flowDeluxeButtonsInline)
buttonsInline();
setTimeout(applyChanges,2000); /* rappel toutes les 2 secondes (TODO: voir si on ne peut pas mieux gérer le cas du chargement des sujets les plus anciens)*/
}
/*
* Activation du gadget
*/
if (document.getElementsByClassName('flow-component').length) {
applyChanges();
}