[LON-CAPA-cvs] cvs: loncom /publisher lonupload.pm

bisitz bisitz@source.lon-capa.org
Tue, 16 Feb 2010 10:26:17 -0000


This is a MIME encoded message

--bisitz1266315977
Content-Type: text/plain

bisitz		Tue Feb 16 10:26:17 2010 EDT

  Modified files:              
    /loncom/publisher	lonupload.pm 
  Log:
  - Standard pick_box style for upload options
  - Code refactoring: Early escape in case of no file and in case of illeagal filename
  - "File already exists": optimized button arrangement and wording
  - Problems due to user fault (invalid extension, existing file,  ...):
      - Warning style instead of error style
      - Wrap whole message in warning style
  - Filename style for filenames
  - Removed deprecated font tag
  
  
--bisitz1266315977
Content-Type: text/plain
Content-Disposition: attachment; filename="bisitz-20100216102617.txt"

Index: loncom/publisher/lonupload.pm
diff -u loncom/publisher/lonupload.pm:1.48 loncom/publisher/lonupload.pm:1.49
--- loncom/publisher/lonupload.pm:1.48	Mon Jul  6 13:30:49 2009
+++ loncom/publisher/lonupload.pm	Tue Feb 16 10:26:17 2010
@@ -2,7 +2,7 @@
 # The LearningOnline Network with CAPA
 # Handler to upload files into construction space
 #
-# $Id: lonupload.pm,v 1.48 2009/07/06 13:30:49 bisitz Exp $
+# $Id: lonupload.pm,v 1.49 2010/02/16 10:26:17 bisitz Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -165,59 +165,74 @@
     } elsif ($mode eq 'imsimport') {
         $action = '/adm/imsimport';
     }
+
+    # Check for file to be uploaded
     $env{'form.upfile.filename'}=~s/\\/\//g;
     $env{'form.upfile.filename'}=~s/^.*\/([^\/]+)$/$1/;
-    if ($env{'form.upfile.filename'}) {
-	$fn=~s/\/[^\/]+$//;
-	$fn=~s/([^\/])$/$1\//;
-	$fn.=$env{'form.upfile.filename'};
-	$fn=~s/^\///;
-	$fn=~s/(\/)+/\//g;
-
-#    Fn is the full path to the destination filename.
-#    
+    if (!$env{'form.upfile.filename'}) {
+        $r->print('<p class="LC_warning">'.&mt('No upload file specified.').'</p>');
+        return;
+    }
+
+    $fn=~s/\/[^\/]+$//;
+    $fn=~s/([^\/])$/$1\//;
+    $fn.=$env{'form.upfile.filename'};
+    $fn=~s/^\///;
+    $fn=~s/(\/)+/\//g;
+    #    Fn is the full path to the destination filename.
+
+    # Check for illegal filename
+    &Debug($r, "Filename for upload: $fn");
+    if (!(($fn) && ($fn!~/\/$/))) {
+        $r->print('<p class="LC_warning">'.&mt('Illegal filename.').'</p>');
+        return;
+    }
+
+    # Display additional options for upload
+    # and upload button
+    $r->print(
+        '<form action="'.$action.'" method="post" name="fileupload">'
+       .'<input type="hidden" name="phase" value="two" />'
+       .'<input type="hidden" name="datatoken" value="'.&upfile_store.'" />'
+       .'<input type="hidden" name="uploaduname" value="'.$uname.'" />'
+    );
+    $r->print(
+        &Apache::lonhtmlcommon::start_pick_box()
+       .&Apache::lonhtmlcommon::row_title(&mt('Save uploaded file as'))
+       .'<span class="LC_filename">/priv/'.$uname.'/</span>'
+       .'<input type="text" size="50" name="filename" value="'.$fn.'" />'
+       .&Apache::lonhtmlcommon::row_closure()
+       .&Apache::lonhtmlcommon::row_title(&mt('File Type'))
+       .'<select name="filetype">'
+       .'<option value="standard" selected="selected">'.&mt('Regular file').'</option>'
+       .'<option value="testbank">'.&mt('Testbank file').'</option>'
+       .'<option value="imsimport">'.&mt('IMS package').'</option>'
+       .'</select>'.&Apache::loncommon::help_open_topic("Uploading_File_Options")
+       .&Apache::lonhtmlcommon::row_closure(1)
+       .&Apache::lonhtmlcommon::end_pick_box()
+    );
+    $r->print(
+        '<p>'
+       .'<input type="button" value="'.&mt('Upload').'" onclick="javascript:verifyForm()"/>'
+       .'</p>'
+       .'</form>'
+    );
 
-	&Debug($r, "Filename for upload: $fn");
-	if (($fn) && ($fn!~/\/$/)) {
-	    $r->print('<form action="'.$action.'" method="post" name="fileupload">'.
-		      '<input type="hidden" name="phase" value="two" />'.
-		      '<input type="hidden" name="datatoken" value="'.
-		      &upfile_store.'" />'.
-		      '<input type="hidden" name="uploaduname" value="'.$uname.
-		      '" />'.&mt('Save uploaded file as [_1]',
-                      "<span class='LC_filename'>/priv/$uname/</span>".
-                      '<input type="text" size="50" name="filename" value="'.$fn.
-                      '" />').
-                      '<br />'.
-		      '<br />'.&mt('Choose file type:').'
-<select name="filetype">
- <option value="standard" selected="selected">'.&mt('Regular file').'</option>
- <option value="testbank">'.&mt('Testbank file').'</option>
- <option value="imsimport">'.&mt('IMS package').'</option>
-</select>'.&Apache::loncommon::help_open_topic("Uploading_File_Options").'
-<br />
-<br />
-');
-            $r->print('<input type="button" value="'.&mt('Upload').'" onclick="javascript:verifyForm()"/></form>');
-	    # Check for bad extension and warn user
-	    if ($fn=~/\.(\w+)$/ && 
-		(&Apache::loncommon::fileembstyle($1) eq 'hdn')) {
+   # Check for bad extension and warn user
+    if ($fn=~/\.(\w+)$/ && 
+        (&Apache::loncommon::fileembstyle($1) eq 'hdn')) {
                 $r->print('<p class="LC_error">'
-                          .&mt('The extension on this file, [_1], is reserved internally by LON-CAPA.','"'.$1.'"')
+                          .&mt('The extension on this file, [_1], is reserved internally by LON-CAPA.',
+                               '<span class="LC_filename">'.$1.'</span>')
                           .' <br />'.&mt('Please change the extension.')
                           .'</p>');
-	    } elsif($fn=~/\.(\w+)$/ && 
-		    !defined(&Apache::loncommon::fileembstyle($1))) {
+    } elsif($fn=~/\.(\w+)$/ && 
+                    !defined(&Apache::loncommon::fileembstyle($1))) {
                 $r->print('<p class="LC_error">'
-                         .&mt('The extension on this file, [_1], is not recognized by LON-CAPA.','"'.$1.'"')
+                         .&mt('The extension on this file, [_1], is not recognized by LON-CAPA.',
+                              '<span class="LC_filename">'.$1.'</span>')
                          .' <br />'.&mt('Please change the extension.')
                          .'</p>');
-	    }
-	} else {
-	    $r->print('<span class="LC_error">'.&mt('Illegal filename.').'</span>');
-	}
-    } else {
-	$r->print('<span class="LC_error">'.&mt('No upload file specified.').'</span>');
     }
 }
 
@@ -250,17 +265,22 @@
                 my $source=$r->dir_config('lonDaemons').'/tmp/'.$datatoken.'.tmp';
                 my $dirpath=$path.'/';
                 $dirpath=~s/\/+/\//g;
-                $output .= &mt('Upload cancelled.').'<br /><font size="+2"><a href="'.$dirpath.'">'.
-                          &mt('Back to Directory').'</a></font>';
-	    } elsif ((-e $target) && (!$env{'form.override'})) {
-		$output .= '<form action="'.$action.'" method="post">'.
-			  &mt('File [_1] exists. Overwrite?','<span class="LC_filename">'.$fn.'</span>').
-			  '<input type="hidden" name="phase" value="two" />'.
-			  '<input type="hidden" name="filename" value="'.$url.'" />'.
-			  '<input type="hidden" name="datatoken" value="'.$datatoken.'" />'.
-			  '<input type="submit" name="override" value="'.&mt('Yes').'" />'.
-                          '<input type="submit" name="cancel" value="'.&mt('Cancel').'" />'.
-                          '</form>';
+                $output .= '<p class="LC_warning">'.&mt('Upload cancelled.').'</p>'
+                          .'<p><a href="'.$dirpath.'">'.
+                          &mt('Back to Directory').'</a></p>';
+            } elsif ((-e $target) && (!$env{'form.override'})) {
+                $output .= '<form action="'.$action.'" method="post">'
+                          .'<p class="LC_warning">'
+                          .&mt('File [_1] already exists.',
+                               '<span class="LC_filename">'.$fn.'</span>')
+                         .'<input type="hidden" name="phase" value="two" />'
+                         .'<input type="hidden" name="filename" value="'.$url.'" />'
+                         .'<input type="hidden" name="datatoken" value="'.$datatoken.'" />'
+                         .'<p>'
+                         .'<input type="submit" name="cancel" value="'.&mt('Cancel').'" />'
+                         .' <input type="submit" name="override" value="'.&mt('Overwrite').'" />'
+                         .'</p>'
+                         .'</form>';
             } else {
 		my $source=$r->dir_config('lonDaemons').'/tmp/'.$datatoken.'.tmp';
 		my $dirpath=$path.'/';
@@ -289,31 +309,39 @@
     # Check for bad extension and disallow upload
     if ($fn=~/\.(\w+)$/ &&
         (&Apache::loncommon::fileembstyle($1) eq 'hdn')) {
-        $result .= &mt('File [_1] could not be copied.',
-                      '<span class="LC_filename">'.$fn.'</span> ').
-                  '<p class="LC_error">'.
-                  &mt('The extension on this file is reserved internally by LON-CAPA.').
-                  '</p>';
+        $result .= '<p class="LC_warning">'.
+                   &mt('File [_1] could not be copied.',
+                       '<span class="LC_filename">'.$fn.'</span> ').
+                   '<br />'.
+                   &mt('The extension on this file is reserved internally by LON-CAPA.').
+                   '</p>';
     } elsif ($fn=~/\.(\w+)$/ &&
              !defined(&Apache::loncommon::fileembstyle($1))) {
-        $result .= &mt('File [_1] could not be copied.',
-                      '<span class="LC_filename">'.$fn.'</span> ').
-                  '<p class="LC_error">'.
-                  &mt('The extension on this file is not recognized by LON-CAPA.').
-                  '</p>';
+        $result .= '<p class="LC_warning">'.
+                   &mt('File [_1] could not be copied.',
+                       '<span class="LC_filename">'.$fn.'</span> ').
+                   '<br />'.
+                   &mt('The extension on this file is not recognized by LON-CAPA.').
+                   '</p>';
     } elsif (-d $target) {
-        $result .= &mt('File [_1] could not be copied.',
-                      '<span class="LC_filename">'.$fn.'</span>').
-                  '<p class="LC_error">'.
-                  &mt('The target is an existing directory.').
-                  '</p>';
+        $result .= '<p class="LC_warning">'.
+                   &mt('File [_1] could not be copied.',
+                       '<span class="LC_filename">'.$fn.'</span>').
+                   '<br />'.
+                   &mt('The target is an existing directory.').
+                   '</p>';
     } elsif (copy($source,$target)) {
         chmod(0660, $target); # Set permissions to rw-rw---.
         if ($mode eq 'testbank' || $mode eq 'imsimport') {
             $returnflag = 'ok';
-            $result .= &mt('Your file - [_1] - was uploaded successfully',$fn).'<br /><br />';
+            $result .= '<p class="LC_success">'
+                      .&mt('Your file - [_1] - was uploaded successfully.',
+                           '<span class="LC_filename">'.$fn.'<span>')
+                      .'</p>';
         } else {
-            $result .= &mt('File copied.').'<br />';
+            $result .= '<p class="LC_success">'
+                      .&mt('File copied.')  
+                      .'</p>';
         }
         # Check for embedded objects.
         my (%allfiles,%codebase);
@@ -342,15 +370,15 @@
             }
         }
         if (($mode ne 'imsimport') && ($mode ne 'testbank')) {
-            $result .= '<br /><font size="+2"><a href="'.$url.'">'.
-                        &mt('View file').'</a></font>';
+            $result .= '<br /><a href="'.$url.'">'.
+                        &mt('View file').'</a>';
         }
     } else {
         $result .= &mt('Failed to copy: [_1].',$!);
     }
     if ($mode ne 'imsimport' && $mode ne 'testbank') {
-        $result .= '<br /><font size="+2"><a href="'.$dirpath.'">'.
-                   &mt('Back to Directory').'</a></font><br />';
+        $result .= '<br /><a href="'.$dirpath.'">'.
+                   &mt('Back to Directory').'</a><br />';
     }
     return ($result,$returnflag);
 }

--bisitz1266315977--