User:Wargo/Scripts/Masowo na TO.js
< User:Wargo | Scripts
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
var betacluster = mw.config.get('wgServerName').match('beta');
var tablice_ogłoszeń = !betacluster ? {"wikipedia": "Wikipedia:Tablica ogłoszeń/Ogłoszenia", "wiktionary": "Wikisłownik:Tablica ogłoszeń", "wikiquote": "Wikicytaty:Tablica ogłoszeń", "wikisource": "Wikiźródła:Tablica ogłoszeń", "wikibooks": "Wikibooks:Tablica ogłoszeń", "wikinews": "Wikinews:Tablica ogłoszeń"} : {"en.wikipedia": "User:Wargo/Masowo na TO.js/test", "wikidata": "User:Wargo/TO"};
var months_d = ['stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca', 'lipca', 'sierpnia', 'września', 'października', 'listopada', 'grudnia'];
$.when(mw.loader.using(['mediawiki.api', 'mediawiki.jqueryMsg']), $.ready).then(function() {
if(mw.config.get('wgCanonicalSpecialPageName') == 'Blankpage' && mw.config.get('wgPageName').split('/', 2)[1] == 'Ogłoszenia')
{
$('title').html('Roześlij na tablice ogłoszeń');
$('#firstHeading').text('Roześlij ogłoszenie');
$('#mw-content-text p').attr('id', 'specialpage_heading').html('Tutaj możesz rozesłać ogłoszenie na wszystkie tablice ogłoszeń projektów w języku polskim.<br />Pamiętaj aby każdy wpis rozpocząć gwiazdką (można dodawać kilka w jednym wysłaniu) i o wstawieniu podpisu.');
$('#specialpage_heading').after('<textarea id="TO_body" rows="10"></textarea><br />Opis zmian: <input id="TO_summary" value="Nowe ogłoszenie" size="100" /><br /><button id="btn_submit">Wyślij</button><button id="btn_preview">Podgląd</button><hr id="next_steps" style="height: 3px;" /><div id="progress_messages" />');
var apis = {};
apis.general = new mw.Api();
$('#mw-content-text button').click(function(click){
var content = $('#TO_body').val();
var summary = $('#TO_summary').val();
var date = new Date();
var heading_name = date.getDate()+' '+months_d[date.getMonth()];
var heading_content = "== "+heading_name+" ==\n";
$('#next_steps').css('background', 'blue');
$('.preview_box').detach();
$('#progress_messages').html('');
if(click.target.id == 'btn_preview')
{
apis.general.post({action: 'parse', prop: 'text', contentmodel: 'wikitext', wrapoutputclass: 'preview_box', pst: true, text: heading_content+content, summary: summary}).done(function(response){
$('#next_steps').after(response.parse.text['*']).css('background', '');
if(typeof response.parse.parsedsummary == 'object') $('.preview_box').append("<br />Podgląd opisu zmian: "+response.parse.parsedsummary['*']);
});
}
if(click.target.id == 'btn_submit')
{
if(content == '')
{
alert('Wypełnij pole');
return;
}
var count = 0, count_done = 0;
$.each(tablice_ogłoszeń, function(projekt, strona){
domain = betacluster ? projekt+'.beta.wmflabs' : 'pl.'+projekt;
apis[projekt] = new mw.ForeignApi('https://'+domain+'.org/w/api.php');
count++;
apis[projekt].edit(strona, function(response){
$('#progress_messages').append('⏳ Umieszczam ogłoszenie w projekcie <i>'+projekt+'</i> na stronie <i>'+strona+'</i><br />');
content_m = response.content;
has_today_header = content_m.match(heading_content);
if(has_today_header)
{
insertion_pos = has_today_header.index + heading_content.length;
heading = '';
}
else
{
insertion_pos = content_m.match('==').index;
heading = heading_content;
}
content_m = content_m.slice(0, insertion_pos)+heading+content+"\n"+content_m.slice(insertion_pos);
return {text: content_m, summary: summary, assert: 'user'};
})
.done(function(){$('#progress_messages').append('✔️ Umieściłem ogłoszenie w projekcie <i>'+projekt+'</i> na stronie <i>'+strona+'</i><br />');})
.fail(function(code, response){$('#progress_messages').append('⚠️ Błąd umieszczania w projekcie <i>'+projekt+'</i> na stronie <i>'+strona+'</i>: <code>'+response.error.info+'</code><br />');})
.always(function(){
count_done++;
if(count == count_done)
{
$('#progress_messages').append('✅ ZAKOŃCZONO');
$('#btn_submit, #TO_body').attr('disabled', true);
$('#next_steps').css('background', '');
}
});
});
}
});
}
else
{
mw.util.addPortletLink('p-tb', "/wiki/Special:Blankpage/Ogłoszenia", 'Napisz ogłoszenie');
}
});