From StrategyWiki, the video game walkthrough and strategy guide wiki
Jump to navigation Jump to search
m (replacing test variable)
(removing uncounted contributions)
Line 27: Line 27:
   var oldpage = false;
   var oldpage = false;
   var edits;
   var edits;
  var namespaces = new Array();
  var movelog = new Array();
  var protectlog = new Array();
  var overwrites = 0;
   var nsNum;
   var nsNum;
   var next;
   var next;
Line 42: Line 46:
   queryApi('action=query&meta=siteinfo&siprop=namespaces', function(siResponse) {
   queryApi('action=query&meta=siteinfo&siprop=namespaces', function(siResponse) {
     for (var ns in siResponse.query.namespaces) {
     for (var ns in siResponse.query.namespaces) {
       nsNum = siResponse.query.namespaces[ns].id;
       if (siResponse.query.namespaces[ns].id > -1) {
       if (nsNum > -1) {
        namespaces[siResponse.query.namespaces[ns].id] = 0;
         next = '';
        movelog[siResponse.query.namespaces[ns].id] = 0;
         edits = 0;
        protectlog[siResponse.query.namespaces[ns].id] = 0;
        while (next != 'stop') {
      };
          queryApi('action=query&list=usercontribs&ucuser='+wgUserName+'&uclimit=max&ucdir=newer&ucnamespace='+nsNum+next, function(ucResponse) {
    };
            edits += ucResponse.query.usercontribs.length;
  });
            if (ucResponse["query-continue"]) {
 
              next = '&ucstart='+ucResponse["query-continue"].usercontribs.ucstart;
  next = '';
            } else {
  while (next != 'stop') {
              next = 'stop';
    queryApi('action=query&list=logevents&letype=move&leuser='+wgUserName+'&lelimit=max&leprop=title'+next, function(moveResponse) {
            };
      for (var event in moveResponse.query.logevents) {
          });
        movelog[moveResponse.query.logevents[event].ns] += 1
      }
       if (moveResponse["query-continue"]) {
         next = '&lestart='+moveResponse["query-continue"].logevents.lestart;
      } else {
         next = 'stop';
      };
    });
  }
 
  next = '';
  while (next != 'stop') {
    queryApi('action=query&list=logevents&letype=protect&leuser='+wgUserName+'&lelimit=max&leprop=title'+next, function(protectResponse) {
      for (var event in protectResponse.query.logevents) {
        movelog[protectResponse.query.logevents[event].ns] += 1
      }
      if (protectResponse["query-continue"]) {
        next = '&lestart='+protectResponse["query-continue"].logevents.lestart;
      } else {
        next = 'stop';
      };
    });
  }
 
  next = '';
  while (next != 'stop') {
    queryApi('action=query&list=logevents&letype=upload&leuser='+wgUserName+'&lelimit=max'+next, function(uploadResponse) {
      for (var event in uploadResponse.query.logevents) {
        if (uploadResponse.query.logevents[event].action == "overwrite") {
          overwrites++
         };
         };
        if (edits != 0) {
      }
          table += '\n|-\n| ';
      if (uploadResponse["query-continue"]) {
          if (nsNum == 0) {
        next = '&lestart='+uploadResponse["query-continue"].logevents.lestart;
            table += 'Main';
      } else {
          } else {
        next = 'stop';
            table += siResponse.query.namespaces[ns].canonical;
      };
          };
    });
           table += ' || {{formatnum:'+edits+'}}';
  }
 
  for (var i = 0; i < namespaces.length; i++) {
    next = '';
    edits = 0;
    while (next != 'stop') {
      queryApi('action=query&list=usercontribs&ucuser='+wgUserName+'&uclimit=max&ucdir=newer&ucnamespace='+nsNum+next, function(ucResponse) {
        edits += ucResponse.query.usercontribs.length;
        if (ucResponse["query-continue"]) {
          next = '&ucstart='+ucResponse["query-continue"].usercontribs.ucstart;
        } else {
           next = 'stop';
         };
         };
      });
    };
    edits = edits - movelog[i] - protectlog[i];
    if (i == 6) {
      edits = edits - overwrites;
    };
    if (edits > 0) {
      table += '\n|-\n| ';
      if (nsNum == 0) {
        table += 'Main';
      } else {
        table += siResponse.query.namespaces[ns].canonical;
       };
       };
      table += ' || {{formatnum:'+edits+'}}';
     };
     };
   });
   };
    
    
   table += '\n|}';
   table += '\n|}';

Revision as of 08:38, 22 January 2010

if (wgTitle == wgUserName && wgNamespaceNumber == 2) {
  addOnloadHook(makeEditCountButton);
}

function makeEditCountButton() {
  var newlist = document.createElement('li');
  newlist.id = "t-editcounter";
  var newlink = document.createElement('a');
  newlink.href = 'javascript:countEdits()';
  var linkname = document.createTextNode('Edit counts');
  newlink.appendChild(linkname);
  newlist.appendChild(newlink);
  document.getElementById('nav_right').getElementsByTagName('ul')[0].insertBefore(newlist, document.getElementById('t-contributions').nextSibling);
}

function countEdits() {
  document.getElementById('t-editcounter').getElementsByTagName('a')[0].innerHTML = 'Calculating...';

  var editSummary = 'Edited with [[User:Najzere/edit_counter.js]]';
  if (tableFloat == 'left' || tableFloat == 'right') {
    tableFloat = ';float:'+tableFloat;
  } else {
    tableFloat = '';
  };
  var table = '{|{{prettytable|class='+tableClass+'|style=width:200px'+tableFloat+'}}\n!colspan="2"| Edit count: {{formatnum:';
  var skipcaptcha = false;
  var oldpage = false;
  var edits;
  var namespaces = new Array();
  var movelog = new Array();
  var protectlog = new Array();
  var overwrites = 0;
  var nsNum;
  var next;
  var edittoken;

  queryApi('action=query&meta=userinfo&uiprop=editcount|rights', function(uiResponse) {
    for (var r in uiResponse.query.userinfo.rights) {
      if (uiResponse.query.userinfo.rights[r] == "autoconfirmed") {
        skipcaptcha = true;
      };
    };
    table += uiResponse.query.userinfo.editcount+'}}';
  });

  queryApi('action=query&meta=siteinfo&siprop=namespaces', function(siResponse) {
    for (var ns in siResponse.query.namespaces) {
      if (siResponse.query.namespaces[ns].id > -1) {
        namespaces[siResponse.query.namespaces[ns].id] = 0;
        movelog[siResponse.query.namespaces[ns].id] = 0;
        protectlog[siResponse.query.namespaces[ns].id] = 0;
      };
    };
  });

  next = '';
  while (next != 'stop') {
    queryApi('action=query&list=logevents&letype=move&leuser='+wgUserName+'&lelimit=max&leprop=title'+next, function(moveResponse) {
      for (var event in moveResponse.query.logevents) {
        movelog[moveResponse.query.logevents[event].ns] += 1
      }
      if (moveResponse["query-continue"]) {
        next = '&lestart='+moveResponse["query-continue"].logevents.lestart;
      } else {
        next = 'stop';
      };
    });
  }

  next = '';
  while (next != 'stop') {
    queryApi('action=query&list=logevents&letype=protect&leuser='+wgUserName+'&lelimit=max&leprop=title'+next, function(protectResponse) {
      for (var event in protectResponse.query.logevents) {
        movelog[protectResponse.query.logevents[event].ns] += 1
      }
      if (protectResponse["query-continue"]) {
        next = '&lestart='+protectResponse["query-continue"].logevents.lestart;
      } else {
        next = 'stop';
      };
    });
  }

  next = '';
  while (next != 'stop') {
    queryApi('action=query&list=logevents&letype=upload&leuser='+wgUserName+'&lelimit=max'+next, function(uploadResponse) {
      for (var event in uploadResponse.query.logevents) {
        if (uploadResponse.query.logevents[event].action == "overwrite") {
          overwrites++
        };
      }
      if (uploadResponse["query-continue"]) {
        next = '&lestart='+uploadResponse["query-continue"].logevents.lestart;
      } else {
        next = 'stop';
      };
    });
  }

  for (var i = 0; i < namespaces.length; i++) {
    next = '';
    edits = 0;
    while (next != 'stop') {
      queryApi('action=query&list=usercontribs&ucuser='+wgUserName+'&uclimit=max&ucdir=newer&ucnamespace='+nsNum+next, function(ucResponse) {
        edits += ucResponse.query.usercontribs.length;
        if (ucResponse["query-continue"]) {
          next = '&ucstart='+ucResponse["query-continue"].usercontribs.ucstart;
        } else {
          next = 'stop';
        };
      });
    };
    edits = edits - movelog[i] - protectlog[i];
    if (i == 6) {
      edits = edits - overwrites;
    };
    if (edits > 0) {
      table += '\n|-\n| ';
      if (nsNum == 0) {
        table += 'Main';
      } else {
        table += siResponse.query.namespaces[ns].canonical;
      };
      table += ' || {{formatnum:'+edits+'}}';
    };
  };
  
  table += '\n|}';
  
  queryApi('action=query&prop=info|revisions&intoken=edit&titles=User:'+wgUserName+'/'+editPage, function(propResponse) {
    for (var page in propResponse.query.pages) {
      edittoken = propResponse.query.pages[page].edittoken.replace(/\+\\$/g,'%2B%5C');
      if (propResponse.query.pages[page]["revisions"]) {
        oldpage = true;
      };
    };
  });

  if (!skipcaptcha && !oldpage) {
    alert("Sorry, you're not autoconfirmed yet, so captcha is required to make new pages. Go create the page at: User:"+wgUserName+"/"+editPage+", then try again.");
    return false;
  };

  queryApi('action=edit&title=User:'+wgUserName+'/'+editPage+'&summary='+editSummary+'&minor&recreate&text='+table+'&token='+edittoken, function(actionResponse) {
    if (actionResponse.edit.result == "Success") {
      document.getElementById('t-editcounter').getElementsByTagName('a')[0].innerHTML = 'Done!';
    } else {
      document.getElementById('t-editcounter').getElementsByTagName('a')[0].innerHTML = 'Error!';
    };
  });
}

function queryApi(query, callback) {
  try {
    var xmlRequest = new XMLHttpRequest();
  } catch(e) {
    try {
      var xmlRequest = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
      try {
      var xmlRequest = new ActiveXObject("Microsoft.XMLHTTP");
      } catch(e) {
        throw "Could not create an XmlHttpRequest";
        }
      }
    }

  xmlRequest.open('POST', wgScriptPath+'/api.php', false);
  xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  xmlRequest.send(query+'&format=json');
  var xmlResponse = new Function("return "+xmlRequest.responseText)();
  if (!xmlResponse) {
    alert('Problem retrieving information');
  } else {
    callback(xmlResponse);
  };
}