Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
// <nowiki>
// all credits to Ireas, siehe [[Benutzer:Ireas/Gadget-Commonsverschiebung.js]]


// require jquery
if (typeof($j) == "undefined")
  document.write('<script type="text/javascript" src="http://bits.wikimedia.org/skins-1.5/common/jquery.min.js?270z54"></script>');

CommonsTransfer = {
  tabParentId: "p-cactions",

  mrawesomeness: [ "Isderion" ],

  isChecker: function()
  {
    for (i = 0; i < CommonsTransfer.mrawesomeness.length; i++)
      if (wgUserName == CommonsTransfer.mrawesomeness[i])
        return true;

    for (i = 0; i < wgUserGroups.length; i++)
      if (wgUserGroups[i] == "sysop")
        return true;
    return false;
  },

  addPortletLink: function()
  {
    var url = "javascript:CommonsTransfer.askNewName();";
    mw.util.addPortletLink(CommonsTransfer.tabParentId, url, "Nach Commons verschieben", "ca-tocommons-template", "Per Bot nach Commons verschieben lassen");
  },

  addTemplate: function()
  {
    var newName = document.getElementById("CV_input").value;
    if (newName.match(/^\s*$/) != null)
      jsMsg("Vorgang abgebrochen.");
    else {
      if (CommonsTransfer.isChecker()) {
        CommonsTransfer.check(wgTitle, newName);
      } else {
        jsMsg("Trage Vorlage ein…");
        $.ajax({ type: "GET",
                  url: wgServer + wgScript,
                  data: { title: wgPageName, action: "edit" },
                  success: function(text) { CommonsTransfer.doTemplateQuery(text, newName); } });
        }
    }
  },

  getData: function(text)
  {
    var node = document.createElement("div");
    node.innerHTML = text;
    var data = null;
    var nodes = node.getElementsByTagName("form");
    for (var i = 0; i < nodes.length; i++) 
    {
      var n = nodes[i];
      if (n.id != "editform")
        continue;
      data = { wpSection:     n.wpSection.value,
               wpStarttime:   n.wpStarttime.value,
               wpEdittime:    n.wpEdittime.value,
               wpScrolltop:   n.wpScrolltop.value,
               wpAutoSummary: n.wpAutoSummary.value,
               oldid:         n.oldid.value,
               wpTextbox1:    n.wpTextbox1.value,
               wpEditToken:   n.wpEditToken.value,
               wpSummary:     n.wpSummary.value,
               wpMinoredit:   n.wpMinoredit.value,
               wpWatchthis:   n.wpWatchthis.value,
               wpSave:        n.wpSave.value };
  
    }
    return data;
  },

  doTemplateQuery: function(text, new_name)
  {
    var data = CommonsTransfer.getData(text);
    if (!data) {
      CommonsTransfer.error("no data");
      return;
    }
    data.action = "submit";
    data.title = wgPageName;
    data.wpTextbox1 += "\n{{subst:Nach Commons verschieben|" + new_name + "}}";
    data.wpSummary = "Markiere Datei zum Commons-Transfer nach [[:commons:File:" + new_name + "]]";
    $.ajax({ type: "POST",
              url: wgServer + wgScript,
              data: data,
              success: function(text) { jsMsg("Vorlage eingetragen!"); location.reload(); } });
  },

  askNewName: function()
  {
    window.scroll(0, 0);
    var defaultName = wgTitle;
    var code = "<b><big>Datei zum Commons-Transfer markieren</big></b><br /><form><label for='CV_input'>Neuer Dateiname:</label> <input type='text' name='CV_input' id='CV_input' value='" + defaultName + "' size='60' /><br /><input type='submit' value='Eintragen' onclick='CommonsTransfer.addTemplate()' /></form><br /><small><strong>Hinweis:</strong> Bitte beachte, dass nur dann ein abweichender Dateiname gewählt werden sollte, wenn es dafür einen <a href='http://commons.wikimedia.org/wiki/Commons:Dateien_verschieben#Welche_Dateien_sollten_umbenannt_werden.3F'>triftigen Grund</a> gibt.</small>";
    jsMsg(code);
  },

  error: function(msg)
  {
    jsMsg("Ein Fehler ist aufgetreten: <code>" + msg + "</code>");
  },

  addCheckLink: function()
  {
    var cs = document.getElementById("cv-check-link");
    if (!cs) return;
    var a = document.createElement("a");
    a.onclick = CommonsTransfer.check;
    a.appendChild(document.createTextNode("Bestätigen."));
    cs.appendChild(a);
  },

  check: function(localName, commonsName)
  {
    if (localName && commonsName) {
      var currentName = localName;
      var newName     = commonsName;
    } else {
      var ln = document.getElementById("localName");
      var cn = document.getElementById("commonsName");
      if (!ln || !cn) return;
      var currentName = ln.innerHTML;
      var newName     = cn.innerHTML;
    }

    if (!CommonsTransfer.isChecker())
      return;
    window.scroll(0, 0);
    jsMsg("Bestätige Verschiebungswunsch…");
    $.ajax({ type: "GET",
              url: wgServer + wgScript,
              data: { title: "Wikipedia:Commons-Transfer per Bot/Anfragen", action: "edit" },
              success: function(text) { CommonsTransfer.doCheckQuery(text, currentName, newName); } });
  },

  doCheckQuery: function(text, currentName, newName)
  {
    var data = CommonsTransfer.getData(text);
    if (!data) {
      CommonsTransfer.error("no data");
      return;
    }
    data.title = "Wikipedia:Commons-Transfer per Bot/Anfragen";
    data.action = "submit";
    data.wpTextbox1 = data.wpTextbox1 + "\n<request local=\"" + currentName + "\" commons=\"" + newName + "\" />";
    data.wpSummary = "Bestätige Transferwunsch: [[:Datei:" + currentName + "]] → [[:commons:File:" + newName + "]]";
    $.ajax({ type: "POST",
              url: wgServer + wgScript,
              data: data,
              success: function(text) { CommonsTransfer.addCheckedTemplate(currentName, newName); } });
  },

  addCheckedTemplate: function(currentName, newName)
  {
    $.ajax({ type: "GET",
              url: wgServer + wgScript,
              data: { title: "Datei:" + currentName, action: "edit" },
              success: function(text) { CommonsTransfer.doCheckedTemplateQuery(text, currentName, newName); } });
  },

  doCheckedTemplateQuery: function(text, currentName, newName)
  {
    var data = CommonsTransfer.getData(text);
    if (!data) {
      CommonsTransfer.error("no data");
      return;
    }
    data.title = "Datei:" + currentName;
    data.action = "submit";
    data.wpTextbox1 = data.wpTextbox1.replace(/{{Commonsfähig.*?}}/, "");
    data.wpTextbox1 = data.wpTextbox1.replace(/{{Nach Commons verschieben \(Bestätigung nötig\).*?}}/, "");
    data.wpTextbox1 = data.wpTextbox1 + "{{Nach Commons verschieben (bestätigt)|1=" + newName + "}}";
    data.wpSummary = "Transferwunsch bestätigt.";
    $.ajax({ type: "POST",
              url: wgServer + wgScript,
              data: data,
              success: function(text) { jsMsg("Transferwunsch bestätigt!"); } });   
  },

  init: function()
  {
    if (wgCanonicalNamespace != "File" || wgArticleId == 0)
      return;
    CommonsTransfer.addPortletLink();
    if (CommonsTransfer.isChecker())
      CommonsTransfer.addCheckLink();
  }
};

$(CommonsTransfer.init);
// </nowiki>