Home  

Random  

Nearby  



Log in  



Settings  



Donate  



About Wikipedia  

Disclaimers  



Wikipedia





User:Holly Cheng/quickimgdelete.js





User page  

Talk  



Language  

Watch  

View source  


< User:Holly Cheng
 


Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/* <pre><nowiki> */
/* quickimgdelete.js
 * Current version: 2.4.1
 * =======================================
 * Created by [[User:Howcheng|Howard Cheng]]
 * Released under the [[GNU Public License]] (GPL)
 * Full documentation at  [[User talk:Howcheng/quickimgdelete.js]]
 * =======================================
 */
// ==General configuration==
var qid_testFilePage = null;//"User:Howcheng/Sandbox";
var qid_testUserPage = null;//"User:Howcheng/Sandbox2";
var qid_testLogPage = null;//"User:Howcheng/Sandbox3";
var qid_editToken; // needed for editing by API
var qid_action; // the action code (passed by the link click)
var qid_templateAddError = false; // flag for error adding to file description page


// == Shared functions ==
function qid_makeApiCall(method, parms, data) {
 var url = "/w/api.php?format=json";
 if (parms)
  url += "&" + parms;
 var promise = $.ajax({
  type: method,
  url: url,
  async: false,
  data: data
 });
 return promise;
}
function qid_getPageInfo(result) {
 var pageId = qid_getPageId(result);
 return result.query.pages[pageId];
}
function qid_getPageContent(page) {
 return page.revisions[0].slots.main["*"];
}
function qid_setDialogMessage(message) {
 mw.notify(message);
}
function qid_getPageId(result) {
 var pageId = mw.config.get('wgArticleId') + '';
 if (result.query.pages) {
  var pageIds = Object.keys(result.query.pages);
  pageId = pageIds[0];
 }
 return pageId;
}

function qid_getFileInfo() {
 // retrieve upload data, content, and edit token
 var data = {
  'action': 'query',
  'prop': 'imageinfo|info|revisions',
  'iiprop': 'user|timestamp',
  'iilimit': 10,
  'rvprop': 'content',
  'rvslots': '*',
  'redirects': '',
  'iilocalonly': '',
  'titles': mw.config.get('wgPageName'),
  'meta': 'tokens'
 };
 var promise = qid_makeApiCall("POST", null, data);
 promise.done(qid_getEditToken);
 promise.fail(qid_getFileInfo_error);
 return promise;
}
function qid_getFileInfo_error() {
 qid_setDialogMessage("An error occurred while attempting to get the file info");
}
function qid_getEditToken(result) {
 if (!result.query.tokens)
  qid_setDialogMessage("Could not find the CSRF token");
 var tokens = result.query.tokens;
 qid_editToken = tokens.csrftoken;
}

function qid_addTemplateToFilePage(page, templateWikiText, summary, templatesToRemove) {
 var content = qid_getPageContent(page);
 if (templatesToRemove) {
  for (var i = 0; i < templatesToRemove.length; i++) {
   content = qid_removeTemplate(content, templatesToRemove[i]);
  }
 }
 content = templateWikiText + '\n' + content;

 // get the current timestamp for edit conflict avoidance
 var now = new Date();
 var tsYear = now.getUTCFullYear() + '';
 var tsMonth = (now.getUTCMonth() + '').padStart(2, '0');
 var tsDay = (now.getUTCDate() + '').padStart(2, '0');
 var tsHours = (now.getUTCHours() + '').padStart(2, '0');
 var tsMins = (now.getUTCMinutes() + '').padStart(2, '0');
 var tsSecs = (now.getUTCSeconds() + '').padStart(2, '0');
 var tsMsecs = (now.getUTCMilliseconds() + '').padStart(3, '0');
 var timestamp = tsYear + '-' + tsMonth + '-' + tsDay + 'T' + tsHours + ':' + tsMins + ':' + tsSecs + '.' + tsMsecs + 'Z';
 
 var targetPage = qid_testFilePage ? qid_testFilePage : page.title;
 console.log('Attempting to add ' + templateWikiText + ' to ' + targetPage + (targetPage === qid_testFilePage ? '' : ' (supposed to be ' + page.title + ')'));

 var editData = {
  'action': 'edit',
  'format': 'json',
  'title': targetPage,
  'summary': summary + ' (using [[User talk:Howcheng/quickimgdelete.js|quickimgdelete]])',
  'starttimestamp': timestamp,
  'contentmodel': 'wikitext',
  'contentformat': 'text/x-wiki',
  'text': content,
  'token': qid_editToken
 };
 var promise = $.ajax({
  type: "POST",
  url: mw.util.wikiScript('api'),
  data: editData,
  dataType: 'json'
 });
 promise.then(function(result) {
   qid_processEditSuccess(result, 'Template added to ' + mw.config.get('wgPageName'));
  }, function(result) {
         qid_setDialogMessage('Error: Request failed adding template to ' + mw.config.get('wgPageName'));
         qid_templateAddError = true;
     })
     .then(function(result) {
      if (qid_templateAddError)
       return;
      // get parsed template HTML
      var parseData = {
       'action': 'parse',
       'contentmodel': 'wikitext',
       'prop': 'text',
       'pst': '',
       'title': mw.config.get('wgPageName'),
       'text': templateWikiText
      };
      var parsePromise = qid_makeApiCall("POST", null, parseData);
      parsePromise.done(function(result) {
       // inject into page
       var parsed = result.parse.text["*"];
       $('#mw-imagepage-content').prepend(parsed);
      });
      console.log('Injected parsed template HTML into ' + mw.config.get('wgPageName'));
     });
 return promise;
}

function qid_notifyUploadersWhoAreNotBots(page, notifyFunc) {
 var userList = [];
 for (var i = 0; i < page.imageinfo.length; i++) {
  var username = page.imageinfo[i].user;
  userList.push(username);
 }
 var listData = {
  'action': 'query',
  'list': 'users',
  'ususers': userList.join('|'),
  'usprop': 'groups'
 };
 var promise = qid_makeApiCall("POST", null, listData);
 promise.done(function(result) {
  for (var i = 0; i < result.query.users.length; i++) {
   var user = result.query.users[i];
   var isBot = false;
   for (var j = 0; j < user.groups.length; j++) {
    if (user.groups[j] === 'bot') {
     isBot = true;
     break;
    }
   }
   if (isBot) {
    console.log('User:' + user + ' is a bot; not going to leave a notification');
    continue;
   }
   // determine if user talk is redirected somewhere else (e.g. renamed user)
   var utPromise = qid_getUserTalkPage(user.name);
   var utPageName = 'User talk:' + user.name;
   utPromise.done(function(result) {
    if (qid_getPageId(result) == '-1') {
     // no talk page
     console.log('No page exists at ' + utPageName + '; skipping...');
     return;
    }
    var warnPage = qid_testUserPage ? qid_testUserPage : utPageName;
    var utPage = qid_getPageInfo(result);
    var utContent = qid_getPageContent(utPage);
    if (utContent) {
     var line1 = utContent.split('\n')[0];
     if (utContent.toLowerCase().indexOf("#redirect") > -1) {
      var reBrackets = /\[\[([^\]]+)\]\]/;
      var match = line1.match(reBrackets);
      if (match !== null) {
       console.log('Found a redirect at ' + warnPage + ' to ' + match[1]);
       warnPage = match[1];
      }
     }
    }
 
    notifyFunc(warnPage, utContent);
   });
  }
 });
 promise.fail(function() { qid_setDialogMessage('Error when trying to get the uploader user info'); });
}

function qid_addTemplateToUserTalkPage(warnPage, warnWikiText, warnSummary) {
 warnWikiText = '\n' + warnWikiText + '\n';
 var warnData = {
  'action': 'edit',
  'format': 'json',
  'title': warnPage,
  'summary': warnSummary + ' (using [[User talk:Howcheng/quickimgdelete.js|quickimgdelete]])',
  'contentmodel': 'wikitext',
  'contentformat': 'text/x-wiki',
  'appendtext': warnWikiText,
  'token': qid_editToken
 };
 console.log('Attempting to add a user warning template to ' + warnPage);
 var warnPromise = $.ajax({
  type: "POST",
  url: mw.util.wikiScript('api'),
  data: warnData,
  dataType: 'json'
 });
 warnPromise.then(function(result) {
   qid_processEditSuccess(result, 'Warning template added to ' + warnPage);
  }, function(result) {
   qid_setDialogMessage('Error: Request failed when adding warning template to ' + warnPage);
  });
 return warnPromise;
}

function qid_getUserTalkPage(username) {
 var data = {
  'action': 'query',
  'prop': 'revisions',
  'rvprop': 'content',
  'rvslots': '*',
  'titles': qid_testUserPage ? qid_testUserPage : 'User talk:' + username
 };
 var promise = qid_makeApiCall("POST", null, data);
 promise.fail(function () { qid_setDialogMessage("An error occurred while attempting to get the user talk page for " + username); });
 return promise;
}

function qid_processEditSuccess(result, successMessage) {
 if (result && result.edit && result.edit.result == 'Success') {
  qid_setDialogMessage(successMessage);
 } else if (result && result.error) {
  qid_setDialogMessage('Error: API returned error code "' + result.error.code + '": ' + result.error.info);
 } else {
  qid_setDialogMessage('Error: Unknown result from API.')
 }
}

function qid_userBeenWarned(txt, template) {
 var re = eval("/\<!-- ?Template:" + template + " ?--\>/;");
 return re.test(txt);
}
function qid_removeNamespace(fullpagename) {
 var colonPos = fullpagename.indexOf(':');
 var pagename = fullpagename.substring(colonPos + 1);
 return pagename;
}
function qid_removeTemplate(editformval, template) {
 var re = eval('/\{\{' + template + '/gi');
 var templatepos = editformval.search(re);
 if (templatepos > -1) {
 var lastbracepos = editformval.indexOf('}}', templatepos) + 1;
  editformval = editformval.substr(0, templatepos) + editformval.substr(lastbracepos + 2);
 }
 return editformval;
}

/** ================================================================================
  * ==Automatic 'nominate for discussion' script==
  * The actions in this section do three things:
  * 1. Add a tag to the image page.
  * 2. List the image on a log page.
  * 3. Add a warning template to the uploader's talk page.
  */
// Configuration
nfd_text = "Nominate for discussion";
nfd_tooltip = "Nominate this image for discussion";
nfd_prompt = "Why do you want to nominate this image for discussion?";
nfd_delReq = "Wikipedia:Files for discussion/";
nfd_deleteTemplate = "ffd";
nfd_idwTemplate = "Fdw";
nfd_ifdTemplate = "Ffd2";
nfd_glossary = new Array(
  new Array("AB", "Absent uploader"),
  new Array("AU", "Absent uploader"),
  new Array("CV", "Copyright violation"),
  new Array("OB", "Obsolete"),
  new Array("OR", "Orphaned"),
  new Array("LQ", "Low quality"),
  new Array("UE", "Unencyclopedic")
);
 
function nfd_onload() {
  if (document.getElementById('ca-edit') == null) // not editable by non-admin
    return;
  if (mw.config.get('wgAction') == "view" && mw.config.get('wgCanonicalNamespace') == "File") {
    mw.util.addPortletLink('p-tb', 'javascript:nfd_tagImage(\'nfd\')', nfd_text, 'nom-for-del', nfd_tooltip);
  }
}

function nfd_tagImage(action) {
 qid_action = action;
 var promise = qid_getFileInfo();
 promise.done(nfd_getFileInfo_success);
}
function nfd_getFileInfo_success(result) {
 var template, warnTemplate, logTemplate;
 var templateParms, warnTemplateParms, logTemplateParms;
 var summary, warnSummary, logSummary;
 var logPage;
 var warnTemplateHasSig = false;
 var promptMsg;
 var page = qid_getPageInfo(result);
 var promises = [];
 
 // determine the listing page and the template to add to it, the template to add to the file and user pages, and the edit summaries
 switch (qid_action) {
  case 'nfd':
   promptMsg = nfd_prompt;
   template = nfd_deleteTemplate;
   summary = 'nomination for [[WP:FFD|discussion]]';
   warnTemplate = nfd_idwTemplate;
   warnTemplateHasSig = true;
   warnSummary = '[[:' + mw.config.get('wgPageName') + ']] nominated for discussion' ;
   logTemplate = nfd_ifdTemplate;
   logPage = nfd_delReq;
   break;
 }
 
 // get user input for discussion rationale
 var reason = window.prompt(promptMsg, '');
 if (!reason) {
  qid_setDialogMessage("No discussion rationale entered. Action cancelled.");
  return;
 }
 
 // build the template wikitext
 var now = new Date();
 var monthNames = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ];
 var logDate = now.getUTCFullYear() + ' ' + monthNames[now.getUTCMonth()] + ' ' + now.getUTCDate();
 var templateWikiText = '{{' + template + '|log=' + logDate + '}}';
 
 // add template wikitext to page
 var templatePromise = qid_addTemplateToFilePage(page, templateWikiText, summary, [ 'untagged' ]);
 promises.push(templatePromise);
 
 // build the log template wikitext
 var logWikiText = '{{subst:' + logTemplate + '|1=' + mw.config.get('wgTitle');
 switch (qid_action) {
  case 'nfd':
   // expand abbreviations
   for (var i = 0; i < nfd_glossary.length; i++) {
    var abbrev = nfd_glossary[i][0];
    var meaning = nfd_glossary[i][1];
    var re = eval("/\\b" + abbrev + "\\b/");
    if (re.test(reason))
      reason = reason.replace(re, meaning);
   }
   // find original uploader
   var uploader = page.imageinfo[page.imageinfo.length - 1].user;
   logWikiText += '|Uploader=' + uploader + '|Reason=' + reason;
   break;
 }
 logWikiText += '}} ~~' + '~~';
 
 // add listing to log page
 logPage += logDate;
 logSummary = 'Adding [[:' + mw.config.get('wgPageName') + ']] (using [[User talk:Howcheng/quickimgdelete.js|quickimgdelete]])';
 var logData = {
  'action': 'edit',
  'format': 'json',
  'title': qid_testLogPage ? qid_testLogPage : logPage,
  'summary': logSummary,
  'contentmodel': 'wikitext',
  'contentformat': 'text/x-wiki',
  'appendtext': '\n' + logWikiText + '\n',
  'token': qid_editToken
 };
 var logPromise = $.ajax({
  type: "POST",
  url: mw.util.wikiScript('api'),
  data: logData,
  dataType: 'json'
 });
 console.log('Attempting to add an entry to ' + logPage);
 logPromise.then(function(result) {
   qid_processEditSuccess(result, 'Entry added to ' + logPage);
  }, function(result) {
   qid_setDialogMessage('Error: Request failed when adding to ' + logPage);
 });
 promises.push(logPromise);
 
 // warn the users
 qid_notifyUploadersWhoAreNotBots(page, function(warnPage) {
  var warnWikiText = '\n{{subst:' + warnTemplate;
  warnWikiText += '|1=' + mw.config.get('wgTitle') + '}}';
  if (!warnTemplateHasSig)
   warnWikiText += ' ~~' + '~~';
  warnWikiText += '\n';
  var warnPromise = qid_addTemplateToUserTalkPage(warnPage, warnWikiText, warnSummary);
  promises.push(warnPromise);
 });

 // wait for all ajax calls to finish
 $.when.apply($, promises).done(function() {
  if (!qid_templateAddError)
   qid_setDialogMessage('All done!')
 });
}

/** ================================================================================
  * ==Automatic 'mark no source' (mns) and 'mark no license' (mnl) script== // mnx = applies to all
  * The actions in this section do two things:
  * 1. Add a tag to the image page.
  * 2. Add a warning to the uploader's talk page.
  */
// Configuration
mcv_text = "Copyright violation";
mcv_tooltip = "Mark this image as a copyright violation";
mns_text = "No source";
mns_tooltip = "Mark this image as missing required source information";
mnl_text = "No license";
mnl_tooltip = "Mark this image as missing required licensing information";
mnsl_text = "No source/license";
mnsl_tooltip = "Mark this image as missing both required source and licensing information";
mnp_text = "No permission";
mnp_tooltip = "Mark this image as missing evidence of permission";
mnr_text = "No rationale";
mnr_tooltip = "Mark this image as missing non-free rationale";
mor_text = "Orphaned non-free";
mor_tooltip = "Mark this image as an orphaned non-free image";
mrfu_text = "Replaceable non-free";
mrfu_tooltip = "Mark this image as a replaceable non-free image";
mfud_text = "Non-free use disputed";
mfud_tooltip = "Mark this image as non-free use disputed";
mbsr_text = "Base URL";
mbsr_tooltip = "This image links directly to the image or is a generic base URL";

function mnx_markNo(action) {
 qid_action = action;
 var promise = qid_getFileInfo();
 promise.done(mnx_getFileInfo_success);
}
function mnx_getFileInfo_success(result) {
 var template, warnTemplate;
 var templateParms, warnTemplateParms;
 var warnNoNamespace, hasShortNotice;
 var fileSrc;
 var subst = true;
 var page = qid_getPageInfo(result);
 
 // determine the template to add to the file and user pages and the edit summaries
 switch (qid_action) {
  case 'mnx_mcv':
   template = 'db-g12';
   warnTemplate = "db-copyvio-notice";
   fileSrc = window.prompt('Please enter the source URL of the image:', '');
   if (fileSrc == null) {
    alert("Action cancelled");
    return;
   }
   if (fileSrc == '') {
    alert("Error: no source URL entered. Aborting.")
    return;
   }
   templateParms = 'header=1|url=' + fileSrc;
   summary = "Image is a copyright violation; see " + fileSrc;
   warnSummary = "Warning: copyright violation";
   break;
  case 'mnx_mns':
   template = 'nsd';
   warnTemplate = "Di-no source-notice";
   summary = "Image is missing source information and will be deleted in seven days if it is not added.";
   warnSummary = "Warning: image missing source information.";
   warnNoNamespace = true;
   break;
  case 'mnx_mnl':
   template = 'nld';
   warnTemplate = "Di-no license-notice";
   summary = "Image is missing license information and will be deleted in seven days if it is not added.";
   warnSummary = "Warning: image missing license information.";
   warnNoNamespace = true;
   break;
  case 'mnx_mnsl':
   template = 'nsdnld';
   warnTemplate = "Di-no source-notice";
   summary = "Image is missing source and license information and will be deleted in seven days if both are not added.";
   warnSummary = "Warning: image missing source and license information.";
   warnNoNamespace = true;
   break;
  case 'mnx_mnp':
   template = 'npd';
   summary = "Image is missing evidence of permission and will be deleted in seven days if it is not provided.";
   fileSrc = window.prompt('(Optional) Please enter the source of the image:', '');
   if (fileSrc)
    templateParms = 'source=' + fileSrc;
   warnTemplate = "Di-no permission-notice";
   warnSummary = "Warning: image missing evidence of permission.";
   warnNoNamespace = true;
   break;
  case 'mnx_mnr':
   template = 'nrd';
   summary = "Image is missing non-free usage rationale and will be deleted in seven days if it is not added.";
   warnTemplate = "Missing rationale";
   warnSummary = "Warning: image missing non-free usage rationale.";
   hasShortNotice = true;
   break;
  case 'mnx_mor':
   template = 'orfud';
   summary = "This non-free image is not used in any articles and will be deleted in seven days if it remains so.";
   warnTemplate = "Orphaned";
   warnSummary = "The non-free image you uploaded is now orphaned.";
   hasShortNotice = true;
   break;
  case 'mnx_mrfu':
   template = 'rfu';
   summary = "This non-free image appears to illustrate a subject for which a free one could reasonably be found or created and will be deleted in two days.";
   warnTemplate = "Replaceable";
   warnSummary = "The non-free image you uploaded is replaceable by a free one.";
   warnNoNamespace = true;
   hasShortNotice = true;
   break;
  case 'mnx_mfud':
   template = 'dfu';
   summary = "The usage of this non-free image is disputed.";
   var nonFreeDisputeReason = window.prompt('Please enter the reason why you are disputing the usage of this non-free image:', '');
   if (!nonFreeDisputeReason) {
    alert("No reason given. Action cancelled.");
    return;
   }
   templateParms = '1=' + nonFreeDisputeReason;
   warnTemplate = "No fair";
   warnSummary = "The use of a non-free image you uploaded is disputed.";
   hasShortNotice = true;
   break;
  case 'mnx_mbsr':
   template = 'bsr';
   summary = "The source URL given is inadequate.";
   subst = false;
   warnTemplate = "bsr-user";
   warnSummary = "Please provide a better source URL for your image.";
   break;
 }
 // build the template wikitext
 var templateWikiText = '{{'
 if (subst)
  templateWikiText += 'subst:';
 templateWikiText += template;
 if (templateParms)
  templateWikiText += '|' + templateParms;
 templateWikiText += '}}';
 
 var promises = [];
 // add template wikitext to page
 var templatePromise = qid_addTemplateToFilePage(page, templateWikiText, summary, [ 'untagged' ]);
 promises.push(templatePromise);
  
 // warn the users
 qid_notifyUploadersWhoAreNotBots(page, function(warnPage, utContent) {
  var useShortNotice = false;
  if (hasShortNotice && qid_userBeenWarned(utContent, warnTemplate)) {
   // yes, use short version of template
   warnTemplate += ' short';
  }
  var warnWikiText = '{{subst:' + warnTemplate;
  var filename = mw.config.get(warnNoNamespace ? 'wgTitle' : 'wgPageName');
  warnWikiText += '|1=' + filename + '}} ~~' + '~~';
  var warnPromise = qid_addTemplateToUserTalkPage(warnPage, warnWikiText, warnSummary);
  promises.push(warnPromise);
 });
 
 // wait for all ajax calls to finish
 $.when.apply($, promises).done(function() {
  if (!qid_templateAddError)
   qid_setDialogMessage('All done!')
 });
}

function mnx_onload() {
  if (document.getElementById('ca-edit') == null) // not editable by non-admin
    return;
  if (mw.config.get('wgAction') == "view" && mw.config.get('wgCanonicalNamespace') == "File") {
    mw.util.addPortletLink('p-tb', 'javascript:mnx_markNo(\'mnx_mcv\')', mcv_text, 'mark-copyvio', mcv_tooltip);
    mw.util.addPortletLink('p-tb', 'javascript:mnx_markNo(\'mnx_mns\')', mns_text, 'mark-no-source', mns_tooltip);
    mw.util.addPortletLink('p-tb', 'javascript:mnx_markNo(\'mnx_mnl\')', mnl_text, 'mark-no-license', mnl_tooltip);
    mw.util.addPortletLink('p-tb', 'javascript:mnx_markNo(\'mnx_mnsl\')', mnsl_text, 'mark-no-source-license', mnsl_tooltip);
    mw.util.addPortletLink('p-tb', 'javascript:mnx_markNo(\'mnx_mnp\')', mnp_text, 'mark-no-permission', mnp_tooltip);
    mw.util.addPortletLink('p-tb', 'javascript:mnx_markNo(\'mnx_mnr\')', mnr_text, 'mark-no-rationale', mnr_tooltip);
    mw.util.addPortletLink('p-tb', 'javascript:mnx_markNo(\'mnx_mor\')', mor_text, 'mark-orphaned', mor_tooltip);
    mw.util.addPortletLink('p-tb', 'javascript:mnx_markNo(\'mnx_mrfu\')', mrfu_text, 'mark-replaceable', mrfu_tooltip);
    mw.util.addPortletLink('p-tb', 'javascript:mnx_markNo(\'mnx_mfud\')', mfud_text, 'mark-disputed', mfud_tooltip);
    mw.util.addPortletLink('p-tb', 'javascript:mnx_markNo(\'mnx_mbsr\')', mbsr_text, 'mark-base-url', mbsr_tooltip);
  }
}

/** ================================================================================
  * ==Automatic speedy tagging==
  * The actions in this section do one thing:
  * 1. Add a tag to the image page.
  */
// Configuration
mred_text = "Mark as redundant image";
mred_tooltip = "Mark this image as redundant (tag for speedy deletion)";
mmi_text = "Mark as missing image";
mmi_tooltip = "Mark as missing image (tag for speedy deletion)";
mmtc_text = "Mark as Move to Commons";
mmtc_tooltip = "Mark as candidate to move to Commons";
mncd_text = "Mark as Commons duplicate";
mncd_tooltip = "Mark as Commons duplicate";

function speedyi_onload() {
  if (document.getElementById('ca-edit') == null) // not editable by non-admin
    return;
  if (mw.config.get('wgAction') == "view" && mw.config.get('wgCanonicalNamespace') == "File") {
    mw.util.addPortletLink('p-tb', 'javascript:speedyi_mark(\'speedyi_mred\')', mred_text, 'mark-redundant', mred_tooltip);
    mw.util.addPortletLink('p-tb', 'javascript:speedyi_mark(\'speedyi_mmi\')', mmi_text, 'mark-missing', mmi_tooltip);
    mw.util.addPortletLink('p-tb', 'javascript:speedyi_mark(\'speedyi_mmtc\')', mmtc_text, 'mark-movecommons', mmtc_tooltip);
    mw.util.addPortletLink('p-tb', 'javascript:speedyi_mark(\'speedyi_mncd\')', mncd_text, 'mark-commons', mncd_tooltip);
  }
}

function speedyi_mark(action) {
 qid_action = action;
 var promise = qid_getFileInfo();
 promise.done(speedyi_getFileInfo_success);
}
function speedyi_getFileInfo_success(result) {
 var template;
 var templateParms;
 var summary;
 var subst = false;
 var page = qid_getPageInfo(result);
 var templatesToRemove = [ 'untagged' ];
 switch (qid_action) {
  case "speedyi_mred":
   template = 'db-f1';
   var dupe = window.prompt('Please enter the name of the image this one is redundant to.', '');
   if (!dupe) {
    qid_setDialogMessage('No image name entered. Action cancelled.');
    return;
   }
   dupe = qid_removeNamespace(dupe);
   summary = 'Tagging for [[WP:CSD#F1|speedy deletion]]: Image is redundant to [[:Image:' + dupe + ']].';
   templateParms = '|1=' + dupe;
   break;
  case 'speedyi_mmi':
   template = 'db-f2';
   summary = 'Tagging for [[WP:CSD#F2|speedy deletion]]: Image is missing or corrupt.';
   break;
  case 'speedyi_mmtc':
   template = 'Copy to Wikimedia Commons';
   summary = 'Image is a candidate for moving to [[Commons:Main Page|Wikimedia Commons]].';
   templateParms = '|human=' + mw.config.get('wgUserName');
   break;
  case 'speedyi_mncd':
   template = 'Now commons dated';
   var commonsimg = window.prompt('Please enter the name of the corresponding image on Commons (leave empty if the same name).', '');
   if (commonsimg == null) {
    qid_setDialogMessage('Action cancelled.');
    return;
   }
   if (commonsimg == '') {
    // file not specified, use the same name
    commonsimg = mw.config.get('wgPageName');
   } else {
    templateParms = '|1=' + commonsimg;
   }
   summary = 'Image is duplicate of [[Commons:Main Page|Commons]] image [[Commons:' + commonsimg + '|]].';
   subst = true;
   // remove {{Move to Commons}} template (and its various redirects) and other now-moot maintenance templates
   templatesToRemove = [ 'untagged', 'CTWC', 'CWC', 'Commons ok', 'Copy to Commons', 'Copy to commons', 'Copy to wikimedia commons', 'CopyToCommons', 'Do move to Commons', 'MITC', 'MTC', 'Move to Commons', 'Move to Wikimedia Commons', 'Move to commons', 'Move-to-commons', 'MoveToCommons', 'To commons', 'ToCommons', 'Upload to commons', 'Rename media', 'Ifr', 'Image move', 'Media rename', 'Nondescript', 'Rename image', 'Rename-image' ];
   break;
 }
 var templateWikiText = '{{';
 if (subst)
  templateWikiText += 'subst:';
 templateWikiText += template;
 if (templateParms)
  templateWikiText += '|' + templateParms;
 templateWikiText += '}}';

 // add template to file description page
 var promise = qid_addTemplateToFilePage(page, templateWikiText, summary, templatesToRemove);
 promise.then(function() {
  if (!qid_templateAddError)
   qid_setDialogMessage('All done!')
 });
}

$(document).ready(function() {
 nfd_onload();
 mnx_onload();
 speedyi_onload();
});
/* </nowiki></pre> */

Retrieved from "https://en.wikipedia.org/w/index.php?title=User:Holly_Cheng/quickimgdelete.js&oldid=1181163293"
 



Last edited on 21 October 2023, at 07:19  


Languages

 



This page is not available in other languages.
 

Wikipedia


This page was last edited on 21 October 2023, at 07:19 (UTC).

Content is available under CC BY-SA 4.0 unless otherwise noted.



Privacy policy

About Wikipedia

Disclaimers

Contact Wikipedia

Code of Conduct

Developers

Statistics

Cookie statement

Terms of Use

Desktop