Jump to content

User:Sal9000/SWLinfobox.js

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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.
//
// SWLinfobox.js
// If the page contain SWLs, it adds a show/hide button on top of the page.
// The button produces an infobox collecting all SWLs, and also highlights them throughout the page.
//
// Salvatore Loguercio, 2011
// email:salvatore.loguercio@Gmail.com
//

if($(".swl").length!=0) {    // if there are SWLs on the page

var title = document.title.split("-")[0];

function makeLink(str) {
  return "<a href=\"http://en.wikipedia.org/wiki/Category:SWL/" + str + "\">" + str + "</a>";
}


function makeTable() {         // make an infobox with all SWLs, displayed as "predicate-object"

  var swlArray = $('.swl'); // initialize array;
  
  var content = $.makeArray(swlArray).map(function (elem) {    // map on every swl found
    var inner1 = elem.firstChild,
        inner2,
        result = [];

    if (inner1) {
        var inner2 = inner1.firstChild;
    }
 
    var line = '<tr><td>' + 
            [makeLink(inner1.className), inner2.href.split(/\//).pop()].join('</td><td>')  // table formatting stuff
             + '</tr>\n';

    return line;
  });

  return '<table class="infobox" style="width: 22em; text-align: left; font-size: 88%; line-height: 1.5em">' + content + '</table>'; // make a pretty infobox, same style as PBB infoboxes.
}

// toggle function

function toggle(obj) {

	var el = document.getElementById(obj);

	if ( el.style.display != 'none' ) {

		el.style.display = 'none';  // hide the infobox
		$(".swl").css("border",""); // hide the borders on SWLs

	}

	else {

		el.style.display = '';                           // show infobox..
		$(".swl").css("border","3px solid lightgreen");  // ..and borders
	}

}



var swltab='<div id="swltab" style="display:none">' + makeTable().replace(/,/g, '') + '</div>';   // instantiate makeTable, as a <div> with an id to be used by the toggle function. Initially not displayed.


$('#siteSub').append(swltab);  // Add it right below the page title

$('#firstHeading').append('<input style="background-color:lightgreen;padding: 0.3em;position:absolute; right:15px; top:90px" type="button" value="Semantic Wiki Links" onclick=toggle("swltab") />');    // toggle button

}