--- loncom/interface/Attic/londropadd.pm 2007/08/28 13:00:45 1.167 +++ loncom/interface/Attic/londropadd.pm 2009/02/04 13:21:48 1.178 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to drop and add students in courses # -# $Id: londropadd.pm,v 1.167 2007/08/28 13:00:45 raeburn Exp $ +# $Id: londropadd.pm,v 1.178 2009/02/04 13:21:48 hauer Exp $ # # Copyright Michigan State University Board of Trustees # @@ -26,8 +26,23 @@ # http://www.lon-capa.org/ # # -############################################################### -############################################################## + +=head1 NAME + +Apache::londropadd.pm + +=head1 SYNOPSIS + +drop & add students + +This is part of the LearningOnline Network with CAPA project +described at http://www.lon-capa.org. + +=head1 SUBROUTINES + +=over + +=cut package Apache::londropadd; @@ -42,8 +57,6 @@ use Apache::lonlocal; use Apache::longroup; use LONCAPA(); -############################################################### -############################################################### sub header { my ($jscript,$loaditems) = @_; my $start_page; @@ -59,9 +72,14 @@ $start_page ENDHEAD } -############################################################### -############################################################### -# Drop student from all sections of a course, except optional $csec +=pod + +=item modifystudent() + + Drop student from all sections of a course, except optional $csec + +=cut + sub modifystudent { my ($udom,$unam,$courseid,$csec,$desiredhost)=@_; # if $csec is undefined, drop the student from all the courses matching @@ -104,9 +122,14 @@ sub modifystudent { return $result; } -############################################################### -############################################################### -# build a domain and server selection form +=pod + +=item domain_form() + + build a domain and server selection form + +=cut + sub domain_form { my ($defdom) = @_; # Set up domain and server selection forms @@ -135,9 +158,14 @@ sub domain_form { return $result; } -############################################################### -############################################################### -# Menu Phase One +=pod + +=item print_main_menu() + + Menu Phase One + +=cut + sub print_main_menu { my ($r,$permission)=@_; # @@ -179,27 +207,27 @@ sub print_main_menu { { text => 'Create a new group', help => 'Course_Create_Group', permission => $permission->{'grp_manage'}, - url => '/adm/coursegroups?refpage=enrl&action=create', + url => '/adm/coursegroups?refpage=enrl&action=create', }, { text => 'Modify an existing group', help => 'Course_Modify_Group', permission => $permission->{'grp_manage'}, - url => '/adm/coursegroups?refpage=enrl&action=modify', + url => '/adm/coursegroups?refpage=enrl&action=modify', }, { text => 'Delete an existing group', help => 'Course_Delete_Group', permission => $permission->{'grp_manage'}, - url => '/adm/coursegroups?refpage=enrl&action=delete', + url => '/adm/coursegroups?refpage=enrl&action=delete', }, { text => 'Re-enable a deleted group', help => 'Course_Reenable_Group', permission => $permission->{'grp_manage'}, - url => '/adm/coursegroups?refpage=enrl&action=reenable', + url => '/adm/coursegroups?refpage=enrl&action=reenable', }, { text => 'Enter an existing group', help => 'Course_Display_Group', permission => $permission->{'grp_view'}, - url => '/adm/coursegroups?refpage=enrl&action=view', + url => '/adm/coursegroups?refpage=enrl&action=view', }, ); my $menu_html = ''; @@ -224,13 +252,15 @@ sub print_main_menu { return; } -############################################################### -############################################################### + + sub hidden_input { my ($name,$value) = @_; return '<input type="hidden" name="'.$name.'" value="'.$value.'" />'."\n"; } + + sub print_upload_manager_header { my ($r,$datatoken,$distotal,$krbdefdom)=@_; my $javascript; @@ -262,8 +292,9 @@ sub print_upload_manager_header { $password_choice = 'int'; } # - my $javascript_validations=&javascript_validations('auth',$krbdefdom, - $password_choice); + my $javascript_validations = + &javascript_validations('auth',$krbdefdom,$password_choice,undef, + $env{'request.role.domain'}); my $checked=(($env{'form.noFirstLine'})?' checked="checked" ':''); $r->print('<h3>'.&mt('Uploading Class List')."</h3>\n". "<hr>\n". @@ -290,10 +321,12 @@ sub print_upload_manager_header { $javascript."\n".$javascript_validations.'</script>'); } -############################################################### -############################################################### + + + + sub javascript_validations { - my ($mode,$krbdefdom,$curr_authtype,$curr_authfield)=@_; + my ($mode,$krbdefdom,$curr_authtype,$curr_authfield,$domain)=@_; my $authheader; if ($mode eq 'auth') { my %param = ( formname => 'studentform', @@ -302,7 +335,7 @@ sub javascript_validations { $authheader = &Apache::loncommon::authform_header(%param); } elsif ($mode eq 'createcourse') { my %param = ( formname => 'ccrs', - kerb_def_dom => $krbdefdom, + kerb_def_dom => $krbdefdom, curr_authtype => $curr_authtype ); $authheader = &Apache::loncommon::authform_header(%param); } elsif ($mode eq 'modifycourse') { @@ -323,7 +356,7 @@ sub javascript_validations { name => 'The optional name field was not specified.', snum => 'The optional student 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.', continue => 'Continue enrollment?', ); @@ -331,6 +364,7 @@ sub javascript_validations { my $function_name =(<<END); function verify_message (vf,founduname,foundpwd,foundname,foundid,foundsec,foundemail) { END + my ($authnum,%can_assign) = &Apache::loncommon::get_assignable_auth($domain); my $auth_checks; if ($mode eq 'createcourse') { $auth_checks .= (<<END); @@ -345,9 +379,13 @@ END $auth_checks .= (<<END); var foundatype=0; if (founduname==0) { - alert('$alert{'username'}'); + alert('$alert{'username'}'); return; } + +END + if ($authnum > 1) { + $auth_checks .= (<<END); // alert('current.radiovalue = '+current.radiovalue); if (current.radiovalue == null || current.radiovalue == '' || current.radiovalue == 'nochange') { // They did not check any of the login radiobuttons. @@ -355,6 +393,7 @@ END return; } END + } } if ($mode eq 'createcourse') { $auth_checks .= " @@ -416,7 +455,7 @@ END } END } else { - $section_checks = §ion_check_js(); + $section_checks = &Apache::lonuserutils::section_check_js(); $optional_checks = (<<END); var message=''; if (foundname==0) { @@ -464,8 +503,9 @@ END return $result; } -############################################################### -############################################################### + + + sub upload_manager_javascript_forward_associate { return(<<ENDPICK); function verify(vf,sec_caller) { @@ -557,8 +597,9 @@ function clearpwd(vf) { ENDPICK } -############################################################### -############################################################### + + + sub upload_manager_javascript_reverse_associate { return(<<ENDPICK); function verify(vf,sec_caller) { @@ -612,8 +653,9 @@ function clearpwd(vf) { ENDPICK } -############################################################### -############################################################### + + + sub print_upload_manager_footer { my ($r,$i,$keyfields,$defdom,$today,$halfyear)=@_; @@ -666,8 +708,9 @@ sub print_upload_manager_footer { return; } -############################################################### -############################################################### + + + sub print_upload_manager_form { my $r=shift; @@ -721,7 +764,7 @@ sub print_upload_manager_form { ['id', &mt('ID/Student Number'),$env{'form.id_choice'}], ['sec', &mt('Section'), $env{'form.sec_choice'}], ['ipwd', &mt('Initial Password'),$env{'form.ipwd_choice'}], - ['email',&mt('EMail Address'), $env{'form.email_choice'}]); + ['email',&mt('E-mail Address'), $env{'form.email_choice'}]); if ($env{'form.upfile_associate'} eq 'reverse') { &Apache::loncommon::csv_print_samples($r,\@records); $i=&Apache::loncommon::csv_print_select_table($r,\@records, @@ -741,8 +784,10 @@ sub print_upload_manager_form { &print_upload_manager_footer($r,$i,$keyfields,$defdom,$today,$halfyear); } -############################################################### -############################################################### + + + + sub enroll_single_student { my ($r,$srcharray) = @_; # Remove non alphanumeric values from section @@ -752,9 +797,10 @@ sub enroll_single_student { # in the course is entirely separate from the action of enrolling the # student. Also, a failure in setting the dates as default is not fatal # to the process of enrolling / modifying a student. - my ($startdate,$enddate) = &get_dates_from_form(); + my ($startdate,$enddate) = &Apache::lonuserutils::get_dates_from_form(); if ($env{'form.makedatesdefault'}) { - $r->print(&make_dates_default($startdate,$enddate)); + $r->print(&Apache::lonuserutils::make_dates_default($startdate, + $enddate)); } $r->print('<h3>'.&mt('Enrolling Student').'</h3>'); @@ -799,7 +845,7 @@ sub enroll_single_student { $env{'form.lcdomain'}); if ((($amode) && ($genpwd)) || ($home ne 'no_host')) { # Clean out any old roles the student has in this class. - &modifystudent($env{'form.lcdomain'},$env{'form.cuname'}, + &Apache::lonuserutils::modifystudent($env{'form.lcdomain'},$env{'form.cuname'}, $env{'request.course.id'},$env{'form.csec'}, $desiredhost); my $login_result = &Apache::lonnet::modifystudent @@ -953,9 +999,14 @@ sub make_dates_default { return $result; } -## -## Single student enrollment routines (some of them) -## +=pod + +=item get_student_username_domain_form() + + Single student enrollment routines (some of them) + +=cut + sub get_student_username_domain_form { my ($r,$elements,$response,$srch,$forcenewuser) = @_; my $loaditems = { @@ -984,6 +1035,7 @@ sub get_student_username_domain_form { $jscript <h3>$lt{'eos'}</h3> END + $r->print($response); $r->print(&single_user_entry_form($defdom,$srch,$forcenewuser)); return; } @@ -1057,7 +1109,9 @@ sub print_enroll_single_student_form { # Set up authentication forms my ($krbdef,$krbdefdom) = &Apache::loncommon::get_kerberos_defaults($ccdomain); - $javascript_validations=&javascript_validations('auth',$krbdefdom); + $javascript_validations = + &Apache::lonuserutils::javascript_validations('auth',$krbdefdom, + undef,undef,$ccdomain); my %param = ( formname => 'document.studentform', kerb_def_dom => $krbdefdom, kerb_def_auth => $krbdef @@ -1079,15 +1133,15 @@ sub print_enroll_single_student_form { # # my %lt=&Apache::lonlocal::texthash( - 'udf' => "User Data for", + 'udf' => "Personal Data", 'fn' => "First Name", 'mn' => "Middle Name", 'ln' => "Last Name", 'gen' => "Generation", 'hs' => "Home Server", - 'pswd' => "Password", + 'pswd' => "Login Data", 'psam' => "Please select an authentication mechanism", - 'mail' => "Email Address" + 'mail' => "E-mail Address" ); my $authhelp=&Apache::loncommon::help_open_topic('Auth_Options'); $user_data_html = <<END; @@ -1108,26 +1162,29 @@ sub print_enroll_single_student_form { </table> <h3>$lt{'pswd'}</h3> $lt{'psam'}$authhelp -<table> <p> -$krbform -<br /> -$intform -<br /> -$locform -</p> END + if ($krbform ne '') { + $user_data_html .= $krbform.'<br />'; + } + if ($intform ne '') { + $user_data_html .= $intform.'<br />'; + } + if ($locform ne '') { + $user_data_html .= $locform.'<br />'; + } + $user_data_html .= "\n</p>\n" } else { # User already exists. Do not worry about authentication my %uenv = &Apache::lonnet::dump('environment',$ccdomain,$ccuname); - $javascript_validations = &javascript_validations('noauth'); + $javascript_validations = &Apache::lonuserutils::javascript_validations('noauth'); my %lt=&Apache::lonlocal::texthash( 'udf' => "User Data for", 'fn' => "First Name", 'mn' => "Middle Name", 'ln' => "Last Name", 'gen' => "Generation", - 'mail' => "Email Address", + 'mail' => "E-mail Address", ); $user_data_html = <<END; <h3>$lt{'udf'} $ccuname:$ccdomain</h3> @@ -1146,7 +1203,7 @@ END </table> END } - my $date_table = &date_setting_table(); + my $date_table = &Apache::lonuserutils::date_setting_table(); # Print it all out my %lt=&Apache::lonlocal::texthash( 'cd' => "Course Data", @@ -1235,7 +1292,14 @@ END return; } -# ========================================================= Menu Phase Two Drop +=pod + +=item print_drop_menu() + + Menu Phase Two Drop + +=cut + sub print_drop_menu { my $r=shift; $r->print("<h3>".&mt('Drop Students')."</h3>"); @@ -1250,7 +1314,15 @@ sub print_drop_menu { return; } -# ============================================== view classlist + +=pod + +=item print_html_classlist() + + view classlist + +=cut + sub print_html_classlist { my ($r,$mode,$permission) = @_; if (! exists($env{'form.sortby'})) { @@ -1340,7 +1412,15 @@ sub print_html_classlist { } } -# =================================================== Show student list to drop + +=pod + +=item show_class_list() + + Show student list to drop + +=cut + sub show_class_list { my ($r,$mode,$linkto,$statusmode,$classlist,$keylist)=@_; my $cid=$env{'request.course.id'}; @@ -1364,6 +1444,11 @@ sub show_class_list { } my $displayphotos = $env{'form.displayphotos'}; + if (! exists($env{'form.displayclickers'})) { + $env{'form.displayclickers'} = 'off'; + } + my $displayclickers = $env{'form.displayclickers'}; + # Print out header unless ($mode eq 'autoenroll') { $r->print(<<END); @@ -1373,6 +1458,7 @@ END $r->print(<<END); <input type="hidden" name="sortby" value="$sortby" /> <input type="hidden" name="displayphotos" value="$displayphotos" /> +<input type="hidden" name="displayclickers" value="$displayclickers" /> END if ($mode eq 'html' || $mode eq 'view' || $mode eq 'autoenroll') { if ($linkto eq 'aboutme') { @@ -1389,7 +1475,8 @@ END 'start' => "start date", 'end' => "end date", 'type' => "enroll type/action", - 'email' => "email address", + 'email' => "e-mail address", + 'clicker'=> "clicker id", 'photo' => "photo", ); unless ($mode eq 'autoenroll') { @@ -1446,6 +1533,24 @@ function photowindow(photolink) { <a href="javascript:document.studentform.sortby.value='email';document.studentform.submit();">$lt{'email'}</a> </th> END + +# Clicker display on or off? + + my %clicker_options = &Apache::lonlocal::texthash( + 'on' => 'Show', + 'off' => 'Hide', + ); + my $clickerchg = 'on'; + if ($displayclickers eq 'on') { + $clickerchg = 'off'; + } + $r->print(' <th>'."\n".' '. + '<a href="javascript:document.studentform.displayclickers.value='. + "'".$clickerchg."'".';document.studentform.submit();">'. + $clicker_options{$clickerchg}.'</a> '.$lt{'clicker'}."\n". + ' </th>'."\n"); + +# Photo display on or off? if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) { my %photo_options = &Apache::lonlocal::texthash( 'on' => 'Show', @@ -1462,6 +1567,9 @@ END ' </th>'."\n"); } $r->print(" </tr>\n"); + +# Done with the HTML header line + } elsif ($mode eq 'csv') { # # Open a file @@ -1470,9 +1578,9 @@ END time.'_'.rand(1000000000).'.csv'; unless ($CSVfile = Apache::File->new('>/home/httpd'.$CSVfilename)) { $r->log_error("Couldn't open $CSVfilename for output $!"); - $r->print("Problems occured in writing the csv file. ". - "This error has been logged. ". - "Please alert your LON-CAPA administrator."); + $r->print(&mt('Problems occurred in writing the csv file. ' + .'This error has been logged. ' + .'Please alert your LON-CAPA administrator.')); $CSVfile = undef; } # @@ -1514,6 +1622,9 @@ END "active groups","email address"], $format->{'bold'}); } + +# Done with header lines in all formats + # # Sort the students my %index; @@ -1557,12 +1668,8 @@ END my %emails = &Apache::loncommon::getemails($username,$domain); my $email; - foreach my $type ('critnotification', 'permanentemail', - 'notification') { - if ($emails{$type} =~ /\S/) { - $email = $emails{$type}; - last; - } + if ($emails{'permanentemail'} =~ /\S/) { + $email = $emails{'permanentemail'}; } if ($mode eq 'view' || $mode eq 'html' || $mode eq 'autoenroll') { @@ -1626,6 +1733,19 @@ END <td>$active_groups</td> <td>$email</td> END + +# Clickers + if ($displayclickers eq 'on') { + my $clickers = + (&Apache::lonnet::userenvironment($domain,$username,'clickers'))[1]; + if ($clickers!~/\w/) { $clickers='-'; } + $r->print('<td>'.$clickers.'</td>'); + } else { + $r->print(' <td> </td> '); + } + +# Photos + if ($env{'course.'.$env{'request.course.id'}. '.internal.showphoto'}) { if ($displayphotos eq 'on') { @@ -1702,9 +1822,14 @@ END } -# -# print out form for modification of a single students data -# +=pod + +=item print_modify_student_form() + + print out form for modification of a single students data + +=cut + sub print_modify_student_form { my $r = shift(); &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, @@ -1715,8 +1840,8 @@ sub print_modify_student_form { # determine the students name information my %info=&Apache::lonnet::get('environment', ['firstname','middlename', - 'lastname','generation','id'], - $sdom, $sname); + 'lastname','generation','id', + 'permanentemail'], $sdom, $sname); my ($tmp) = keys(%info); if ($tmp =~ /^(con_lost|error|no_such_host)/i) { $r->print('<font color="#ff0000" size="+2">'.&mt('Error').'</font>'. @@ -1755,7 +1880,8 @@ sub print_modify_student_form { &Apache::lonlocal::locallocaltime($endtime)).'<br />'; } - my $date_table = &date_setting_table($starttime,$endtime); + my $date_table = + &Apache::lonuserutils::date_setting_table($starttime,$endtime); # if (! exists($env{'form.Status'}) || $env{'form.Status'} !~ /^(Any|Expired|Active|Future)$/) { @@ -1770,13 +1896,14 @@ sub print_modify_student_form { 'mn' => "Middle", 'ln' => "Last", 'gen' => "Generation", + 'email' => "E-mail address", 'sid' => "Student ID", 'disn' => "Disable ID/Student Number Safeguard and Force Change of Conflicting IDs (only do if you know what you are doing)", 'sec' => "Section", 'sm' => "Submit Modifications", ); # Check if section name is valid - my $section_check = §ion_check_js(); + my $section_check = &Apache::lonuserutils::section_check_js(); $r->print(<<"END"); <script type="text/javascript"> $section_check @@ -1799,8 +1926,8 @@ $lt{'odcc'} <input type="hidden" name="state" value="done" /> <input type="hidden" name="sortby" value="$sortby" /> <input type="hidden" name="Status" value="$env{'form.Status'}" /> -<h2>$lt{'mef'} $info{'firstname'} $info{'middlename'} -$info{'lastname'} $info{'generation'}, $sname:$sdom</h2> +<h3>$lt{'mef'} $info{'firstname'} $info{'middlename'} +$info{'lastname'} $info{'generation'}, $sname:$sdom</h3> <p> <b>$lt{'sn'}</b> <table> @@ -1812,6 +1939,8 @@ $info{'lastname'} $info{'generation'}, $ <input type="text" name="generation" value="$info{'generation'}" /></td></tr> </table> </p><p> +<b>$lt{'email'}</b>: <input type="text" name="permanentemail" value="$info{'permanentemail'}" size="30" /> +</p><p> <b>$lt{'sid'}</b>: <input type="text" name="id" value="$info{'id'}" size="12" /> </p><p> <label> @@ -1829,9 +1958,15 @@ END return; } -# -# modify a single students section -# + +=pod + +=item modify_single_student() + + modify a single students section + +=cut + sub modify_single_student { my ($r) = @_; # @@ -1839,9 +1974,10 @@ sub modify_single_student { $env{'form.section'} =~ s/\W//g; # # Do the date defaults first - my ($starttime,$endtime) = &get_dates_from_form(); + my ($starttime,$endtime) = &Apache::lonuserutils::get_dates_from_form(); if ($env{'form.makedatesdefault'}) { - $r->print(&make_dates_default($starttime,$endtime)); + $r->print(&Apache::lonuserutils::make_dates_default($starttime, + $endtime)); } # Get the 'sortby' and 'Status' variables so the user goes back to their # previous screen @@ -1855,8 +1991,8 @@ sub modify_single_student { # Get the old data my %old=&Apache::lonnet::get('environment', ['firstname','middlename', - 'lastname','generation','id'], - $sdom, $slogin); + 'lastname','generation','id', + 'permanentemail'],$sdom, $slogin); $old{'section'} = &Apache::lonnet::getsection($sdom,$slogin, $env{'request.course.id'}); my ($tmp) = keys(%old); @@ -1871,6 +2007,7 @@ sub modify_single_student { my $middlename = $env{'form.middlename'}; my $lastname = $env{'form.lastname'}; my $generation = $env{'form.generation'}; + my $permanentemail = $env{'form.permanentemail'}; my $section = $env{'form.section'}; my $courseid = $env{'request.course.id'}; my $sid = $env{'form.id'}; @@ -1895,65 +2032,111 @@ sub modify_single_student { 'mn' => "Middle name", 'ln' => "Last name", 'gen' => "Generation", + 'em' => "E-mail address", 'sec' => "Section", 'ri' => "Role Information", 'st' => "Start Time", 'et' => "End Time", ); $r->print(<<END); - <h2>$lt{'mdu'} $slogin : $sdom </h2> -<h3>$lt{'si'}</h3> -<table rules="rows" border="1" cellpadding="3" > -<tr> - <th> $lt{'fd'} </th> - <th> $lt{'ov'} </th> - <th> $lt{'nv'} </th> -</tr> -<tr> - <td> <b>$lt{'fn'}</b> </td> - <td> $old{'firstname'} </td> - <td> $firstname </td> -</tr><tr> - <td> <b>$lt{'mn'}</b> </td> - <td> $old{'middlename'} </td> - <td> $middlename </td> -</tr><tr> - <td> <b>$lt{'ln'}</b> </td> - <td> $old{'lastname'} </td> - <td> $lastname </td> -</tr><tr> - <td> <b>$lt{'gen'}</b> </td> - <td> $old{'generation'} </td> - <td> $generation </td> -</tr><tr> - <td> <b>ID</b> </td> - <td> $old{'id'} </td> - <td> $sid </td> -</tr><tr> - <td> <b>$lt{'sec'}</b> </td> - <td> $old{'section'} </td> - <td> $section</td> -</tr> -</table> -<h3>$lt{'ri'}</h3> + <h3>$lt{'mdu'} $slogin:$sdom </h3> +END + $r->print(<<END); <table> -<tr><td align="right"><b>$lt{'st'}:</b></td><td> $displayable_starttime </td></tr> -<tr><td align="right"><b>$lt{'et'}:</b></td><td> $displayable_endtime </td></tr> + <tr> + <td> + <table class="LC_nested_outer"> + <tr> + <th>$lt{si}</th> + </tr> + <tr> + <td> + <table class="LC_nested"> + <tr class="LC_info_row"> + <td class="LC_left_item"> $lt{'fd'} </td> + <td class="LC_left_item"> $lt{'ov'} </td> + <td class="LC_left_item"> $lt{'nv'} </td> + </tr> + <tr class="LC_odd_row"> + <td class="LC_left_item"> <b>$lt{'fn'}</b> </td> + <td class="LC_left_item"> $old{'firstname'} </td> + <td class="LC_left_item"> $firstname </td> + </tr> + <tr> + <td class="LC_left_item"> <b>$lt{'mn'}</b> </td> + <td class="LC_left_item"> $old{'middlename'} </td> + <td class="LC_left_item"> $middlename </td> + </tr> + <tr class="LC_odd_row"> + <td class="LC_left_item"> <b>$lt{'ln'}</b> </td> + <td class="LC_left_item"> $old{'lastname'} </td> + <td class="LC_left_item"> $lastname </td> + </tr> + <tr> + <td class="LC_left_item"> <b>$lt{'gen'}</b> </td> + <td class="LC_left_item"> $old{'generation'} </td> + <td class="LC_left_item"> $generation </td> + </tr> + <tr class="LC_odd_row"> + <td class="LC_left_item"> <b>ID</b> </td> + <td class="LC_left_item"> $old{'id'} </td> + <td class="LC_left_item"> $sid </td> + </tr> + <tr> + <td class="LC_left_item"> <b>$lt{'em'}</b> </td> + <td class="LC_left_item"> $old{'permanentemail'} </td> + <td class="LC_left_item"> $permanentemail </td> + <tr class="LC_odd_row"> + <td> <b>$lt{'sec'}</b> </td> + <td> $old{'section'} </td> + <td> $section</td> + </tr> + </table> + </td> + </tr> + </table> + <br /> + <table class="LC_nested_outer"> + <tr> + <th>$lt{'ri'}</th> + </tr> + <tr> + <td> + <table class="LC_nested"> + <tr class="LC_odd_row"> + <td class="LC_left_item"><b>$lt{'st'}:</b></td> + <td class="LC_right_item"> $displayable_starttime </td> + </tr> + <tr> + <td class="LC_left_item"><b>$lt{'et'}:</b></td> + <td class="LC_right_item"> $displayable_endtime </td> + </tr> + </table> + </td> + </tr> + </table> + </td> + </tr> </table> <p> END # # Send request(s) to modify data (final undef is for 'desiredhost', # which is a moot point because the student already has an account. - my $modify_section_results = &modifystudent($sdom,$slogin, - $env{'request.course.id'}, - $section,undef); + my $modify_section_results = + &Apache::lonuserutils::modifystudent($sdom,$slogin, + $env{'request.course.id'}, + $section,undef); if ($modify_section_results !~ /^ok/) { - $r->print(&mt('An error occured during the attempt to change the section for this student.')."<br />"); + $r->print(&mt('An error occurred during the attempt to change the section for this student.')."<br />"); } my $roleresults = &Apache::lonnet::modifystudent ($sdom,$slogin,$sid,undef,undef,$firstname,$middlename,$lastname, - $generation,$section,$endtime,$starttime,$env{'form.forceid'}); + $generation,$section,$endtime,$starttime,$env{'form.forceid'}, + undef,$permanentemail); + if ($old{'permanentemail'} ne $permanentemail) { + &Apache::loncommon::flush_email_cache($slogin,$sdom); + } if ($roleresults eq 'refused' ) { $r->print(&mt('Your request to change the role information for this student was refused. You do not appear to have sufficient authority to change student information.')); } elsif ($roleresults !~ /ok/) { @@ -2013,12 +2196,10 @@ sub get_enrollment_data { return ($start,$end,$section); } -################################################# -################################################# =pod -=item show_drop_list +=item show_drop_list() Display a list of students to drop Inputs: @@ -2038,8 +2219,6 @@ which describes the order elements are s =cut -################################################# -################################################# sub show_drop_list { my ($r,$classlist,$keylist,$nosort)=@_; my $cid=$env{'request.course.id'}; @@ -2199,9 +2378,15 @@ END return; } -# -# Print out the initial form to get the courselist file -# + +=pod + +=item print_first_courselist_upload_form() + + Print out the initial form to get the courselist file + +=cut + sub print_first_courselist_upload_form { my $r=shift; my $str; @@ -2226,7 +2411,15 @@ sub print_first_courselist_upload_form { return; } -# ================================================= Drop/Add from uploaded file + +=pod + +=item upfile_drop_add() + + Drop/Add from uploaded file + +=cut + sub upfile_drop_add { my $r=shift; &Apache::loncommon::load_tmp_file($r); @@ -2403,8 +2596,9 @@ sub upfile_drop_add { $$_ =~ s/(\s+$|^\s+)//g; } if ($password || $env{'form.login'} eq 'loc') { - &modifystudent($domain,$username,$cid,$sec, - $desiredhost); + &Apache::lonuserutils::modifystudent($domain, + $username,$cid, + $sec,$desiredhost); my $reply=&Apache::lonnet::modifystudent ($domain,$username,$id,$amode,$password, $fname,$mname,$lname,$gen,$sec,$enddate, @@ -2431,7 +2625,7 @@ sub upfile_drop_add { } } } # end of foreach (@studentdata) - $r->print("</p>\n<p>\n".&mt('Processed [_1] student(s).',$count). + $r->print("</p>\n<p>\n".&mt('Processed [quant,_1,student].',$count). "</p>\n"); $r->print("<p>\n". &mt('If active, the new role will be available when the '. @@ -2471,7 +2665,8 @@ sub drop_student_list { foreach (@droplist) { my ($uname,$udom)=split(/\:/,$_); # drop student - my $result = &modifystudent($udom,$uname,$env{'request.course.id'}); + my $result = &Apache::lonuserutils::modifystudent($udom,$uname, + $env{'request.course.id'}); if ($result eq 'ok' || $result eq 'ok:') { $r->print(&mt('Dropped [_1]',$uname.'@'.$udom).'<br>'); $count++; @@ -2481,7 +2676,7 @@ sub drop_student_list { '<br />'); } } - $r->print('<p><b>'.&mt('Dropped [_1] student(s).',$count).'</b></p>'); + $r->print('<p><b>'.&mt('Dropped [quant,_1,student].',$count).'</b></p>'); $r->print('<p>'.&mt('Re-enrollment will re-activate data.')) if ($count); } @@ -2538,12 +2733,9 @@ sub get_permission { return (\%permission,$allowed); } -################################################################### -################################################################### - =pod -=item &handler +=item &handler() The typical handler you see in all these modules. Takes $r, the http request, as an argument. @@ -2570,8 +2762,6 @@ The response to the request is governed =cut -################################################################### -################################################################### sub handler { my $r=shift; if ($r->header_only) { @@ -2656,14 +2846,19 @@ sub handler { my @search = ('srchterm','srchby','srchin','srchtype','srchdomain'); my ($jsback,$elements) = &Apache::loncreateuser::crumb_utilities(); my $jscript = '<script type="text/javascript">'.$jsback.'</script>'; + &Apache::loncreateuser::restore_prev_selections(); + my $srch; + foreach my $item (@search) { + $srch->{$item} = $env{'form.'.$item}; + } + if ($env{'form.state'} eq 'gotusername') { - my $srch; - foreach my $item (@search) { - $srch->{$item} = $env{'form.'.$item}; - } if ($env{'form.phase'} eq 'get_user_info') { my ($currstate,$response,$forcenewuser,$results) = &Apache::loncreateuser::user_search_result($srch); + if ($env{'form.currstate'} eq 'modify') { + $currstate = $env{'form.currstate'}; + } if ($currstate eq 'select') { $r->print(&header()); &Apache::lonhtmlcommon::add_breadcrumb @@ -2707,7 +2902,7 @@ sub handler { &print_enroll_single_student_form($r,$jscript,$ccuname, $ccdomain,$srch); } else { - &get_student_username_domain_form($r,$elements); + &get_student_username_domain_form($r,$elements,undef,$srch); } } elsif ($env{'form.state'} eq 'enrolling') { $r->print(&header($jscript)); @@ -2728,7 +2923,7 @@ sub handler { 'Course_Add_Student')); &enroll_single_student($r,\@search); } else { - &get_student_username_domain_form($r,$elements); + &get_student_username_domain_form($r,$elements,undef,$srch); } } elsif ($env{'form.action'} eq 'classlist' && $permission->{'view'}) { $r->print(&header()); @@ -2777,10 +2972,12 @@ sub handler { return OK; } -################################################################### -################################################################### 1; __END__ +=pod + +=back +=cut