رُکُن:511KeV/nominate.js

وِکیٖپیٖڈیا پؠٹھٕ، اَکھ آزاد اِنسایکلوپیٖڈیا

نوٹ: شایع کَرنہٕ پَتہ یِم تبدیلی وُچِھنہٕ خٲطرٕ کٔرِو براؤزرُک کیش (cache) صاف۔

  • فائرفاکس/ سفاری: ییلہ Reload پؠٹھ کلِک کٔرِو تہٕ Shift تھٲوِو دَبٲیِتھ، یا Ctrl-F5 یا Ctrl-R دَبٲیِو (Mac پؠٹھ R-⌘)
  • گوٗگُل کروم: Ctrl-Shift-R دَبٲیِو (Mac پؠٹھ Shift-R-⌘)
  • اِنٹَرنیٹ ایکسپلورَر: ییلہ Refresh پؠٹھ کِلِک کٔرِو Ctrl یا Ctrl-F5 تھٲوِو دَبٲیِتھ
  • اوپیرا: Tools → Preferences مَنٛز گٔژھو تہٕ کیش (cache) کٔرِو صاف
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);
}