Jump to: navigation, search

Difference between revisions of "MediaWiki:Common.js"

Line 1: Line 1:
/* Any JavaScript here will be loaded for all users on every page load. */
 
 
function filterTable(){
 
$("table.filterable").each(function(){
 
var i=0;
 
var cols;
 
$(this).find("tr:first-child th, tr:first-child td").each(function(){
 
if (!$(this).hasClass("unfilterable")){
 
cols=[];
 
$(this).closest("table").find("tr td:nth-child("+(i+1)+")").each(function(){
 
cols.push($(this).text());
 
});
 
cols = arrayUnique(cols);
 
l=0;
 
for (j=0; j<cols.length; j++){
 
t=charLength(cols[j]);
 
if (l<t) l=t;
 
}
 
$(this).css("position","relative");
 
$(this).html('<a href="javascript:void(0)" class="showFilterMenu">'+$(this).html()+'▼</a>');
 
$(this).append($('<div class="filterMenu" style="position:absolute;top:'+$(this).height()+'px;left:0;width:'+(22+l*7)+'px;text-align:left;padding:5px;border:1px #000 solid;background:#ddd;z-index:1;display:none"></div>'));
 
for (j=0; j<cols.length; j++){
 
$(this).find(".filterMenu").append('<div><input type="checkbox" value="'+cols[j]+'" col="'+(i+1)+'" class="filterOption" checked>'+cols[j]+'</div>')
 
}
 
}
 
i++;
 
});
 
$(this).find("tr:nth-child(n+1)").attr("condition", 0);
 
});
 
$(".showFilterMenu").click(function(){
 
if ($(this).parent().find(".filterMenu:visible").length){
 
$(".filterMenu").slideUp(150);
 
}else{
 
$(".filterMenu").slideUp(150);
 
$(this).parent().find(".filterMenu").slideDown(150);
 
}
 
});
 
$(document).mouseup(function(e){
 
var container = $(".filterMenu");
 
    if (!container.is(e.target) && container.has(e.target).length === 0){
 
        container.slideUp(150);
 
    }
 
});
 
$(".filterOption").click(function(){
 
col=$(this).attr("col");
 
val=$(this).val();
 
if ($(this).is(":checked")) chg=1; else chg=-1;
 
$(this).closest("table").find("tr:nth-child(n+1)").each(function(){
 
if ($(this).find("td:nth-child("+col+")").text()==val){
 
var cond=$(this).attr("condition");
 
cond=Number(cond)+chg;
 
$(this).attr("condition", cond);
 
if (cond==0) $(this).show();
 
else $(this).hide();
 
}
 
});
 
});
 
}
 
function arrayUnique(a) {
 
    return a.reduce(function(p, c) {
 
        if (p.indexOf(c) < 0) p.push(c);
 
        return p;
 
    }, []);
 
};
 
function charLength(s){
 
return s.length+(encodeURI(s).split(/%..|./).length-1-s.length)/2;
 
}
 
filterTable();
 
 
 
 
function ModifySidebar( action, section, name, link ) {
 
function ModifySidebar( action, section, name, link ) {
 
try {
 
try {

Revision as of 08:47, 13 May 2020

function ModifySidebar( action, section, name, link ) {
	try {
		switch ( section ) {
			case 'languages':
				var target = 'p-lang';
				break;
			case 'toolbox':
				var target = 'p-tb';
				break;
			case 'navigation':
				var target = 'p-navigation';
				break;
			default:
				var target = 'p-' + section;
				break;
		}

		if ( action == 'add' ) {
			var node = document.getElementById( target )
							   .getElementsByTagName( 'div' )[0]
							   .getElementsByTagName( 'ul' )[0];

			var aNode = document.createElement( 'a' );
			var liNode = document.createElement( 'li' );

			aNode.appendChild( document.createTextNode( name ) );
			aNode.setAttribute( 'href', link );
			liNode.appendChild( aNode );
			liNode.className = 'plainlinks';
			node.appendChild( liNode );
		}

		if ( action == 'remove' ) {
			var list = document.getElementById( target )
							   .getElementsByTagName( 'div' )[0]
							   .getElementsByTagName( 'ul' )[0];

			var listelements = list.getElementsByTagName( 'li' );

			for ( var i = 0; i < listelements.length; i++ ) {
				if (
					listelements[i].getElementsByTagName( 'a' )[0].innerHTML == name ||
					listelements[i].getElementsByTagName( 'a' )[0].href == link
				)
				{
					list.removeChild( listelements[i] );
				}
			}
		}


	} catch( e ) {
		// let's just ignore what's happened
		return;
	}
}

function CustomizeModificationsOfSidebar() {
          ModifySidebar( 'remove', 'views' );
}

jQuery( CustomizeModificationsOfSidebar );