<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://gw1wiki.ezgame.cc/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AUploadForm.js</id>
	<title>MediaWiki:UploadForm.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://gw1wiki.ezgame.cc/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AUploadForm.js"/>
	<link rel="alternate" type="text/html" href="https://gw1wiki.ezgame.cc/index.php?title=MediaWiki:UploadForm.js&amp;action=history"/>
	<updated>2026-10-18T23:04:18Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://gw1wiki.ezgame.cc/index.php?title=MediaWiki:UploadForm.js&amp;diff=115&amp;oldid=prev</id>
		<title>gww&gt;Chieftain Alex: Undo revision 2655426 by Chieftain Alex (Talk) unnecessary now that the regex replace has been fixed</title>
		<link rel="alternate" type="text/html" href="https://gw1wiki.ezgame.cc/index.php?title=MediaWiki:UploadForm.js&amp;diff=115&amp;oldid=prev"/>
		<updated>2020-04-23T22:06:35Z</updated>

		<summary type="html">&lt;p&gt;Undo revision 2655426 by &lt;a href=&quot;/wiki/Special:Contributions/Chieftain_Alex&quot; title=&quot;Special:Contributions/Chieftain Alex&quot;&gt;Chieftain Alex&lt;/a&gt; (&lt;a href=&quot;/index.php?title=User_talk:Chieftain_Alex&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User talk:Chieftain Alex (page does not exist)&quot;&gt;Talk&lt;/a&gt;) unnecessary now that the regex replace has been fixed&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt; /*&amp;lt;nowiki&amp;gt;*/&lt;br /&gt;
/**** class UploadForm.js&lt;br /&gt;
 * (c) 2008 by Patrick Westerhoff [poke] and Johan Sköld [Galil]&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
function UploadForm ()&lt;br /&gt;
{&lt;br /&gt;
  /** setting start **/&lt;br /&gt;
  var settingRows = {&lt;br /&gt;
    'Image use' : [&lt;br /&gt;
      { id:    'uploadGeneralImage',&lt;br /&gt;
        name:  'uploadImageUse',&lt;br /&gt;
        type:  'radio',&lt;br /&gt;
        label: 'General use',&lt;br /&gt;
        value: 'general',&lt;br /&gt;
        def:   true },&lt;br /&gt;
      { id:    'uploadUserImage',&lt;br /&gt;
        name:  'uploadImageUse',&lt;br /&gt;
        type:  'radio',&lt;br /&gt;
        label: 'User space',&lt;br /&gt;
        value: 'user' },&lt;br /&gt;
      { id:    'uploadGuildImage',&lt;br /&gt;
        name:  'uploadImageUse',&lt;br /&gt;
        type:  'radio',&lt;br /&gt;
        label: 'Guild space',&lt;br /&gt;
        value: 'guild' }&lt;br /&gt;
    ],&lt;br /&gt;
    'Licensing settings': [&lt;br /&gt;
      { id:    'uploadGFDL',&lt;br /&gt;
        name:  'uploadLicensing',&lt;br /&gt;
        type:  'radio',&lt;br /&gt;
        label: 'Normal image',&lt;br /&gt;
        value: 'gfdl',&lt;br /&gt;
        def:   true },&lt;br /&gt;
      { id:    'uploadArenanetImg',&lt;br /&gt;
        name:  'uploadLicensing',&lt;br /&gt;
        type:  'radio',&lt;br /&gt;
        label: 'ArenaNet owned image',&lt;br /&gt;
        value: 'arenanetimage' },&lt;br /&gt;
      { id:    'uploadScreenshot',&lt;br /&gt;
        name:  'uploadLicensing',&lt;br /&gt;
        type:  'radio',&lt;br /&gt;
        label: 'Guild Wars screenshot',&lt;br /&gt;
        value: 'screenshot' }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
  var rulesNaming = {&lt;br /&gt;
    'uploadUserImage':&lt;br /&gt;
    { expr:    new RegExp( '^[Uu]ser[-_ ]([^-_ ]+)[-_ ](.+?)' ),&lt;br /&gt;
      replace: 'User_' + ( wgUserName ? wgUserName.replace( ' ', '_' ) : '' ) + '_$1',&lt;br /&gt;
      message: 'Invalid user image filename. It has been modified to conform with our &amp;lt;a href=&amp;quot;/wiki/Guild_Wars_Wiki:Image_use#User_page_images&amp;quot; title=&amp;quot;Guild Wars Wiki:Image use&amp;quot;&amp;gt;image use policy&amp;lt;/a&amp;gt;. Please click &amp;quot;Upload file&amp;quot; again to upload.'&lt;br /&gt;
    },&lt;br /&gt;
    'uploadGuildImage':&lt;br /&gt;
    { expr:    new RegExp( '^[Gg]uild[-_ ]([^-_ ]+)[-_ ](.+?)' ),&lt;br /&gt;
      message: 'Invalid guild image filename. Please name it according to our &amp;lt;a href=&amp;quot;/wiki/Guild_Wars_Wiki:Image_use#Guild_images&amp;quot; title=&amp;quot;Guild Wars Wiki:Image use&amp;quot;&amp;gt;image use policy&amp;lt;/a&amp;gt;, such as: &amp;lt;code&amp;gt;Guild_&amp;lt;strong&amp;gt;Guild_Name&amp;lt;/strong&amp;gt;_$1&amp;lt;/code&amp;gt;.'&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  var rulesContent = {&lt;br /&gt;
    'uploadGeneralImage':&lt;br /&gt;
    { expr:    new RegExp( '' ),&lt;br /&gt;
      tag:     ''&lt;br /&gt;
    },&lt;br /&gt;
    'uploadUserImage':&lt;br /&gt;
    { expr:    new RegExp( '(\\{\\{\\s*?(Template:)?[Uu]ser image\\s*?(\|.*?)?\\}\\}\\s*)', 'g' ),&lt;br /&gt;
      tag:     '{{user image|' + wgUserName + '}}\n'&lt;br /&gt;
    },&lt;br /&gt;
    'uploadGuildImage':&lt;br /&gt;
    { expr:    new RegExp( '(\\{\\{\\s*?(Template:)?[Gg]uild image\\s*?(\|.*?)?\\}\\}\\s*)', 'g' ),&lt;br /&gt;
      tag:     '{{guild image}}\n'&lt;br /&gt;
    },&lt;br /&gt;
    'uploadGFDL':&lt;br /&gt;
    { expr:    new RegExp( '' ),&lt;br /&gt;
      tag:     ''&lt;br /&gt;
    },&lt;br /&gt;
    'uploadArenanetImg':&lt;br /&gt;
    { expr:    new RegExp( '(\\{\\{\\s*?(Template:)?[Aa]rena[Nn]et image\\s*?\\}\\}\\s*)', 'g' ),&lt;br /&gt;
      tag:     '{{ArenaNet image}}\n'&lt;br /&gt;
    },&lt;br /&gt;
    'uploadScreenshot':&lt;br /&gt;
    { expr:    new RegExp( '(\\{\\{\\s*?(Template:)?[Ss]creenshot\\s*?\\}\\}\\s*)', 'g' ),&lt;br /&gt;
      tag:     '{{screenshot}}\n'&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /** settings end **/&lt;br /&gt;
  &lt;br /&gt;
  var uploadForm;&lt;br /&gt;
  var uploadDesc;&lt;br /&gt;
  var uploadFilename;&lt;br /&gt;
  var uploadMessage = document.createElement( 'div' );&lt;br /&gt;
  var reTrim        = new RegExp( '^(\\s*)(.*?)(\\s*)$' );&lt;br /&gt;
  &lt;br /&gt;
  uploadMessage.id  = 'uploadMessage';&lt;br /&gt;
  uploadMessage.style.color     = '#CC0000';&lt;br /&gt;
  uploadMessage.style.fontStyle = 'italic';&lt;br /&gt;
  uploadMessage.style.marginTop = '0.3em';&lt;br /&gt;
  &lt;br /&gt;
  initialize();&lt;br /&gt;
  &lt;br /&gt;
  /** private void initialize () **/&lt;br /&gt;
  function initialize ()&lt;br /&gt;
  {&lt;br /&gt;
    if ( wgPageName != 'Special:Upload' || document.getElementById( 'mw-upload-form' ) == null )&lt;br /&gt;
      return;&lt;br /&gt;
    &lt;br /&gt;
    uploadForm     = document.getElementById( 'mw-upload-form' );&lt;br /&gt;
    uploadDesc     = document.getElementById( 'wpUploadDescription' );&lt;br /&gt;
    uploadFilename = document.getElementById( 'wpDestFile' );&lt;br /&gt;
    &lt;br /&gt;
    for ( var row in settingRows )&lt;br /&gt;
    {&lt;br /&gt;
      var tRow  = document.createElement( 'tr' );&lt;br /&gt;
      var tCel1 = document.createElement( 'td' );&lt;br /&gt;
      var tCel2 = document.createElement( 'td' );&lt;br /&gt;
      &lt;br /&gt;
      for ( var key in settingRows[row] )&lt;br /&gt;
      {&lt;br /&gt;
        configElement = settingRows[row][key];&lt;br /&gt;
        var input     = null;&lt;br /&gt;
        &lt;br /&gt;
        try&lt;br /&gt;
        {&lt;br /&gt;
          input = document.createElement( '&amp;lt;input name=&amp;quot;' + configElement.name + '&amp;quot; /&amp;gt;' );&lt;br /&gt;
        }&lt;br /&gt;
        catch ( e )&lt;br /&gt;
        {}&lt;br /&gt;
        &lt;br /&gt;
        if ( !input )&lt;br /&gt;
        {&lt;br /&gt;
          input      = document.createElement( 'input' );&lt;br /&gt;
          input.name = configElement.name;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        input.type    = configElement.type;&lt;br /&gt;
        input.value   = configElement.value;&lt;br /&gt;
        input.id      = configElement.id;&lt;br /&gt;
        input.checked = configElement.def;&lt;br /&gt;
        &lt;br /&gt;
        var label     = document.createElement( 'label' );&lt;br /&gt;
        label.htmlFor = configElement.id;&lt;br /&gt;
        label.appendChild( document.createTextNode( configElement.label ) );&lt;br /&gt;
        &lt;br /&gt;
        if ( rulesContent[ configElement.id ] != null || configElement.type == 'radio' )&lt;br /&gt;
          input.onclick = applyInput;&lt;br /&gt;
        &lt;br /&gt;
        tCel2.appendChild( input );&lt;br /&gt;
        tCel2.appendChild( label );&lt;br /&gt;
        tCel2.appendChild( document.createTextNode( ' ' ) );&lt;br /&gt;
      }&lt;br /&gt;
      &lt;br /&gt;
      tCel1.style.textAlign = 'right';&lt;br /&gt;
      tCel1.appendChild( document.createTextNode( row + ':' ) );&lt;br /&gt;
      tRow.appendChild( tCel1 );&lt;br /&gt;
      tRow.appendChild( tCel2 );&lt;br /&gt;
      &lt;br /&gt;
      var position = uploadDesc.parentNode.parentNode;&lt;br /&gt;
      position.parentNode.insertBefore( tRow, position );&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    uploadDesc.onkeyup  = redrawInput;&lt;br /&gt;
    uploadForm.onsubmit = checkInput;&lt;br /&gt;
    &lt;br /&gt;
    if ( uploadFilename.value != '' )&lt;br /&gt;
    {&lt;br /&gt;
      for ( var inputId in rulesNaming )&lt;br /&gt;
      {&lt;br /&gt;
        if ( rulesContent[inputId] == null || uploadFilename.value.search( rulesNaming[ inputId ].expr ) &amp;lt; 0 )&lt;br /&gt;
          continue;&lt;br /&gt;
        &lt;br /&gt;
        uploadDesc.value = rulesContent[ inputId ].tag + uploadDesc.value;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
      redrawInput();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
    &lt;br /&gt;
  /** private void applyInput () **/&lt;br /&gt;
    function applyInput ()&lt;br /&gt;
  {&lt;br /&gt;
    var inputGroup = document.getElementsByName( this.name );&lt;br /&gt;
    &lt;br /&gt;
    for ( var i = 0; i &amp;lt; inputGroup.length; i++ )&lt;br /&gt;
    {&lt;br /&gt;
      if ( inputGroup[i].nodeName.toLowerCase() != 'input' || rulesContent[ inputGroup[i].id ] == null )&lt;br /&gt;
        continue;&lt;br /&gt;
      &lt;br /&gt;
      var inputId   = inputGroup[i].id;&lt;br /&gt;
      var ruleMatch = uploadDesc.value.search( rulesContent[ inputId ].expr );&lt;br /&gt;
      &lt;br /&gt;
      if ( !inputGroup[i].checked )&lt;br /&gt;
        uploadDesc.value = uploadDesc.value.replace( rulesContent[ inputId ].expr, '' );&lt;br /&gt;
      else if ( ruleMatch &amp;lt; 0 )&lt;br /&gt;
        uploadDesc.value = rulesContent[ inputId ].tag + uploadDesc.value;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  /** private void redrawInput () **/&lt;br /&gt;
  function redrawInput ()&lt;br /&gt;
  {&lt;br /&gt;
    for ( var id in rulesContent )&lt;br /&gt;
    {&lt;br /&gt;
      var input = document.getElementById( id );&lt;br /&gt;
        &lt;br /&gt;
      if ( input.nodeName.toLowerCase() != 'input' )&lt;br /&gt;
        continue;&lt;br /&gt;
      &lt;br /&gt;
      input.checked = !( uploadDesc.value.search( rulesContent[id].expr ) &amp;lt; 0 );&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  /** private void checkInput ( event ) **/&lt;br /&gt;
  function checkInput ( e )&lt;br /&gt;
  {&lt;br /&gt;
    if ( !e )&lt;br /&gt;
      var e = window.event;&lt;br /&gt;
      &lt;br /&gt;
    if ( document.getElementById( 'uploadMessage' ) == null )&lt;br /&gt;
      uploadFilename.parentNode.appendChild( uploadMessage );&lt;br /&gt;
    else&lt;br /&gt;
      uploadMessage.innerHTML = '';&lt;br /&gt;
    &lt;br /&gt;
    var messages = new Array();&lt;br /&gt;
    &lt;br /&gt;
    for ( var inputId in rulesNaming )&lt;br /&gt;
    {&lt;br /&gt;
      var input = document.getElementById( inputId );&lt;br /&gt;
        &lt;br /&gt;
      if ( input == null || input.nodeName.toLowerCase() != 'input' || !input.checked )&lt;br /&gt;
        continue;&lt;br /&gt;
      &lt;br /&gt;
      if ( uploadFilename.value.search( rulesNaming[ inputId ].expr ) &amp;lt; 0 )&lt;br /&gt;
      {&lt;br /&gt;
        messages.push( uploadFilename.value.replace( /^(.*?)$/, rulesNaming[ inputId ].message ) );&lt;br /&gt;
        &lt;br /&gt;
        if ( rulesNaming[ inputId ].replace != null )&lt;br /&gt;
          uploadFilename.value = uploadFilename.value.replace( /^(.*?)$/, rulesNaming[ inputId ].replace );&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    for ( var inputId in rulesContent )&lt;br /&gt;
    {&lt;br /&gt;
      var input = document.getElementById( inputId );&lt;br /&gt;
      &lt;br /&gt;
      if ( input == null || input.nodeName.toLowerCase() != 'input' )&lt;br /&gt;
        continue;&lt;br /&gt;
      &lt;br /&gt;
      var ruleMatch  = uploadDesc.value.search( rulesContent[ inputId ].expr );&lt;br /&gt;
      &lt;br /&gt;
      if ( !input.checked )&lt;br /&gt;
        uploadDesc.value = uploadDesc.value.replace( rulesContent[ inputId ].expr, '' );&lt;br /&gt;
      else if ( ruleMatch &amp;lt; 0 )&lt;br /&gt;
        uploadDesc.value = rulesContent[ inputId ].tag + uploadDesc.value;&lt;br /&gt;
      else&lt;br /&gt;
      {&lt;br /&gt;
        ruleMatch = uploadDesc.value.match( rulesContent[ inputId ].expr );&lt;br /&gt;
        &lt;br /&gt;
        if ( ruleMatch.length &amp;gt; 1 )&lt;br /&gt;
        {&lt;br /&gt;
          uploadDesc.value = rulesContent[ inputId ].tag + uploadDesc.value.replace( rulesContent[ inputId ].expr, '' );&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    if ( messages.length &amp;gt; 0 )&lt;br /&gt;
    {&lt;br /&gt;
      uploadMessage.innerHTML = messages.join( '&amp;lt;br /&amp;gt;' );&lt;br /&gt;
      &lt;br /&gt;
      if ( e.preventDefault )&lt;br /&gt;
        e.preventDefault();&lt;br /&gt;
      &lt;br /&gt;
      e.returnValue = false;  &lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
$(UploadForm);&lt;br /&gt;
/*&amp;lt;/nowiki&amp;gt;*/&lt;/div&gt;</summary>
		<author><name>gww&gt;Chieftain Alex</name></author>
	</entry>
</feed>