ব্যবহারকারী:Mahir256/Gadget-EIS.js

উইকিসংকলন থেকে
টীকা: সংরক্ষণ করার পর, পরিবর্তনসমূহ তৎক্ষণাৎ নাও দেখাতে পারে। আপনার ব্রাউজারের ক্যাশ কিভাবে এড়াবেন তা জানতে এখানে ক্লিক করুন।
  • ফায়ারফক্স / সাফারি: Shift ধরে রাখা অবস্থায়পুনঃলোড করুন-এ ক্লিক করুন, অথবা Ctrl-F5 বা Ctrl-R (ম্যাক-এ ⌘-R) চাপুন
  • গুগল ক্রোম: Ctrl-Shift-R (ম্যাক-এ ⌘-Shift-R) চাপুন
  • ইন্টারনেট এক্সপ্লোরার: Ctrl ধরে রাখা অবস্থায় Refresh-এ ক্লিক করুন, অথবা Ctrl-F5 চাপুন
  • অপেরা: মেনু → ব্যবস্থাপনাসমূহ-এ যান (ম্যাকে অপেরা → পছন্দসমূহ) এবং এরপর গোপনীয়তা ও সুরক্ষা → ব্রাউজিং-এর তথ্য পরিষ্কার করুন → ক্যাশে করা ছবি ও ফাইলগুলি

অন্যান্য ব্রাউজার সম্পর্কে বিশদ নির্দেশাবলীর জন্য, উইকিপিডিয়া:আপনার ক্যাশে বাইপাস করুন দেখুন।

mw.loader.load('//wikisource.org/w/index.php?title=MediaWiki:Base.js&action=raw&ctype=text/javascript'); // দেখি কি হয়
/*


Edit In Sequence, version 0.0 ottobre 2016
Alex brollo

Logics:
1. disable navigation and save/preview buttons
2. load a small new navigation + level setting tool 
3. use normal edit boxes uploading wikicode and saving edited wikicode from them by ajax statements

Versión modificada (marzo 2017) por
Ninovolador

Cambios:
1. Traducido parcialmente al español
2. Compatibilidad con easyLST (sistema de seccionamiento con almohadillas (##seccion##) )
3. Agregados botones para previsualizar páginas sin cambiar

সংস্করণ (জানুয়ারি ২০১৮) মাহির২৫৬ পরিবর্তিত
*/

mw.loader.load("jquery.ui");


var alex={};
var eis={};
eis.cp={};


(function ($,mw) {
	// console.log("passo 1");
	if(mw.config.get("wgCanonicalNamespace")!=="Page" || mw.config.get("wgAction")!=="edit") { 
		console.log("eis non eseguito"); 
		return false;}
	// console.log("passo 2");
	activate();
	$(document).keyup(function(e) { 
		if (e.keyCode == 27 && $("#divPreview").is(":visible")) {    
			$('#wpPreviewExit').trigger('click');
			
		}
		
	});
	/* passo 1 :  costruire l'ambiente */
	
	
	// in nsPage, and in view mode, eis environment is built
	
	


function activate() {
	// access button
	
	

	$('<li id="ca-eis"><span><a href="#" title="ক্রমানুসারে সম্পাদনা করেন" >ইআইএস</a></span></li>').click(function() {
			$("#wptextbox1").css("font-size",".9pc");
			creaEis();
			pp();
		}).insertAfter($("#ca-edit"));
	// loading wikitext of three pages

	return false;
}

// initializing function, it disables some buttons, builds preview box, build action buttons
function creaEis() {
	    // disabilitazioni
		$("#ca-proofreadPagePrevLink a, #ca-proofreadPageNextLink a").remove();
		$("#wpSave").remove();
		$("#wpPreview, #wpDiff, #wikiPreview").css('display','none').attr('accesskey','');
		$(".mw-summary, .editCheckboxes").remove();
		$("#ca-eis").remove();

	    //$('<div id="sfondoeis" style="position:fixed; top:0; left:0; z-index:100;"></div>').appendTo($("#content"));
		
	
		var box=$("<div id='editBox' style='background-color:#dfdfdf; min-height:10px; display:inline-block;position:fixed; top:0; left:0; z-index:100' ></div>");
		if (mw.user.options.get("gadget-barbaforcutanew")===null)  $("#content").append(box); else box.css("position","static").appendTo($(".editButtons"));

	    
		var qb='<span id="radiobuttons">'+
			'<span class="quality0"><input tabindex="5" title="Pagine_SAL_00%" type="radio" value="0" name="wpQuality"></span>'+
			'<span class="quality2"><input tabindex="6" title="Pagine_SAL_50%" type="radio" value="2" name="wpQuality"></span>'+
			'<span class="quality1"><input tabindex="7" title="Pagine_SAL_25%" type="radio" value="1" name="wpQuality"></span>'+
			'<span class="quality3"><input tabindex="8" title="Pagine_SAL_75%" checked="" type="radio" value="3" name="wpQuality"></span>'+
			'<span id="radioQuality4" class="quality4" style="display:none;"><input tabindex="9" title="Pagine_SAL_100%" type="radio" value="4" name="wpQuality">&nbsp;&nbsp;</span></span>';

		qb+='<span>&nbsp;&nbsp;'+
			'<button class="baseButton" id="wpPrev" style="display: inline; padding: 1px 2px;" type="button" title="পূর্বের পাতায় যান" ><small><</small></button>'+
			'<button class="baseButton" id="wpNext" style="display: inline; padding: 1px 2px;" type="button" title="পরের পাতায় যান" ><small>></small></button>'+
			'<button class="baseButton" id="wpSave" style="display: inline; padding: 1px 2px;" type="button" title="আপনার পরিবর্তনগুলি সংরক্ষিত করুন ও পরের পাতায় যান [alt+shift+s]" accesskey="s" ><small>প্রকাশ করুন ও আগান</small></button>'+
			'<button class="baseButton" id="wpPreviewSave" style="display: inline; padding: 1px 2px;" type="button" title="আপনার পরিবর্তনগুলি প্রাকদর্শন করুন [alt+shift+p]" accesskey="p" ><small>প্রাকদর্শন করুন</small></button>'+
			'<button class="baseButton" id="wpPreviewPrev" style="display: inline; padding: 1px 2px;" type="button" title="পূর্বের পাতা প্রাকদর্শন করুন" ><small>পূর্বের পাতা দেখেন</small></button>'+
			'<button class="baseButton" id="wpPreviewNext" style="display: inline; padding: 1px 2px;" type="button" title="পরের পাতা প্রাকদর্শন করুন" ><small>পরের পাতা দেখেন</small></button>'+
			'<button class="baseButton" id="wpExit" style="display: inline; padding: 1px 2px;" type="button" title="আপনার পরিবর্তনগুলি বাতিল করুন ও বের হয় যান" ><small>বাতিল</small></button>'+
			'&nbsp;<input type="text" id="wpComment" value="Edición en secuencia (EIS)" size="50"></span>';
		$("#editBox").append($(qb));
		
		$("span[class^='quality'] input").click(function() {
			var sumtext = "সম্পাদিত";
			switch($(this).attr("value")){
				case "0": sumtext = "লেখাবিহীন"; break;
				case "1": sumtext = "মুদ্রণ সংশোধন করা হয়নি"; break;
				case "2": sumtext = "সমস্যাসঙ্কুল"; break;
				case "3": sumtext = "মুদ্রণ সংশোধন করা হয়েছে"; break;
				case "4": sumtext = "বৈধকরণ"; break;
			}
			$("#wpComment").val("/* "+sumtext+" */");
		});
		
		$("#wpExit").click(function(){
			window.open("/wiki/"+eis.cp.title,"_self"); 
		});
		$("#wpSave").click(function(){
			pageSave();
		});
		$("#wpPreviewNext").click(function(){
			pagePreviewNext();
		});
		$("#wpPreviewPrev").click(function(){
			pagePreviewPrev();
		});
		$("#wpPreviewSave").click(function(){
			pagePreview();
		});
		$("#wpPrev").click(function(){
			$("#divPreview").css("display","none");
			pp(prevPage());
		});
		$("#wpNext").click(function(){
			$("#divPreview").css("display","none");
			pp(nextPage());
		});
		//creazione box divPreview
		var divPreview=$("<div>").css({
			"position":"absolute",
			"top":"20px",
			"left":"100px",
			"width":"580px",
			"height":"700px",
			"overflow":"scroll",
			"padding":"20px",
			"z-index":"150",
			"background-color":"white",
			"border":"1px dotted black",
			"display":"none"
			}).attr("id","divPreview")
			.append($("<div>").attr("id","previewContent"));

		$("#content").append(divPreview);
		$("#divPreview").draggable();
		var x=$("<div>").attr("style",'position:absolute; top:0;right:0;cursor:pointer; z-index:200;')
			.append($('<button class="baseButton" id="wpPreviewExit" style="display: inline; padding: 1px 2px;" type="button" title="Salir" ><small>Cancelar</small></button>').click(function(){
				$("#divPreview").toggle(); 
				if  (!window.proofreadpage_raw_lst) window.easy_lst();
				
			}))
			.append($("#wpSave").clone(true));
		x.appendTo($("#divPreview"));
		eis.baseImg=$(".prp-page-image img").attr("src").match(/(.+page)\d+(-\d+px.+)/);
		// eis.baseImg[1]+[numero pagina]+eis.baseImg[2] è l'url dell'immagine
		// della pagina [numero pagina)]
		// può essere caricato con 
		// $(".prp-page-image img").attr("src",eis.baseImg[1]+211+eis.baseImg[2]);
	}
	function nextPage() {
		var np=eis.cp.title.match(/(.+\/)([০১২৩৪৫৬৭৮৯]+)$/);
		np[2] = np[2].replace(/[\u09e6-\u09ef]/g,function(c) { return '0123456789'[(c.charCodeAt(0)&0xf)-0x6]; } );
		return np[1]+String(np[2]*1+1).replace(/\d/g,function(c) { return '০১২৩৪৫৬৭৮৯'[(c.charCodeAt(0)&0xf)]; } );
	}
	function prevPage() {
		var np=eis.cp.title.match(/(.+\/)([০১২৩৪৫৬৭৮৯]+)$/);
		np[2] = np[2].replace(/[\u09e6-\u09ef]/g,function(c) { return '0123456789'[(c.charCodeAt(0)&0xf)-0x6]; } );
		return np[1]+String(np[2]*1-1).replace(/\d/g,function(c) { return '০১২৩৪৫৬৭৮৯'[(c.charCodeAt(0)&0xf)]; } );;
	}	
	// splits wiki code into header,body,footer
	function splitPagina(tpp) {
		var testo = ["", "", ""];
		testo[0] = tpp.substring(0, tpp.indexOf("</noinclude>") + 12);
		testo[2] = tpp.substring(tpp.lastIndexOf("<noinclude>"));
		testo[1] = tpp.substring(testo[0].length, tpp.length - testo[2].length);
		return testo;
	}
	// reads three pages code (current, previous, previous of previous)	
	function pp(pageName) {
		if (pageName===undefined) pageName=mw.config.get("wgPageName");
		pageName=pageName.replace(/_/g," ");
		var pagine={};
		var t=(/(.+\/)(.+)$/).exec(pageName);
		var t_lat = t[2].replace(/[\u09e6-\u09ef]/g,function(c) { return '0123456789'[(c.charCodeAt(0)&0xf)-0x6]; } );
		var	t1=String(t_lat*1-1).replace(/\d/g,function(c) { return '০১২৩৪৫৬৭৮৯'[(c.charCodeAt(0)&0xf)]; } );
		var	t2=String(t_lat*1-2).replace(/\d/g,function(c) { return '০১২৩৪৫৬৭৮৯'[(c.charCodeAt(0)&0xf)]; } );
		var p_cor=pageName;
		var p_prec1=t[1]+t1;
		var p_prec2=t[1]+t2;
		console.log(p_prec2,p_prec1,p_cor);
		var api = new mw.Api();
		$("#firstHeading").text("ক্রমানুসারে সম্পাদনা করছেন"+pageName);
		// lettura di tre pagine
		
		api.get( {
		    action: 'query',
		    prop: 'revisions',
			titles:p_prec2+"|"+p_prec1+"|"+p_cor,
			rvprop:"content"
		} ).done( function ( data ) {
			    alex.query=data.query.pages;
			    $.each(data.query.pages, function(index,value) {
					if (alex.query[index].missing!==undefined) 
						pagine[alex.query[index].title]=["","",""]; 
					else 
						pagine[alex.query[index].title]=splitPagina(alex.query[index].revisions[0]["*"]);
			    });
				eis.p_2=[p_prec2,pagine[p_prec2]];
				eis.p_1=[p_prec1,pagine[p_prec1]];
				eis.p_0=[p_cor,pagine[p_cor]];
				alex.p_2=eis.p_2;
				alex.p_1=eis.p_1;
				alex.p_0=eis.p_0;
				testoPag2Prec=alex.p_2[1];
				testoPagPrec=alex.p_1[1];
				
				// settaggi comuni
				eis.cp.basePageName=t[1];
				eis.cp.basePageNum=t_lat;
				eis.cp.title=eis.p_0[0];
				mw.config.set("wgTitle",eis.cp.title.slice(7));
				if ($("#croptool").length>0) {
						eis.cp.croptool=$("#t-cropNew a").attr("href").replace(/\d+$/,eis.cp.basePageNum);
						$("#t-cropNew a").attr("href",eis.cp.croptool);
					}
				var urlImg=$(".prp-page-image img").attr("src").match(/(.+page)(\d+)(-.+)/);
				eis.cp.imageUrl=urlImg[1]+eis.cp.basePageNum+urlImg[3];
				
				// assegno valori alle variabili globali testoPagPrec e testo2PagPrec per renderli visibili a autoPt e autoRi7
				testoPagPrec=eis.p_1[1];
				testo2PagPrec=eis.p_2[1];
				$("#radioQuality4").css("display","none");
				$(".prp-page-image img").attr("src",eis.cp.imageUrl);
				
				if (eis.p_0[1].toString()===",,") {
					// caso pagina corrente non esistente
					// leggo la pagina...
					$.get( mw.config.get("wgServer")+"/w/index.php?title="+eis.cp.title+"&action=edit&redlink=1", function( data ) {
						$("#wpTextbox1").val($("#wpTextbox1",$(data)).val());
						
						$("#wpHeaderTextbox").val($("#wpHeaderTextbox",$(data)).val());
						$("#wpFooterTextbox").val($("#wpFooterTextbox",$(data)).val());
						//$("#wpHeaderTextbox").val(eis.cp.header);
						//$("#wpFooterTextbox").val(eis.cp.footer);
						
						// eseguo postOCR e autoRi
						$("#button4").click();
						$("#button0").click();
						eis.p_0[1][1]= $("#wpTextbox1").val();
						eis.cp.user=mw.config.get("wgUserName");
						eis.cp.level="1";
						if  (!window.proofreadpage_raw_lst) window.easy_lst();
						
					});
				} else {
					// caso pagina esistente
					eis.cp.user=eis.p_0[1][0].match(/user=\"([^"]*)\" \/>/)[1];
					eis.cp.level=eis.p_0[1][0].match(/level=\"(\d+)\" /)[1];
					eis.cp.header=$.trim(eis.p_0[1][0].replace(/<noinclude\><pagequality.+?>/,"").replace("</noinclude>",""));
					eis.cp.footer=$.trim(eis.p_0[1][2].replace("<noinclude>","").replace("<references/>","").replace("</noinclude>",""));
					$("#wpHeaderTextbox").val(eis.cp.header);
					$("#wpFooterTextbox").val(eis.cp.footer);
					$("#wpTextbox1").val(eis.p_0[1][1]);
					if  (!window.proofreadpage_raw_lst) window.easy_lst();
					
					// if level=3 and user is another one, or if level=4 display radiobutton4
					if ( (eis.cp.level==="3" && eis.cp.user!==mw.config.get("wgUserName")) || eis.cp.level==="4") $("#radioQuality4").css("display","inline");
					
					$("#radiobuttons input[value='"+eis.cp.level+"']").click();
				}
	
		});
		$(".prp-page-image img").css("top","0");
		$("#wpTextbox1").scrollTop(0);
	};
	function chiudiEditBox () {
		$("#sfondoeis").toggle();
	}
	function pageBuild() {
		var template= '<noinclude><pagequality level="#LEVEL#" user="#USER#" />#HEADER#</noinclude>' + 
		'#BODY#<noinclude>#FOOTER#\n</noinclude>';
		var wikicode= template.replace("#HEADER#",$("#wpHeaderTextbox").val())
			.replace("#BODY#",$("#wpTextbox1").val())
			.replace("#FOOTER#",$("#wpFooterTextbox").val());
		if (eis.cp.level ===$("input:checked","#radiobuttons").val()) {
			 wikicode=wikicode.replace("#LEVEL#",eis.cp.level).replace("#USER#", eis.cp.user);
		} else {wikicode=wikicode.replace("#LEVEL#",$("input:checked","#radiobuttons").val())
		   	    	.replace("#USER#", mw.config.get("wgUserName"));
		}

		return wikicode;
	}
	
	
	function pageSave() {
		if  (!window.proofreadpage_raw_lst) window.restore_lst();
		var wikicode=pageBuild();
		new mw.Api().postWithToken( 'csrf', {
			action: 'edit',
			title: eis.cp.title,
			summary:$("#wpComment").val(),
			text: wikicode
		}).done(function( data ) {
	        if ( data && data.edit && data.edit.result === 'Success' ) {
				console.log("OK, pagina " + eis.p_0[0] + " salvata");
				$("#wpNext").click();
			} else {
				alert("Errore nel salvataggio della pagina");l
			}
		});
	}
	function pagePreview() {
		// toggleButton generico (nasconde parent())
		/*	var toggleButton=$('<img>')
		    .attr("src","//upload.wikimedia.org/wikipedia/commons/f/f8/Tooltip-CloseButton.png") 
		    .attr("style",'position:absolute; top:0;right:0;cursor:pointer; z-index:200;')
			.click(function(){$(this).parent().toggle();}); 
		*/
		//caricamento preview
		if  (!window.proofreadpage_raw_lst) window.restore_lst();
		var wikicode=pageBuild();
		$("#divPreview").toggle();
		$.ajax({
         	url: mw.util.wikiScript( 'api' ),
        	data: {
            	format: 'json',
            	action: 'parse',
				contentmodel: 'proofread-page',
				summary: "ajax preview",
            	text: wikicode,
            	time: $.now()
            	},
        	dataType: 'json',
        	type: 'POST',
        	success: function( data ) { 
        		if ( data && data.parse ) {
					
					$("#previewContent").html($(data.parse.text["*"]));

            	} else if ( data && data.error ) {
                		alert( 'Error: API returned error code "' + data.error.code + '": ' + data.error.info );
            			} else {
                			alert( 'Error: Unknown result from API.' );
						}
        		},
        		error: function( xhr ) {
        			alert( 'Error: Request failed.' );
			}
    	});
	}
	function pagePreviewPrev() {
		
	var imagen=$(".prp-page-image img").attr("src").match(/.+page(\d+)-\d+px.+/);
	$(".prp-page-image img").attr("src",eis.baseImg[1]+(imagen[1]*1-1)+eis.baseImg[2]);
	}
	function pagePreviewNext() {
		
	var imagen=$(".prp-page-image img").attr("src").match(/.+page(\d+)-\d+px.+/);
	$(".prp-page-image img").attr("src",eis.baseImg[1]+(imagen[1]*1+1)+eis.baseImg[2]);
	}
	

})(jQuery,mw);