MediaWiki:Gadget-QInominator.js
Jump to navigation
Jump to search
Note: After saving, you have to bypass your browser's cache to see the changes. Internet Explorer: press Ctrl-F5, Mozilla: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Opera/Konqueror: press F5, Safari: hold down Shift + Alt while clicking Reload, Chrome: hold down Shift while clicking Reload.
![]() |
This user script seems to have a documentation page at MediaWiki:Gadget-QInominator. |
- Report page listing warnings and errors.
window.QInominator =
{
cookiename : 'qinomtext',
icon : '//upload.wikimedia.org/wikipedia/commons/thumb/8/8c/Quality_images_logo.svg/16px-Quality_images_logo.svg.png',
nomset : [],
numlink : null,
conatiner : null,
aNom : null,
aTxt : null,
thisInSet : false,
managePanel : null,
manageSet : function()
{
// insert manage panel
var qmp;
if( QInominator.managePanel === null ) {
QInominator.managePanel = $('<div style="display:none; width: 100%" id="qimanage"><div>');
$('#filetoc').after(QInominator.managePanel);
}
// populate panel
var qmp = QInominator.managePanel;
var ns = QInominator.nomset;
var del_icon = '//upload.wikimedia.org/wikipedia/commons/thumb/9/96/Gnome-edit-delete.svg/20px-Gnome-edit-delete.svg.png';
var edi_icon = '//upload.wikimedia.org/wikipedia/commons/thumb/5/54/Gnome-edit-select-all.svg/20px-Gnome-edit-select-all.svg.png';
qmp.text('').append(qmp=$('<ul></ul>'));
for( i = 0; i < ns.length; i++ ) {
(function(){// anonymous function to create closure
var caption = ns[i].text;
var captext = $('<span></span>').css('padding-left','1em').text(caption);
var file = ns[i].file;
var thisitem = $('<li></li>')
.append( $('<a></a>').attr( 'href', '/wiki/' + encodeURIComponent(ns[i].file)).text(ns[i].file) )
.append(captext)
.append(
$('<img src="'+del_icon+'">')
.css( { 'position': 'absolute', 'top': '0px', 'left': '0px' })
.click(function(){
thisitem.hide(200);
var j = 0 ,ns = QInominator.nomset;
while( j < ns.length ) {
if( ns[j].file == file ) {
ns.splice(j,1);
} else {
j++;
}
}
QInominator.saveSet();
QInominator.updateCount();
})
)
.append(
$('<img src="'+edi_icon+'">')
.css( { 'position': 'absolute', 'top': '0px', 'left': '25px' })
.click(function(){
var newcaption = prompt('Nomination text', caption);
if( newcaption !== null ) {
caption = newcaption;
var j, ns = QInominator.nomset;
for( j = 0; j < ns.length; j++ ) {
if( ns[j].file == file ) {
ns[j].text = caption;
}
}
captext.text(caption);
}
QInominator.saveSet();
})
)
.css( { 'padding-left': '50px', 'position': 'relative' } );
qmp.append(thisitem);
})();
}
// show panel
QInominator.managePanel.show('fast');
},
saveSet : function()
{
// serialize and save nomination set to localStorage
window.localStorage.setItem('QINominator', JSON.stringify(QInominator.nomset) );
},
updateCount : function()
{
var nl = QInominator.numlink;
var ns = QInominator.nomset;
var count = ns.length;
if( nl.length == 0 ) { return; }
if( count == 0 ) { nl.hide(); }
else {
nl.text( '(' + count + ')' );
nl.show();
}
},
add : function()
{
// get a text version of the english description in the information template
var desc = $('div.description.en').contents().slice(1).text().trim() ||
$('div.description.en').find('span.description').contents().slice(1).text().trim() ||
$('div.description').contents().slice(1).text().trim() ||
$('span.description').eq(0).text();
// is the uploader someone else than the nominator?
var uploader = $('.filehistory a.mw-userlink').eq(0).text()
, nomuser = mw.config.get('wgUserName');
if (uploader!==nomuser) { desc = desc.replace(/[\s.]+$/, '') + '. By [[User:'+uploader+']]'; }
// allow editing the nomination text
var caption = prompt('Nomination text',desc);
if( caption === null ) return;
// next generation cookie
QInominator.nomset.push( { file: mw.config.get('wgPageName'), text : caption } );
QInominator.saveSet();
QInominator.updateCount();
},
restoreSet : function()
{
var i;
// get and unserialize existing nominations
QInominator.nomset = JSON.parse( window.localStorage.getItem('QINominator') ) || [];
QInominator.thisInSet = false;
for( i = 0; i < QInominator.nomset.length; i++ ) {
if( QInominator.nomset[i].file == mw.config.get('wgPageName') ) { QInominator.thisInSet = true; }
}
},
update : function()
{
QInominator.restoreSet();
QInominator.updateCount();
var hiddencat = $('#mw-hidden-catlinks');
var text = null;
if( QInominator.thisInSet ) {
text = 'Image selected for QI nomination.';
} else if( hiddencat.find('a[href="/wiki/Category:Quality_images"]').length > 0 ) {
text = 'This already is a QI!';
} else if( QInominator.nomset.length >= 5 ) {
text = 'Please nominate no more than five images per day.';
} else if( hiddencat.find('a[href="/wiki/Category:Unassessed_QI_candidates"]').length > 0 ) {
//
}
if( text === null ) {
QInominator.aNom.show();
QInominator.aTxt.hide();
} else {
QInominator.aTxt.text(text);
QInominator.aNom.hide();
QInominator.aTxt.show();
}
},
install : function()
{
var ui = $('<li style="padding-left: 20px; background-repeat: no-repeat; '
+ 'background-image: url(\'' + QInominator.icon + '\')"></li>');
QInominator.container = $('<span></span>');
QInominator.numlink = $('<a href="#" style="display:none" title="Images already selected"></a>').click(QInominator.manageSet);
ui.append(QInominator.container);
ui.append(QInominator.numlink);
$('#filetoc').prepend(ui);
QInominator.aNom = $('<a href="#">Nominate this image for QI</a>').click(QInominator.add).hide();
QInominator.aTxt = $('<span></span>').hide();
QInominator.container.append(QInominator.aNom);
QInominator.container.append(QInominator.aTxt);
$(window).focus( QInominator.update );
QInominator.update();
}
};
if( mw.config.get("wgAction") == 'view' && mw.config.get("wgNamespaceNumber") == 6 && window.localStorage ) {
$(document).ready(QInominator.install);
}