Utilisateur:Gdgourou/monobook.js

Une page de Wikipédia, l'encyclopédie libre.
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
importScript('Utilisateur:Plyd/monobook.js');
importScript('User:Alphos/historyselect.js');

importScript('Utilisateur:Gdgourou/articles manquants.js');
importScript('Utilisateur:Gdgourou/verification evaluation.js');
importScript('Utilisateur:Gdgourou/maintenance categorie.js');


/* Lien Editcount */
var tabAction = "p-cactions";

//afficher l'éditcount pour le gadget du même nom
window.addContribLinkNearTalkPageInContributions_editcount = true;

function addECButton()
       {
        if ( window.location.href.indexOf('Contributions') < 0) return;
        var c = document.getElementById('contentSub');
        var a = c.getElementsByTagName('a');
        if(!a[0]) return;
        name = a[0].innerHTML;
        name0 = name.replace(' ','_');
        name1 = name0.replace(' ','_');
        var l = document.getElementById(tabAction);
        if(!l) return;
        t = l.innerHTML;
        ind = t.toLowerCase().indexOf("</ul>");
        before = t.substring(0,ind);
        after = t.substring(ind); 
        pitem = "<li><a href='http://tools.wikimedia.de/~interiot/cgi-bin/count_edits?user="+name1+"&dbname=frwiki_p'>"+
                "<div id='EditCount' style='display:inline;'>" + 
                "Editcount"  + 
                "</div></a></li>";
        l.innerHTML = before + pitem + after ;           
      }

function PaletteOutils() 
{
  var a = document.getElementById("p-tb");
  if (a) 
  {
    b = a.getElementsByTagName("ul");
    if(b.length > 0)
    {
      b[0].innerHTML = b[0].innerHTML
      + '<li><span id="n-bistro" title="http://commons.wikimedia.org/wiki/Special:Upload">'
      + '<a href="http://commons.wikimedia.org/wiki/Special:Upload">'
      + 'Importer une image ou un son sur Commons</a></span> </li>'
    }
  }
}
function UndeleteSelectAll()
{
        if (window.location.href.indexOf("Special:Undelete") > 0)
        {
                var title2 = document.getElementsByTagName("h2")
                if (title2.length <= 0)
                        return
                var all = document.createElement("input")
                all.setAttribute("type", "checkbox")
                all.setAttribute("id", "checkAll")
                if (all.attachEvent)
                        all.attachEvent("onclick", function () { selectAll(document.getElementById("checkAll").checked) })
                else
                        all.setAttribute("onclick", "javascript: selectAll(this.checked)")
                all.setAttribute("title", "Sélectionner/Désélectionner tous")
                title2[title2.length -1].appendChild(all)
                all.click()
        }
}

function selectAll(bool)
{
        var inputs = document.getElementsByTagName("input")
        for (var cpt = 0 ; cpt < inputs.length ; cpt++)
        {
                if (inputs[cpt].type == "checkbox")
                        inputs[cpt].checked = bool
        }
}

/**
* Metadata assessment script
* Finds the WP 1.0/WikiProject assessment of every article you go to, then 
* displays that information in the article header.
* @author Outriggr - created the script and used to maintain it
* @author Pyrospirit - currently maintains and updates the script
*/
 
// Import stylesheet with custom classes for header colors
importStylesheet('User:Gdgourou/metadata.css');
 
/**
* This is the constructor for the script object. All functions this script 
* defines are inside this.
* @constructor
*/
MetadataScript = function () {};
MetadataScript.createObject = true; // create an instance of MetadataScript
MetadataScript.autorun = true; // run automatically when the page finishes loading
 
/**
* Starts the script object running. The main function of the script. If the 
* getMainType() function can find the assessment, it uses that assessment 
* for the page, parses it, and displays it in the header. Otherwise, it runs 
* ajaxMain().
*/
MetadataScript.prototype.init = function () {
this.initBefore();
var initialAssessment = this.checkArticle(); // checks for types visible from article page
if ( initialAssessment ) {
this.assessment = initialAssessment;
var data = this.talkAssess(this.assessment);
this.update(data.newClass, data.slogan);
}
else this.ajaxMain(); // proceed to check the talk page
this.initAfter();
};
MetadataScript.prototype.initBefore = function () {};
MetadataScript.prototype.initAfter = function () {};
 
/**
* The main function when an AJAX request is needed to find the assessment. 
* Creates an AJAX request for the contents of a URL (defaults to the 
* first section of the article's talk page), then sends the request. After 
* getting the requested data back, it finds the assessment information in 
* the data, then uses and displays that assessment in the header.
* @param {String} arguments[0] - Optional: override the default URL for the 
*        request.
*/
MetadataScript.prototype.ajaxMain = function () {
if ( arguments[0] && arguments[0].match(/^https?:\/\//i) ) // optional url override
this.url = arguments[0];
else this.url = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=Discuter:' + encodeURIComponent(mw.config.get('wgPageName'))
+ '&action=raw&section=0';
this.request = sajax_init_object();
if ( this.request ) {
var self = this; // store value of 'this'
this.request.onreadystatechange = function () {
self.stateChangeFunction.call(self);
}
this.request.open('GET', this.url, true);
this.request.send(null);
}
};
 
/**
* This function is passed as a parameter to ajaxMain. It is called each time 
* this.request updates, and the code inside the conditional runs when the 
* data is available.
*/
MetadataScript.prototype.stateChangeFunction = function () {
if ( this.request.readyState == 4 && this.request.status == 200 ) {
this.text = this.request.responseText;
this.assessment = this.getRating(this.text);
var data = this.talkAssess(this.assessment);
this.update(data.newClass, data.slogan);
this.onCompletedRequest();
}
};
MetadataScript.prototype.onCompletedRequest = function () {};
 
/**
* Checks for various objects on the article page that indicate a certain 
* assessment, such as a featured star or disambiguation page notice. If this 
* function can find the assessment, AJAX is not needed for this page.
* @return {Object} assess - the assessment in an easily readable format
* @static
*/
MetadataScript.prototype.checkArticle = function () {
var assess = '';
if ( document.getElementById('homonymie') )
assess = 'homonymie';
else if ( document.getElementById('contentSub').innerHTML == 'Page de redirection' )
assess = 'redir';
else if ( document.getElementById('ca-talk').className == 'new' ) // no talk page
assess = 'none';
return assess;
};
 
/**
* Searches the provided wikicode for the rating part of an assessment and 
* returns it as a string.
* Note that a higher assessment takes priority, and less-used assessments 
* such as "list", "current", or "future" are used only if nothing else can 
* be found.
* @param {String} text - some wikitext to be searched for assessment info
* @return {String} rating - the article's current assessment
*/
MetadataScript.prototype.getRating = function (text) {
this.getRatingBefore();
var rating = 'none';
if ( text.match(/\|\s*avancement\s*=\s*adq\b/i) )
rating = 'adq';
else if ( text.match(/\|\s*avancement\s*=\s*a\b/i) ) {
if ( text.match(/\|\s*avancement\s*=\s*ba\b/i) )
rating = 'a/ba'; // A-class articles that are also GA's
else rating = 'a';
}
else if ( text.match(/\|\s*avancement\s*=\s*ba\b/i) )
rating = 'ba';
else if ( text.match(/\|\s*avancement\s*=\s*b\b/i) )
rating = 'b';
else if ( text.match(/\|\s*avancement\s*=\s*bd/i) )
rating = 'bd';
else if ( text.match(/\|\s*avancement\s*=\s*ébauche/i) )
rating = 'ébauche';
this.getRatingAfter();
return rating;
}
MetadataScript.prototype.getRatingBefore = function () {};
MetadataScript.prototype.getRatingAfter = function () {};
 
/**
* Parses an assessment object into the HTML and CSS code needed to update 
* the article header. If it doesn't recognize a part of the information 
* given, it will simply ignore it and mark as unassessed.
* @param {Object} assess - assessment information for this article
* @return {String} newClass - the CSS class corresponding to its assessment
* @return {String} slogan - HTML giving (with a link) the main assessment
* @return {String} info - HTML giving (with a link) additional information
*/
MetadataScript.prototype.talkAssess = function (assess) {
this.talkAssessBefore();
 
var path = mw.config.get('wgArticlePath').replace('$1', '');
var assessLink = path + 'Projet:Wikipédia_1.0/avancement';
var rating = assess.toLowerCase();
 
if ( rating == 'a' || rating == 'a/ba' ) {
newClass = 'assess-A-text';
slogan = 'Un <a href="' + assessLink + '">article d\'avancement A</a> de Wikipédia, l\'encyclopédie libre.';
if ( rating == 'a/ba' ) {
slogan += ' Aussi un <a href="' + path + 'Wikipédia:Bons_articles">bon article</a>.'
}
} else if ( rating == 'ba' ) {
newClass = 'assess-GA-text';
slogan = 'Un <a href="' + path + 'Wikipédia:Bons_articles">bon article</a> de Wikipédia, l\'encyclopédie libre.'
} else if ( rating == 'b' ) {
newClass = 'assess-B-text';
slogan = 'Un <a href="' + assessLink + '">article d\'avancement B</a> de Wikipédia, l\'encyclopédie libre.';
} else if ( rating == 'bd' ) {
newClass = 'assess-Start-text';
slogan = 'Un <a href="' + assessLink + '">bon début</a> de Wikipédia, l\'encyclopédie libre.';
} else if ( rating == 'ébauche' ) {
newClass = 'assess-Stub-text';
slogan = 'Une <a href="' + assessLink + '">ébauche</a> de Wikipédia, l\'encyclopédie libre.';
} else if ( rating == 'homonymie' ) {
newClass = 'assess-Dab-text';
slogan = 'Une <a href="' + path + 'Aide:Homonymie">page d\'homonymie</a> de Wikipédia, l\'encyclopédie libre.';
} else if ( rating == 'redir' ) {
newClass = 'assess-Redir-text';
slogan = 'Une <a href="' + path + 'Aide:Redirection">page de redirection</a> de Wikipédia, l\'encyclopédie libre.';
} else if ( rating == 'adq' ) {
newClass = 'assess-FA-text';
slogan = 'Un <a href="' + path + 'Wikipédia:Articles_de_qualité">article de qualité</a> de Wikipédia, l\'encyclopédie libre.';
} else {
newClass = '';
slogan = 'Un article <a href="' + assessLink + '">à évaluer</a> de Wikipédia, l\'encyclopédie libre.';
}
// Add CSS classes to allow for customization
slogan = '<span class="assess-article-rating">' + slogan + '</span>';
 
this.talkAssessAfter();
return {newClass: newClass, slogan: slogan};
};
MetadataScript.prototype.talkAssessBefore = function () {};
MetadataScript.prototype.talkAssessAfter = function () {};
 
/**
* Updates article header with new assessment information by giving it a new 
* class (for style information such as color) and altering the tagline below 
* it to state the assessment found.
* @param {String} newClass - the CSS class name added to the article header
* @param {String} slogan - italicized text prepended to the tagline, showing 
*        the article's main assessment
* @param {String} info - additional assessment info appended to the tagline
* @static
*/
MetadataScript.prototype.update = function (newClass, slogan) {
if ( mw.config.get('wgPageName') == 'Accueil' ) return;
var firstHeading = document.getElementsByTagName('h1')[0];
firstHeading.className += ' ' + newClass; // add newClass as an additional class
var siteSub = document.getElementById('siteSub');
siteSub.innerHTML = slogan;
siteSub.style.display = 'inline';
siteSub.style.fontSize = '92%';
siteSub.style.fontWeight = 'normal';
siteSub.style.borderBottom = 'medium none';
};
 
/**
* Creates the global MetadataObject as an instance of MetadataAssessmentScript, then 
* calls the init() method of MetadataObject to start the script.
*/
if ( mw.config.get('wgNamespaceNumber') == 0 && (mw.config.get('wgAction') == 'view' || mw.config.get('wgAction') == 'purge')
&& document.location.href.search(/\?(.+\&)?printable=[^&]/i) == -1
&& mw.config.get('wgPageName') != 'Accueil' && typeof sajax_init_object !== 'undefined' ) {
$(function () {
if ( !MetadataScript.createObject ) return;
if ( typeof MetadataObject === 'undefined' ) // only load object once
MetadataObject = new MetadataScript();
if ( MetadataScript.autorun )
MetadataObject.init();
});
}

$(UndeleteSelectAll);
$(PaletteOutils);
$(addECButton);

obtenir("BistroDuJour");
obtenir("RestaurationDeluxe");
obtenir("BlocageDeluxe");

importScript('User:EDUCA33E/LiveRC.js');
importScript('Projet:Impression/lienposter.js');