Jump to content

User:TheTVExpert/sandbox.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by TheTVExpert (talk | contribs) at 16:18, 9 October 2020. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
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.
//updateLatestEpisode
//<nowiki>
$(function() {
	var uLEEdit = function(){
		document.getElementById("uLEDivSubmit").disabled = true;
		document.getElementById("uLEDivEdit").style.display = "none";
		document.getElementById("uLEDivSave").style.display = "inline";
	};
	var seasonArticleMain = "...";
	var seasonCheck = function(page,number,additionalDAB,seasonType){
		var pageToCheck = page + " (" + additionalDAB + seasonType + " " + number + ")";
		var returnValue = "test";
		var canReturn = false;
		new mw.Api().get( {
    		action: "query",
    		titles: [ pageToCheck ],
    		prop: "info",
		} ).then( function( ret ) {
    		$.each( ret.query.pages, function() {
        		if ( this.missing !== "" && this.redirect == null) {
					var counter = number+1;
       				seasonCheck(page,counter,additionalDAB,seasonType);
       			} else{
       				if(number != 1){
       					canReturn = true;
       					var counter2 = number-1;
       					seasonArticleMain = page + " (" + additionalDAB + seasonType + " " + counter2 + ")";
       				} else if (seasonType != "series"){
       					seasonCheck(page,1,additionalDAB,"series");
       				} else{
       					seasonArticleMain = "None found";
       				}
       			}
   			 } );
		}, function( error ) {
     
		} );
	};
	var uLE = function(type){
		var mainArticle, episodeList, seasonArticle;
		var seasonDABPrefix = "";
		var articleTitle = mw.config.get('wgPageName').replace(/_/g," ");
		if(type == "main"){
			mainArticle = articleTitle;
			var showNamePlainForEL = articleTitle;
			var showNamePlainForSA = articleTitle;
			if(/.* \(TV series\)/g.test(articleTitle)){
				showNamePlainForEL = articleTitle.slice(0,-12);
				showNamePlainForSA = articleTitle.slice(0,-12);
			} else if (/.* \([0-9]{4} TV series\)/g.test(articleTitle)){
				showNamePlainForSA = articleTitle.slice(0,-16);
				seasonDABPrefix = articleTitle.slice(-15,-1) + ", ";
			} else if (/.* \([A-Za-z]* TV series\)/g.test(articleTitle)){
				showNamePlainForSA = articleTitle.split(/ \([A-Za-z]* TV series\)/g)[0];
				seasonDABPrefix = articleTitle.match(/ \([A-Za-z]* TV series\)/g)[0].slice(2,-10);
			}
			episodeList = "List of " + showNamePlainForEL + " episodes";
			new mw.Api().get( {
    			action: "query",
    			titles: [ episodeList ],
    			prop: "info",
			} ).then( function( ret ) {
    			$.each( ret.query.pages, function() {
        			if ( this.missing == "" || this.redirect == "") {
        				episodeList = "None found";
        				uLEDivEpisodeList.innerHTML = "Episode list: <b>" + episodeList + "</b>";
        			}
   				} );
			}, function( error ) {
     
			} );
			seasonCheck(showNamePlainForSA,1,seasonDABPrefix,"season");
			seasonArticle = "Loading...";
			var time = 30;
			var interval = setInterval(function(){
				if(seasonArticleMain != "..."){
					seasonArticle = seasonArticleMain;
					uLEDivSeasonPage.innerHTML = "Season article: <b>" + seasonArticle + "</b>";
					clearInterval(interval);
				}
			},time);
		} else if(type == "list"){
			episodeList = articleTitle;
			var seasonPrefix = articleTitle.slice(8,-9);
			var mainTest = articleTitle.slice(8,-9) + " (TV series)";
			mainArticle = "Loading...";
			new mw.Api().get( {
    			action: "query",
    			titles: [ mainTest ],
    			prop: "info",
			} ).then( function( ret ) {
    			$.each( ret.query.pages, function() {
        			if ( this.missing == "" || this.redirect == "") {
        				mainArticle = articleTitle.slice(8,-9);
        				uLEDivMainArticle.innerHTML = "Main article: <b>" + mainArticle + "</b>";
        			} else{
        				mainArticle = mainTest;
        				uLEDivMainArticle.innerHTML = "Main article: <b>" + mainArticle + "</b>";
        			}
   				} );
			}, function( error ) {
     
			} );
			if (/.* \([0-9]{4} TV series\)/g.test(seasonPrefix)){
				seasonDABPrefix = seasonPrefix.slice(-15,-1) + ", ";
				seasonPrefix = seasonPrefix.slice(0,-16);
			} else if (/.* \([A-Za-z]* TV series\)/g.test(seasonPrefix)){
				seasonDABPrefix = seasonPrefix.match(/ \([A-Za-z]* TV series\)/g)[0].slice(2,-10);
				seasonPrefix = seasonPrefix.split(/ \([A-Za-z]* TV series\)/g)[0];
			}
			seasonCheck(seasonPrefix,1,seasonDABPrefix,"season");
			seasonArticle = "Loading...";
			var time2 = 30;
			var interval2 = setInterval(function(){
				if(seasonArticleMain != "..."){
					seasonArticle = seasonArticleMain;
					uLEDivSeasonPage.innerHTML = "Season article: <b>" + seasonArticle + "</b>";
					clearInterval(interval2);
				}
			},time2);
		} else if(type == "season"){
			seasonArticle = articleTitle;
			mainArticle = articleTitle.split(" (season ")[0];
			var mainArticleYear = articleTitle.match(/.* \([0-9]{4} TV series, season /g);
			var mainArticleCountry = articleTitle.match(/.* \([A-Za-z]* season /g);
			if(mainArticleYear != null){
				mainArticle = mainArticleYear[0].slice(0,-9) + ")";
			} else if (mainArticleCountry != null){
				mainArticle = mainArticleCountry[0].slice(0,-7) + "TV series)";
			} else{
				if(mainArticle == seasonArticle){
					mainArticle = articleTitle.split(" (series ")[0];
					mainArticleYear = articleTitle.match(/.* \([0-9]{4} TV series, series /g);
					mainArticleCountry = articleTitle.match(/.* \([A-Za-z]* series /g);
					if(mainArticleYear != null){
						mainArticle = mainArticleYear[0].slice(0,-9) + ")";
					} else if (mainArticleCountry != null){
						mainArticle = mainArticleCountry[0].slice(0,-7) + "TV series)";
					}
				} else{
					var mainArticleCheck = mainArticle + " (TV series)";
					new mw.Api().get( {
    					action: "query",
    					titles: [ mainArticleCheck ],
    					prop: "info",
					} ).then( function( ret ) {
    					$.each( ret.query.pages, function() {
        					if ( this.missing != "" && this.redirect == null) {
        						mainArticle = mainArticleCheck;
        						uLEDivMainArticle.innerHTML = "Main article: <b>" + mainArticle + "</b>";
        					}
   						} );
					}, function( error ) {
    	
					} );	
				}
			}
			if(mainArticle == seasonArticle){
				mainArticle = "None found";
				episodeList = "None found";
			} else{
				episodeList = "List of " + mainArticle + " episodes";
			}
		}
		var uLEDiv = document.createElement("DIV");
		uLEDiv.style.width = "100%";
		uLEDiv.style.backgroundColor = "green";
		uLEDiv.style.color = "white";
		uLEDiv.style.position = "fixed";
		uLEDiv.style.zIndex = "10";
		uLEDiv.style.left = "0";
		uLEDiv.style.bottom = "0";
		uLEDiv.id = "uLEDiv";
		var uLEDivMainArticle = document.createElement("DIV");
		uLEDivMainArticle.style.width = "26%";
		uLEDivMainArticle.style.float = "left";
		uLEDivMainArticle.style.textAlign = "left";
		uLEDivMainArticle.id = "uLEDivMainArticle";
		uLEDivMainArticle.innerHTML = "Main article: <b>" + mainArticle + "</b>";
		uLEDiv.appendChild(uLEDivMainArticle);
		var uLEDivEpisodeList = document.createElement("DIV");
		uLEDivEpisodeList.style.width = "32%";
		uLEDivEpisodeList.style.float = "left";
		uLEDivEpisodeList.style.textAlign = "center";
		uLEDivEpisodeList.id = "uLEDivEpisodeList";
		uLEDivEpisodeList.innerHTML = "Episode list: <b>" + episodeList + "</b>";
		uLEDiv.appendChild(uLEDivEpisodeList);
		var uLEDivSeasonPage = document.createElement("DIV");
		uLEDivSeasonPage.style.width = "26%";
		uLEDivSeasonPage.style.float = "left";
		uLEDivSeasonPage.style.textAlign = "right";
		uLEDivSeasonPage.id = "uLEDivSeasonPage";
		uLEDivSeasonPage.innerHTML = "Season article: <b>" + seasonArticle + "</b>";
		uLEDiv.appendChild(uLEDivSeasonPage);
		var uLEDivSub1 = document.createElement("P");
		uLEDivSub1.style.width = "1%";
		uLEDivSub1.style.float = "left";
		uLEDiv.appendChild(uLEDivSub1);
		var uLEDivEdit = document.createElement("BUTTON");
		uLEDivEdit.style.width = "3%";
		uLEDivEdit.style.float = "left";
		uLEDivEdit.style.textAlign = "center";
		uLEDivEdit.id = "uLEDivEdit";
		uLEDivEdit.innerHTML = "&#9999;";
		uLEDivEdit.title = "Change the articles";
		$(uLEDivEdit).click(uLEEdit);
		uLEDiv.appendChild(uLEDivEdit);
		var uLEDivSave = document.createElement("BUTTON");
		uLEDivSave.style.width = "3%";
		uLEDivSave.style.float = "left";
		uLEDivSave.style.textAlign = "center";
		uLEDivSave.style.display = "none";
		uLEDivSave.id = "uLEDivSave";
		uLEDivSave.innerHTML = "&#10003;";
		uLEDivSave.title = "Save your changes";
		//$(uLEDivSave).click(uLESave);
		uLEDiv.appendChild(uLEDivSave);
		var uLEDivSub2 = document.createElement("P");
		uLEDivSub2.style.width = "1%";
		uLEDivSub2.style.float = "left";
		uLEDiv.appendChild(uLEDivSub2);
		var uLEDivSubmit = document.createElement("BUTTON");
		uLEDivSubmit.style.width = "11%";
		uLEDivSubmit.style.float = "left";
		uLEDivSubmit.style.textAlign = "center";
		uLEDivSubmit.id = "uLEDivSubmit";
		uLEDivSubmit.innerHTML = "Update latest episode";
		uLEDiv.appendChild(uLEDivSubmit);
		var divStyle = document.head.appendChild(document.createElement("STYLE"));
		divStyle.innerHTML = "#uLEDiv:after {content: ''; display: table; clear: both;}";
		document.body.appendChild(uLEDiv);
	};
	var checkPage = function(){
		var checkPageParams = {
			action: 'parse',
			page: mw.config.get('wgPageName'),
			prop: 'templates',
			format: 'json'
		};
		var api = new mw.Api();
	
		api.get(checkPageParams).done(data => {
			for(i=0;i<data.parse.templates.length;i++){
				if(data.parse.templates[i]['*'] == "Template:Infobox television"){
					uLE("main");
				} else if(data.parse.templates[i]['*'] == "Template:Infobox television season"){
					uLE("season");
				} else if(/List_of.*episodes/g.test(mw.config.get('wgPageName'))){
					uLE("list");
				}
			}
		});
	};
	if(mw.config.get('wgNamespaceNumber') == 0 || mw.config.get('wgNamespaceNumber') == 2 || mw.config.get('wgNamespaceNumber') == 118){
		if(!document.getElementById("wikiPreview") && mw.config.get('wgAction') !== 'history' && mw.config.get('wgAction') !== 'info' && mw.config.get('wgDiffOldId') != null){
			checkPage();
		}
	}
});
//</nowiki>