MediaWiki

Common.js

From Dogcraft Wiki

m (Bugfix [2/2]: Shows hidden categories when users select that option in their User Preferences. The other half of this fix is in Common.css, which hides hidden categories by default)
mNo edit summary
Line 52: Line 52:
/*== Shows hidden categories when users select that option in their User Preferences (this is technically a bugfix) ==*/
/*== Shows hidden categories when users select that option in their User Preferences (this is technically a bugfix) ==*/
if ( mw.user.options.get( 'showhiddencats' ) === 1 ) {
if ( mw.user.options.get( 'showhiddencats' ) == 1 ) {
document.getElementById('mw-hidden-catlinks').style.display = 'block';
document.getElementById('mw-hidden-catlinks').style.display = 'block';
}
}

Revision as of 18:12, 29 July 2024

/* Any JavaScript here will be loaded for all users on every page load. */

/* Navigation Popups */
/* Currently Disabled ΓΌ
mw.loader.load('/load.php?modules=ext.gadget.Navigation_popups');*/
window.popupAdminLinks = false;
window.popupActionsMenu = false;
window.popupStructure = 'lite';
window.popupSubpopups = false;
window.popupSummaryData = false;

function randomPageImage( category ) {
	params = {
	        action: 'query',
	        list: 'categorymembers',
	        cmtitle: 'Category:' + category,
	        cmprop: 'ids',
	        cmtype: 'page',
	        cmlimit: '5000',
	        format: 'json'
    },
    api = new mw.Api();
	
	return new Promise(function(resolve,reject) { 
		api.get( params ).done( function ( data ) {
		    var pages = data.query.categorymembers,
		        page,
		        cat_random = Math.floor(Math.random() * pages.length),
		        id_random = pages[cat_random].pageid;
		
		    var paramsPI = {
		        action: 'query',
		        prop: 'pageimages',
		        pageids: id_random,
		        piprop: 'original',
		        format: 'json'
		    };
		    api.get( paramsPI ).done( function (data ) {
		        resolve(data.query.pages[id_random].original);
		    });
		} );
	});
}

$(document).ready(function() {
	var pagename = mw.config.get('wgPageName'),
		namespace = mw.config.get('wgNamespaceNumber');
	// var indicator = document.querySelectorAll(".mw-indicators");
	// var indicator1 = indicator[0];
	
	// if (indicator1.childNodes.length !== 1) {document.getElementById("tagline").innerHTML = indicator1.innerHTML;}
	
	/*== Shows hidden categories when users select that option in their User Preferences (this is technically a bugfix) ==*/
	if ( mw.user.options.get( 'showhiddencats' ) == 1 ) {
		document.getElementById('mw-hidden-catlinks').style.display = 'block';
	}
	
	/*== Hides the actions button and indicators while in the Visual editor ==*/
	
	mw.hook( 've.activationComplete' ).add( function () {
		$('.content .top').hide();
	});
	
	mw.hook( 've.deactivationComplete' ).add( function () {
			$('.content .top').show();
	});
	
	/*== Dogcraft.net topbar: Automatically enabled to display the Dogcraft.net topbar on the Help Resources(WIP) and Rules pages. (moved from gadget) ==*/
	$(document).ready(function() {
		if (mw.config.get('wgPageName') === "Rules" || mw.config.get('wgPageName') === "Help_Resources")
		{
			$('.nav .nav-title a span').text('Dogcraft');
			$('#wikiNav').removeClass('expanded');
		}
	});
	
	/*== Shows edit button on Rules and Help Resources for those who can edit it ==*/
	if (pagename === 'Rules' || pagename === 'Help_Resources') {
		if (mw.config.get('wgIsProbablyEditable')) {
			$('#wikiActions').show();
		}
	}
	
	/* pagecount */
	var pagecount = document.createElement('div'),
		link = document.createElement('a'),
		pages = document.createElement('span'),
		text = document.createElement('span'),
		actions = document.getElementById('wikiActions'),
		api = new mw.Api(),
		num = api.get( {
			action:"query",
			meta:"siteinfo",
			siprop:"statistics",
			formatversion:"2"
		});
	
	pagecount.id = 'pagecount';
	link.href = "/wiki/Special:AllPages?namespace=0&hideredirects=1";
	text.textContent = 'pages';
	
	$.when( num ).then( function ( data ) {
		pages.textContent = data.query.statistics.articles;
		link.append(pages, text);
		pagecount.append(link);
	
		actions.parentNode.insertBefore(pagecount, actions);
		mw.hook( 'userjs.pagecount.done' ).fire();
	});
	
	/*= Top header banner =*/
	if (namespace === 14 || namespace === 3004 || namespace == 2 || namespace == 0) {
		var headbanner = document.getElementById("headbanner");
		if (headbanner) {
			var firstHeading = document.querySelectorAll("#content h1:first-of-type")[0];//document.getElementById("firstHeading");
			if (headbanner.hasAttribute("title")) { 
				if (headbanner.title == "auto") {
					randomPageImage(pagename.split(":")[1].split("/")[0]).then(function(result) {
						firstHeading.style.setProperty('--banner-padding', "300px");
						firstHeading.style.setProperty('--banner-image', 'url(' + result.source + ')');
					});
				} else {
					firstHeading.style.setProperty('--banner-padding', headbanner.title);
					firstHeading.style.setProperty('--banner-image', 'url(' + headbanner.textContent + ')');
				}
			}
			firstHeading.classList.add('banner');
			$("#contentSub").prepend($("main > .content > .top"));
		}
		
		/** custom category page marker class 
		* added to firstHeading because requesting the page <body> (which normally has marker classes) on every category page load is 
		* not a good idea - its the parent for the whole page. The firstHeading is siblings with every other 1st child of the page content,
		* which includes the div.top on pages with a top banner image set. (But this can be used on non-bannered cat pages as well)
		*/
		if ( mw.config.get('wgCategories').includes('Custom category pages') ) {
			document.querySelectorAll("#content h1:first-of-type")[0].classList.add("category-custom");
		}
	}

	//temp: move news-info indicator into pagecount's place
	if ((mw.config.get('wgNamespaceNumber') === 3004) && (mw.config.get('wgUserName') == null)) {
		$('#siteSub > .top')[0].classList.add('indicator-right');
	}

});

//temp: move news-info indicator into pagecount's place
mw.hook( 'userjs.pagecount.done' ).add( function() {
	if ((mw.config.get('wgNamespaceNumber') === 3004) && ($(window).width() > 700) && (mw.config.get('wgUserName') != null)) {
		$("#pagecount").append($(".mw-indicators.mw-body-content")); 
	}
});
This page was last modified on 29 July 2024, at 18:12. (2 months ago)