Difference between revisions of "MediaWiki:Common.js"

From University Innovation Fellows
Jump to navigation Jump to search
Line 90: Line 90:
  
 
if( window.protectedNamespace.indexOf( mw.config.get( 'wgCanonicalNamespace' )) !== -1 ){
 
if( window.protectedNamespace.indexOf( mw.config.get( 'wgCanonicalNamespace' )) !== -1 ){
if( mw.config.get("skin") === "minerva" ){
 
// Force redirect to desktop mode
 
mw.config.get( 'wgServer' ) + "/wiki/" + mw.config.get("wgPageName") + "&mobileaction=toggle_view_desktop";
 
}
 
 
$("#firstHeading").text( mw.config.get( 'wgTitle' ) );
 
$("#firstHeading").text( mw.config.get( 'wgTitle' ) );
 
$('#p-navigation > .body ul').empty();
 
$('#p-navigation > .body ul').empty();

Revision as of 16:38, 15 July 2020

window.protectedNamespace = [ "2020", "2020_talk", "2021", "2022", "2023", "2024", "2025" ];

$( document ).ready( function(){
	if( mw.config.get('wgIsMainPage') )
	{
		$('#sbl-breadcrumbs').remove();
	}
	
	// Open all UIF link in new tab
	$('#p-UIF').children().find('a').attr('target', '_blank');
	
	if ( mw.config.get( 'wgPageName' ) === "Special:Badtitle" ){
		$('#pt-login').hide();
	}

	// Image copy link widget
	if( mw.config.get("wgCanonicalNamespace") === "File" ){
		mw.loader.using('mediawiki.widgets').then( function (){
			var copyImageLink = new mw.widgets.CopyTextLayout( {
				title: 'Copy image link', 
				copyText: mw.config.get( 'wgServer' ) + "/wiki/" + mw.config.get("wgPageName")
			} );
			$( '#firstHeading' ).after( copyImageLink.$element );
		});
	}

	// CategoryTree
	$('.CategoryTreeLabelPage').first().prev().before("---------------------------<br>");
	$('.CategoryTreeEmptyBullet').each( function(){ 
		if( $(this).next().next().val() === undefined){
			$(this).parent().hide();
		}
	});
	
	// CategoryTree Sorting
	var container = $( $( "div.CategoryTreeSection" ).first().children().last()[0] ),
		items = container.children();

	items.sort( function(a, b){
		if( $( a ).find(".CategoryTreeLabelNs14").length === 0){
			return 0;
		}

		// Get text of the category link
		firstText = $(a).find("a").text();
		secondText = $(b).find("a").text();

		// Regex to get the cohort year
		firstMatch = /(\d{4})/ig.exec( firstText.trim() );
		secondMatch = /(\d{4})/ig.exec( secondText.trim() );

		// If nothing is found, status will remain same
		if( firstMatch === null && secondMatch === null ) { 
			return 0;
		}

		// If first element match
		if( firstMatch !== null) {
			if( secondMatch !== null ){
				return firstMatch[1] > secondMatch[1] ? -1 : 1;
			} else {
				return -1;
			}
		} else {
			return secondMatch !== null ? 1 : 0;
		}
	});
	container.append( items );
});



// Sidebar
$( document ).ready(function(){

	function ModifySidebar( section, name, link ) {		
		var node = document.getElementById( 'p-'+ section )
						   .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( window.protectedNamespace.indexOf( mw.config.get( 'wgCanonicalNamespace' )) !== -1 ){
		$("#firstHeading").text( mw.config.get( 'wgTitle' ) );
		$('#p-navigation > .body ul').empty();
		$('#p-tb').remove();
		$('#p-UIF').remove();
		$('#p-ratePage-vote-title').remove();
		
		if( !(mw.config.get( 'wgUserGroups' ).indexOf("bureaucrat") !== -1) ) {
			$("#left-navigation").empty();
			$("#right-navigation").empty();
		}
		
		// Navigation Links 
		if ( mw.config.get( 'wgTitle' ) === "Training Overview" ){
			ModifySidebar( 'navigation', 'Back to Main Page', 'https://universityinnovation.org/wiki/Main_Page' );
		} else {
			ModifySidebar( 'navigation', 'Back to Overview', 'https://universityinnovation.org/wiki/2020:Training_Overview' );
		}
		mw.loader.using( 'mediawiki.api', function(){
			var api = new mw.Api(),
				sections = [ 1, 2, 3 ],
				pageName = mw.config.get( 'wgCanonicalNamespace' ).slice(0,4) + ":Sidebar";

			sections.forEach(function(item){
				params = {
					"action": "parse",
					"format": "json",
					"page": pageName,
					"wrapoutputclass": "",
					"section": item,
					"disablelimitreport": 1,
					"disableeditsection": 1
				};
				
				api.get(params).done(function( data){
					$('a', data.parse.text['*']).each( function(){
						if( item == 1){
							// Session Links
							ModifySidebar( 'Sessions', $(this).text(), $( this).attr("href") );
						}
						else if( item ==2 ){
							// Resources Links
							ModifySidebar( 'Discussions', $(this).text(), $( this).attr("href") );
						}
						else if( item ==3 ){
							// Resources Links
							ModifySidebar( 'Resources', $(this).text(), $( this).attr("href") );
						}
					});
	
					// Make current page non clickable
					$('.portal .body > ul').children().each( function(){
					    link = $( this ).children()[0].href;
					    if ( link === window.location.href ) {
					        $( $( this ).children()[0]).css({
					            "pointer-events": "none",
					            "cursor": "default",
					            "color": "#000",
					            "font-weight": "bold"
					        });
					    }
					});
				});
			});

		});
	} else {
		$('#p-Sessions').remove();
		$('#p-Discussions').remove();	
		$('#p-Resources').remove();		
	}
});

// Gadget-HotCat
mw.loader.load( '/index.php?title=MediaWiki:Gadget-HotCat.js&action=raw&ctype=text/javascript' );

// Gadget - QRCode
mw.loader.load('/index.php?title=MediaWiki:QRCode.js&action=raw&ctype=text/javascript');

// Gadget - CreateFellow2020
mw.loader.load('/index.php?title=MediaWiki:Gadget-2020Cohort.js&action=raw&ctype=text/javascript');

// Gadget - UpdateWikiBio
mw.loader.load('/index.php?title=MediaWiki:Gadget-UpdateWikiBio.js&action=raw&ctype=text/javascript');