--- loncom/interface/lonuserutils.pm 2008/05/30 17:18:21 1.57 +++ loncom/interface/lonuserutils.pm 2008/08/27 16:54:49 1.63 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Utility functions for managing LON-CAPA user accounts # -# $Id: lonuserutils.pm,v 1.57 2008/05/30 17:18:21 raeburn Exp $ +# $Id: lonuserutils.pm,v 1.63 2008/08/27 16:54:49 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -169,7 +169,7 @@ sub propagate_id_change { } sub update_classlist { - my ($cdom,$cnum,$udom,$uname,$user) = @_; + my ($cdom,$cnum,$udom,$uname,$user,$newend) = @_; my ($uid,$classlistentry); my $fullname = &Apache::lonnet::format_name($user->{'firstname'},$user->{'middlename'}, @@ -180,15 +180,37 @@ sub update_classlist { my @classinfo = split(/:/,$classhash{$uname.':'.$udom}); my $ididx=&Apache::loncoursedata::CL_ID() - 2; my $nameidx=&Apache::loncoursedata::CL_FULLNAME() - 2; + my $endidx = &Apache::loncoursedata::CL_END() - 2; + my $startidx = &Apache::loncoursedata::CL_START() - 2; for (my $i=0; $i<@classinfo; $i++) { - if ($i == $ididx) { + if ($i == $endidx) { + if ($newend ne '') { + $classlistentry .= $newend.':'; + } else { + $classlistentry .= $classinfo[$i].':'; + } + } elsif ($i == $startidx) { + if ($newend ne '') { + if ($classinfo[$i] > $newend) { + $classlistentry .= $newend.':'; + } else { + $classlistentry .= $classinfo[$i].':'; + } + } else { + $classlistentry .= $classinfo[$i].':'; + } + } elsif ($i == $ididx) { if (defined($user->{'id'})) { $classlistentry .= $user->{'id'}.':'; } else { $classlistentry .= $classinfo[$i].':'; } } elsif ($i == $nameidx) { - $classlistentry .= $fullname.':'; + if (defined($user->{'lastname'})) { + $classlistentry .= $fullname.':'; + } else { + $classlistentry .= $classinfo[$i].':'; + } } else { $classlistentry .= $classinfo[$i].':'; } @@ -319,8 +341,8 @@ 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('
print('
'); $r->print(''); @@ -558,7 +580,7 @@ function verify(vf,sec_caller) { if (tw==11) { foundrole=1; } if (tw==12) { founddomain=1; } } - verify_message(vf,founduname,foundpwd,foundname,foundid,foundsec,foundemail,foundrole,founddom); + verify_message(vf,founduname,foundpwd,foundname,foundid,foundsec,foundemail,foundrole,founddomain); } // @@ -777,10 +799,9 @@ sub print_upload_manager_footer { } $Str .= ''; $r->print($Str); @@ -790,15 +811,15 @@ sub print_upload_manager_footer { sub forceid_change { my ($context) = @_; my $output = - "

".&mt('ID/Student Number')."

\n". + "

".&mt('Student/Employee ID')."

\n". "

\n".'
'."\n". + &mt('Disable Student/Employee ID Safeguard and force change of conflicting IDs'). + '
'."\n". &mt('(only do if you know what you are doing.)')."\n"; if ($context eq 'domain') { $output .= '
'."\n"; } $output .= '

'; @@ -865,7 +886,7 @@ sub print_upload_manager_form { ['mname',&mt('Middle Names/Initials'),$env{'form.mname_choice'}], ['lname',&mt('Last Name'), $env{'form.lname_choice'}], ['gen', &mt('Generation'), $env{'form.gen_choice'}], - ['id', &mt('ID/Student Number'),$env{'form.id_choice'}], + ['id', &mt('Student/Employee ID'),$env{'form.id_choice'}], ['sec', &mt('Section'), $env{'form.sec_choice'}], ['ipwd', &mt('Initial Password'),$env{'form.ipwd_choice'}], ['email',&mt('E-mail Address'), $env{'form.email_choice'}], @@ -2013,7 +2034,6 @@ END 'role' => "role", 'type' => "enroll type/action", 'email' => "email address", - 'clicker' => "clicker id", 'photo' => "photo", 'extent' => "extent", 'pr' => "Proceed", @@ -2178,19 +2198,20 @@ END if ($context eq 'course' && $mode ne 'autoenroll') { if ($env{'form.showrole'} eq 'st' || $env{'form.showrole'} eq 'Any') { # Clicker display on or off? - my %clicker_options = &Apache::lonlocal::texthash( - 'on' => 'Show', - 'off' => 'Hide', - ); + my %clicker_options = ( + 'on' => 'Show', + 'off' => 'Hide', + ); my $clickerchg = 'on'; if ($displayclickers eq 'on') { $clickerchg = 'off'; } - $output .= ' '."\n".' '. - ''. - $clicker_options{$clickerchg}.' '.$lt{'clicker'}."\n". - ' '."\n"; + $output .= ' '."\n".' ' + .&mt('[_1]'.$clicker_options{$clickerchg}.'[_2] clicker id' + ,'' + ,'') + ."\n".' '."\n"; # Photo display on or off? if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) { @@ -2968,7 +2989,7 @@ sub section_picker { if ($mode eq 'upload') { my ($options,$cb_script,$coursepick) = &default_role_selector($context,1); - $secbox .= &Apache::lonhtmlcommon::row_title('role','LC_oddrow_value'). + $secbox .= &Apache::lonhtmlcommon::row_title(&mt('role'),'LC_oddrow_value'). $options. &Apache::lonhtmlcommon::row_closure(1)."\n"; } $secbox .= &Apache::lonhtmlcommon::row_title($rowtitle,'LC_oddrow_value')."\n"; @@ -3593,16 +3614,8 @@ sub upfile_drop_add { ''); next; } else { - my $baddom = 0; if ($entries{$fields{'dom'}} ne &LONCAPA::clean_domain($entries{$fields{'domain'}})) { - $baddom = 1; - } else { - if (&Apache::lonnet::domain($entries{$fields{'domain'}}) eq '') { - $baddom = 1; - } - } - if ($baddom) { $r->print('
'. ''.$entries{$fields{'domain'}}. ': '.&mt('Unacceptable domain for user [_2] [_3] [_4] [_5]',$fname,$mname,$lname,$gen).''); next; @@ -4265,11 +4278,9 @@ sub classlist_drop { my ($scope,$uname,$udom,$now) = @_; my ($cdom,$cnum) = ($scope=~m{^/($match_domain)/($match_courseid)}); if (&Apache::lonnet::is_course($cdom,$cnum)) { - my $user = $uname.':'.$udom; if (!&active_student_roles($cnum,$cdom,$uname,$udom)) { - my $result = - &Apache::lonnet::cput('classlist', - { $user => $now },$cdom,$cnum); + my %user; + my $result = &update_classlist($cdom,$cnum,$udom,$uname,\%user,$now); return &mt('Drop from classlist: [_1]', ''.$result.'').'
'; } @@ -4573,10 +4584,14 @@ sub can_modify_userinfo { if (ref($userroles) eq 'ARRAY') { foreach my $role (@{$userroles}) { my $testrole; - if ($role =~ /^cr\//) { - $testrole = 'cr'; - } else { + if ($context eq 'selfcreate') { $testrole = $role; + } else { + if ($role =~ /^cr\//) { + $testrole = 'cr'; + } else { + $testrole = $role; + } } if (ref($domconfig{'usermodification'}{$context}{$testrole}) eq 'HASH') { if ($domconfig{'usermodification'}{$context}{$testrole}{$field}) {