Utilisateur:Nupar/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('User:Topbanana/RLRL_SR_Utility.js' );
importScript('Utilisateur:Phe/Clickodrome.js');

/* <source lang="javascript"> */

/*importScript('Utilisateur:EDUCA33E/LiveRC.js');*/
/*importScript('Utilisateur:Phe/redirect ou page protégé.js');*/
/*importScript('Utilisateur:Phe/Purge_hist_(maloq).js');*/
/*importScript('Utilisateur:Phe/test10');*/
/*importScript('Utilisateur:Tieum p/LiveRC.js')*/
/*importScript('Utilisateur:Phe/magnus edit box.js');*/

var wma_settings =
{
  height : 400,
  width : 480,
}

var disableFeaturedInterwikiLinks = false


importScript("MediaWiki:Gadget-FusionContribs.js");

/*importScript('Utilisateur:Phe/sortable table.js');*/

/* == Popup de Lupin == */
document.write('<script type="text/javascript" src="' 
   + 'http://en.wikipedia.org/w/index.php?title=User:Lupin/popups.js' 
   + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');

simplePopups=true;
popupDelay=0.7;
popupStructure='original';
popupOnEditSelection=false;
popupAdminLinks=true;

var oldEditsectionLinks = true;

//var disable_clickodrome = true;
importScript('Utilisateur:Phe/Clickodrome.js');

/* == Message vandalisme == */

/**
 * suivant le nom de la page et referer ajoute un {{vandalisme|article}}
 * ou un {{bienvenu}} ou {{bienvenue}} + la signature. Pour une page
 * utilisateur {{bienvenu}} est toujours utilisé, pour une page de
 * discussion d'un utilisateur {{bienvenue}} est utilisé si le referrer
 * est une page utilisateur sinon {{vandalisme}} est utilisé.
 */
function vandalisme_ou_bienvenu()
{
    var user_talk = 'Discussion_Utilisateur:';
    var user = 'Utilisateur:';
    if (mw.config.get('wgPageName').indexOf(user_talk + 'Phe/') != -1)
        return;
    if (mw.config.get('wgPageName').indexOf(user + 'Phe/') != -1)
        return;
    var index1 = document.URL.indexOf(ugly_url + user_talk);
    var index2 = document.URL.indexOf(ugly_url + user);
    if (index1 == -1 && index2 == -1)
        return;
    if (document.editform == undefined)
        return;
    var text_area = document.editform.wpTextbox1;
    if (text_area.value.length == 0) {
      refferer = document.referrer;
      var text = '{{subst:'
      if (index2 != -1) {
          text += 'Bienvenu';
      } else if (refferer.indexOf(pretty_url + user) != -1) {
          text += 'Bienvenue';
      } else {
          refferer = refferer.slice(ugly_url.length);
          refferer = refferer.split('&')[0];
          refferer = decodeURI(refferer);
          refferer = refferer.replace(/_/g, ' ');
          text += 'Vandalisme|' + refferer;
      }
      text += '}}\n~~~~';
      text_area.value = text;
    }
}

$(vandalisme_ou_bienvenu);

function getArticleName()
{
    var strOut = document.title
    // case search
    if (strOut == "Rechercher - Wikipédia")
        return document.getElementById("lsearchbox").value
    // case article being modified
    strOut = strOut.replace("modification de ", "").replace(" - Modifier", "")

    strOut = strOut.replace(" - Prévisualiser", "").replace(" - Wikipédia", "")
    return strOut
}

/*
 * addOngletJournal
 *
 * Permet de passer d'une page à son log
 *
 * Auteur : bayo à partir de [[MediaWiki:Gadget-EditZeroth.js]]
 * [[Catégorie:MediaWiki:Fonction Monobook en JavaScript]]
 * identique au gadget + ajout d'une accessKey, phe
 */

function addOngletJournal() {
        if (!document.getElementById) {
                return;
        }
        x = document.getElementById('ca-talk');
        if (!x) {
                return;
        }
        x = x.parentNode

        y = document.createElement('LI');
        y.id = 'ca-log';
        z = document.createElement('A');
        z.accessKey = "a";
        uri = mw.config.get('wgScript') + '?title=Special:Journal&page=' + encodeURI(mw.config.get('wgPageName'))
        z.href = uri;
        z.appendChild(document.createTextNode('journal'));
        y.appendChild(z);
        x.appendChild(y);

}
if ( mw.config.get('wgNamespaceNumber') >= 0 ) {
        addOnloadHook(addOngletJournal);
}


/* == Page spécial undelete == */
//----------------------------------------------------
function UndeleteSelectAll()
{
    if (getArticleName() != "Voir et restaurer la page supprimée")
        return;

    var title2 = document.getElementsByTagName("h2")
    var all = document.createElement("input")
    all.setAttribute("type", "checkbox")
    all.setAttribute("onchange", "selectAll(this.checked)")
    all.setAttribute("title", "Sélectionner/Désélectionner tous")
    if (title2.length > 0)
        title2[title2.length -1].appendChild(all)
    all.click()
}

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

$(UndeleteSelectAll)

function setFocus()
{
    if (document.editform == undefined)
        return;
    var text_area = document.editform.wpTextbox1;
    if (text_area)
       text_area.focus();
}

//addOnloadHook(setFocus);

/* == Timing == */
var millisecs;
var secs;
function begin_time()
{
  date = new Date();
  millisecs = date.getMilliseconds();
  secs = date.getSeconds();
}

function end_time()
{
  date = new Date();
  var msec = date.getMilliseconds() - millisecs;
  if (msec < 0) { msec += 1000; secs += 1; }
  var ms;
  if (msec <= 9)
     ms = "00" + msec;
  else if (msec <= 99)
     ms = "0" + msec;
  else
     ms = msec;
  alert((date.getSeconds() - secs) + '.' + ms);
}

//------------------------------------------------------------------
/* Special:Contributions Wildcard/CIDR lookup, version [0.1.4]
Originally from: http://en.wikipedia.org/wiki/User:Splarka/contribsrange.js

Notes:
* Uses the API (Requires http://svn.wikimedia.org/viewvc/mediawiki?view=rev&revision=31312), which is faster than most CIDR contrib tools.
* Currently uses a GET json via <script src=""> to avoid ajax problems.
* Only currently works if submitted (or called by URL parameter, eg Special:Contributions/User).
** Checks namespace and date options in form.
* Uses: Submit any IP CIDR range /16 or from /24 to /32. Submit any string (at least 3 characters) with a suffixed asterisk.
** eg: [123.123.123.0/24 ] or [123.123.123.* ] or [Willy* ].
** NOTE: Currently seems broken with spaces in the search string. Possibly a fault of the API. %20,+,_ don't work

To do:
* Sortable by address? (not useful until pagination is available).
* More like normal Special:Recentchanges (hist)(diff) blah blah blah (except talk page existence for red/blue link) with BiDi characters?
* Option to refresh on page? (not really needed, but might be more handy than onload action only).
* Respect limit in user prefs? frm.limit.value ?
*/

if(mw.config.get('wgCanonicalSpecialPageName') == 'Contributions') { 
  addOnloadHook(prefixContribsInit);
  var prefixlimit = 500;
  var frm = ''; //global
}

function prefixContribsInit() {
  var show = (document.getElementById('contentSub')) ? document.getElementById('contentSub') : document.getElementById('topbar')
  show.appendChild(document.createTextNode(' \u2022 Javascript-enhanced contributions lookup enabled. You may enter a CIDR range or append an asterisk to do a prefix search.'))
  frm = document.getElementsByTagName('form')[0];
  if(!frm.target) return;

  //general optionlets independant of type of search.
  var opt_ns = (parseInt(frm.namespace[frm.namespace.selectedIndex].value) > -1) ? '&ucnamespace=' + frm.namespace[frm.namespace.selectedIndex].value : '';
  var opt_ts = '';
  if(queryString('ucstart')) {
    opt_ts = '&ucstart=' + queryString('ucstart');
  } else {
    var m = '' + frm.month.selectedIndex; 
    var y = frm.year.value;
    if(m.length == 1) m = '0' + m
    if(y > 2000 && y < 2100) opt_ts = '&ucstart=' + y + '-' + m + '-01T00:00:00Z'
  }
  var options = opt_ns + opt_ts;

  var patternCIDR = /(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/(2[4-9]|3[0-2]|16)/i ;
  var patternWild = /^.{3,}\*$/i ;
  if(frm.target.value.search(patternCIDR) == 0) {
    prefixContribsStartbox(frm.parentNode);
    var cidr = frm.target.value.match(patternCIDR)[0];
    var range = cidr.match(/[^\/]\d{1,2}$/i)[0];
    if(range == 24 || range == 16) {
      //prefixable CIDR, lets do-er
      if(range == 24) {
        cidr = cidr.match(/\d{1,3}\.\d{1,3}\.\d{1,3}\./)[0];
      } else {
        cidr = cidr.match(/\d{1,3}\.\d{1,3}\./)[0];
      }
      var url = mw.config.get('wgScriptPath') + '/api.php?action=query&format=json&callback=prefixContribs&list=usercontribs' + options + '&uclimit=' + parseInt(prefixlimit) + '&ucuserprefix=' + cidr;
      prefixContribsCall(url);
    } else {
      //complex CIDR, lets figure it out
      var oct3 = cidr.match(/\.\d{1,3}\//i)[0].replace(/(\.|\/)/g,'');
      cidr = cidr.match(/\d{1,3}\.\d{1,3}\.\d{1,3}\./)[0];
      var num = Math.pow(2,32 - range);
      var start = oct3 - oct3 % num;
      var url = mw.config.get('wgScriptPath') + '/api.php?action=query&format=json&callback=prefixContribs&list=usercontribs' + options + '&uclimit=' + parseInt(prefixlimit) + '&ucuser=';
      for(var i=start;i<=start + num;i++) {
        url += '' + cidr + i;
        if(i != start + num) url += '|'
      }
      prefixContribsCall(url);
    }
  } else if(frm.target.value.search(patternWild) == 0) {
    //very simple wildcard, lets do-er
    prefixContribsStartbox(frm.parentNode);
    var prefix = frm.target.value.replace(/\*$/,'');
    prefix = prefix.substr(0,1).toUpperCase() + prefix.substr(1);
    var url = mw.config.get('wgScriptPath') + '/api.php?action=query&format=json&callback=prefixContribs&list=usercontribs' + options + '&uclimit=' + parseInt(prefixlimit) + '&ucuserprefix=' + prefix;
    prefixContribsCall(url);
  }
}

function prefixContribsStartbox(parent) {
  var res = document.createElement('div');
    res.setAttribute('id','results-from-CIDR');
    res.style.border = '1px solid black';
    res.style.padding = '.5em';
    var prog = document.createElement('img');
    prog.setAttribute('id','prefixcontribs-prog');
    prog.setAttribute('src',stylepath + '/common/images/spinner.gif');
    res.appendChild(prog);
  parent.appendChild(res);
}

function prefixContribsCall(url) {
  var scriptElem = document.createElement('script');
  scriptElem.setAttribute('src',url);
  scriptElem.setAttribute('type','text/javascript');
  document.getElementsByTagName('head')[0].appendChild(scriptElem);
}

function compare_timestamp(a, b) {
  if (a.timestamp < b.timestamp)
    return 1;
  if (a.timestamp > b.timestamp)
    return -1;
  return 0;
}

function prefixContribs(obj) {
  if(!obj['query'] || !obj['query']['usercontribs']) return
  var prog = document.getElementById('prefixcontribs-prog');
  if(prog) prog.parentNode.removeChild(prog)
  cidr = obj['query']['usercontribs'];
  var res = document.getElementById('results-from-CIDR');
  res.appendChild(document.createElement('hr'));
  if(cidr.length == 0) {
    res.appendChild(document.createTextNode('No changes were found for this wildcard/CIDR range.'));
    res.appendChild(document.createElement('hr'));
    return;
  }
  res.appendChild(document.createTextNode(cidr.length + ' matches in the wildcard/CIDR range specified (chronologically): '));
  if(cidr.length == parseInt(prefixlimit)) {
    res.appendChild(document.createElement('br'));
    res.appendChild(document.createTextNode('Click '));
    var ns = (parseInt(frm.namespace[frm.namespace.selectedIndex].value) > -1) ? '&namespace=' + frm.namespace[frm.namespace.selectedIndex].value : '';
    var ts = (obj['query-continue']) ? obj['query-continue'].usercontribs.ucstart : cidr[cidr.length-1].timestamp;
    addlinkchild(res, mw.config.get('wgScript') + '?title=Special:Contributions&target=' + encodeURIComponent(frm.target.value) + ns + '&ucstart=' + ts, 'here');
    res.appendChild(document.createTextNode(' to see the next ' + prefixlimit + ' results.'));
  }
  cidr.sort(compare_timestamp);
  res.appendChild(document.createElement('hr'));
  for(var i=0;i<cidr.length;i++) {
    res.appendChild(document.createTextNode('\u2022 ' + cidr[i].timestamp.replace(/T[\d:]*Z/,' ')));
    addlinkchild(res, mw.config.get('wgScript') + '?title=Special:Contributions/' + cidr[i].user, cidr[i].user);
    res.appendChild(document.createTextNode(' edited ('));
    addlinkchild(res, mw.config.get('wgScript') + '?title=-&curid=' + cidr[i].pageid + '&diff=' + cidr[i].revid , 'diff');
    res.appendChild(document.createTextNode(') '));
    addlinkchild(res, mw.config.get('wgScript') + '?title=-&curid=' + cidr[i].pageid, cidr[i].title);
    if(cidr[i].comment) res.appendChild(document.createTextNode(' (' + cidr[i].comment + ')'));
    res.appendChild(document.createElement('br'));
  }
}

function addlinkchild(obj,href,text,id,classes) {
  if(!obj || !href || !text) return false;
  var a = document.createElement('a');
  a.setAttribute('href',href);
  a.appendChild(document.createTextNode(text));
  if(id) a.setAttribute('id',id);
  if(classes) a.setAttribute('class',classes);
  obj.appendChild(a);
}

function queryString(p) {
  var re = RegExp('[&?]' + p + '=([^&]*)');
  var matches;
  if (matches = re.exec(document.location)) {
    try { 
      return decodeURI(matches[1]);
    } catch (e) {
    }
  }
  return null;
}

/*</source>*/