--- loncom/interface/Attic/londropadd.pm 2007/07/17 21:24:17 1.163 +++ loncom/interface/Attic/londropadd.pm 2007/07/26 23:48:53 1.164 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to drop and add students in courses # -# $Id: londropadd.pm,v 1.163 2007/07/17 21:24:17 albertel Exp $ +# $Id: londropadd.pm,v 1.164 2007/07/26 23:48:53 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -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', }, ); @@ -1169,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,6 +1233,16 @@ sub print_html_classlist { # 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 { @@ -2419,6 +2429,36 @@ function validate(caller) { END } +sub get_permission { + my %permission; + $permission{'view'} = + &Apache::lonnet::allowed('vcl',$env{'request.course.id'}); + &Apache::lonnet::logthis(" vcl 1 ".$permission{'view'}); + if (!$permission{'view'}) { + my $scope = $env{'request.course.id'}.'/'.$env{'request.course.sec'}; + $permission{'view'} = &Apache::lonnet::allowed('vcl',$scope); + &Apache::lonnet::logthis(" vcl 2 ".$permission{'view'}); + if ($permission{'view'}) { + $permission{'view_section'} = $env{'request.course.sec'}; + &Apache::lonnet::logthis(" vcl 3 ".$permission{'view'}); + } + } + + $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; } + } + &Apache::lonnet::logthis(" allowed ".$allowed); + return (\%permission,$allowed); +} + ################################################################### ################################################################### @@ -2477,22 +2517,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; } @@ -2507,9 +2538,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"}); @@ -2528,7 +2558,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"}); @@ -2541,7 +2571,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"}); @@ -2556,35 +2586,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 @@ -2592,7 +2622,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