--- loncom/interface/lonuserutils.pm 2008/09/26 08:38:11 1.70 +++ loncom/interface/lonuserutils.pm 2009/02/17 10:12:37 1.80 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Utility functions for managing LON-CAPA user accounts # -# $Id: lonuserutils.pm,v 1.70 2008/09/26 08:38:11 bisitz Exp $ +# $Id: lonuserutils.pm,v 1.80 2009/02/17 10:12:37 weissno Exp $ # # Copyright Michigan State University Board of Trustees # @@ -329,7 +329,7 @@ sub print_upload_manager_header { $env{'request.role.domain'},$context, $groupslist); my $checked=(($env{'form.noFirstLine'})?' checked="checked" ':''); - $r->print(&mt('Total number of records found in file: <b>[_1]</b>.',$distotal). + $r->print(&mt('Total number of records found in file: [_1]','<b>'.$distotal.'</b>'). "<br />\n"); $r->print('<div class="LC_left_float"><h3>'. &mt('Identify fields in uploaded list')."</h3>\n"); @@ -341,11 +341,11 @@ sub print_upload_manager_header { &hidden_input('fileupload',$env{'form.fileupload'}). &hidden_input('upfiletype',$env{'form.upfiletype'}). &hidden_input('upfile_associate',$env{'form.upfile_associate'})); + $r->print('<br /><label><input type="checkbox" name="noFirstLine"'.$checked.'/>'. + &mt('Ignore First Line').'</label><br />'); $r->print('<br /><input type="button" value="'.&mt('Reverse Association').'" '. 'name="Reverse Association" '. 'onClick="javascript:this.form.associate.value=\'Reverse Association\';submit(this.form);" />'); - $r->print('<label><input type="checkbox" name="noFirstLine"'.$checked.'/>'. - &mt('Ignore First Line').'</label>'); $r->print("<br /><br />\n". '<script type="text/javascript" language="Javascript">'."\n". $javascript."\n".$javascript_validations.'</script>'); @@ -403,7 +403,7 @@ sub javascript_validations { name => 'The optional name field was not specified.', snum => 'The optional ID number field was not specified.', section => 'The optional section field was not specified.', - email => 'The optional email address field was not specified.', + email => 'The optional e-mail address field was not specified.', role => 'The optional role field was not specified.', domain => 'The optional domain field was not specified.', continue => 'Continue adding users?', @@ -743,7 +743,7 @@ sub print_upload_manager_footer { $Str .= '<p>'.&mt('Change authentication for existing users in domain "[_1]" to these settings?',$defdom).' <span class="LC_nobreak"><label><input type="radio" name="changeauth" value="No" checked="checked" />'.&mt('No').'</label> <label><input type="radio" name="changeauth" value="Yes" />'.&mt('Yes').'</label></span></p>'; } else { $Str .= "<p>\n". - &mt('Note: this will not take effect if the user already exists'). + &mt('Note: This will not take effect if the user already exists.'). &Apache::loncommon::help_open_topic('Auth_Options'). "</p>\n"; } @@ -797,13 +797,17 @@ sub print_upload_manager_footer { if ($context eq 'course' || $context eq 'domain') { $Str .= &forceid_change($context); } - $Str .= '</div><div class="LC_clear_float_footer"><br /><input type="button"'. - 'onClick="javascript:verify(this.form,this.form.csec)" '. - 'value="'.&mt('Update Users').'" />'."<br />\n"; - if ($context eq 'course') { - $Str .= &mt('Note: for large courses, this operation may be time consuming'); - } $Str .= '</div>'; + $Str .= '<div class="LC_clear_float_footer">'; + if ($context eq 'course') { + $Str .= '<div class="LC_info">' + .&mt('Note: For large courses, this operation may be time consuming.') + .'</div>'; + } + $Str .= '<input type="button"' + .'onClick="javascript:verify(this.form,this.form.csec)" ' + .'value="'.&mt('Update Users').'" />'."\n" + .'</div>'; $r->print($Str); return; } @@ -1312,6 +1316,12 @@ sub print_userlist { ($cnum,$cdom) = &get_course_identity(); $r->print(§ion_group_filter($cnum,$cdom)); } + if ($env{'form.phase'} eq '') { + $r->print('<br /><br />'.&list_submit_button(&mt('Display List of Users')). + "\n</p>\n". + '<input type="hidden" name="phase" value="" /></form>'); + return; + } if (!(($context eq 'domain') && ($env{'form.roletype'} eq 'course'))) { $r->print(' '.&list_submit_button(&mt('Update Display')). "\n</p>\n"); @@ -1477,7 +1487,10 @@ sub print_userlist { $permission,$env{'form.Status'},\%userlist,$keylist); } if (!$usercount) { - $r->print('<br />'.&mt('There are no users matching the search criteria.')); + $r->print('<br /><span class="LC_warning">' + .&mt('There are no users matching the search criteria.') + .'</span>' + ); } } $r->print('<input type="hidden" name="phase" value="'. @@ -1901,15 +1914,15 @@ sub aggregate_user_info { sub process_date_info { my ($userdata) = @_; my $now = time; - $userdata->{'status'} = 'Active'; + $userdata->{'status'} = &mt('Active'); if ($userdata->{'start'} > 0) { if ($now < $userdata->{'start'}) { - $userdata->{'status'} = 'Future'; + $userdata->{'status'} = &mt('Future'); } } if ($userdata->{'end'} > 0) { if ($now > $userdata->{'end'}) { - $userdata->{'status'} = 'Expired'; + $userdata->{'status'} = &mt('Expired'); } } return; @@ -2043,7 +2056,7 @@ END 'status' => "status", 'role' => "role", 'type' => "enroll type/action", - 'email' => "email address", + 'email' => "e-mail address", 'photo' => "photo", 'extent' => "extent", 'pr' => "Proceed", @@ -2051,7 +2064,7 @@ END 'ua' => "uncheck all", 'ac' => "Action to take for selected users", 'link' => "Behavior of clickable username link for each user", - 'aboutme' => "Display a user's personal page", + 'aboutme' => "Display a user's personal homepage", 'owin' => "Open in a new window", 'modify' => "Modify a user's information", 'clicker' => "Clicker-ID", @@ -2450,7 +2463,7 @@ END $cellentry = '<b>'.&mt('auto').'</b> <label><input type="checkbox" name="chgauto" value="'.$in{'username'}.':'.$in{'domain'}.'" /> Change</label>'; $autocount ++; } else { - $cellentry = '<table border="0" cellspacing="0"><tr><td rowspan="2"><b>'.&mt('manual').'</b></td><td><nobr><label><input type="checkbox" name="chgmanual" value="'.$in{'username'}.':'.$in{'domain'}.'" /> Change</label></nobr></td></tr><tr><td><nobr>'; + $cellentry = '<table border="0" cellspacing="0"><tr><td rowspan="2"><b>'.&mt('manual').'</b></td><td><span class="LC_nobreak"><label><input type="checkbox" name="chgmanual" value="'.$in{'username'}.':'.$in{'domain'}.'" /> Change</label></span></td></tr><tr><td><span class="LC_nobreak">'; $manualcount ++; if ($in{'lockedtype'}) { $cellentry .= '<label><input type="checkbox" name="unlockchg" value="'.$in{'username'}.':'.$in{'domain'}.'" /> '.&mt('Unlock').'</label>'; @@ -2459,7 +2472,7 @@ END $cellentry .= '<label><input type="checkbox" name="lockchg" value="'.$in{'username'}.':'.$in{'domain'}.'" /> '.&mt('Lock').'</label>'; $lockcount ++; } - $cellentry .= '</nobr></td></tr></table>'; + $cellentry .= '</span></td></tr></table>'; } $r->print("<td>$cellentry</td>\n"); } else { @@ -3033,7 +3046,7 @@ sub results_header_row { } if ($context eq 'course') { if ($mode eq 'csv' || $mode eq 'excel') { - $description = &mt('Course - ').$env{'course.'.$env{'request.course.id'}.'.description'}.': '; + $description = &mt('Course - [_1]:',$env{'course.'.$env{'request.course.id'}.'.description'}).' '; } if ($statusmode eq 'Expired') { $description .= &mt('Users in course with expired [_1] roles',$showfilter); @@ -3092,8 +3105,11 @@ sub results_header_row { } } elsif ($context eq 'author') { $description = - &mt('Author space for <span class="LC_cusr_emph">[_1]</span>', - &Apache::loncommon::plainname($env{'user.name'},$env{'user.domain'})).': '; + &mt('Author space for [_1]' + ,'<span class="LC_cusr_emph">' + .&Apache::loncommon::plainname($env{'user.name'},$env{'user.domain'}) + .'</span>') + .': '; if ($statusmode eq 'Expired') { $description .= &mt('Co-authors with expired [_1] roles',$showfilter); } elsif ($statusmode eq 'Future') { @@ -3109,7 +3125,7 @@ sub results_header_row { } } elsif ($context eq 'domain') { my $domdesc = &Apache::lonnet::domain($env{'request.role.domain'},'description'); - $description = &mt('Domain - ').$domdesc.': '; + $description = &mt('Domain - [_1]:',$domdesc).' '; if ($env{'form.roletype'} eq 'domain') { if ($statusmode eq 'Expired') { $description .= &mt('Users in domain with expired [_1] roles',$showfilter); @@ -3364,17 +3380,18 @@ sub print_first_users_upload_form { $str .= '<input type="hidden" name="state" value="got_file" />'; $str .= "<h3>".&mt('Upload a file containing information about users')."</h3>\n"; $str .= &Apache::loncommon::upfile_select_html(); - $str .= "<p>\n"; - $str .= '<input type="submit" name="fileupload" value="'. - &mt('Upload file of users').'">'."\n"; - $str .= '<label><input type="checkbox" name="noFirstLine" /> '. - &mt('Ignore First Line')."</label></p>\n"; + $str .= '<p>'; $str .= &Apache::loncommon::help_open_topic("Course_Create_Class_List", &mt("How do I create a users list from a spreadsheet")). "<br />\n"; $str .= &Apache::loncommon::help_open_topic("Course_Convert_To_CSV", - &mt("How do I create a CSV file from a spreadsheet")). - "<br />\n"; + &mt("How do I create a CSV file from a spreadsheet")); + $str .= "</p>\n"; + $str .= "<p>\n"; + $str .= '<label><input type="checkbox" name="noFirstLine" /> '. + &mt('Ignore First Line')."</label></p>\n"; + $str .= '<input type="submit" name="fileupload" value="'. + &mt('Go to next step').'">'."<br />\n"; $str .= &Apache::loncommon::end_page(); $r->print($str); return; @@ -3625,15 +3642,14 @@ sub upfile_drop_add { if ($entries{$fields{'username'}} ne &LONCAPA::clean_username($entries{$fields{'username'}})) { $r->print('<br />'. - &mt('<b>[_1]</b>: Unacceptable username for user [_2] [_3] [_4] [_5]', - $entries{$fields{'username'}},$fname,$mname,$lname,$gen). - '</b>'); + &mt('[_1]: Unacceptable username for user [_2] [_3] [_4] [_5]', + '<b>'.$entries{$fields{'username'}}.'</b>',$fname,$mname,$lname,$gen)); next; } else { - if ($entries{$fields{'dom'}} + if ($entries{$fields{'domain'}} ne &LONCAPA::clean_domain($entries{$fields{'domain'}})) { $r->print('<br />'. '<b>'.$entries{$fields{'domain'}}. - '</b>: '.&mt('Unacceptable domain for user [_2] [_3] [_4] [_5]',$fname,$mname,$lname,$gen).'</b>'); + '</b>: '.&mt('Unacceptable domain for user [_2] [_3] [_4] [_5]',$fname,$mname,$lname,$gen)); next; } my $username = $entries{$fields{'username'}}; @@ -3646,10 +3662,10 @@ sub upfile_drop_add { $entries{$fields{'sec'}} =~ s/\W//g; my $item = $entries{$fields{'sec'}}; if ($item eq "none" || $item eq 'all') { - $r->print('<br />'.&mt('<b>[_1]</b>: Unable to enroll user [_2] [_3] [_4] [_5] in a section named "[_6]" - this is a reserved word.',$username,$fname,$mname,$lname,$gen,$item)); + $r->print('<br />'.&mt('[_1]: Unable to enroll user [_2] [_3] [_4] [_5] in a section named "[_6]" - this is a reserved word.','<b>'.$username.'</b>',$fname,$mname,$lname,$gen,$item)); next; } elsif (exists($curr_groups{$item})) { - $r->print('<br />'.&mt('<b>[_1]</b>: Unable to enroll user [_2] [_3] [_4] [_5] in a section named "[_6]" - this is a course group.',$username,$fname,$mname,$lname,$gen,$item).' '.&mt('Section names and group names must be distinct.')); + $r->print('<br />'.&mt('[_1]: Unable to enroll user [_2] [_3] [_4] [_5] in a section named "[_6]" - this is a course group.','<b>'.$username.'</b>',$fname,$mname,$lname,$gen,$item).' '.&mt('Section names and group names must be distinct.')); next; } else { push(@secs,$item); @@ -3661,7 +3677,7 @@ sub upfile_drop_add { if (ref($userlist{$username.':'.$userdomain}) eq 'ARRAY') { my $currsec = $userlist{$username.':'.$userdomain}[$secidx]; if ($currsec ne $env{'request.course.sec'}) { - $r->print('<br />'.&mt('<b>[_1]</b>: Unable to enroll user [_2] [_3] [_4] [_5] in a section named "[_6]".',$username,$fname,$mname,$lname,$gen,$secs[0]).'<br />'); + $r->print('<br />'.&mt('[_1]: Unable to enroll user [_2] [_3] [_4] [_5] in a section named "[_6]".','<b>'.$username.'</b>',$fname,$mname,$lname,$gen,$secs[0]).'<br />'); if ($currsec eq '') { $r->print(&mt('This user already has an active/future student role in the course, unaffiliated to any section.')); @@ -3711,8 +3727,13 @@ sub upfile_drop_add { } if ($role eq '') { my $rolestr = join(', ',@permitted_roles); - $r->print('<br />'. - &mt('<b>[_1]</b>: You do not have permission to add the requested role [_2] for the user.',$entries{$fields{'username'}},$entries{$fields{'role'}}).'<br />'.&mt('Allowable role(s) is/are: [_1].',$rolestr)."\n"); + $r->print('<br />' + .&mt('[_1]: You do not have permission to add the requested role [_2] for the user.' + ,'<b>'.$entries{$fields{'username'}}.'</b>' + ,$entries{$fields{'role'}}) + .'<br />' + .&mt('Allowable role(s) is/are: [_1].',$rolestr)."\n" + ); next; } } @@ -3872,15 +3893,15 @@ sub upfile_drop_add { } else { if ($context eq 'course') { $r->print('<br />'. - &mt('<b>[_1]</b>: Unable to enroll. No password specified.',$username) + &mt('[_1]: Unable to enroll. No password specified.','<b>'.$username.'</b>') ); } elsif ($context eq 'author') { $r->print('<br />'. - &mt('<b>[_1]</b>: Unable to add co-author. No password specified.',$username) + &mt('[_1]: Unable to add co-author. No password specified.','<b>'.$username.'</b>') ); } else { $r->print('<br />'. - &mt('<b>[_1]</b>: Unable to add user. No password specified.',$username) + &mt('[_1]: Unable to add user. No password specified.','<b>'.$username.'</b>') ); } } @@ -3983,7 +4004,7 @@ sub user_change_result { if ($userresult =~ /^error:(.+)$/) { my $error = $1; $r->print('<br />'. - &mt('<b>[_1]</b>: Unable to add/modify: [_2]',$username.':'.$userdomain,$error)); + &mt('[_1]: Unable to add/modify: [_2]','<b>'.$username.':'.$userdomain.'</b>',$error)); } } else { $counts->{'user'} ++; @@ -3993,7 +4014,7 @@ sub user_change_result { if ($authresult =~ /^error:(.+)$/) { my $error = $1; $r->print('<br />'. - &mt('<b>[_1]</b>: Unable to modify authentication: [_2]',$username.':'.$userdomain,$error)); + &mt('[_1]: Unable to modify authentication: [_2]','<b>'.$username.':'.$userdomain.'</b>',$error)); } } else { $counts->{'auth'} ++; @@ -4003,7 +4024,7 @@ sub user_change_result { if ($roleresult =~ /^error:(.+)$/) { my $error = $1; $r->print('<br />'. - &mt('<b>[_1]</b>: Unable to add role: [_2]',$username.':'.$userdomain,$error)); + &mt('[_1]: Unable to add role: [_2]','<b>'.$username.':'.$userdomain.'</b>',$error)); } } else { $counts->{'role'} ++; @@ -4273,7 +4294,7 @@ sub update_user_list { $r->print('<p><b>'.&mt("$result_text{'ok'}{$choice} role(s) for [quant,_1,user,users,no users].",$count).'</b></p>'); if ($count > 0) { if ($choice eq 'revoke' || $choice eq 'drop') { - $r->print('<p>'.&mt('Re-enabling will re-activate data for the role.</p>')); + $r->print('<p>'.&mt('Re-enabling will re-activate data for the role.').'</p>'); } # Flush the course logs so reverse user roles immediately updated &Apache::lonnet::flushcourselogs();