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)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/**
* Name: User Unused Files
* Author: Noreplyz
* Description: Lists unused files for a user in Special:UserUnusedFiles.
*/
;(function(mw, $) {
if (
mw.config.get('wgTitle') !== 'UserUnusedFiles' ||
mw.config.get('wgNamespaceNumber') !== -1
) return;
if (!window.dev || !window.dev.i18n) {
importArticle({
type: "script",
article: "u:dev:MediaWiki:I18n-js/code.js"
});
}
var filemanage = {
init: function(i18n) {
$(document).prop('title', i18n.msg('heading').escape());
$('#PageHeader h1').text(i18n.msg('heading').escape());
$('#content').html('').append(
'<div id="file-userusage">' +
'<label for="fm-username">' + i18n.msg('username').escape() + '</label> ' +
'<input value="" id="fm-username">' +
'<span id="fm-getUsages" class="wds-button">' + i18n.msg('getList').escape() + '</span>' +
'<div id="file-userusage-wrap"></div>' +
'</div>'
);
$('#fm-getUsages').click(function() {
$('#file-userusage-wrap').empty();
filemanage.getFileList('now', $('#fm-username').val());
});
$('#fm-username').keypress(function (e) {
var key = e.which;
if (key == 13) {
$('#fm-getUsages').click();
return false;
}
});
},
generateBox: function(title) {
$('#file-userusage-wrap').append(
'<div class="file-userusage-box">' +
'<div class="fm-box-title">' + title + '</div>' +
'</div>'
);
},
getFileList: function(time, user) {
// grab list of latest images
return $.ajax({
url: mw.util.wikiScript('api'),
type: 'GET',
format: 'json',
data: {
action: 'query',
list: 'logevents',
leuser: user,
leaction: 'upload/upload',
lestart: time,
lelimit: 100,
format: 'json'
}
}).done(function(files) {
var fileObs = files.query.logevents;
var uniqueFileList = [];
$.each(fileObs, function(i, item) {
if ($.inArray(fileObs[i].title, uniqueFileList) == -1) {
uniqueFileList.push(fileObs[i].title);
$.ajax({
url: mw.util.wikiScript('api'),
type: 'GET',
format: 'json',
data: {
action: 'query',
list: 'imageusage',
iutitle: fileObs[i].title,
iulimit: 100,
format: 'json'
}
}).done(function(fileUsages) {
if (fileUsages.query.imageusage.length === 0) {
filemanage.generateBox(fileObs[i].title);
}
});
}
});
var continueParam = "rawcontinue";
if (typeof files[continueParam] !== "undefined") {
filemanage.getFileList(files[continueParam].logevents.lestart, user);
}
});
}
};
mw.hook("dev.i18n").add(function (i18n) {
$.when(
i18n.loadMessages("UserUnusedFiles"),
mw.loader.using("mediawiki.util")
).done(function(i18n) {
filemanage.init(i18n);
});
});
})(this.mediaWiki, this.jQuery);