Wikipedysta:Kaligula/js/markAsDone.js
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)
- Edge: Przytrzymaj Ctrl, jednocześnie klikając Odśwież, lub naciśnij klawisze Ctrl+F5.
- Opera: Naciśnij klawisze Ctrl+F5.
/*
DOCUMENTATION: [[Wikipedysta:Kaligula/js/markAsDone]]
*/
if (mw.config.get('wgAction')=='view') {
mw.loader.using('ext.gadget.gConfig', function(){
markAsDone = {
$author : 'Kaligula',
$date : '2014-09-23',
$license : 'CC-BY-SA-3.0',
$version : '2.6.5'
}
// settings
gConfig.register(
'markAsDone',
{
name: 'Oznaczanie załatwionych sekcji (markAsDone)',
descriptionPage: 'Wikipedysta:Kaligula/js/markAsDone'
},
[
{
name: 'namespaces',
desc: '[[Pomoc:Przestrzeń nazw|Przestrzenie nazw]], w których ma działać skrypt.',
descMode: 'wikitext',
type: 'string',
deflt: '',
validation: function(str){
var vals = [-2,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,100,101,102,103,828,829];
var msg = 'Tylko liczby wybrane spośród ['+vals+'] i oddzielone od siebie przecinkami!';
try {
var arr=JSON.parse('['+str+']')
}
catch(err){
throw msg
}
for(var i=0;i<arr.length;i++){
if(jQuery.inArray(arr[i],vals)==-1) throw msg;
}
return str;
}
},
{
name: 'pages',
desc: 'Strony, na których ma działać skrypt (każda w cudzysłowie (""), oddzielone od siebie przecinkami).',
type: 'string',
deflt: '"Dyskusja użytkownika:'+mw.config.get('wgUserName')+'"',
validation: function(str){
var msg='Nazwy stron powinny być każda w osobnym cudzysłowie ("") i oddzielone od siebie przecinkami! Jeśli nazwa zawiera cudzysłów (", tj. ten z klawiatury) to należy go w nazwie strony poprzedzić lewym ukośnikiem (\\), tzn. tak: \\".';
try {
var arr=JSON.parse('['+str+']')
}
catch(err){
throw msg
}
return str;
}
}
]
);
markAsDone.init = function () {
var ns = JSON.parse('['+gConfig.get('markAsDone','namespaces')+']');
var pages = JSON.parse('['+gConfig.get('markAsDone','pages')+']');
if ($.inArray(mw.config.get('wgPageName').replace(/_/g,' '), pages)>-1 || $.inArray(mw.config.get('wgNamespaceNumber'), ns)>-1) {
markAsDone.start()
}
}
markAsDone.start = function () {
$('.mw-editsection').each(function(i){
var aedit = $(this).find('a.mw-editsection-link-secondary');
if (aedit.length < 1) aedit = $(this).find('a');
var ahref = aedit.attr('href');
if (ahref) {
var sectionMatch = ahref.match(/section=(\d+)/);
var section = sectionMatch && sectionMatch[1];
if(!section) return;
var a = $(this).parent().find('.mw-headline');
a = (a.length>0 ? a.text() : '');
if (mw.user.options.values.numberheadings && mw.user.options.values.numberheadings==1){
var sectiontitlenr = a.match(/^\d+ /);
var sectiontitle = a.replace(/^\d+ /,'');
}
else {
var sectiontitlenr = '';
var sectiontitle = a;
}
$(this).append(' / [', $('<a class="section-mark-as-done" style="cursor: pointer" title="Oznacz jako załatwione">załatwione</a>').click(function(){markAsDone.run(section,sectiontitle,sectiontitlenr)}), ']');
}
});
}
markAsDone.run = function (section, sectiontitle, sectiontitlenr) {
// throbber
$('.mw-editsection:eq('+section+')').find('.section-mark-as-done:eq(0)').html('<img src="//upload.wikimedia.org/wikipedia/commons/4/42/Loading.gif">');
var d = new Date();
d.getDate()
// jeśli włączone jest automatyczne numerowanie nagłówków to usuwa numer
//(mw.user.options.values.numberheadings == 1) && (sectiontitle = sectiontitle.replace(/^\d+ /,''));
// link do sekcji w opisie zmian: /* tytuł sekcji */
var summary = '/* ' + sectiontitle + ' */ załatwione (oznaczone skryptem [[user:Kaligula/js/markAsDone.js|markAsDone]])';
/* get edittoken */
$.ajax('/w/api.php?action=query&format=json&meta=tokens')
.done(function(token_data){
var edittoken = token_data.query.tokens.csrftoken;
console.log('markAsDone: edittoken='+edittoken);
/* edit section – mark it as done with {{załatwione}} */
$.ajax({
url: '/w/api.php',
type: 'POST',
data: {
action: 'edit',
format: 'json',
title: mw.config.get('wgPageName'),
section: section,
appendtext: '\n\n{{Załatwione}}, ' + '~~' + '~~',
summary: summary,
token: edittoken
}
}).done(function(data){
var newrevid = data.edit.newrevid;
/* reload section – get changed section raw code */
$.ajax({
url: '/w/index.php?action=raw&title=' + encodeURIComponent(mw.config.get('wgPageName')) + '§ion=' + encodeURIComponent(section) + '&oldid=' + newrevid,
cache: false
}).done(function(text_after){
/* reload section – parse code to html */
$.ajax('/w/api.php?action=parse&format=json&title=' + encodeURIComponent(mw.config.get('wgPageName')) + '&text=' + encodeURIComponent(text_after) + '&prop=text')
.done(function(html_after){
/* reload section – update html of the section */
var j = $('.mw-editsection')[section].parentNode;
var jj = j.tagName.charAt(0).toLowerCase();
while ((j.nextElementSibling) && (j.nextElementSibling.tagName.charAt(0).toLowerCase() != jj)) {$(j.nextElementSibling).remove()}
var kk = $(html_after.parse.text['*']);
if (mw.user.options.values['gadget-modify-section-style'] && mw.user.options.values['gadget-modify-section-style']==1) {
kk.find('.mw-headline').parent().toggleClass('modifiedSectionTitle');
kk.find('.mw-editsection').insertAfter(kk.find('.mw-headline'));
if (sectiontitlenr!='') {
kk.find('.mw-headline').prepend( $('<span class="mw-headline-number">'+sectiontitlenr+'</span>') );
}
}
$(j).replaceWith(kk);
});
});
$('.mw-editsection:eq('+section+')').find('.section-mark-as-done:eq(0)').remove();
});
});
}
$(document).ready(markAsDone.init());
});
}