--- loncom/interface/Attic/londropadd.pm 2006/12/21 20:05:20 1.153 +++ loncom/interface/Attic/londropadd.pm 2007/07/26 23:56:35 1.165 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to drop and add students in courses # -# $Id: londropadd.pm,v 1.153 2006/12/21 20:05:20 raeburn Exp $ +# $Id: londropadd.pm,v 1.165 2007/07/26 23:56:35 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -106,7 +106,7 @@ sub domain_form { # Set up domain and server selection forms # # Get the domains - my @domains = &Apache::loncommon::get_domains(); + my @domains = &Apache::lonnet::all_domains(); # build up the menu information to be passed to # &Apache::loncommon::linked_select_forms my %select_menus; @@ -117,7 +117,7 @@ sub domain_form { $select_menus{$dom}->{'default'}= 'default'; $select_menus{$dom}->{'select2'}->{'default'} = 'default'; # Now build up the other items in the second menu - my %servers = &Apache::loncommon::get_library_servers($dom); + my %servers = &Apache::lonnet::get_servers($dom,'library'); foreach my $server (keys(%servers)) { $select_menus{$dom}->{'select2'}->{$server} = "$server $servers{$server}"; @@ -133,8 +133,7 @@ sub domain_form { ############################################################### # Menu Phase One sub print_main_menu { - my ($r,$enrl_permission,$view_permission,$grp_manage_permission, - $grp_view_permission)=@_; + my ($r,$permission)=@_; # my $cid =$env{'request.course.id'}; my $cdom=$env{'course.'.$cid.'.domain'}; @@ -144,55 +143,56 @@ sub print_main_menu { { text => 'Upload a class list', help => 'Course_Create_Class_List', action => 'upload', - permission => $enrl_permission, + permission => $permission->{'enrl'}, }, { text => 'Enroll a single student', help => 'Course_Add_Student', action => 'enrollstudent', - permission => $enrl_permission, + permission => $permission->{'enrl'}, }, { text => 'Modify student data', help => 'Course_Modify_Student_Data', action => 'modifystudent', - permission => $enrl_permission, + permission => $permission->{'enrl'}, }, { text => 'View Class List', help => 'Course_View_Class_List', action => 'classlist', - permission => $view_permission, + permission => $permission->{'view'}, }, { text => 'Drop Students', help => 'Course_Drop_Student', action => 'drop', - permission => $enrl_permission, + permission => $permission->{'enrl'}, }, { text => 'Automated Enrollment Manager', - permission => &Apache::lonnet::auto_run($cnum,$cdom), + permission => (&Apache::lonnet::auto_run($cnum,$cdom) + && $permission->{'enrl'}), url => '/adm/populate', }, { text => 'Create a new group', help => 'Course_Create_Group', - permission => $grp_manage_permission, + permission => $permission->{'grp_manage'}, url => '/adm/coursegroups?refpage=enrl&action=create', }, { text => 'Modify an existing group', help => 'Course_Modify_Group', - permission => $grp_manage_permission, + permission => $permission->{'grp_manage'}, url => '/adm/coursegroups?refpage=enrl&action=modify', }, { text => 'Delete an existing group', help => 'Course_Delete_Group', - permission => $grp_manage_permission, + permission => $permission->{'grp_manage'}, url => '/adm/coursegroups?refpage=enrl&action=delete', }, { text => 'Re-enable a deleted group', help => 'Course_Reenable_Group', - permission => $grp_manage_permission, + permission => $permission->{'grp_manage'}, url => '/adm/coursegroups?refpage=enrl&action=reenable', }, { text => 'Enter an existing group', help => 'Course_Display_Group', - permission => $grp_view_permission, + permission => $permission->{'grp_view'}, url => '/adm/coursegroups?refpage=enrl&action=view', }, ); @@ -752,8 +752,8 @@ sub enroll_single_student { } $r->print('

'.&mt('Enrolling Student').'

'); - $r->print('

'.&mt('Enrolling').' '.$env{'form.cuname'}." \@ ". - $env{'form.lcdomain'}.'

'); + $r->print('

'.&mt('Enrolling [_1] : [_2]',$env{'form.cuname'}, + $env{'form.lcdomain'}).'

'); if (($env{'form.cuname'}) && ($env{'form.cuname'} eq &LONCAPA::clean_username($env{'form.cuname'})) @@ -766,7 +766,7 @@ sub enroll_single_student { if (lc($desiredhost) eq 'default') { $desiredhost = undef; } else { - my %home_servers =&Apache::loncommon::get_library_servers($domain); + my %home_servers =&Apache::lonnet::get_servers($domain,'library'); if (! exists($home_servers{$desiredhost})) { $r->print(''.&mt('Error').':'. &mt('Invalid home server specified')); @@ -822,6 +822,7 @@ sub enroll_single_student { } else { $r->print(&mt('Invalid username or domain')); } + $r->print("

".&mt("Enroll another student")."

"); } sub setup_date_selectors { @@ -885,7 +886,8 @@ sub date_setting_table { my ($startform,$endform)=&setup_date_selectors($starttime,$endtime,$mode); my $dateDefault = ''. ''; + &mt('make these dates the default for future enrollment'). + ''; if ($mode eq 'create_enrolldates' || $mode eq 'create_defaultdates') { $dateDefault = ' '; } @@ -948,11 +950,11 @@ sub get_student_username_domain_form {

$lt{'eos'}

- + - + - + @@ -996,7 +998,7 @@ sub print_enroll_single_student_form { # # Set up domain selection form my $homeserver_form = ''; - my %servers = &Apache::loncommon::get_library_servers($domain); + my %servers = &Apache::lonnet::get_servers($domain,'library'); $homeserver_form = '
$lt{'usr'}:
:
$lt{'dom'}:
: $domform
 
 
- - - - - - - - - + + + + + + + + + - +
$lt{'fn'}:
$lt{'mn'}:
$lt{'ln'}:
$lt{'gen'}:
$lt{'hs'}:
:
:
:
:
: $homeserver_form
$lt{'mail'}:
:

$lt{'pswd'}

@@ -1058,29 +1060,19 @@ END 'mail' => "Email Address", ); $user_data_html = <$lt{'udf'} $username\@$domain +

$lt{'udf'} $username:$domain

- - - - - - - - - - + + + + + + + + + +
$lt{'fn'}: - -
$lt{'mn'}: - -
$lt{'ln'}: - -
$lt{'gen'}: - -
$lt{'mail'}: - -
:
:
:
:
:
END } @@ -1142,20 +1134,19 @@ $user_data_html

$lt{'cd'}

-

$lt{'gs'}: -

-$date_table +

:

+$date_table

$lt{'idsn'}

-$lt{'idsn'}: +:

- +

END return; @@ -1178,7 +1169,7 @@ sub print_drop_menu { # ============================================== view classlist sub print_html_classlist { - my ($r,$mode) = @_; + my ($r,$mode,$permission) = @_; if (! exists($env{'form.sortby'})) { $env{'form.sortby'} = 'username'; } @@ -1233,15 +1224,25 @@ sub print_html_classlist { $output_selector .= "\n".$option; } $output_selector .= ''; - $r->print(&mt('Output Format: [_1]',$output_selector).(' 'x3)); + $r->print(''.(' 'x3)); } - $r->print(&mt('Student Status: [_1]',$status_select)."\n"); + $r->print('\n"); $r->print(''. "\n

\n"); # # Print the classlist $r->print('

'.&mt('Current Class List').'

'); my ($classlist,$keylist)=&Apache::loncoursedata::get_classlist(); + + if (exists($permission->{'view_section'})) { + my $sec = &Apache::loncoursedata::CL_SECTION(); + foreach my $student (keys(%{$classlist})) { + if ($classlist->{$student}[$sec] ne $permission->{'view_section'}) { + delete($classlist->{$student}); + } + } + } + if (! defined($classlist)) { $r->print(&mt('There are no students currently enrolled.')."\n"); } else { @@ -1305,6 +1306,7 @@ END 'start' => "start date", 'end' => "end date", 'type' => "enroll type/action", + 'email' => "email address", 'photo' => "photo", ); unless ($mode eq 'autoenroll') { @@ -1357,6 +1359,8 @@ function photowindow(photolink) { $lt{'end'} $lt{'grp'} + + $lt{'email'} END if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) { @@ -1400,13 +1404,15 @@ END print $CSVfile '"'.join('","',map { &Apache::loncommon::csv_translate(&mt($_)) } ("username","domain","ID","student name", - "section","start date","end date","status","active groups")) + "section","start date","end date","status", + "active groups","email address")) .'"'."\n"; } else { print $CSVfile '"'.join('","',map { &Apache::loncommon::csv_translate(&mt($_)) } ("username","domain","ID","student name", - "section","start date","end date","active groups")).'"'."\n"; + "section","start date","end date", + "active groups","email address")).'"'."\n"; } } elsif ($mode eq 'excel') { # Create the excel spreadsheet @@ -1422,7 +1428,7 @@ END $excel_sheet->write($row++,0,["username","domain","ID", "student name","section", "start date","end date","status", - "active groups"], + "active groups","email address"], $format->{'bold'}); } # @@ -1461,10 +1467,21 @@ END my $name = $sdata->[$index{'fullname'}]; my $id = $sdata->[$index{'id'}]; my $status = $sdata->[$index{'status'}]; + next if (($statusmode ne 'Any') && ($status ne $statusmode)); my $start = $sdata->[$index{'start'}]; my $end = $sdata->[$index{'end'}]; my $type = $sdata->[$index{'type'}]; - next if (($statusmode ne 'Any') && ($status ne $statusmode)); + + my %emails = &Apache::loncommon::getemails($username,$domain); + my $email; + foreach my $type ('critnotification', 'permanentemail', + 'notification') { + if ($emails{$type} =~ /\S/) { + $email = $emails{$type}; + last; + } + } + if ($mode eq 'view' || $mode eq 'html' || $mode eq 'autoenroll') { if (! defined($start) || $start == 0) { $start = &mt('none'); @@ -1524,6 +1541,7 @@ END $start $end $active_groups + $email END if ($env{'course.'.$env{'request.course.id'}. '.internal.showphoto'}) { @@ -1560,6 +1578,7 @@ END push @line,&Apache::loncommon::csv_translate($status); } push @line,&Apache::loncommon::csv_translate($active_groups); + push @line,&Apache::loncommon::csv_translate($email); print $CSVfile '"'.join('","',@line).'"'."\n"; } elsif ($mode eq 'excel') { $excel_sheet->write($row,0,[$username,$domain,$id, @@ -1576,6 +1595,7 @@ END } $excel_sheet->write($row,$col++,$status); $excel_sheet->write($row,$col++,$active_groups); + $excel_sheet->write($row,$col++,$email); $row++; } } @@ -1697,7 +1717,7 @@ $lt{'odcc'}

$lt{'mef'} $info{'firstname'} $info{'middlename'} -$info{'lastname'} $info{'generation'}, $sname\@$sdom

+$info{'lastname'} $info{'generation'}, $sname:$sdom

$lt{'sn'} @@ -1709,14 +1729,14 @@ $info{'lastname'} $info{'generation'}, $

-$lt{'sid'}: +$lt{'sid'}:

-$lt{'sec'}: +$lt{'sec'}:

$current_date_description

$date_table

@@ -1758,7 +1778,7 @@ sub modify_single_student { $env{'request.course.id'}); my ($tmp) = keys(%old); if ($tmp =~ /^(con_lost|error|no_such_host)/i) { - $r->print(&mt('There was an error determining the environment values for')." $slogin \@ $sdom."); + $r->print(&mt('There was an error determining the environment values for')." $slogin : $sdom."); return; } undef $tmp; @@ -1798,7 +1818,7 @@ sub modify_single_student { 'et' => "End Time", ); $r->print(<$lt{'mdu'} $slogin \@ $sdom +

$lt{'mdu'} $slogin : $sdom

$lt{'si'}

@@ -1858,8 +1878,8 @@ END &mt('The error reported was')." ". $roleresults); &Apache::lonnet::logthis("londropadd:failed attempt to modify student". - " data for ".$slogin." \@ ".$sdom." by ". - $env{'user.name'}." \@ ".$env{'user.domain'}. + " data for ".$slogin." : ".$sdom." by ". + $env{'user.name'}." : ".$env{'user.domain'}. ":".$roleresults); } else { # everything is okay! $r->print(&mt('Student information updated successfully.')."
". @@ -2170,7 +2190,7 @@ sub upfile_drop_add { if (lc($desiredhost) eq 'default') { $desiredhost = undef; } else { - my %home_servers = &Apache::loncommon::get_library_servers($domain); + my %home_servers = &Apache::lonnet::get_servers($domain,'library'); if (! exists($home_servers{$desiredhost})) { $r->print(''.&mt('Error').''. &mt('Invalid home server specified')); @@ -2204,7 +2224,7 @@ sub upfile_drop_add { $amode = ''; # This causes the loop below to be skipped } } - if ( $domain eq &clean_domain($domain) + if ( $domain eq &LONCAPA::clean_domain($domain) && ($amode ne '')) { ####################################### ## Enroll Students ## @@ -2409,6 +2429,32 @@ function validate(caller) { END } +sub get_permission { + my %permission; + $permission{'view'} = + &Apache::lonnet::allowed('vcl',$env{'request.course.id'}); + if (!$permission{'view'}) { + my $scope = $env{'request.course.id'}.'/'.$env{'request.course.sec'}; + $permission{'view'} = &Apache::lonnet::allowed('vcl',$scope); + if ($permission{'view'}) { + $permission{'view_section'} = $env{'request.course.sec'}; + } + } + + $permission{'enrl'} = + &Apache::lonnet::allowed('cst',$env{'request.course.id'}); + + $permission{'grp_view'} = + &Apache::lonnet::allowed('vcg',$env{'request.course.id'}); + $permission{'grp_manage'} = + &Apache::lonnet::allowed('mdg',$env{'request.course.id'}); + my $allowed = 0; + foreach my $perm (values(%permission)) { + if ($perm) { $allowed=1; last; } + } + return (\%permission,$allowed); +} + ################################################################### ################################################################### @@ -2467,22 +2513,13 @@ sub handler { return HTTP_NOT_ACCEPTABLE; } # - my $view_permission = - &Apache::lonnet::allowed('vcl',$env{'request.course.id'}); - my $enrl_permission = - &Apache::lonnet::allowed('cst',$env{'request.course.id'}); - - my $grp_view_permission = - &Apache::lonnet::allowed('vcg',$env{'request.course.id'}); - my $grp_manage_permission = - &Apache::lonnet::allowed('mdg',$env{'request.course.id'}); + my ($permission,$allowed) = &get_permission(); - if (! $grp_view_permission && ! $grp_manage_permission && - ! $view_permission && ! $enrl_permission) { + if (!$allowed) { $env{'user.error.msg'}= - "/adm/coursegroups:cst:0:0:Cannot manage or view course groups, ". - "or drop or add students"; + "/adm/dropadd:cst:0:0:Cannot manage or view course groups, ". + "or drop or add students"; return HTTP_NOT_ACCEPTABLE; } @@ -2497,9 +2534,8 @@ sub handler { # Main switch on form.action and form.state, as appropriate if (! exists($env{'form.action'})) { $r->print(&Apache::lonhtmlcommon::breadcrumbs('Enrollment Manager')); - &print_main_menu($r,$enrl_permission,$view_permission,$grp_manage_permission, - $grp_view_permission); - } elsif ($env{'form.action'} eq 'upload' && $enrl_permission) { + my $action = &print_main_menu($r,$permission); + } elsif ($env{'form.action'} eq 'upload' && $permission->{'enrl'}) { &Apache::lonhtmlcommon::add_breadcrumb ({href=>'/adm/dropadd?action=upload&state=', text=>"Upload Classlist"}); @@ -2518,7 +2554,7 @@ sub handler { } else { &print_first_courselist_upload_form($r); } - } elsif ($env{'form.action'} eq 'drop' && $enrl_permission) { + } elsif ($env{'form.action'} eq 'drop' && $permission->{'enrl'}) { &Apache::lonhtmlcommon::add_breadcrumb ({href=>'/adm/dropadd?action=drop', text=>"Drop Students"}); @@ -2531,7 +2567,7 @@ sub handler { } else { &print_drop_menu($r); } - } elsif ($env{'form.action'} eq 'enrollstudent' && $enrl_permission) { + } elsif ($env{'form.action'} eq 'enrollstudent' && $permission->{'enrl'}) { &Apache::lonhtmlcommon::add_breadcrumb ({href=>'/adm/dropadd?action=enrollstudent', text=>"Enroll Student"}); @@ -2546,35 +2582,35 @@ sub handler { } else { &get_student_username_domain_form($r); } - } elsif ($env{'form.action'} eq 'classlist' && $view_permission) { + } elsif ($env{'form.action'} eq 'classlist' && $permission->{'view'}) { &Apache::lonhtmlcommon::add_breadcrumb ({href=>'/adm/dropadd?action=classlist', text=>"View Classlist"}); $r->print(&Apache::lonhtmlcommon::breadcrumbs('View Classlist', 'Course_View_Class_List')); if (! exists($env{'form.state'})) { - &print_html_classlist($r,undef); + &print_html_classlist($r,undef,$permission); } elsif ($env{'form.state'} eq 'csv') { - &print_html_classlist($r,'csv'); + &print_html_classlist($r,'csv',$permission); } elsif ($env{'form.state'} eq 'excel') { - &print_html_classlist($r,'excel'); + &print_html_classlist($r,'excel',$permission); } else { - &print_html_classlist($r,undef); + &print_html_classlist($r,undef,$permission); } - } elsif ($env{'form.action'} eq 'modifystudent' && $enrl_permission) { + } elsif ($env{'form.action'} eq 'modifystudent' && $permission->{'enrl'}) { &Apache::lonhtmlcommon::add_breadcrumb ({href=>'/adm/dropadd?action=modifystudent', text=>"Modify Student Data"}); $r->print(&Apache::lonhtmlcommon::breadcrumbs('Modify Student Data', 'Course_Modify_Student_Data')); if (! exists($env{'form.state'})) { - &print_html_classlist($r); + &print_html_classlist($r,undef,$permission); } elsif ($env{'form.state'} eq 'selected') { &print_modify_student_form($r); } elsif ($env{'form.state'} eq 'done') { &modify_single_student($r); } else { - &print_html_classlist($r); + &print_html_classlist($r,undef,$permission); } } else { # We should not end up here, but I guess it is possible @@ -2582,7 +2618,7 @@ sub handler { "form.action = ".$env{'form.action'}. "Someone should fix this."); $r->print(&Apache::lonhtmlcommon::breadcrumbs('Enrollment Manager')); - &print_main_menu($r,$enrl_permission,$view_permission); + &print_main_menu($r,$permission); } # # Finish up