v50 Steam/Premium information for editors
  • v50 information can now be added to pages in the main namespace. v0.47 information can still be found in the DF2014 namespace. See here for more details on the new versioning policy.
  • Use this page to report any issues related to the migration.
This notice may be cached—the current version can be found here.

Difference between revisions of "User:Emi/review.js"

From Dwarf Fortress Wiki
Jump to navigation Jump to search
Line 68: Line 68:
 
api.open('GET', 'http://df.magmawiki.com/index.php?title=' + rater_PageName + '&action=raw', true);
 
api.open('GET', 'http://df.magmawiki.com/index.php?title=' + rater_PageName + '&action=raw', true);
 
api.onreadystatechange = function() {
 
api.onreadystatechange = function() {
 +
alert('gettin!');
 
if(api.readyState==4) {
 
if(api.readyState==4) {
 
if(api.status==200) {
 
if(api.status==200) {
 +
alert('gettin! and sendin!');
 
rate_this_shit(api.responseText);
 
rate_this_shit(api.responseText);
 
}
 
}

Revision as of 07:04, 22 May 2010

addOnloadHook(
  function rater_addLink() {
    addPortletLink("p-cactions", "javascript:rater_init()", "Rate", "ca-rater", "Rate");
  }
);

var orphan = 0;
var inlinks = 0;
var redlinks = 0;
var length = 0;
var overlength = -1;
var cats = 0;

var current_rating = -1;

var results = 0;

String.prototype.count=function(s1) { 
	return (this.length - this.replace(new RegExp(s1,"g"), '').length) / s1.length;
}

function rater_init() {
var rater_PageName = wgPageName.replace(/_/g, ' ');

  if (!wfSupportsAjax()) {
    jsMsg('<span style="color:red; font-size:120%">Your browser does not seem to support AJAX, which is required for the rating script.</span>');
    return;
  }

jsMsg('<h3>Rating '+rater_PageName+'</h3><div id="rater_div"></div>');
rater_autotests();
}

function rater_autotests() {
var rater_PageName = wgPageName.replace(/_/g, ' ');

document.getElementById('rater_div').innerHTML += '<div id="overall"><div id="rater_orphan">Is page orphaned</div>';
document.getElementById('rater_div').innerHTML += '<div id="rater_deadend">Is page deadend...... </div>';
document.getElementById('rater_div').innerHTML += '<div id="rater_redlink">How many redlinks does page contain...... </div>Ignore redlinks? <INPUT TYPE=CHECKBOX ID="ignorered" onClick="rater_calc();"> (Use this if the only redlink is in the AV template, so really, a "greylink")';
document.getElementById('rater_div').innerHTML += '<div id="rater_length">How long (approximately) is the article......<span id="rater_length_resp"> </span><span id="rater_length_check" style=""> ..... Incorrect?<INPUT TYPE=CHECKBOX ID="rater_len_over" onClick="rater_toggle_len_over();"></span></div><div id="rater_len_over_div" style="display:none;"><form name="rawr" method="get" action="" onsubmit="return false;"><input type=radio id="vs_rad" onclick="len_over_change(0);" name="len_override" value="0">Very Short <input type=radio id="s_rad" onclick="len_over_change(1);" value="1" name="len_override" >Short <input type=radio id="m_rad" onclick="len_over_change(2);" name="len_override"  value="2">Medium <input type=radio id="l_rad" onclick="len_over_change(3);" name="len_override"  value="3">Long <input type=radio id="vl_rad" onclick="len_over_change(4);" name="len_override"  value="4">Very Long</form></div>';
document.getElementById('rater_div').innerHTML += '<div id="rater_cats">Is the page in any categories......<span id="rater_cats_resp"> </span><span id="rater_cats_check" style="display:none;"> ..... Are they appropriate?<INPUT TYPE=CHECKBOX ID="rater_cat" onClick="rater_calc();"></span></div>';
document.getElementById('rater_div').innerHTML += '<div>Is the page relatively easy to understand? <INPUT TYPE=CHECKBOX ID="understand" onClick="rater_calc();"></div>';
document.getElementById('rater_div').innerHTML += '<div>Does the page contain any inaccurate information? <INPUT TYPE=CHECKBOX ID="inacc" onClick="inacc_toggle();"></div>';
document.getElementById('rater_div').innerHTML += '<div id="inaccdiv" style="display:none;">Is it just a bit of inaccurate information? <INPUT TYPE=CHECKBOX ID="inaccg" onClick="rater_calc();"></div>';
document.getElementById('rater_div').innerHTML += '<div>Is some information unverified?<INPUT TYPE=CHECKBOX ID="ver" onClick="ver_toggle();"></div>';
document.getElementById('rater_div').innerHTML += '<div id="verdiv" style="display:none;">Is it just a bit of unverified information? <INPUT TYPE=CHECKBOX ID="verg" onClick="rater_calc();"></div>';
document.getElementById('rater_div').innerHTML += '<div>Does the page contain a decent amount of information?<INPUT TYPE=CHECKBOX ID="info" onClick="rater_calc();"></div>';
document.getElementById('rater_div').innerHTML += '<div>Is the page essentially empty except for templates and info boxes or lacking in information?<INPUT TYPE=CHECKBOX ID="tempbox" onClick="rater_calc();"></div>';
document.getElementById('rater_div').innerHTML += '<div>Is there any pink text at the bottom of the AV template?<INPUT TYPE=CHECKBOX ID="avpink" onClick="rater_calc();"></div>';
document.getElementById('rater_div').innerHTML += '<div>Does the page look at least reasonably good? <INPUT TYPE=CHECKBOX ID="looks" onClick="looks_toggle();"></div>';
document.getElementById('rater_div').innerHTML += '<div id="extremelooksdiv" style="display:none;">Does the page look extremely good? <INPUT TYPE=CHECKBOX ID="extremelooks" onClick="rater_calc();"></div>';
document.getElementById('rater_div').innerHTML += '<div id="rater_results"></div><span id="showup" style="display:none;"> Override? <INPUT TYPE=CHECKBOX ID="overrate" onClick="overrate_toggle();"></span>';
document.getElementById('rater_div').innerHTML += '<div id="overratediv" style="display:none;"><form name="overriderate" method="get" action="" onsubmit="return false;"><input type=radio id="tattered" onclick="rate_over_change(0);" name="rate_override" value="0"> Tattered <input type=radio id="fine" onclick="rate_over_change(1);" value="1" name="rate_override" >Fine <input type=radio id="exceptional" onclick="rate_over_change(2);" name="rate_override"  value="2">Exceptional <input type=radio id="masterwork" onclick="rate_over_change(3);" name="rate_override"  value="3">Masterwork</form></div>';
document.getElementById('rater_div').innerHTML += '<div id="suggest"><br><a onclick="rater_calcit();">Suggest!</a></div>';
document.getElementById('rater_div').innerHTML += '<div id="suggest"><br><a onclick="rate_this_shit_before();">Commit the rating!</a></div>';
document.getElementById('rater_div').innerHTML += '</div>';

rater_testorphan();
rater_testredlink();
rater_testdeadend();
rater_testlength();
rater_testcats();
}

function rate_this_shit_before() {
var rater_PageName = wgPageName.replace(/_/g, ' ');
var api = sajax_init_object();
api.open('GET', 'http://df.magmawiki.com/index.php?title=' + rater_PageName + '&action=raw', true);
api.onreadystatechange = function() {
alert('gettin!');
	if(api.readyState==4) {
		if(api.status==200) {
alert('gettin! and sendin!');
rate_this_shit(api.responseText);
}
}
};
}

function rate_this_shit(newtext) {
var rater_PageName = wgPageName.replace(/_/g, ' ');
var api = sajax_init_object();
api.open('GET', 'http://df.magmawiki.com/api.php?format=json&action=query&prop=info&indexpageids=1&intoken=edit&titles=' + rater_PageName, true);
api.onreadystatechange = function() {
	if(api.readyState==4) {
		if(api.status==200) {
			var response = eval('(' + api.responseText + ')');
			var token = response['query']['pages'][response['query']['pageids'][0]]['edittoken'];
			edit_page(token, nextext);
		}else {
			alert('The token query returned an error.');
		}
	}
};
api.send(null);
}

function edit_page(_token, newtext) {
var rater_PageName = wgPageName.replace(/_/g, ' ');
	var parameters = 'action=edit&title=' + rater_PageName + '&text=' + encondeURIComponent(newtext) + '&token=' + encodeURIComponent(_token);
var api = sajax_init_object();
	api.open('POST', 'http://df.magmawiki.com/api.php', true); // just reuse the same query object

	api.onreadystatechange = function(){
		if(api.readyState==4) {

			if(api.status==200) {
				alert('Page edited!');
			}else{
				alert('The query returned an error.');
			}
		}
	};

	api.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');

	api.setRequestHeader('Connection', 'keep-alive');
	api.setRequestHeader('Content-length', parameters.length);
	api.send(parameters);

}


function len_over_change(over){
overlength = over;

rater_calc();
}

var rating_override = -1;

function rate_over_change(over){
rating_override = over;

rater_calc();
}

var suggested = 0;

function rater_calc(){
if (suggested != 0){ rater_calcit();}
}

function rater_calcit(){
document.getElementById('suggest').style.display = "none";
suggested = 1;

var catapp = 0;
if (document.getElementById('rater_cat').checked == true) {catapp = 1;}

var wlen = length;
if (overlength != -1) wlen = overlength;
var wlink = inlinks;
if (wlink > 5) {wlink = 5;}
if (wlink == 0) {wlink = -20;}
var wcats = cats;
if (wcats > 2) {wcats = 2;}
var catmod = catapp * 5;
if (wcats == 0) {catmod = -20; wcats = 1;}

var wred = redlinks;
if (document.getElementById('ignorered').checked == true) {wred = 0;}

var result = orphan +  wlen * 3 + wlink * 2 + wred * -5 + wcats * catmod;

if (document.getElementById('understand').checked == true) {result += 5;}
if (document.getElementById('looks').checked == true) {result += 5;}
if (document.getElementById('extremelooks').checked == true) {result += 5;}
if (document.getElementById('ver').checked == true) {result -= 60;}
if (document.getElementById('verg').checked == true) {result += 55;}
if (document.getElementById('inacc').checked == true) {result -= 60;}
if (document.getElementById('inaccg').checked == true) {result += 18;}
if (document.getElementById('info').checked == true) {result += 20;}
if (document.getElementById('avpink').checked == true) {result -= 60;}
if (document.getElementById('tempbox').checked == true) {result -= 200;}

if (result > 56 && wred > 0) {result -= result - 56 + 1;}
if (result > 56 && document.getElementById('ver').checked == true) {result -= result - 56 + 1;}
if (result > 56 && (cats == 0 || catapp == 0)) {result -= result - 56 + 1;}
if (result > 4 && document.getElementById('inacc').checked == true) {result -= result - 4 + 1;}
if (result > 4 && document.getElementById('avpink').checked == true) {result -= result - 4 + 1;}
if (result > 4 && document.getElementById('info').checked == false) {result -= result - 4 + 1;}

var txtresult = '<span id="tattered-quality" style="color: #333333;">xTATTEREDx</span>';
current_rating = 0;
if ((result > -75 && rating_override == -1) || rating_override == 1) {txtresult = '<span id="fine-quality" style="color:#CA7A02;">+FINE+</span>'; current_rating = 1;}
if ((result > 4 && rating_override == -1) || rating_override == 2) {txtresult = '<span id="masterwork-quality" style="color: #0088CC;">≡EXCEPTIONAL≡</span>'; current_rating = 2;}
if ((result > 56 && rating_override == -1) || rating_override == 3) {txtresult = '<span id="exceptional-quality" style="color: #72A329;">☼MASTERWORK☼</span>'; current_rating = 3;}

document.getElementById('rater_results').innerHTML = '<br>The rating machine suggests a rating of <a onclick="show_num();"' + txtresult + '</a> <span id="numspan" style="display:none;">(' + result + ')</span>';
document.getElementById('showup').style.display = "inline";
}

function show_num(){
document.getElementById('numspan').style.display = "inline";
}

function looks_toggle(){
if (document.getElementById('looks').checked == true){
document.getElementById('extremelooksdiv').style.display = "inline";
rater_calc();
}else{
document.getElementById('extremelooksdiv').style.display = "none";
document.getElementById('extremelooks').checked = false;
rater_calc();
}
}

function overrate_toggle(){
if (document.getElementById('overrate').checked == true){
document.getElementById('overratediv').style.display = "inline";
rater_calc();
}else{
document.getElementById('overratediv').style.display = "none";
rating_override = -1;
rater_calc();
}
}


function ver_toggle(){
if (document.getElementById('ver').checked == true){
document.getElementById('verdiv').style.display = "inline";
rater_calc();
}else{
document.getElementById('verdiv').style.display = "none";
document.getElementById('verg').checked = false;
rater_calc();
}
}


function inacc_toggle(){
if (document.getElementById('inacc').checked == true){
document.getElementById('inaccdiv').style.display = "inline";
rater_calc();
}else{
document.getElementById('inaccdiv').style.display = "none";
document.getElementById('inaccg').checked = false;
rater_calc();
}
}

function rater_toggle_len_over(){
if (document.getElementById('rater_len_over').checked == true){
document.getElementById('rater_len_over_div').style.display = "inline";
overlength = length;
document.getElementById('vs_rad').checked = false;
document.getElementById('s_rad').checked = false;
document.getElementById('m_rad').checked = false;
document.getElementById('l_rad').checked = false;
document.getElementById('vl_rad').checked = false;

switch(overlength){
case 0:
document.getElementById('vs_rad').checked = true;
break;
case 1:
document.getElementById('s_rad').checked = true;
break;
case 2:
document.getElementById('m_rad').checked = true;
break;
case 3:
document.getElementById('l_rad').checked = true;
break;
case 4:
document.getElementById('vl_rad').checked = true;
break;
}

}else{
document.getElementById('rater_len_over_div').style.display = "none";
overlength = -1;
rater_calc();
}
}

function rater_testorphan(){
var rater_PageName = wgPageName.replace(/_/g, ' ');
var api = sajax_init_object();
api.open('GET', 'http://df.magmawiki.com/index.php/Special:WhatLinksHere/' + rater_PageName, true);
api.onreadystatechange = function() {
    document.getElementById('rater_orphan').innerHTML += ".";

    if(api.readyState==4) {
      if(api.status==200) {
        if(api.responseText.indexOf("No pages link to") == -1){
          document.getElementById('rater_orphan').innerHTML += '<span class="rater_green"> NO</span>';
          orphan = 0;
        }else{
          document.getElementById('rater_orphan').innerHTML += '<span class="rater_red"> YES</span>';         
          orphan = -1000000;             
        }
      } else {
        document.getElementById('rater_orphan').innerHTML += 'Unknown (error)';
      }
   }
};
api.send(null);
}

function rater_testdeadend(){
    var searchtxt = document.getElementById('bodyContent').innerHTML;

    var cnt = searchtxt.count('<a href="/index.php/');

    if (cnt == 0){
        document.getElementById('rater_deadend').innerHTML += '<span class="rater_red">YES</span>';    
    }else{
        document.getElementById('rater_deadend').innerHTML += '<span class="rater_green">NO</span> - ' + cnt + ' internal';    
    }

    inlinks = cnt;
}


function rater_testredlink(){

    var searchtxt = document.getElementById('bodyContent').innerHTML;

    var cnt = searchtxt.count('class="new');

    if (cnt == 0){
        document.getElementById('rater_redlink').innerHTML += '<span class="rater_green">0</span>';    
    }else{
        document.getElementById('rater_redlink').innerHTML += '<span class="rater_red">' + cnt + '</span>';    
    }

    redlinks = cnt;
}


function rater_testlength(){

    var searchtxt = document.getElementById('bodyContent').innerHTML;


  var re = new RegExp("<.*?>", "g");
  var replaced = searchtxt.replace(re, "");
    var splitted = replaced.split(" ");

   var lol = "Very Short"
   length = 0;
   if (splitted.length > 100) {lol = "Short"; length = 1;}
   if (splitted.length > 500) {lol = "Medium"; length = 2;}
   if (splitted.length > 2000) {lol = "Long"; length = 3;}
   if (splitted.length > 4000) {lol = "Very Long"; length = 4;}

    document.getElementById('rater_length_resp').innerHTML += lol;    
}

function rater_testcats(){
  var searchtxt = document.getElementById('bodyContent').innerHTML;

  if(searchtxt.indexOf("catlinks") != -1){
    cats = document.getElementById('mw-normal-catlinks').innerHTML.split("|").length;
    document.getElementById('rater_cats_resp').innerHTML += document.getElementById('mw-normal-catlinks').innerHTML + ' - ' + cats;
    document.getElementById('rater_cats_check').style.display = "inline";
  }else{
    document.getElementById('rater_cats_resp').innerHTML += "none!";
  }
}