User:Otourly/NewPagePatrol.js
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.
Documentation for this user script can be added at User:Otourly/NewPagePatrol. |
- Report page listing warnings and errors.
/* 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);
}