Improved form for URL-based upload
authorMagnus Manske <magnusmanske@users.mediawiki.org>
Thu, 31 Aug 2006 09:50:46 +0000 (09:50 +0000)
committerMagnus Manske <magnusmanske@users.mediawiki.org>
Thu, 31 Aug 2006 09:50:46 +0000 (09:50 +0000)
RELEASE-NOTES
includes/SpecialUpload.php
languages/MessagesEn.php
skins/common/wikibits.js

index c79926c..d1b4810 100644 (file)
@@ -157,7 +157,7 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN
 * Pass page title as parameters to "linkshere" and "nolinkshere" and update
   default message text
 * Allows to upload from publicy accessible URL. Set $wgAllowCopyUploads = true ; in LocalSettings.php
-  Limited to $wgMaxUploadSize (default:100MB); URL upload is limited to sysops by default
+  Limited to $wgMaxUploadSize (default:100MB); URL upload is limited to sysops by default, and displayed as a second line if appropriate
 * (bug 832) Return to user page after emailing a user
 * (bug 366) Add local-system-timezone equivalents for date/time variables
 * (bug 7109) Fix Atom feed version number in header links
index b6301f1..0330bb0 100644 (file)
@@ -56,7 +56,7 @@ class UploadForm {
                $this->mUploadCopyStatus  = $request->getText( 'wpUploadCopyStatus' );
                $this->mUploadSource      = $request->getText( 'wpUploadSource' );
                $this->mWatchthis         = $request->getBool( 'wpWatchthis' );
-               $this->mSourceType         = $request->getBool( 'wpSourceType' );
+               $this->mSourceType         = $request->getText( 'wpSourceType' );
                wfDebug( "UploadForm: watchthis is: '$this->mWatchthis'\n" );
 
                $this->mAction            = $request->getVal( 'action' );
@@ -109,7 +109,7 @@ class UploadForm {
         */
        function initializeFromUrl( $request ) {
                global $wgTmpDirectory, $wgMaxUploadSize;
-               $url = $request->getText( 'wpUploadFile' );
+               $url = $request->getText( 'wpUploadFileURL' );
                $local_file = tempnam( $wgTmpDirectory, 'WEBUPLOAD' );
 
                $this->mUploadTempName = $local_file;
@@ -137,7 +137,7 @@ class UploadForm {
 
                # Maybe remove some pasting blanks :-)
                $url = strtolower( trim( $url ) );
-               if( substr( $u, 0, 7 ) != 'http://' && substr( $u, 0, 6 ) != 'ftp://' ) {
+               if( substr( $url, 0, 7 ) != 'http://' && substr( $url, 0, 6 ) != 'ftp://' ) {
                        # Only HTTP or FTP URLs
                        return true;
                }
@@ -724,22 +724,33 @@ class UploadForm {
                        ? 'checked="checked"'
                        : '';
 
-               // Fixme: this is a crappy form
-               if( $wgAllowCopyUploads && $wgRequest->getVal( 'source' ) == 'web' && $wgUser->isAllowed( 'upload_by_url' ) ) {
-                       $sourcetype = 'text';
-                       $source_comment = '<input type="hidden" name="wpSourceType" value="web" />' . wfMsgHtml( 'upload_source_url' );
+               // Prepare form for upload or upload/copy
+               if( $wgAllowCopyUploads && $wgUser->isAllowed( 'upload_by_url' ) ) {
+                       $source_comment = wfMsgHtml( 'upload_source_url' );
+                       $filename_form = 
+                               "<input type='radio' id='wpSourceTypeFile' name='wpSourceType' value='file' onchange='toggle_element_activation(\"wpUploadFileURL\",\"wpUploadFile\")' checked />" . 
+                               "<input tabindex='1' type='file' name='wpUploadFile' id='wpUploadFile' onfocus='toggle_element_activation(\"wpUploadFileURL\",\"wpUploadFile\");toggle_element_check(\"wpSourceTypeFile\",\"wpSourceTypeURL\")'" . 
+                               ($this->mDestFile?"":"onchange='fillDestFilename(\"wpUploadFile\")' ") . "size='40' />" .
+                               wfMsgHTML( 'upload_source_file' ) . "<br/>" .
+                               "<input type='radio' id='wpSourceTypeURL' name='wpSourceType' value='web' onchange='toggle_element_activation(\"wpUploadFile\",\"wpUploadFileURL\")' />" .
+                               "<input tabindex='1' type='text' name='wpUploadFileURL' id='wpUploadFileURL' onfocus='toggle_element_activation(\"wpUploadFile\",\"wpUploadFileURL\");toggle_element_check(\"wpSourceTypeURL\",\"wpSourceTypeFile\")'" . 
+                               ($this->mDestFile?"":"onchange='fillDestFilename(\"wpUploadFileURL\")' ") . "size='40' DISABLED />" .
+                               wfMsgHtml( 'upload_source_url' ) ;
                } else {
-                       $sourcetype = 'file';
-                       $source_comment = '';
+                       $filename_form = 
+                               "<input tabindex='1' type='file' name='wpUploadFile' id='wpUploadFile' " . 
+                               ($this->mDestFile?"":"onchange='fillDestFilename(\"wpUploadFile\")' ") . 
+                               "size='40' />" .
+                               "<input type='hidden' name='wpSourceType' value='file' />" ;
                }
 
                $wgOut->addHTML( "
        <form id='upload' method='post' enctype='multipart/form-data' action=\"$action\">
                <table border='0'>
                <tr>
-                       <td align='right'><label for='wpUploadFile'>{$sourcefilename}:</label></td>
+                       <td align='right' valign='top'><label for='wpUploadFile'>{$sourcefilename}:</label></td>
                        <td align='left'>
-                               <input tabindex='1' type='{$sourcetype}' name='wpUploadFile' id='wpUploadFile' " . ($this->mDestFile?"":"onchange='fillDestFilename()' ") . "size='40' />{$source_comment}
+                               {$filename_form}
                        </td>
                </tr>
                <tr>
index 93f17c4..36a75b6 100644 (file)
@@ -1164,7 +1164,8 @@ created and by whom, and anything else you may know about it. If this is an imag
 'license' => 'Licensing',
 'nolicense' => 'None selected',
 'licenses' => '-', # Don't duplicate this in translations
-'upload_source_url' => ' (vaild, publicy accessible URL)',
+'upload_source_url' => ' (a vaild, publicy accessible URL)',
+'upload_source_file' => ' (a file on your computer)',
 
 # Image list
 #
index 0cfb600..3a8fd6c 100644 (file)
@@ -612,10 +612,24 @@ function checkboxMouseupHandler(e) {
        return true;
 }
 
-function fillDestFilename() {
+function toggle_element_activation(ida,idb) {
        if (!document.getElementById)
                return;
-       var path = document.getElementById('wpUploadFile').value;
+       document.getElementById(ida).disabled=true;
+       document.getElementById(idb).disabled=false;
+}
+
+function toggle_element_check(ida,idb) {
+       if (!document.getElementById)
+               return;
+       document.getElementById(ida).checked=true;
+       document.getElementById(idb).checked=false;
+}
+
+function fillDestFilename(id) {
+       if (!document.getElementById)
+               return;
+       var path = document.getElementById(id).value;
        // Find trailing part
        var slash = path.lastIndexOf('/');
        var backslash = path.lastIndexOf('\\');