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 22:22, 19 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(data){
		document.getElementById("uLEDivSubmit").disabled = true;
		document.getElementById("uLEDivEdit").style.display = "none";
		document.getElementById("uLEDivSave").style.display = "inline";
		document.getElementById("uLEDivMainArticle").innerHTML = "Main article: <input id='uLEDivMainArticleInput' value='" + data.data.param + "'/>";
		document.getElementById("uLEDivEpisodeList").innerHTML = "Episode list: <input id='uLEDivEpisodeListInput' value='" + data.data.param2 + "'/>";
		document.getElementById("uLEDivSeasonPage").innerHTML = "Season article: <input id='uLEDivSeasonPageInput' value='" + data.data.param3 + "'/>";
	};
	var uLESave = function(){
		mainArticle = document.getElementById("uLEDivMainArticleInput").value;
		episodeList = document.getElementById("uLEDivEpisodeListInput").value;
		seasonArticle = document.getElementById("uLEDivSeasonPageInput").value;
		document.getElementById("uLEDivSubmit").disabled = false;
		document.getElementById("uLEDivEdit").style.display = "inline";
		document.getElementById("uLEDivSave").style.display = "none";
		document.getElementById("uLEDivMainArticle").innerHTML = "Main article: <b>" + mainArticle + "</b>";
		document.getElementById("uLEDivEpisodeList").innerHTML = "Episode list: <b>" + episodeList + "</b>";
		document.getElementById("uLEDivSeasonPage").innerHTML = "Season article: <b>" + seasonArticle + "</b>";
	};
	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 uLEData;
		var mainArticle, episodeList, seasonArticle;
		mw.loader.getScript(mw.util.wikiScript('index') + '?title=User:TheTVExpert/sandbox2.js&action=raw&ctype=text/javascript').then(function() {
			uLEData = window.updateLatestEpisodeData.main(mw.config.get('wgPageName').replace(/_/g," "));
			if(uLEData != null){
				mainArticle = uLEData[0];
				episodeList = uLEData[1];
				seasonArticle = uLEData[2];
			} else{
				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({param: mainArticle, param2: episodeList, param3: seasonArticle},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>