Przejdź do zawartości

MediaWiki:Gadget-pope.js

Z Wikipedii, wolnej encyklopedii

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.
$(document).ready(function(){
	
if ('object' === typeof POPE) {
	// there is already defined instance of POPE
	return;
}

// i18n
mw.messages.set({
	"POPE_empty_text": "Wpisz tytuł artykułu",
	"POPE_url_text": "Podaj tylko tytuł artykułu, nie cały URL",
	"POPE_does_not_exist_text": "Podany przez Ciebie tytuł artykułu nie istnieje. Upewnij się, że poprawnie wpwowadziłeś nazwę artykułu",
	"POPE_page": "Wikipedia:Prośby_o_przejrzenie_edycji",
	"POPE_sending_form_text": "Trwa wysyłanie formularza...",
	"POPE_summary": "Nowe zgłoszenie: [[:$1]]",
	"POPE_save_ok": "Twoje zgłoszenie zostało pomyślnie zapisane<br /><br />W najbliższym czasie zostanie ono rozpatrzone przez redaktorów Wikipedii",
	"POPE_save_error":"Wystąpił błąd podczas zapisywania zgłoszenia!<br /><br />Przepraszamy",
	"POPE_first_button_text": "Dodaj nowe zgłoszenie",
	"POPE_page_label": "Tytuł strony",
	"POPE_comment_label": "Dodatkowy komentarz",
	"POPE_comment_placeholder": "Dodatkowy komentarz (opcjonalnie)",
	"POPE_button2_text": "Zgłoś prośbę",
	"POPE_section_line": "<!-- Nowe prośby o przejrzenie edycji wstawiamy na górze -->",
	"POPE_copyright_full":"Klikając „Zgłoś prośbę”, wyrażasz nieodwołalną zgodę na udostępnianie "+
			"Twojego komentarza na licencjach <a href=\"//creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA 3.0</a>"+
			" i <a href=\"//www.gnu.org/copyleft/fdl.html\">GFDL</a> oraz na wykorzystanie go w dowolnej formie"+
			" pod warunkiem podania przynajmniej hiperłącza lub adresu URL do <a href=\""+mw.util.getUrl('Wikipedia:Prośby o przejrzenie edycji') + "\">"+
			"strony, na której zostanie opublikowany</a>. "+
			"Zobacz szczegółowe informacje o <a href=\"//wikimediafoundation.org/wiki/Warunki_korzystania\">warunkach korzystania</a>.",
	"POPE_expand": "[rozwiń]",
	"POPE_hide": "[zwiń]",
	"POPE_copyright_short": "Klikając „Zgłoś prośbę” zgadzasz się na warunki licencji CC-BY-SA 3.0 i GFDL ",
	"POPE_copyright_short_anon": "i udostępnienie swojego adresu IP "
});

if (mw.config.get('wgPageName') != mw.msg('POPE_page')) {
	// gadget works only on POPE page
	return;
}

var POPE = {

WyslijFormularz: function()//jak formularz zostanie wypelniony to musi zostac przetworzony -> to dzieje sie tutaj
{
	var form=document.getElementById('POPEformularz');
	var strona=form.POPEinput.value.trim();
	var textarea=form.POPEtextarea.value.trim();
	var button=form.POPEwyslij;
	
	var trescuwagi;
 
	var numberOfBug=0;
	
	if(!strona||strona==='')
		numberOfBug=1;
	if(strona.substr(0, 4)=="http")
		numberOfBug=2;
	if(POPE.sprawdzCzyIstnieje(strona)===false)
		numberOfBug=3;
		
	if(numberOfBug!==0)//obsluga bledow sie odbywa w tym miejscu
	{
		switch(numberOfBug)
		{
			case 1:
				trescuwagi=mw.msg('POPE_empty_text');
				break;
			case 2:
				trescuwagi=mw.msg('POPE_url_text');
				break;
			case 3:
				trescuwagi=mw.msg('POPE_does_not_exist_text');
				break;
		}
		
		if(!document.getElementById('POPEuwaga'))
		{
			var uwaga = document.createElement('div');
			uwaga.style.fontSize="90%";
			uwaga.style.textAlign="center";
			uwaga.id="POPEuwaga";
			var uwagaspan=document.createElement('span');
			uwagaspan.innerHTML=trescuwagi;
			uwagaspan.id="uwagatext";
			uwaga.appendChild(uwagaspan);
			button.parentNode.insertBefore(uwaga, button.nextSibling);
		}
		else
			document.getElementById('uwagatext').innerHTML=trescuwagi;
	}
 
	else //jesli nie bylo bledow -> wysylamy formularz
	{
		var api = JsMwApi( mw.util.wikiScript( 'api' ) );
		var pageHandler = api.page( mw.msg("POPE_page") );
		button.disabled=true;
		button.value=mw.msg('POPE_sending_form_text');
		var komentarz = textarea+" Zgłasza: ~~"+"~([[Specjalna:Wkład/{{subs"+"t:REVISIONUSER}}"+"|wkład]]) ~~"+"~~"+"~\n";
		var formulka = "\n== [[:"+strona+"]] ==\n" + "{{Status zgłoszenia|nowe}}\n{{ln|"+strona+"}}\n\n"+komentarz.trim();
		var doZmiany = mw.msg('POPE_section_line');
		pageHandler.edit( function( text, save_function, res )//zaczynamy edycje strony
		{
			//save the new content
			var newText = text.replace(doZmiany, doZmiany+formulka+"\n");
			if(text===newText)
			{
				newText=text+formulka;
			}
			
			save_function(
				newText,
				{
					summary: mw.msg('POPE_summary').replace('$1', strona),
					minor: false
				}, 
				function( res )
				{
					form.parentNode.removeChild(form);
					var tyspan=document.createElement('span');
					tyspan.style.margin="0 auto";
					
					if ( res && res.edit && res.edit.result && res.edit.result === 'Success' ) //zapisano pomyslnie
					{
						tyspan.innerHTML=mw.msg('POPE_save_ok');
    
						setTimeout(function(){
							window.location.hash = strona.split(' ').join('_');
							window.location.reload(true);
						}, 1500);
					}
					else //pojawil sie jakis blad
						tyspan.innerHTML=mw.msg('POPE_save_error');
						
					document.getElementById('POPEpudlo').appendChild(tyspan);
				}
			);
		});
	}
},

sprawdzCzyIstnieje: function(strona)
{
	var POPE_page_id;
	var params={action: 'query', prop: 'info', inprop: 'talkid', titles: strona, format: 'json'};
	$.ajax({
	        url:mw.util.wikiScript('api'),
	        data: params,
	        async:false
		}).done(function(data)
		{
			POPE_page_id = Object.getOwnPropertyNames(data.query.pages)[0];
		});
	if (POPE_page_id<0) // nie istnieje
		return false;
	return true;
},

WyswietlPrzycisk: function()//funkcja wyswietlajaca przycisk -> jesli sie go kliknie to przechodzimy do formularza
{
	var where = $('#POPEprzycisk :first-child');
	if (where) {
		$(where).on('click', function(e){
			e.preventDefault();
			$(where).off('click');
			POPE.WyswietlFormularz();
		});
	}
},

rozwin: function()
{
	var form=document.getElementById('POPEformularz');
	var copfull=document.createElement('div');
	copfull.style.fontSize="75%";
	var copfulltext = document.createElement('span');
	copfulltext.innerHTML = mw.msg('POPE_copyright_full');
	copfull.appendChild(copfulltext);
	form.appendChild(copfull);
	
	var p = document.getElementById('POPEexpand');
	p.innerHTML=mw.msg('POPE_hide');
	$(p).on('click', function(e){
		e.preventDefault();
		$(p).off('click');
		POPE.zwin();	
	});
},

zwin: function()
{
	var form=document.getElementById('POPEformularz');
	form.removeChild(form.lastChild);
	
	var p = document.getElementById('POPEexpand');
	p.innerHTML=mw.msg('POPE_expand');
	$(p).on('click', function(e){
		e.preventDefault();
		$(p).off('click');
		POPE.rozwin();	
	});
},

WyswietlFormularz: function()//jesli kliknelismy na przycisk -> formularz do wypelnienia
{
	var where = document.getElementById('POPEprzycisk');
	if (!where) {
		return;
	}
	
	while(where.firstChild) {
		where.removeChild(where.firstChild);
	}
	
	where.style.marginBottom="5px";
	var pud0=document.createElement('div');
	pud0.id="POPEpudlo";
	where.appendChild(pud0);
	
	mw.loader.load('mediawiki.ui.input');
	pud0.style.border="1px solid #CCC";
	pud0.style.margin="0 auto";
	pud0.style.borderRadius="0.2em";
	pud0.style.display="block";
	pud0.style.maxWidth="450px";
	pud0.style.padding="10px";
	
	var form=document.createElement('form');
	form.className="mw-ui-vform";
	form.id="POPEformularz";
 
	var l=document.createElement('label');
	l.setAttribute("for", "POPEinput");
	l.style.fontWeight="bold";
	l.innerHTML=mw.msg('POPE_page_label');
	form.appendChild(l);
 
	var i=document.createElement('input');
	i.className="mw-ui-input";
	i.setAttribute("type", "text");
	i.id="POPEinput";
	form.appendChild(i);
 
	var l2=document.createElement('label');
	l2.setAttribute("for", "POPEtextarea");
	l2.style.fontWeight="bold";
	l2.innerHTML=mw.msg('POPE_comment_label');
 	form.appendChild(l2);

	var t=document.createElement('textarea');
	t.setAttribute("rows", "3");
	t.className="mw-ui-input";
	t.placeholder=mw.msg('POPE_comment_placeholder');
	t.id="POPEtextarea";
 	form.appendChild(t);

	var p=document.createElement('input');
	p.id="POPEwyslij";
	p.setAttribute("type", "button");
	p.setAttribute("value", mw.msg('POPE_button2_text'));
	$(p).click(function(e){
		e.preventDefault();
		POPE.WyslijFormularz();
	});
	p.className="mw-ui-button mw-ui-constructive";
	form.appendChild(p);

	var copwarn=document.createElement('div');
	copwarn.style.fontSize="75%";
	copwarn.style.textAlign="center";
	copwarn.style.clear="both";
	copwarn.setAttribute("id", "POPEcopyright");
	
	var coptext=mw.msg("POPE_copyright_short"); 
	if(!mw.config.get('wgUserName'))
		coptext+=mw.msg("POPE_copyright_short_anon");
	var copexpand = '<span id="POPEexpand" style="color:blue">'+mw.msg('POPE_expand')+'</span>';
	
	copwarn.innerHTML = coptext + copexpand;
	form.appendChild(copwarn);
	pud0.appendChild(form);
	
	var exp = $('#POPEexpand');
	exp.on('click', function(e){
		e.preventDefault();
		exp.off('click');
		POPE.rozwin();
	});
}

}; // POPE
 
POPE.WyswietlPrzycisk();

})