MediaWiki:Corrections.js

Z Wikiźródeł, wolnej biblioteki

Uwaga: aby zobaczyć zmiany po opublikowaniu, może zajść potrzeba wyczyszczenia pamięci podręcznej przeglądarki.

  • Firefox / Safari: Przytrzymaj Shift podczas klikania Odśwież bieżącą stronę, lub naciśnij klawisze Ctrl+F5, lub Ctrl+R (⌘-R na komputerze Mac)
  • Google Chrome: Naciśnij Ctrl-Shift-R (⌘-Shift-R na komputerze Mac)
  • Internet Explorer / Edge: Przytrzymaj Ctrl, jednocześnie klikając Odśwież, lub naciśnij klawisze Ctrl+F5
  • Opera: Naciśnij klawisze Ctrl+F5.
/**************
 * corrections 
 * na podstawie https://wikisource.org/wiki/MediaWiki:Corrections.js
 * 
 **************/

// Until we can use dependencies to ensure load of Base.js first, we need this,
// window.ws_msg and window.get_opt_list in this script.
if(!self.ws_messages) self.ws_messages = { };

function ws_msg(name) {
   var m = self.ws_messages[name];
   if(m) return m; else return name;
}

if(!String.HTMLize){
  String.prototype.HTMLize = function() {
    var chars = new Array('&','<','>','"');
    var entities = new Array('amp','lt','gt','quot');
    var string = this;
    for (var i=0; i<chars.length; i++) {
      var regex = new RegExp(chars[i], "g");
      string = string.replace(regex, '&' + entities[i] + ';');
    }
    return string;
  };
}


function close_corr_summary() {
	var summary = document.getElementById("corr_summary");
	if(!summary) return;
	summary.innerHTML = "";
	summary.parentNode.removeChild(summary);
}

function scroll_to_correction(k) {
	var selectedPosX = 0;
	var selectedPosY = 0;
	var corrlistpos = (self.corr_state ? self.corrlist : self.corrlist_h)
	for (var i = 0; i < corrlistpos.length; i++) {
		var item = corrlistpos[i];
		if(i==k) {
			element=item;
			while(element != null){
				selectedPosX += element.offsetLeft;
				selectedPosY += element.offsetTop;
				element = element.offsetParent;
			}
			window.scrollTo(selectedPosX,selectedPosY);
		}
	}
}

function pr_popup(){
	var corr_container = document.getElementById("corr_summary");
	if(corr_container) { close_corr_summary(); return; }
	corr_container = document.createElement("div");
	corr_container.setAttribute("id","corr_summary");

	var spanlist = document.getElementsByTagName("span");
	corr_container.style.cssText="position:fixed;min-width:16em;max-width:35em;max-height:50%;scroll:auto;right:0.5em;background:#ffffff;z-index:1;border:1px solid;padding:5px;overflow:auto;";
	corr_container.innerHTML = self.corr_list;
	var content = document.getElementById("bodyContent");
	content.insertBefore(corr_container,content.firstChild);
}

function pr_toggle(){
	if ( !self.corrlist.length ) {
		return;
	}
	$(self.corrlist).toggle();
	$(self.corrlist_h).toggle();
	mw.notify( ws_msg(self.corr_state ? 'corr_msg' : 'corr_msg_r'), { tag: 'Corrections' } );
	self.corr_state = !self.corr_state;
	$("#t-corr_toggle a")[0].text = ws_msg(self.corr_state ? 'corr_link_toggle' : 'corr_link_toggle_r');
	$("#t-corr_toggle a")[0].title = ws_msg(self.corr_state ? 'corr_link_toggle_tooltip' : 'corr_link_toggle_tooltip_r');
}

function pr_typos() {

	if( ! ( mw.config.get('wgNamespaceNumber')==0 ) ) return;

	var str = '<div style="right:2em;position:fixed;"><a href="javascript:close_corr_summary()"><img src="//upload.wikimedia.org/wikipedia/commons/9/97/WikEd_close.png"/></a></div><h4>'+ ws_msg('corr_list') + ":</h4><ul>"; 
	var spanlist = $('span.n0k');
	for(var i=0; i< spanlist.length; i++) {
		var item = spanlist[i];
		w1=w2='';
		if(item.previousSibling && item.previousSibling.data) { 
			context1=item.previousSibling.data.split(' ');
			if(context1.length>1) w1 = context1[context1.length - 2];
		}
		if(item.nextSibling && item.nextSibling.data) { 
			context2=item.nextSibling.data.split(' ');
			if(context2.length>1) w2 = context2[1]; 
		}
		//hidden "m" char is to avoid rtl languages firefox bug
		var newline = '<li>'+'<a style=\"color:#000000;\" href=\"javascript:scroll_to_correction('+i+');\"> « '+w1+' <span style=\"color:#ff0000;\">#pre#</span> '+ w2.HTMLize() + ' »  →<span style=\"color:#ffffff;\">m</span>« ' + w1.HTMLize() + ' <span style=\"color:#00A000;\">#post#</span> ' + w2 +' » </a></li>'; 
		newline = newline.replace("#pre#",item.title.replace(/^\[w druku\] '(.*)'$/g, "$1").HTMLize());
		newline = newline.replace("#post#",item.innerHTML);
		str = str + newline; 
	}
	str=str+'</ul>';
	self.corr_list = str;
	self.corrlist = spanlist;
	self.corrlist_h = $('span.n0kh');
	self.corr_state = true;

	if (spanlist.length) {
		mw.loader.using( 'mediawiki.util', function() {
		mw.util.addPortletLink ('p-tb', 'javascript:pr_popup();', ws_msg('corr_link')+" ("+spanlist.length+")", 't-corrections', ws_msg('corr_link_tooltip'), null, '#t-upload' );
		mw.util.addPortletLink ('p-tb', 'javascript:pr_toggle();', ws_msg('corr_link_toggle'), 't-corr_toggle', ws_msg('corr_link_toggle_tooltip'), null, '#t-upload' );
		});
	}
}

$(pr_typos);