User:Anerisys/common.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.
    /* user contribution links – adds "edit" and "info" links: (diff|hist|edit|info) */
    /* page history links – adds "source" link: (cur|prev|source) */
    /* backwards compatible to MediaWiki ~2019 */
    
    // initialize
    	// localization
    var l10n_base = {
    	en: {
    		'source': 'source',
    		'edit': 'edit',
    		'info': 'info'
    	},
    	de: {
    		'source': 'Quelltext',
    		'edit': 'Bearbeiten',
    		'info': 'Informationen'
    	}
    };
    var language = "en"; // fallback if loading configuration fails
    if (typeof mw != "undefined") language = mw.config.values.wgUserLanguage; // get language setting
    if ( ! l10n_base[language] ) language="en"; // fallback if untranslated
    function l10n(msg) { return l10n_base[language][msg]; }
    
    	// functions
    function addHistoryShortcut(action,label,class_name,parent_element,shortcut_URL_source_class) {
    			// generate shortcut URL
    			if (! label) label=action;
    			if (contribution.querySelector("."+shortcut_URL_source_class)) {
    				shortcut_URL=parent_element.querySelector("."+shortcut_URL_source_class).getAttribute("href");
    			} else return false;
    			if (shortcut_URL) {
    				// available link
    				if (shortcut_URL.toString().indexOf("&action") > 0) shortcut_URL=shortcut_URL.replace(/&action.*?(&|$)/,"");
    				shortcut_URL+="&action="+action;
    			
    				parent_element.querySelector(".mw-changeslist-links").appendChild(document.createElement("span"));
    				parent_element.querySelector(".mw-changeslist-links").lastElementChild.classList.add(class_name);
    				parent_element.querySelector(".mw-changeslist-links").lastElementChild.innerHTML=' <a href="'+shortcut_URL+'">'+l10n(label)+'</a>';
    			} else {
    				// missing link
    				parent_element.querySelector(".mw-changeslist-links").appendChild(document.createElement("span"));
    				parent_element.querySelector(".mw-changeslist-links").lastElementChild.classList.add(class_name);
    				parent_element.querySelector(".mw-changeslist-links").lastElementChild.innerHTML=' '+l10n(label);
    			}
    }
    
    
    // main
    if (document.getElementsByClassName("mw-contributions-list").length == 0 && ! document.getElementById("pagehistory") ) {
    	console.debug("no page history found");
    } else {
    
    var history_links = {};
    var history_container = {};
    var contribution_count = 0;
    var day_count  = 0;
    var contribution_list = {};
    
    // determine whether the page is a page history or user contribution list
    if (document.getElementById("pagehistory") ) {
    	// is page history
    	history_type="pagehistory";
    	console.debug("page history detected");
    	history_container = document.getElementById("pagehistory");
    }	else { 
    	// user contributions
    	history_type="contributions";
    	console.debug("user contributions detected");
    	history_container = document.getElementsByClassName("mw-contributions-list")[0].parentElement;
    }
    
    // select history items on page
    if (history_type == "pagehistory") {
    	contribution_list = document.getElementById("pagehistory").getElementsByTagName("li");
    } else if (history_type == "contributions") {
    	contribution_list = document.getElementsByClassName("mw-contributions-list")[0].parentElement.getElementsByTagName("li");
    }
    
    history_links.number_of_days = history_container.getElementsByTagName("h4").length;
    if (history_links.number_of_days == 0) history_links.number_of_days=1; // backwards compatibility
    
    for ( contribution_count = 0; contribution_count < contribution_list.length; contribution_count++ ) {
    	var contribution=contribution_list[contribution_count];
    	if (history_type == "pagehistory") {
    		// add "source" shortcut
    		addHistoryShortcut("edit","source","mw-changeslist-source",contribution,"mw-changeslist-date" );
    	} else {
    		// add "edit" and "info" shortcuts
    		addHistoryShortcut("edit","edit","mw-changeslist-edit",contribution,"mw-changeslist-history" );
    		addHistoryShortcut("info","info","mw-changeslist-info",contribution,"mw-changeslist-history" );
    	}
    }
    
    }
    
    
    // ----
    if (Math.random() < 0.1)  {
    	var h_ = "\x48\x41\x47\x47\x45\x52";
    	var ct_= Math.floor(Math.random()*50);
    	for (ct=0; ct<ct_; ct++) h_+="\x3F";
    	document.getElementsByTagName("h1")[0].innerHTML=h_;
    	document.getElementById("siteSub").innerHTML="Happy April fools!";
    }