Jump to content

User:Magnus Manske/sifter.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Nihiltres (talk | contribs) at 03:59, 10 December 2010 (Added a simple test to make sure that the sifter_old_content doesn't get overwritten if you click "Reviews" twice in a row.). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/*

To install:

* Get account on en.wikipedia.org
* Go to http://en.wikipedia.org/wiki/Special:Mypage/vector.js
* Add the line importScript('User:Magnus Manske/sifter.js');
to the page
* Go to (for example) http://en.wikipedia.org/wiki/Gulf_Snapping_Turtle
* Behold the "Reviews" tab next to "Read" (on the right; you may have
to force-reload the page once to activate the JavaScript)
* Click on the "Reviews" tab to get a list of all reviewed revisions,
and links to the partner (here: EOL) page, as well as the reviewer
page


*/

var sifter_html ;
var sifter_old_content ;
var sifter_active = false;

$(document).ready( function(){
  if ( wgNamespaceNumber != 0 ) return ; // Nevermind...
  var url = "http://toolserver.org/~magnus/sifter_api.php?query=wikipage&page=" + wgPageName + "&format=json&callback=?" ;
  $.getJSON ( url , function (data) {
    if ( data.length > 0 ) create_sifter_menu ( data ) ;
  } ) ;
}) ;

function create_sifter_menu ( data ) {
  var html = "<li id='sifter_menu'><a href='#' onclick='show_sifter_dialog(1);return false'><span>Reviews</span></a></li>" ;
  $('#p-views ul').prepend ( html ) ;

  sifter_html = "<h1>Reviews</h1><table border='1' class='wikitable'>" ;
  sifter_html += "<tr><th>Partner</th><th>Partner page</th><th>Wikipedia revision</th><th>Reviewer</th><th>Reviewed</th></tr>" ;
  $.each ( data , function ( k , v ) {
    sifter_html += "<tr>" ;
    sifter_html += "<td>" + v.partner_name + "</td>" ;
    sifter_html += "<td><a href='" + v.partner_url + "'>" + v.partner_id + "</a></td>" ;
    sifter_html += "<td><a href='" + wgScript  + "?title=" + escape(wgPageName) + "&oldid=" + v.revision + "'>" + v.revision + "</a> <a href='" + wgScript  + "?title=" + escape(wgPageName) + "&oldid=" + v.revision + "&diff=0'>(show latest changes)</a></td>" ;
    sifter_html += "<td><a href='" + v.reviewer_url + "'>" + v.reviewer + "</a></td>" ;
    sifter_html += "<td>" + v.partner_ts + "</td>" ;
    sifter_html += "</tr>" ;
  } ) ;
  sifter_html += "</table>" ;
  sifter_html += "<div><a href='#' onclick='show_sifter_dialog(2);return false'>Restore page</a></div>" ;
}

function show_sifter_dialog ( mode ) {
  if ( mode == 1 && !sifter_active ) {
    sifter_old_content = $('#content').html();
    $('#content').html(sifter_html);
    sifter_active = true;
  }
  if ( mode == 2 ) {
    $('#content').html(sifter_old_content);
    sifter_active = false;
  }
  return false ;
}