[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--