[LON-CAPA-cvs] cvs: loncom /interface portfolio.pm /localize/localize de.pm
bisitz
bisitz at source.lon-capa.org
Fri Apr 12 13:21:17 EDT 2013
bisitz Fri Apr 12 17:21:17 2013 EDT
Modified files:
/loncom/interface portfolio.pm
/loncom/localize/localize de.pm
Log:
Portfolio - Improved navigation, layout, and feedback:
- Standard layout and navigation
- Use confirm_success and action_box after an action, e.g. upload a file
- Added explicit action confirmation for each successful action
- Consistent and improved back link after processing an action
- Fitting header level (h3 -> h2)
- Styles
- Filename style for filenames
- Warning style instead of error style for messages with user related errors, e.g. filename not provided and restrict error style for actual errors, e.g. renaming failed
- Improved order of actions
First check and display cleaning of filename / directory name due to invalid characters, then show empty name or file exists error and exit
- Internationalization
- Added missing &mt() call
- Excluded HTML tags from phrase to be translated
- Eliminated double translation
[Work in progress; Works fine and as intended for changed parts]
-------------- next part --------------
Index: loncom/interface/portfolio.pm
diff -u loncom/interface/portfolio.pm:1.240 loncom/interface/portfolio.pm:1.241
--- loncom/interface/portfolio.pm:1.240 Thu Apr 11 14:59:49 2013
+++ loncom/interface/portfolio.pm Fri Apr 12 17:21:09 2013
@@ -1,7 +1,7 @@
# The LearningOnline Network
# portfolio browser
#
-# $Id: portfolio.pm,v 1.240 2013/04/11 14:59:49 bisitz Exp $
+# $Id: portfolio.pm,v 1.241 2013/04/12 17:21:09 bisitz Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -639,9 +639,9 @@
}
sub done {
- my ($message,$url)=@_;
- unless (defined $message) {
- $message='Done';
+ my ($linktext,$url)=@_;
+ unless (defined $linktext) {
+ $linktext='Return to directory';
}
my %anchor_fields = (
'showversions' => $env{'form.showversions'},
@@ -650,7 +650,8 @@
'symb' => $env{'form.symb'},
'mode' => $env{'form.mode'}
);
- my $result = '<p>'.&make_anchor($url,\%anchor_fields,&mt($message)).'</p>';
+ my $result = &Apache::lonhtmlcommon::actionbox(
+ [&make_anchor($url,\%anchor_fields,&mt($linktext))]);
return $result;
}
@@ -662,8 +663,12 @@
my @files=&Apache::loncommon::get_env_multiple('form.selectfile');
my ($uname,$udom) = &get_name_dom($group);
if (&Apache::lonnet::is_locked($file_name,$udom,$uname) eq 'true') {
- $r->print(&mt('The file is locked and cannot be deleted.').'<br />');
- $r->print(&done('Back',$url));
+ $r->print(
+ '<p class="LC_warning">'
+ .&mt('The file is locked and cannot be deleted.')
+ .'</p>'
+ .&done(undef,$url)
+ );
} else {
if (scalar(@files)) {
&open_form($r,$url);
@@ -684,18 +689,21 @@
my $port_path = &get_port_path();
my $current_permissions = &Apache::lonnet::get_portfile_permissions($udom,
$uname);
+ my @msg;
foreach my $delete_file (@files) {
- $result=&Apache::lonnet::removeuserfile($uname,$udom,$port_path.
- $env{'form.currentpath'}.
- $delete_file);
+ $result =
+ &Apache::lonnet::removeuserfile(
+ $uname,$udom,$port_path.
+ $env{'form.currentpath'}.
+ $delete_file);
if ($result ne 'ok') {
- $r->print('<span class="LC_error">'
- .&mt('An error occurred ([_1]) while trying to delete [_2].'
- ,$result,&display_file(undef, $delete_file))
- .'</span><br /><br />');
- } else {
- $r->print(&mt('File: [_1] deleted.',
- &display_file(undef,$delete_file)));
+ push(@msg, &Apache::lonhtmlcommon::confirm_success(
+ &mt('An error occurred ([_1]) while trying to delete [_2].'
+ ,$result,&display_file(undef, $delete_file)),1));
+ } else {
+ push(@msg, &Apache::lonhtmlcommon::confirm_success(
+ &mt('File: [_1] deleted.'
+ ,&display_file(undef,$delete_file))));
my $file_name = $env{'form.currentpath'}.$delete_file;
$file_name = &prepend_group($file_name);
my %access_controls =
@@ -711,23 +719,24 @@
&Apache::lonnet::modify_access_controls($file_name,\%changes,
$udom,$uname);
if ($outcome ne 'ok') {
- $r->print('<br />'.&mt("An error occurred ([_1]) while ".
- "trying to delete access controls for the file.",$outcome).
- '</span><br /><br />');
+ push(@msg, &Apache::lonhtmlcommon::confirm_success(
+ &mt('An error occurred ([_1]) while '.
+ 'trying to delete access controls for the file.',$outcome),1));
} else {
if ($deloutcome eq 'ok') {
- $r->print('<br />'.&mt('Access controls also deleted for the file.').'<br /><br />');
+ push(@msg, &mt('Access controls also deleted for the file.')); # FIXME: Does the user really need this message?
} else {
- $r->print('<span class="LC_error">'.'<br />'.
- &mt("An error occurred ([_1]) while ".
- "trying to delete access controls for the file.",$deloutcome).
- '</span><br /><br />');
+ push(@msg, &Apache::lonhtmlcommon::confirm_success(
+ &mt('An error occurred ([_1]) while '.
+ 'trying to delete access controls for the file.'
+ ,$deloutcome),1));
}
}
}
}
}
}
+ $r->print(&Apache::loncommon::confirmwrapper(join('<br />', at msg)));
$r->print(&done(undef,$url));
}
@@ -747,12 +756,15 @@
my $port_path = &get_port_path();
my $result=&Apache::lonnet::removeuserfile($uname,$udom,$port_path.
$directory_name);
-
+
if ($result ne 'ok') {
- $r->print('<span class="LC_error">'
- .&mt('An error occurred (dir) ([_1]) while trying to delete [_2].'
- ,$result,$directory_name)
- .'</span><br />');
+ $r->print(
+ &Apache::loncommon::confirmwrapper(
+ &Apache::lonhtmlcommon::confirm_success(
+ &mt('An error occurred (dir) ([_1]) while trying to delete [_2].'
+ ,$result,$directory_name),1)));
+ $r->print(&done(undef,$url));
+ return;
} else {
# now remove from recent
&Apache::lonhtmlcommon::remove_recent($namespace,[$directory_name.'/']);
@@ -763,6 +775,10 @@
}
$env{'form.currentpath'} = $directory_name;
}
+ $r->print(
+ &Apache::loncommon::confirmwrapper(
+ &Apache::lonhtmlcommon::confirm_success(
+ &mt('Directory successfully deleted'))));
$r->print(&done(undef,$url));
}
@@ -772,7 +788,11 @@
my ($uname,$udom) = &get_name_dom($group);
$file_name = &prepend_group($file_name);
if (&Apache::lonnet::is_locked($file_name,$udom,$uname) eq 'true') {
- $r->print("The file is locked and cannot be renamed.<br />");
+ $r->print(
+ '<p class="LC_error">'
+ .&mt('The file is locked and cannot be renamed.')
+ .'</p>'
+ );
$r->print(&done(undef,$url));
} else {
&open_form($r,$url);
@@ -787,13 +807,32 @@
my $filenewname=&Apache::lonnet::clean_filename($env{'form.filenewname'});
my ($uname,$udom) = &get_name_dom($group);
my $port_path = &get_port_path();
+
+ # Display warning in case of filename cleaning has changed the filename
+ if ($filenewname ne $env{'form.filenewname'}) {
+ $r->print(
+ '<p><span class="LC_warning">'
+ .&mt('Invalid characters')
+ .'</span><br />'
+ .&mt('The new filename was changed from [_1] to [_2].'
+ ,'<span class="LC_filename">'.&display_file('',$env{'form.filenewname'}).'</span>'
+ ,'<span class="LC_filename">'.&display_file('',$filenewname).'</span>')
+ .'</p>'
+ );
+
+ }
+
+ # Filename empty?
if ($filenewname eq '') {
- $r->print('<span class="LC_error">'.
- &mt("Error: no valid filename was provided to rename to.").
- '</span><br />');
- $r->print(&done(undef,$url));
- return;
+ $r->print(
+ &Apache::loncommon::confirmwrapper(
+ &Apache::lonhtmlcommon::confirm_success(
+ &mt('Error: no valid filename was provided to rename to.'),1)));
+ $r->print(&done(undef,$url));
+ return;
}
+
+ # Rename the file
my $chg_access;
my $result=
&Apache::lonnet::renameuserfile($uname,$udom,
@@ -802,18 +841,20 @@
if ($result eq 'ok') {
$chg_access = &access_for_renamed($filenewname,$group,$udom,$uname);
} else {
- $r->print('<span class="LC_error">'.
- &mt('An error occurred ([_1]) while trying to rename [_2] to [_3].'
- ,$result,&display_file(),&display_file('',$filenewname))
- .'</span><br />');
+ $r->print(
+ &Apache::loncommon::confirmwrapper(
+ &Apache::lonhtmlcommon::confirm_success(
+ &mt('An error occurred ([_1]) while trying to rename [_2] to [_3].'
+ ,$result,&display_file(),&display_file('',$filenewname))
+ ,1)));
+ $r->print(&done(undef,$url));
return;
}
- if ($filenewname ne $env{'form.filenewname'}) {
- $r->print(&mt("The new filename was changed from:<br />[_1] to [_2]",
- '<strong>'.&display_file('',$env{'form.filenewname'}).'</strong>',
- '<strong>'.&display_file('',$filenewname).'</strong>'));
- }
$r->print($chg_access);
+ $r->print(
+ &Apache::loncommon::confirmwrapper(
+ &Apache::lonhtmlcommon::confirm_success(
+ &mt('File successfully renamed'))));
$r->print(&done(undef,$url));
}
@@ -878,7 +919,13 @@
my $aclcount = keys(%access_controls);
my ($header,$info);
if ($action eq 'chgaccess') {
- $header = '<h3>'.&mt('Allowing others to retrieve file: [_1]',$port_path.$env{'form.currentpath'}.$env{'form.access'}).'</h3>';
+ $header =
+ '<h2>'
+ .&mt('Allowing others to retrieve file: [_1]'
+ ,'<span class="LC_filename">'
+ .$port_path.$env{'form.currentpath'}.$env{'form.access'}
+ .'</span>')
+ .'</h2>';
$info .= &mt('Access to this file by others can be set to be one or more of the following types: public, passphrase-protected or conditional.');
$info .= '<br /><ul><li>'.&mt('Public files are available to anyone without the need for login.');
$info .= '</li><li>'.&mt('Passphrase-protected files do not require log-in, but will require the viewer to enter the passphrase you set.');
@@ -1083,8 +1130,8 @@
}
}
my $file_name = $env{'form.currentpath'}.$env{'form.selectfile'};
- $r->print('<h3>'.&mt('Allowing others to retrieve file: [_1]',
- $port_path.$file_name).'</h3>'."\n");
+ $r->print('<h2>'.&mt('Allowing others to retrieve file: [_1]',
+ '<span class="LC_filename">'.$port_path.$file_name.'</span>').'</h2>'."\n");
$file_name = &prepend_group($file_name);
my ($uname,$udom) = &get_name_dom($group);
my ($errors,$outcome,$deloutcome,$new_values,$translation);
@@ -1184,9 +1231,11 @@
'currentpath' => $env{'form.currentpath'},
'access' => $env{'form.selectfile'}
);
- $r->print('<br />'.&make_anchor($url, \%anchor_fields, &mt('Display all access settings for this file')));
+ my @actions;
+ push(@actions, &make_anchor($url, \%anchor_fields, &mt('Display all access settings for this file')));
delete $anchor_fields{'access'};
- $r->print(' '.&make_anchor($url,\%anchor_fields,&mt('Return to directory')));
+ push(@actions, &make_anchor($url,\%anchor_fields,&mt('Return to directory')));
+ $r->print('<br />'.&Apache::lonhtmlcommon::actionbox(\@actions));
}
return;
}
@@ -1949,10 +1998,14 @@
my $fname = &Apache::lonnet::clean_filename($env{'form.'.$formname.'.filename'});
my ($state,$msg);
if ($fname eq '') {
- my $msg = &mt('Invalid filename: [_1]; the name of the uploaded file did not contain any letters, '.
+ $r->print(
+ &Apache::loncommon::confirmwrapper(
+ &Apache::lonhtmlcommon::confirm_success(
+ &mt('Invalid filename: [_1]; the name of the uploaded file did not contain any letters, '.
'so after eliminating special characters there was nothing left.',
- '<span class="LC_filename">'.$env{'form.uploaddoc.filename'}.'</span>');
- $r->print($msg.&done('Back',$url));
+ '<span class="LC_filename">'.$env{'form.uploaddoc.filename'}.'</span>'),1)));
+
+ $r->print(&done(undef,$url));
return;
}
my $disk_quota = &get_quota($group);
@@ -1969,7 +2022,7 @@
if ($state eq 'will_exceed_quota'
|| $state eq 'file_locked'
|| $state eq 'zero_bytes') {
- $r->print($msg.&done('Back',$url));
+ $r->print($msg.&done(undef,$url));
return;
}
@@ -2065,14 +2118,20 @@
</form></div>
END
} else {
- $r->print('<span class="LC_error">'.&mt('An error occurred ([_1]) while trying to upload [_2].'
- ,$result,&display_file(undef,$fname)).'</span><br />');
- $r->print(&done('Back',$url));
+ $r->print(
+ &Apache::loncommon::confirmwrapper(
+ &Apache::lonhtmlcommon::confirm_success(
+ &mt('An error occurred ([_1]) while trying to upload [_2].'
+ ,$result,&display_file(undef,$fname)),1)));
+ $r->print(&done(undef,$url));
}
} elsif ($result !~ m|^/uploaded/|) {
- $r->print('<span class="LC_error">'.&mt('An error occurred ([_1]) while trying to upload [_2].'
- ,$result,&display_file(undef,$fname)).'</span><br />');
- $r->print(&done('Back',$url));
+ $r->print(
+ &Apache::loncommon::confirmwrapper(
+ &Apache::lonhtmlcommon::confirm_success(
+ &mt('An error occurred ([_1]) while trying to upload [_2].'
+ ,$result,&display_file(undef,$fname)),1)));
+ $r->print(&done(undef,$url));
} else {
if (!&suppress_embed_prompt()) {
if ($mimetype eq 'text/html') {
@@ -2080,11 +2139,14 @@
&print_dependency_form($r,$url,\%allfiles,\%codebase,$result);
return;
} else {
- $r->print('<p>'.&mt('Completed upload of the file.').'<br />'.
- &mt('No embedded items identified.').'</p>');
+ $r->print('<p class="LC_warning">'.&mt('No embedded items identified.').'</p>');
}
}
}
+ $r->print(
+ &Apache::loncommon::confirmwrapper(
+ &Apache::lonhtmlcommon::confirm_success(
+ &mt('File successfully uploaded'))));
$r->print(&done(undef,$url));
}
return;
@@ -2154,7 +2216,7 @@
my $msg = &mt('Invalid filename: [_1]; the name of the uploaded file did not contain any letters, '.
'so after eliminating special characters there was nothing left.',
'<span class="LC_filename">'.$env{'form.filename'}.'</span>');
- $r->print($msg.&done('Back',$url));
+ $r->print($msg.&done(undef,$url));
return;
}
$env{'form.'.$formname.'.filename'} = $fname;
@@ -2165,8 +2227,8 @@
\%allfiles,\%codebase,undef,undef,undef,
undef,undef,undef,\$mimetype);
if ($result !~ m|^/uploaded/|) {
- $r->print('<span class="LC_error">'.&mt('An error occurred ([_1]) while trying to overwrite [_2].'
- ,$result,&display_file(undef,$fname)).'</span><br />');
+ $r->print('<p class="LC_error">'.&mt('An error occurred ([_1]) while trying to overwrite [_2].'
+ ,$result,&display_file(undef,$fname)).'</p>');
$r->print(&after_overwrite(&mt('Back'),$url));
} else {
if ($mode eq 'parse') {
@@ -2224,7 +2286,7 @@
$filetext = '<strong>'.$env{'form.lockinfo'}.
'</strong> (group: '.$group.')';
} else {
- $filetext = '<strong>'.$file_name.'</strong>';
+ $filetext = '<span class="LC_filename">'.$file_name.'</span>';
}
my $title ='<strong>'.&Apache::lonnet::gettitle($$array_item[0]).
@@ -2247,20 +2309,36 @@
}
}
}
- $r->print(&done(&mt('Back'),$url));
+ $r->print(&done(undef,$url));
return 'ok';
}
sub createdir {
my ($r,$url,$group)=@_;
my $newdir=&Apache::lonnet::clean_filename($env{'form.newdir'});
+ # Display warning in case of directory name cleaning has changed the directory name
+ if ($newdir ne $env{'form.newdir'}) {
+ $r->print(
+ '<p><span class="LC_warning">'
+ .&mt('Invalid characters')
+ .'</span><br />'
+ .&mt('The new directory name was changed from [_1] to [_2].'
+ ,'<span class="LC_filename">'.$env{'form.newdir'}.'</span>'
+ ,'<span class="LC_filename">'.$newdir.'</span>')
+ .'</p>'
+ );
+ }
+
+ # Directory name empty?
if ($newdir eq '') {
- $r->print('<span class="LC_error">'.
- &mt("Error: no directory name was provided.").
- '</span><br />');
- $r->print(&done(undef,$url));
- return;
+ $r->print(
+ &Apache::loncommon::confirmwrapper(
+ &Apache::lonhtmlcommon::confirm_success(
+ &mt('Error: no directory name was provided.'),1)));
+ $r->print(&done(undef,$url));
+ return;
}
+
my $portfolio_root = &get_portfolio_root();
my ($dirlistref,$listerror) = &get_dir_list($portfolio_root,undef,$group);
my $found_file = 0;
@@ -2272,26 +2350,32 @@
}
}
}
- if ($found_file){
- $r->print('<span class="LC_error">'
- .&mt('Unable to create a directory named [_1].','<strong>'.$newdir.'</strong>')
- .' '.&mt('A file or directory by that name already exists.').'</span><br />');
+ if ($found_file) {
+ $r->print(
+ &Apache::loncommon::confirmwrapper(
+ &Apache::lonhtmlcommon::confirm_success(
+ &mt('Unable to create a directory named [_1].'
+ ,'<span class="LC_filename">'.$newdir.'</span>'),1)
+ .'<br />'.&mt('A file or directory by that name already exists.')));
} else {
my ($uname,$udom) = &get_name_dom($group);
my $port_path = &get_port_path();
my $result=&Apache::lonnet::mkdiruserfile($uname,$udom,
$port_path.$env{'form.currentpath'}.$newdir);
if ($result ne 'ok') {
- $r->print('<span class="LC_error">'
- .&mt('An error occurred ([_1]) while trying to create a new directory [_2].'
- ,$result,&display_file())
- .'</span><br />');
+ $r->print(
+ &Apache::loncommon::confirmwrapper(
+ &Apache::lonhtmlcommon::confirm_success(
+ &mt('An error occurred ([_1]) while trying to create a new directory [_2].'
+ ,$result,&display_file()),1)));
+
+ } else {
+ $r->print(
+ &Apache::loncommon::confirmwrapper(
+ &Apache::lonhtmlcommon::confirm_success(
+ &mt('Directory successfully created'))));
}
}
- if ($newdir ne $env{'form.newdir'}) {
- $r->print(&mt('The new directory name was changed from [_1] to [_2].'
- ,'<strong>'.$env{'form.newdir'}.'</strong>','<strong>'.$newdir.'</strong>'));
- }
$r->print(&done(undef,$url));
}
@@ -2621,10 +2705,14 @@
}
}
if (($env{'form.storeupl'}) & (!$env{'form.uploaddoc.filename'})){
- $r->print('<span class="LC_warning">');
- $r->print(&mt('No file was selected to upload.').' ');
- $r->print(&mt('To upload a file, click <strong>Browse...</strong> and select a file, then click <strong>Upload</strong>.'));
- $r->print('</span>');
+ $r->print(
+ '<p><span class="LC_warning">'
+ .&mt('No file was selected to upload.')
+ .'</span><<br />'
+ .&mt('To upload a file, click [_1]Browse...[_2] and select a file, then click [_1]Upload[_2].'
+ ,'<strong>','</strong>')
+ .'</p>'
+ );
}
if ($env{'form.meta'}) {
&open_form($r,$url);
Index: loncom/localize/localize/de.pm
diff -u loncom/localize/localize/de.pm:1.501 loncom/localize/localize/de.pm:1.502
--- loncom/localize/localize/de.pm:1.501 Thu Apr 11 14:59:53 2013
+++ loncom/localize/localize/de.pm Fri Apr 12 17:21:16 2013
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# German Localization Lexicon
#
-# $Id: de.pm,v 1.501 2013/04/11 14:59:53 bisitz Exp $
+# $Id: de.pm,v 1.502 2013/04/12 17:21:16 bisitz Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -14335,8 +14335,8 @@
'An error occurred ([_1]) while trying to overwrite [_2].'
=> 'Beim Versuch, [_2] zu überschreiben, ist ein Fehler aufgetreten: [_1]',
- 'The new filename was changed from:<br />[_1] to [_2]'
-=> 'Der neue Dateiname wurde geändert von:<br />[_1] nach [_2]',
+ 'The new filename was changed from [_1] to [_2].'
+=> 'Der neue Dateiname wurde von [_1] in [_2] geändert.',
'An error occurred ([_1]) while trying to delete access control records for the old name.'
=> 'Beim Versuch, Zugriffskontroll-Datensätze für den alten Namen zu löschen, ist ein Fehler aufgetreten: [_1]',
@@ -14560,8 +14560,8 @@
'No file was selected to upload.'
=> 'Es wurde keine Datei ausgewählt, die hochgeladen werden soll.',
- 'To upload a file, click <strong>Browse...</strong> and select a file, then click <strong>Upload</strong>.'
-=> 'Um eine Datei hochzuladen, klicken Sie auf <strong>Durchsuchen...</strong> und wählen Sie eine Datei, dann klicken Sie auf <strong>Hochladen</strong>.',
+ 'To upload a file, click [_1]Browse...[_2] and select a file, then click [_1]Upload[_2].'
+=> 'Um eine Datei hochzuladen, klicken Sie auf [_1]Durchsuchen...[_2] und wählen Sie eine Datei, dann klicken Sie auf [_1]Hochladen[_2].',
'Edit the meta data'
=> 'Metadaten ändern',
@@ -27085,11 +27085,23 @@
=> 'mehrere',
'one' # londocs.pm
-=> 'einzelnd',
+=> 'einzeln',
'check/uncheck all'
=> 'Alle auswählen / Gesamte Auswahl aufheben',
+ 'File successfully renamed'
+=> 'Datei erfolgreich umbenannt',
+
+ 'File successfully uploaded'
+=> 'Datei erfolgreich hochgeladen',
+
+ 'Directory successfully created'
+=> 'Verzeichnis erfolgreich erstellt',
+
+ 'Directory successfully deleted'
+=> 'Verzeichnis erfolgreich gelöscht',
+
#SYNCMARKER
);
1;
More information about the LON-CAPA-cvs
mailing list