Utente:Alex brollo/ipt.js

Da Wikisource.

Nota: dopo aver pubblicato, potrebbe essere necessario pulire la cache del proprio browser per vedere i cambiamenti.

  • Firefox / Safari: tieni premuto il tasto delle maiuscole Shift e fai clic su Ricarica, oppure premi Ctrl-F5 o Ctrl-R (⌘-R su Mac)
  • Google Chrome: premi Ctrl-Shift-R (⌘-Shift-R su un Mac)
  • Internet Explorer / Edge: tieni premuto il tasto Ctrl e fai clic su Aggiorna, oppure premi Ctrl-F5
  • Opera: premi Ctrl-F5.
/*lista prefissi pagine ipt */

/* creazione oggetto globale per debugging */
ipt={};
ipt.pList=["It","Mul","Fr","En","La","El","Ru","Bn","Nap"];
(function() {
	// console.log("ipt versione 21.08 01")
	// conversione numero da bengali a arabo
	function b2a(numero) {
		var bn="০১২৩৪৫৬৭৮৯";
		var ar="";
		numero=numero+"".split("");
		for (i=0;i<numero.length;i+=1) {
			ar+=bn.indexOf(numero[i])+"";
		}
		return ar;
	}
	// conversione numero da arabo a bengali
	function a2b(numero) {
		var bn="০১২৩৪৫৬৭৮৯".split("");
		var br="";
		numero=(numero+"").split("");
		for (i=0;i<numero.length;i+=1) {
			br+=bn[numero[i]];
		}
		return br;
		
	}
	// aritmetica bengali: b=numero bengali; op=operatore; a=secondo operando numerico
	function aritB(b,op,a) {
		var bConv=b2a(b)*1;
		switch(op) {
			case "+": bConv=bConv+a; break; 
			case "-": bConv=bConv-a; break;
			case "*": bConv=bConv*a; break;
			case "%": bConv=bConv%a; break;
			case "**": bConv=bConv**a; break;
			
		}
		return a2b(bConv);
	}
	
	
	
	
	function nav(azione) {
		var pgnameEl=/(\w+wikisource:)(.+?)(:.+)(\/)([0-9০-৯]+)/.exec(mw.config.get("wgPageName"));
		var url="https://it.wikisource.org/wiki/";
		if (pgnameEl[1]=="Bnwikisource:") {
			if (azione=="next") pgnameEl[5]=aritB(pgnameEl[5],"+",1);
			if (azione=="previous") pgnameEl[5]=aritB(pgnameEl[5],"-",1);
		} else {
			if (azione=="next") pgnameEl[5]=pgnameEl[5]*1+1;
			if (azione=="previous") pgnameEl[5]=pgnameEl[5]*1-1;
		}
		if (azione=="up") {
			pgnameEl[2]="Index";
			pgnameEl[4]="";
			pgnameEl[5]="";
		}
		url+=pgnameEl.slice(1).join("");
		window.location.href=url;
	}
	function addArrows() {
		$(".navigation_arrows").append($('<img id="nav_left" src="//upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Arrleft.svg/25px-Arrleft.svg.png" title="previous page"><img id="nav_right" src="//upload.wikimedia.org/wikipedia/commons/thumb/f/f4/Arrright.svg/25px-Arrright.svg.png"  title="next page"><img id="nav_up" src="//upload.wikimedia.org/wikipedia/commons/thumb/6/6b/Arrup.svg/25px-Arrup.svg.png"  title="index page">'));
		$("#nav_left").click(function() {nav("previous");});
		$("#nav_right").click(function() {nav("next");});
		$("#nav_up").click(function() {nav("up");});
	}
	function preload() {
		
		// console.log("Chiamata funzione load");
		// elimina eventuale messaggio pagina vuota
		$(".noarticletext").remove();
		var pagina=/(\w+)wikisource:(.+)/.exec(mw.config.get("wgPageName"));
		// pagina[1] contiene il prefisso progetto, pagina[2] il nome della pagina
		pagina[1]=pagina[1].toLocaleLowerCase();
		// costruisco e aggiungo il warning
		var template="{{sharedwikisourcepage|#1|#2|#3}}"
			.replace("#1",pagina[1])
			.replace("#2",pagina[2])
			.replace("#3",mw.config.get("wgUserLanguage"));
		console.log(pagina);
		$.ajax({
		  		url: 'https://it.wikisource.org/w/api.php',
		  		data: {
		    		format: 'json',
		    		action: 'parse', 
					prop: 'text', 
					text: template,
					contentmodel: 'wikitext'
		   		},
		   		dataType: 'jsonp' // this is the important one!
			}).done(function(data) { 
					ipt.warning=$(data.parse.text["*"]);
					// carico il css
		            ipt.css='https://%1.wikisource.org/w/index.php?title=MediaWiki:Common.css&action=raw&ctype=text/css'.replace("%1",pagina[1]);
		            // ipt.css='https://' +  pagina[1] + '.wikisource.org/w/load.php?debug=false&amp;lang=' + pagina[1] + '&amp;modules=site&amp;only=styles&amp;skin=vector" type="text/css" media="all" />';
		            if (pagina[1]==="mul") ipt.css=ipt.css.replace("https://mul.wikisource.org","https://wikisource.org");
		           $('<link>')
					  .appendTo('head')
					  .attr({
					      type: 'text/css', 
					      rel: 'stylesheet',
					      href: ipt.css
					  });
					load(pagina[1],pagina[2]);
			    });
		
	}
	
	
	function load(progetto, titolo) {
			var html="";
			var url='https://'+progetto+'.wikisource.org/w/api.php';
			if (progetto==="mul") url='https://wikisource.org/w/api.php';
			$.ajax({
		  		url: url,
		  		data: {
		    		format: 'json',
		    		action: 'parse', 
					prop:"text|wikitext", 
					page: titolo
		   		},
		   		dataType: 'jsonp' // this is the important one!
			}).done(function(data) { 
				
			//	try {
				
					html=$(data.parse.text["*"]);
					
					$("a",html).each(function() {
						var href=$(this).attr("href");
						if (href!==undefined && href.indexOf("/wiki/")===0)  $(this).attr("href",href.replace("/wiki/","/wiki/"+progetto+"wikisource:"));
						if (href!==undefined && href.indexOf("/w/")===0)  $(this).attr("href",href.replace("/w/","//"+progetto+".wikisource.org/w/"));
					});
					
					ipt.html=html;
					ipt.titolo=titolo;
					if (html.eq(1).hasClass("pagetext")) {
						
						var pgContainer=$("<div class='prp-page-container'>"+
						"<div class='prp-page-content' style='width:49%; float:left;'></div>"+
						"<div class='prp-page-image'   style='width:49%; float:right;'></div></div>");
						$(".prp-page-content",pgContainer).append(html);
						html=pgContainer;
						var datiImg=/.+?:(.+)\/([0123456789০১২৩৪৫৬৭৮৯]+)/.exec(titolo);
						if (progetto=="bn") datiImg[2]=b2a(datiImg[2]);

						var codiceImm="[[File:"+datiImg[1]+"|1024px|page="+datiImg[2]+"]]";
						$.ajax({
					  		url: '/w/api.php',
					  		data: {
					    		format: 'json',
					    		action: 'parse', 
								prop:'text', 
								text: codiceImm
					   		},
					   		dataType: 'jsonp' // this is the important one!
						}).done(function(data) { 
							var t=data.parse.text["*"];
							var imgPag=$(t);
							$("img",imgPag).css("width","100%").css("height","auto");
							$(".prp-page-image").append(imgPag);
						});
						
					}
					
					$("#mw-content-text").append(ipt.warning);
					$("#mw-content-text").append(html);
					if ($(".pagetext").length>0) addArrows();
					$(".noarticletext").css("display","none");
					$("span a[href*='wsexport']").css("display","none");
					$(".ws-noexport").has("input").css("display","none");
			//	}
			//	catch(err) {
			//		console.log("Errore routine elaborazione risposta ajax in load()");
			//	}
			});
		}
	/* modifica link verso pagine ipt */
	for (i=0;i<ipt.pList.length;i+=1) {
			$("a[href*='"+ipt.pList[i]+"wikisource:']").each(function() {
				var href=$(this).attr("href").replace("&action=edit&redlink=1",""); 
				$(this).attr("href",href);
				$(this).removeClass("new");
			});
		}
		
	/* verifica che la pagina corrente è ipt */
	for (i=0;i<ipt.pList.length;i+=1) {
	
		if (mw.config.get("wgPageName").indexOf(ipt.pList[i]+'wikisource:')===0) {
			preload();
			break;
		}
	}

})();

/*se sì:
    caricamento css remoto
    caricamento css specifico per ipt
    caricamento warning
    caricamento html
    modifica html
    visualizzazione html
*/