Game Cloud Wiki
Advertisement

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/** Wikia rating *******************************
  * By [[User:Spang|Spang]]
  * Voting system
  * Add "ratings.disabled = true" without the quotes to your JS to disable
  * **Compressed to save space/bandwidth etc. Use http://javascript.about.com/library/blformat.htm to see formatted source
  */

function asyncRequest(httpMethod, url, callbackFunctions, requestBody) {
	var request = sajax_init_object();
	if (request == null) {
		// Oops! We do not have XMLHttp...
		return;
	}
	request.open (httpMethod, url, true);
	request.onreadystatechange = function () {
		if (request.readyState != 4) {
			return;
		}

 		if (request.status == 200) {
			callbackFunctions['success'](request);
		} else {
			callbackFunctions['failure'](request);
		}
	};

	request.setRequestHeader('Pragma', 'cache=yes');
	request.setRequestHeader('Cache-Control', 'no-transform');
	request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
	request.send(requestBody);
}

//<nowiki>
var ratings = new Object();
ratings.getCallback = {
	success : function(o) {
		var j = jQuery.parseJSON(o.responseText);
		try {
			with (j.query.wkvoteart[wgArticleId]) {
				if (typeof votesavg != undefined && votesavg) {
					ratings.avgVote = (5 >= votesavg >= 1 ? Math
							.round(votesavg * 10) / 10 : 5);
					ratings.text[0] = ('Average rating: ' + ratings.avgVote)
				}
				if (typeof (uservote) != 'undefined' && uservote) {
					ratings.myVote = uservote;
					ratings.hasVoted = true
				} else {
					ratings.hasVoted = false
				}
				ratings.paint(0)
			}
		} catch (e) {
		}
	},
	failure : function(o) {
		ratings.out('Connection failure :(')
	}
};
ratings.vote = function(a) {
	if (wgUserName == null) {
		window.location = '/wiki/Special:Userlogin?returnto=' + wgPageName;
		return
	}
	var b = (ratings.hasVoted == true ? 'update' : 'insert');
	ratings.get = asyncRequest('GET',
			'/api.php?format=json&action=' + b
					+ '&list=wkvoteart&wkuservote=1&wkctime=5&wkpage='
					+ wgArticleId + '&wkvote=' + a, ratings.voteCallback, null);
	ratings.myVote = a;
	ratings.paint(a, 'Sending the rating...');
	ratings.votingInProgress = true
};
ratings.voteCallback = {
	success : function(o) {
		var j = jQuery.parseJSON(o.responseText);
		if (j.item.wkvoteart[3] != undefined && ratings.retried != true) {
			ratings.retried = true;
			ratings.out('failed, retrying...');
			ratings.get = asyncRequest('GET',
					'/api.php?format=json&action=delete&list=wkvoteart&wkpage='
							+ wgArticleId, ratings.retry, null);
			return
		}
		;
		try {
			with (j.item.wkvoteart[0] == undefined ? j.item.wkvoteart
					: j.item.wkvoteart[0]) {
				ratings.hasVoted = true;
				ratings.myVote = vote;
				ratings.avgVote = Math.round(avgvote * 10) / 10;
				if (ratings.avgVote > 5)
					ratings.avgVote = 5
			}
		} catch (e) {
			ratings.out('Error: ' + e);
			ratings.votingInProgress = false;
			return
		}
		ratings.votingInProgress = false;
		ratings.out('Thank you for rating!');
		ratings.text[0] = ('Average rating: ' + ratings.avgVote);
		ratings.timeout = setTimeout('ratings.paint(0)', 1000)
	},
	failure : function(o) {
		ratings.votingInProgress = false;
		ratings.out('Connection failure :(')
	}
};
ratings.retry = {
	success : function(o) {
		ratings.get = asyncRequest(
						'GET',
						'/api.php?format=json&action=insert&list=wkvoteart&wkuservote=1&wkctime=5&wkpage='
								+ wgArticleId + '&wkvote=' + ratings.myVote,
						ratings.voteCallback, null)
	},
	failure : function(o) {
		ratings.out('error')
	}
};
ratings.out = function(m) {
	document.getElementById('ratingMsg').innerHTML = m
};
ratings.paint = function(n, m) {
	if (ratings.votingInProgress == true) {
		return;
	}
	document.getElementById('vote-1').style.backgroundPosition = '0 0';
	document.getElementById('vote-2').style.backgroundPosition = '0 0';
	document.getElementById('vote-3').style.backgroundPosition = '0 0';
	document.getElementById('vote-4').style.backgroundPosition = '0 0';
	document.getElementById('vote-5').style.backgroundPosition = '0 0';
	for ( var l = 1; l <= n; l++) {
		document.getElementById('vote-' + l).style.backgroundPosition = '0 -34px';
	}
	if (n === 0 && (ratings.myVote != false || ratings.avgVote != undefined)) {
		var a = ratings.hasVoted == true ? '0 -34px' : '0 -17px';
		var b = ratings.hasVoted != false ? ratings.myVote : ratings.avgVote;
		for ( var l = 1; l <= b; l++) {
			document.getElementById('vote-' + l).style.backgroundPosition = a;
		}
		if (l - ratings.avgVote < 1 && l <= 5 && ratings.hasVoted != true) {
			var p = ratings.avgVote - (l - 1);
			var q = 0;
			switch (true) {
			case 0 < p && p <= .2:
				q = '-51px';
				break;
			case .2 < p && p <= .4:
				q = '-68px';
				break;
			case .4 < p && p <= .6:
				q = '-85px';
				break;
			case .6 < p && p <= .8:
				q = '-102px';
				break;
			case .8 < p && p < 1:
				q = '-119px';
				break;
			default:
			}
			;
			document.getElementById('vote-' + l).style.backgroundPosition = '0px ' + q;
		}
	}
	;
	if (wgUserName == null && n != 0)
		ratings.out('Log in to rate');
	else if (m == undefined)
		ratings.out(ratings.text[n]);
	else
		ratings.out(m)
};
ratings.setup = function() {
	if (wgIsArticle == false || ratings.disabled == true)
		return;
	if ((wgNamespaceNumber != 0 && wgNamespaceNumber != 2)
			|| (wgAction != 'view' && wgAction != 'purge'))
		return;
	if (skin == "oasis") {
		var a = document.getElementsByClassName('container')[0];
		if (!a)
			return false;
		var parentMarkup = a.parentNode;
	} else {
		var a = document.getElementById('catlinks');
		if (!a)
			return false;
		var parentMarkup = a;
	}
	ratings.p = document.createElement('div');
	ratings.p.innerHTML = '<h2>What do you think about this page?</h2><div id="ratingBody"><div><ul id="ratingStars" onmouseout="ratings.paint(0);"><li id="vote-1" class="voteStar" onmouseover="ratings.paint(1)" onclick="ratings.vote(1);">&nbsp;1</li><li id="vote-2" class="voteStar" onmouseover="ratings.paint(2)" onclick="ratings.vote(2);"> 2</li><li id="vote-3" class="voteStar" onmouseover="ratings.paint(3)" onclick="ratings.vote(3);"> 3</li><li id="vote-4" class="voteStar" onmouseover="ratings.paint(4)" onclick="ratings.vote(4);"> 4</li><li id="vote-5" class="voteStar" onmouseover="ratings.paint(5)" onclick="ratings.vote(5);"> 5&nbsp;</li></ul></div><span id="ratingMsg">Rate this page!</span></div>';
	ratings.p.id = 'p-rating';
	parentMarkup.parentNode.insertBefore(ratings.p, parentMarkup);
	ratings.text = new Array('Rate this page!', 'A crap', 'Boring', 'Funny',
			'Excellent', 'Perfect!');
	ratings.get = asyncRequest(
					'GET',
					'/api.php?format=json&action=query&list=wkvoteart&wkuservote=1&wkctime=5&wkpage='
							+ wgArticleId, ratings.getCallback, null)
};

ratings.setup();
Advertisement