Jump to content

User:Sal9000/SWLinfobox.js

From Wikipedia, the free encyclopedia
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://wiki.riteme.site/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

}