MediaWiki:Gadget-pope.js
Wygląd
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();
})