Naar inhoud springen

Gebruiker:Kameraad Pjotr/imagedelete.js

Uit Wikipedia, de vrije encyclopedie

Opmerking: na het publiceren is het wellicht nodig uw browsercache te legen om de veranderingen te zien.

  • Firefox / Safari: houd Shift ingedrukt terwijl u:je op Vernieuwen klikt of druk op Ctrl-F5 of Ctrl-R (⌘-Shift-R op een Mac)
  • Google Chrome: druk op Ctrl-Shift-R (⌘-Shift-R op een Mac)
  • Edge: houd Ctrl ingedrukt terwijl u:je op Vernieuwen klikt of druk op Ctrl-F5.
/* <pre><nowiki> */
/* quickimgdelete.js
 * Current version: 1.9
 * =======================================
 * Created by [[:en:User:Howcheng|Howard Cheng]], Nederlandse vertaling door [[Gebruiker:Kameraad Pjotr|Kameraad Pjotr]]
 * Released under the [[GNU Public License]] (GPL)
 * Full documentation at [[User talk:Howcheng/quickimgdelete.js]]
 * =======================================
 */
// ==General configuration==
qid_autosave = true; // Should the edits be saved automatically?
// Site info
qid_path = "/w/index.php";
qid_prettypath = "/wiki/";
qid_hostname = window.location.hostname;

// ==Helper functions== 
// from [[User:Jnothman/automod.js]]
function GuessUTCDate() {
    var today = new Date();
    return today.getUTCFullYear() + '' + today.getUTCMonth() + '' + today.getUTCDate();
}

// From [[en:User:Lupin/autoedit.js]]
function getParamValue(paramName) {
  var cmdRe=RegExp('[&?]'+paramName+'=([^&]*)');
  var h=document.location;
  var m=cmdRe.exec(h);
  if (m) {
    try {
      return decodeURIComponent(m[1]);
    } catch (someError) {}
  }
  return null;
}

function qid_openWindow(url, windowName) {
  if (!windowName) windowName = 'qid_window';
  var res = window.open(url, windowName);
  if (!res) alert("qid_openWindow: window.open() returned null");
}

function qid_getUploader() {
  // Get uploader from first point in the list under "File history"
  // Uploader is stored in second A tag in UL tag under "File history"
  // Returns title of user page (without name space) in URL form
  var el = document.getElementById('filehistory')
  if (!el) {
    alert("qid_getUploader: Kan de bestandsgeschiedenis niet vinden ... gestopt");
    return null;
  }
  while (el.nextSibling) {
    el = el.nextSibling;
    if (el.tagName && el.tagName.toLowerCase() == 'ul') 
      break;
  }
  if (!el) {
    alert("qid_getUploader: Kan de ul-tag niet vinden ... gestopt");
    return null;
  }
  
  var els = el.getElementsByTagName('li');
  if (!els) {
    alert("qid_getUploader: Kan de li-tag niet vinden ... gestopt");
    return null;
  }
  var uploaders = new Array();
  var re1 = new RegExp('http://' + (qid_hostname + qid_prettypath).replace(/\./g, '\\.') + 'Gebruiker:(.*)$');
  var re2 = new RegExp('http://' + (qid_hostname + qid_path).replace(/\./g, '\\.') + '\\?title=Gebruiker:([^&]*)');
  var re3 = /Overleg( gebruiker)?:(.*)$/; // this is for IE and handling Unicode characters

  var m;
  var uploader;
  var uploaderList = "";
  var count = 0;
  el = els[0];
  do {
    var as = el.childNodes;
    for (var k=0; k<as.length; k++) {
       if (as[k].tagName != 'A') continue;
       m = re3.exec(as[k].title);
       if (m) uploader = encodeURIComponent(m[2]);
       m = re1.exec(as[k].href);
       if (m) uploader = m[1];
       m = re2.exec(as[k].href);
       if (m) uploader = m[1];
    }

    if (uploaderList.indexOf(uploader) == -1) {
      if (count > 0) uploaderList += "; ";
      uploaderList += count + " - " + uploader;
      uploaders[uploaders.length] = uploader;
      count += 1;
    }
    el = el.nextSibling;
  } while (el);

  if (!uploaders || uploaders.length == 0) {
    alert("qid_getUploader: Kan de uploader niet vinden ... gestopt");
    return null;
  }
  if (uploaders.length == 1)
    return uploaders[0];

  var which = parseInt(window.prompt("Welke uploader moet gewaarschuwd worden? " + uploaderList, ""));
  if (isNaN(which) || which < 0 || which >= uploaders.length) {
    alert("qid_getUploader: Foute selectie ... gestopt");
    return null;
  }
  return uploaders[which];
}

function qid_removeTemplate(editformval, template) {
  var templatepos = editformval.indexOf('{{' + template);
  if (templatepos > -1) {
    var lastbracepos = editformval.indexOf('}}', templatepos) + 1;
    editformval = editformval.substr(0, templatepos) + editformval.substr(lastbracepos + 2);
  }
  return editformval;
}

function qid_doesTemplateExist(editformval, template) {
  var templatepos = editformval.indexOf('{{' + template);
  return (templatepos > -1);
}

function qid_checkForRedirect(editformval, type) {
  if (editformval.toLowerCase().indexOf("#redirect") == -1)
    return;

  var re = /\[\[([^\]]+)\]\]/;
  var m = re.exec(editformval);
  var redirtarget = m[1];
  var fakeaction = getParamValue("fakeaction");
  var pagename = getParamValue("target");
  var redirurl = qid_path + '?title=' + redirtarget
               + '&action=edit&fakeaction=' + fakeaction + '&target=' + pagename;
  if (type)
    redirurl += '&type=' + type;
  window.location.replace(redirurl);
}

function qid_saveEditForm(txt, summary) {
  document.editform.wpTextbox1.value = txt;
  document.editform.wpSummary.value = summary;
  if (qid_autosave) document.editform.wpSave.click();
}

function qid_userBeenWarned(txt, template) {
  var re = eval("/\<!-- ?Template:" + template + " ?--\>/;");
  return re.test(txt);
}

/** ================================================================================
  * ==Automatic 'nominate for deletion/gi' 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 = "Nomineer voor verwijdering";
nfd_tooltip = "Nomineer deze afbeelding voor verwijdering";
nfd_prompt = "Reden voor de nominatie?";
nfd_delReq = "Wikipedia:Te_verwijderen_afbeeldingen/Toegevoegd_" + GuessUTCDate();
nfd_deleteTemplate = "afbweg";
nfd_idwTemplate = "awn";
nfd_ifdTemplate = "Gebruiker:Kameraad_Pjotr/Delete";
nfd_glossary = new Array(
  new Array("GI", "Geen info"),
  new Array("AU", "Schendt auteursrechten"),
  new Array("TO", "Twijfel aan toestemming"),
  new Array("BG", "Beperkt gebruik"),
  new Array("EW", "Enkel wikipedia"),
  new Array("NE", "Niet encyclopedisch")
);

function nfd_tagImage(which) {
  var promptTxt;
  var targetUrl;
  
  var editlk = document.getElementById('ca-edit').getElementsByTagName('a')[0].href;
  editlk += '&fakeaction=' + which + '_delete'

  switch (which) {
    case 'nfd':
      promptTxt = nfd_prompt;
      targetUrl = nfd_delReq;
      break;
  }

  var reason = prompt(promptTxt, '');
  if (!reason) return;

  var pagename = encodeURIComponent(mw.config.get('wgPageName'));
  var uploader = qid_getUploader();
  if (!uploader) return;
  qid_openWindow(qid_path + '?title=Overleg_gebruiker:' + uploader
                 + '&action=edit&fakeaction=' + which + '_warn&target=' + pagename);
  qid_openWindow(qid_path + '?title=' + targetUrl + '&action=edit&fakeaction=' + which + '_add' 
                 + '&target=' + pagename + '&reason=' + encodeURIComponent(reason)
                 + '&uploader=' + uploader, 'qid_ifd_window');
  window.location = editlk;
}

function nfd_addDeleteTemplate(template, otherparam) {
  var txt = '{{' + template;
  var summary;
  switch (template) {
    case nfd_deleteTemplate:
      summary = 'nomineer voor verwijdering';
      break;
  }
  txt += '}}';
  var editformval = qid_removeTemplate(document.editform.wpTextbox1.value, 'untagged');
  qid_saveEditForm(txt + '\n' + editformval, summary);
}

function nfd_addIdwTemplate(template, target) {
  var editformval = document.editform.wpTextbox1.value;
  qid_checkForRedirect(editformval);
  var txt = '{{' + template + '}}';
  editformval += '\n' + txt + '\n';
  qid_saveEditForm(editformval, txt);
}

function nfd_updateDelReq(target, reason, uploader) {
  var colonPos = target.indexOf(':');
  var imageName = target.substring(colonPos + 1);
  var abbrevCount = 0;
  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);
  }
  var txt = '{{subst:' + nfd_ifdTemplate + '|naam=' + imageName +
    '|reden=' + reason + '}}';
  var editformval = document.editform.wpTextbox1.value + ' - ' + txt + ' ~~' + '~~ \n';
  var summary = 'Nominatie van [[:' + target + ']]';
  qid_saveEditForm(editformval, summary);
}

function nfd_onload() {
  if (document.getElementById('ca-edit') == null) // not editable by non-admin
    return;
  if (wgCanonicalNamespace == "Afbeelding") {
    mw.util.addPortletLink('p-tb', 'javascript:nfd_tagImage(\'nfd\')', nfd_text, 'nom-for-del', nfd_tooltip);
  }
  var fakeaction = getParamValue('fakeaction');
  switch (fakeaction) {
    case 'nfd_delete':
      nfd_addDeleteTemplate(nfd_deleteTemplate);
      break;
      break;
    case 'nfd_warn':
      nfd_addIdwTemplate(nfd_idwTemplate, decodeURIComponent(getParamValue('target')));
      break;
    case 'nfd_add':
      nfd_updateDelReq(decodeURIComponent(getParamValue('target')), 
        decodeURIComponent(getParamValue('reason')), decodeURIComponent(getParamValue('uploader')));
      break;
  }
}

$(nfd_onload);


/** ================================================================================
  * ==Automatic speedy tagging==
  * The actions in this section do one thing:
  * 1. Add a tag to the image page.
  */
mmtc_text = "Verplaatsbaar naar Commons";
mmtc_tooltip = "Verplaatsbaar naar Commons";

mncd_text = "Nucommons";
mncd_tooltip = "Nucommons";

function speedyi_addTemplate(template, imagetarget) {
  var summary;
  var usesubst = false;
  
  switch (template) {
    case 'vnc':
      summary = 'Afbeelding verplaatsbaar naar [[Commons:Main Page|Commons]].';
      break;
    case 'nucommons':
      var commonsimgname = (!imagetarget) ? wgPageName : imagetarget;
      summary = 'Afbeelding bestaat als [[Commons:' + commonsimgname + '|]] op [[Commons:Main Page|Commons]]';
      usesubst = true;
      break;
  }

  var editformval = qid_removeTemplate(document.editform.wpTextbox1.value, 'untagged');
  if (template == 'Nucommons') { // for ncd, remove "Move to Commons" (and variations thereof) template
    var mtctemplates = new Array('vnc', 'Verplaats naar Wikimedia Commons', 'Verplaats naar Commons', 'Verplaats naar commons', 'Verplaats naar Wikimedia commons', 'Verplaats naar wikimedia Commons', 'Verplaats naar wikimedia commons', 'Vnc', 'VNC');
    for (var i = 0; i < mtctemplates.length; i++) {
      editformval = qid_removeTemplate(editformval, mtctemplates[i]);
    }
  }
  qid_saveEditForm(txt + '\n' + editformval, summary);
}

function speedyi_mark(action) {
  var editlk = document.getElementById('ca-edit').getElementsByTagName('a')[0].href;
  var xtra = '';
  switch (action) {
    case "speedyi_mncd":
      var commonsimg = window.prompt('Naam op Commons? (leeg laten als de naam hetzelfde is)', '');
      if (commonsimg == null) {
        alert('speedyi_mark: Action canceled.');
        return;
      }
      if (commonsimg != '') {
        xtra = '&target=' + commonsimg;
      }
      break;
  }
  window.location = editlk + '&fakeaction=' + action + xtra;
}

function speedyi_onload() {
  if (document.getElementById('ca-edit') == null) // not editable by non-admin
    return;
  if (wgCanonicalNamespace == "Afbeelding") {
    mw.util.addPortletLink('p-tb', 'javascript:speedyi_mark(\'speedyi_mmtc\')', mmtc_text, 'verplaats nar commons', mmtc_tooltip);
    mw.util.addPortletLink('p-tb', 'javascript:speedyi_mark(\'speedyi_mncd\')', mncd_text, 'nucommons', mncd_tooltip);
  }
  var fakeaction = getParamValue('fakeaction');
  switch (fakeaction) {
    case 'speedyi_mmtc':
      speedyi_addTemplate('Verplaats naar commons');
      break;
    case 'speedyi_mncd':
      var target = getParamValue('target');
      if (target) target = decodeURIComponent(target);
      speedyi_addTemplate('nucommons', target);
      break;
  }
}

$(speedyi_onload);
/* </nowiki></pre> */