Користувач:RLuts/FUCleanUp2.js
Перейти до навігації
Перейти до пошуку
Увага: Після публікування слід очистити кеш браузера, щоб побачити зміни.
- Firefox / Safari: тримайте Shift, коли натискаєте Оновити, або натисніть Ctrl-F5 чи Ctrl-Shift-R (⌘-R на Apple Mac)
- Google Chrome: натисніть Ctrl-Shift-R (⌘-Shift-R на Apple Mac)
- Edge: тримайте Ctrl, коли натискаєте Оновити, або натисніть Ctrl-F5.
if( window.FUCleanUp === undefined ) {
window.FUCleanUp = {
install: function() {
this.menu = 'FairUse Clean Up';
this.rationaleTemplate = 'Обґрунтування добропорядного використання';
this.informationTemplate = 'Зображення';
this.musicTemplate = 'Музика';
mw.loader.using(['mediawiki.util']).done(function () {
var link = mw.util.addPortletLink( 'p-views', '#', this.menu );
$( link ).click( function ( e ) {
e.preventDefault();
FUCleanUp.getContent();
});
});
},
wait: function(str) {
if(str) {
mw.loader.using( ['oojs-ui-core', 'oojs-ui-windows'], function() {
if(FUCleanUp.hasOwnProperty('windowManager') && FUCleanUp.windowManager.isOpened()) {
FUCleanUp.windowManager.closeWindow();
}
FUCleanUp.ProcessDialog = new OO.ui.ProcessDialog();
FUCleanUp.windowManager = new OO.ui.WindowManager();
$( 'body' ).append( FUCleanUp.windowManager.$element );
FUCleanUp.windowManager.addWindows( [ FUCleanUp.ProcessDialog ] );
FUCleanUp.windowManager.openWindow( FUCleanUp.ProcessDialog, {
title: 'Зачекайте, будь ласка...',
message: str
} );
// FUCleanUp.notif = mw.notification.notify(, {autoHide: false, title: ''} );
} );
}
},
getContent: function() {
this.wait('Завантаження вікітексту сторінки');
this.count = 0;
this.tplredirs = {};
this.tpls = [this.rationaleTemplate, this.informationTemplate, this.musicTemplate];
var param = {
action: 'query',
prop: 'revisions',
format: 'json',
rvprop: 'content',
rvlimit: '1',
titles: mw.config.get('wgPageName'),
indexpageids: ''
};
mw.loader.using(['mediawiki.util']).done(function () {
$.get(mw.util.wikiScript('api'), param).done(function(data) {
FUCleanUp.content = data.query.pages[data.query.pageids[0]].revisions[0]['*'];
FUCleanUp.wait();
FUCleanUp.getTplArrays();
});
});
},
getTplArrays: function() {
if(!this.count) this.wait('Завантаження перенаправлень шаблонів оформлення');
if(this.tpls.hasOwnProperty(this.count)) {
this.getTplRedirs(this.tpls[this.count], function() {
FUCleanUp.count++;
FUCleanUp.getTplArrays();
});
} else {
this.count = 0;
this.wait();
this.getTpls();
}
},
getTplRedirs: function(template, success) {
param = {
action: 'query',
list: 'backlinks',
format: 'json',
blnamespace: 10,
blfilterredir: 'redirects',
blredirect: '',
bltitle: 'Template:' + template
};
mw.loader.using(['mediawiki.util']).done(function () {
$.get(mw.util.wikiScript('api'), param).done(function(data) {
if (typeof(success) === 'function') {
FUCleanUp.tplredirs[template] = [];
$.each(data.query.backlinks, function() {
FUCleanUp.tplredirs[template].push(this.title);
});
success();
}
});
});
},
getTpls: function() {
mw.loader.using('ext.gadget.libWikiDOM', function() {
FUCleanUp.obj = mw.libs.wikiDOM.parser.text2Obj( FUCleanUp.content );
if(FUCleanUp.obj.nodesByType.hasOwnProperty('template')) {
$.each(FUCleanUp.obj.nodesByType.template, function(index, tpl) {
if($.trim(this.parts[0]) == FUCleanUp.rationaleTemplate || $.inArray($.trim(this.parts[0]), FUCleanUp.tplredirs[FUCleanUp.rationaleTemplate]) != -1) {
console.log('Rationale template:');
console.log(FUCleanUp.RatTpl = this.parts);
}
if($.trim(this.parts[0]) == FUCleanUp.informationTemplate || $.inArray($.trim(this.parts[0]), FUCleanUp.tplredirs[FUCleanUp.informationTemplate]) != -1) {
console.log('Information template:');
console.log(FUCleanUp.InfTpl = this.parts);
}
if($.trim(this.parts[0]) == FUCleanUp.musicTemplate || $.inArray($.trim(this.parts[0]), FUCleanUp.tplredirs[FUCleanUp.musicTemplate]) != -1) {
console.log('Music template:');
console.log(FUCleanUp.MusTpl = this.parts);
}
});
}
});
}
};
}
$( document ).ready(function () {
// if(mw.config.get('wgCategories').indexOf('Невільні файли') >= 0)
FUCleanUp.install();
});