User:Otourly/NewPagePatrol.js

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search
Note: After saving, you have to bypass your browser's cache to see the changes. Internet Explorer: press Ctrl-F5, Mozilla: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Opera/Konqueror: press F5, Safari: hold down Shift + Alt while clicking Reload, Chrome: hold down Shift while clicking Reload.
/* code from User:Dr Brains/NewPagePatrol.js vector-adapted version of User:Kanonkas/NewPagePatrol.js */
/* Adapted from User:Kanonkas/NewPagePatrol.js */
var npp_http;
var npp_enabled;
var npp_num_pages;
var npp_refresh;
var npp_num_idle_req;
var npp_curr_idle_req;
 
var npp_str_no_ajax = "There seems to be a problem using the NewPagePatrol script. Your browser is not supported.";
var npp_str_box_title = "Nouvelles pages";
var npp_str_box_title_updating = "Nouvelles pages (mise à jour)";
var npp_str_box_title_failed = "Nouvelles pages (échec)";
var npp_str_enable = "activer cette boîte";
var npp_str_disable = "désactiver cette boîte";
 

if(skin=="vector"){
    var PanelId = "mw-panel";
    var PortletClass = "portal";
    var BodyClass = "body";
}else if(skin=="monobook" ||skin=="simple" || skin=="myskin"){
    var PanelId = "column-one";
    var PortletClass = "portlet";
    var BodyClass = "pBody";
}

$( NewPagePatrol_init );
 
function NewPagePatrol_init() {
 
    // allow user settings through
    if (npp_enabled == null) {
        npp_enabled = false;
    }
    if (npp_num_pages == null) {
        npp_num_pages = 10;
    }
    if (npp_refresh == null) {
        npp_refresh = 10;
    }
    if (npp_num_idle_req == null) {
        npp_num_idle_req = 60;
    }
 
    // A few limits to be nice to the servers
    if (npp_num_pages > 50) {
        npp_num_pages = 50;
    }
    if (npp_num_pages < 1) {
        npp_num_pages = 1;
    }
    if (npp_refresh < 2) {
        npp_refresh = 2;
    }
    if (npp_num_idle_req > 1000) {
        npp_num_idle_req = 1000;
    }
    if (npp_num_idle_req < 5) {
        npp_num_idle_req = 5;
    } 
    // get our cookie
    if (document.cookie.length > 0) {
        var c_start = document.cookie.indexOf("npp_show_box=");
        if (c_start != -1) { 
            c_start = c_start + 13; 
            var c_end = document.cookie.indexOf(";", c_start);
            if (c_end == -1) {
                c_end = document.cookie.length;
            }
 
            if (document.cookie.substring(c_start, c_end) == "yes") {
                npp_enabled = true;
            } else {
                npp_enabled = false;
            }
        } 
    }
    npp_curr_idle_req = 0;
    NewPagePatrol_createBox();
    if(npp_enabled) NewPagePatrol_Update();
    else NewPagePatrol_closeBox();
}

function NewPagePatrol_createBox(){
    var link_div = document.createElement('div');
    link_div.id = 'b-newpages';
    link_div.className = BodyClass;
    var link_P = document.createElement('p');
    link_div.appendChild(link_P);
    var Link = document.createElement('a');
    Link.id = 'l-newpages'
    Link.innerHTML = npp_str_disable;
    Link.href = "javascript:NewPagePatrol_closeBox();";
    link_P.appendChild(Link);
    var div = document.createElement('div');
    div.id ='p-newpages';
    div.className = PortletClass;
    var heading = document.createElement('h5');
    heading.id = 'h-newpages';
    heading.innerHTML = npp_str_box_title;
    div.appendChild(heading);
    div.appendChild(link_div);
    var Search = document.getElementById("p-navigation");
    Search.parentNode.insertBefore(div, Search);
}

function NewPagePatrol_closeBox(){
    npp_enabled = false;
    document.cookie = "npp_show_box=no; path=/";
    var Link = document.getElementById('l-newpages');
    if(Link){
        Link.innerHTML = npp_str_enable;
        Link.href = "javascript:NewPagePatrol_openBox();";
    }
    var Ul = document.getElementById('p-newpages').getElementsByTagName('ul')[0];
    if(Ul) Ul.parentNode.removeChild(Ul);
    var Heading = document.getElementById('h-newpages');
    if(Heading) Heading.innerHTML = npp_str_box_title;

}

function NewPagePatrol_openBox(){
    npp_enabled = true;
    document.cookie = "npp_show_box=yes; path=/";
    var Link = document.getElementById('l-newpages');
    if(Link){
        Link.innerHTML = npp_str_disable;
        Link.href = "javascript:NewPagePatrol_closeBox();";
    }
    NewPagePatrol_Update();
}

function NewPagePatrol_Update(){
    if(npp_enabled==false) return;
    var Request = new sajax_init_object();
    if ( typeof (Request) == "undefined" ) return ;
    var Patrol = "";
    for( var key in wgUserGroups ){
        if (wgUserGroups[key] =="sysop") Patrol = "|patrolled";
    }
    var Heading = document.getElementById('h-newpages');
    if(Heading) Heading.innerHTML = npp_str_box_title_updating;
    var URL = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + "/api.php?action=query&format=xml&list=recentchanges&rcshow=!bot|!redirect&rctype=new&rcnamespace=0&rcprop=title|timestamp|ids"+Patrol+"&rclimit=" + npp_num_pages;
    //alert(URL);
    Request.open('GET', URL, true);
    Request.onreadystatechange = function () {
        if (Request.readyState != 4) return;
        var ObjectXML = Request.responseXML ;
        if(ObjectXML == null) return;
        if(npp_enabled==false) return;
        var items = ObjectXML.getElementsByTagName('rc');
        if(!items) return;
        var Div = document.getElementById('b-newpages');
        var OldUl = Div.getElementsByTagName('ul')[0];
        if(OldUl) OldUl.parentNode.removeChild(OldUl);
        var Ul = document.createElement('ul');
        Div.appendChild(Ul);
        for (var i = 0; i < items.length; i++) {
            var item_name = items[i].getAttribute('title');
            var rcid = items[i].getAttribute('rcid');
            var patrolled = items[i].getAttribute('patrolled') != null;
            var Patrol = false;
            for( var key in wgUserGroups ){
                if (wgUserGroups[key] =="sysop") Patrol = true;
            }
            item_name = item_name.replace(/&/, "%26");
            var item_url = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + item_name + '&rcid=' + rcid + '&redirect=no';
 
            a = document.createElement('a');
            a.setAttribute('href', item_url);
            a.appendChild(document.createTextNode(item_name));
 
            var li = document.createElement('li');
            li.appendChild(a);
            if (!patrolled && Patrol) {
                li.setAttribute('class', 'not-patrolled');
            }
            Ul.appendChild(li);
            if(Heading) Heading.innerHTML = npp_str_box_title;
            setTimeout("NewPagePatrol_Update()", npp_refresh * 1000);            
        }
    }
    Request.send(null);
}