User:Lupo/uselanghacks.js

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.
// <source lang="javascript">

/**** Import needed files. */
importScript( 'MediaWiki:Utilities.js' );
 
/**** Another file import */
importScript( 'MediaWiki:AjaxSubmit.js' );

var UseLangHack =
{
  do_hack : function (page_name, value, forms)
  {
    var href = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + encodeURIComponent (page_name);
    var tail = '&action=edit&runuselanghack='

    if (typeof (forms) == 'string') forms = [ forms ];
    if (!forms || forms.length == 0)
      forms = ['ownwork', 'fromflickr', 'fromgov', 'fromwikimedia'];
    
    for (var i = 0; i < forms.length; i++)
      window.open (
          href + forms[i] + tail + encodeURIComponent (value.replace(/XX/g, forms[i]))
        , '_blank');
  },

  do_action : function ()
  {
    if (!document.editform) return;
    var text = document.editform.wpTextbox1;
    if (!text) return;
    var uselanghack = getParamValue ('runuselanghack');
    if (uselanghack) {
      text.value = uselanghack;
      setEditSummary ('Upload form configuration (uselang hack)');
      submitAndClose (document.editform);
    } else {
      uselanghack = getParamValue ('runcopyhack');
      if (uselanghack) {
        UseLangHack.do_hack (wgPageName, text.value, uselanghack == '1' ? null : uselanghack);
        window.close ();
      }
    }
  },

  do_transclusion_hack : function (page_name, form)
  {
    UseLangHack.do_hack (page_name, '\{\{' + page_name + '\}\}', form);
  },
  
  do_copy_hack : function (page_name, form)
  {
    if (!form) form = '1';
    window.open
     (  mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + encodeURIComponent (page_name)
        + '&action=edit&runcopyhack=' + encodeURIComponent (form)
      , '_blank');
  },
  
  do_uselang_hack : function (ask)
  {
    var subpage = null;
    if (ask) {
      subpage = prompt ('Which form?', "");
      if (!subpage) return;
    }
    UseLangHack.do_transclusion_hack (wgPageName, subpage);
  },

  do_uselang_hack_copy : function (ask)
  {
    var subpage = null;
    if (ask) {
      subpage = prompt ('Which form?', "");
      if (!subpage) return;
    }
    UseLangHack.do_copy_hack (wgPageName, subpage);
  },

  do_full_set : function (ask)
  {
    var subpage = null;
    
    if (ask) {
      subpage = prompt ('Which form?', "");
      if (!subpage) return;
    }

    var lang_code = wgPageName.split ('/');
    if (!lang_code || lang_code.length != 2 || lang_code[0] != 'Commons:Upload') return;
    lang_code = lang_code[1];

    var transclusions =
    [
     // User links
     'Mytalk', 'Mypreferences', 'Mywatchlist', 'Mycontris', 'Userlogout',
     // tab label
     'Nstab-special',
     // search button labels
     'Ilsubmit', 'Powersearch', 'Search',
     // more menu labels, links
     'Searcharticle', 'Searchbutton', 'Toolbox', 'Specialpages',
     // footer
     'Privacy', 'Aboutsite', 'Disclaimerpage', 'Disclaimers',
     // from sidebar 
     'Navigation', 'Mainpage', 'Welcome-url', 'Welcome',
     'Portal-url', 'Portal', 'Village pump-url', 'Village pump',
     'Participate', 'Upload-url', 'Upload', 'Recentchanges', 
     'Latestfiles', 'Randomimage', 'Helppage', 'Help', 'Contact-url',
     'Contact', 
     // on form
     'Sourcefilename', 'Destfilename', 'License', 'Nolicense',
     'Fileuploadsummary','Watchthisupload', 'Ignorewarnings', 'Uploadbtn',
     'Watchthisupload', 'Upload-source', 'Upload-description', 'Upload-options'
    ];
    
    var copies =
    [
     // In sidebar, but doesn't always work with transclusions
     'Sitesupport', 'Sitesupport-url',
     // On form, but contain $1, which doesn't work across transclusions
     'Upload-permitted', 'Upload-maxfilesize'
    ];

    var trI = 0;
    var trC = 0;

    function doTransclusion () {
      var i = trI++;
      UseLangHack.do_transclusion_hack ('MediaWiki:' + transclusions[i] + '/' + lang_code, subpage);
      if (trI < transclusions.length) {
        window.setTimeout (doTransclusion, 2000);
      } else if (trC < copies.length) {
        window.setTimeout (doCopy, 2000);
      }        
    }
    
    function doCopy () {
      var i = trC++;
      UseLangHack.do_copy_hack ('MediaWiki:' + copies[i] + '/' + lang_code, subpage);
      if (trC < copies.length) {
        window.setTimeout (doCopy, 2000);
      } else {
        UseLangHack.do_hack (
          'MediaWiki:Uploadfooter/' + lang_code
         , '\{\{MediaWiki:UploadFormTexts|live=1|lang=' + lang_code + '|useform=XX\}\}'
         , subpage);
      }
    }
    
    doTransclusion();
  }
  
}; // end UseLangHack

if (wgNamespaceNumber == 8) addOnloadHook (UseLangHack.do_action);

// </source>