--- loncom/interface/Attic/londropadd.pm	2004/10/26 15:04:20	1.120
+++ loncom/interface/Attic/londropadd.pm	2004/11/12 16:34:15	1.121
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Handler to drop and add students in courses 
 #
-# $Id: londropadd.pm,v 1.120 2004/10/26 15:04:20 albertel Exp $
+# $Id: londropadd.pm,v 1.121 2004/11/12 16:34:15 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -136,52 +136,61 @@ sub domain_form {
 ###############################################################
 #  Menu Phase One
 sub print_main_menu {
-    my $r=shift;
-    my %Text = &Apache::lonlocal::texthash
-        ('upload'    => 'Upload a class list',
-         'enrollone' => 'Enroll a single student',
-         'modify'    => 'Modify student data',
-         'view'      => 'View Class List',
-         'drop'      => 'Drop Students',
-         'populate'  => 'Automated Enrollment Manager');
-    my %help=();
-    foreach ('Course_Drop_Student','Course_Add_Student',
-	     'Course_Modify_Student_Data','Course_View_Class_List',
-	     'Course_Create_Class_List') {
-	$help{$_}=&Apache::loncommon::help_open_topic($_);
-    }
-
-    $r->print(<<END);
-<p>
-<font size="+1">
-<a href="/adm/dropadd?action=upload">$Text{'upload'}</a>
-</font>$help{'Course_Create_Class_List'}
-</p><p>
-<font size="+1">
-    <a href="/adm/dropadd?action=enrollstudent">$Text{'enrollone'}</a>
-    </font>$help{'Course_Add_Student'}
-</p><p>
-<font size="+1">
-    <a href="/adm/dropadd?action=modifystudent">$Text{'modify'}</a>
-    </font>$help{'Course_Modify_Student_Data'}
-</p><p>
-<font size="+1">
-    <a href="/adm/dropadd?action=classlist">$Text{'view'}</a>
-    </font>$help{'Course_View_Class_List'}
-</p><p>
-<font size="+1">
-    <a href="/adm/dropadd?action=drop">$Text{'drop'}</a>
-    </font>$help{'Course_Drop_Student'}
-</p><p>
-END
+    my ($r,$enrl_permission,$view_permission)=@_;
+    #
     my ($cdom,$cnum) = split/_/,$ENV{'request.course.id'};
-    if (&Apache::lonnet::auto_run($cnum,$cdom) ) {
-        $r->print(<<END);
-<font size="+1">
-    <a href="/adm/populate">$Text{'populate'}</a>
-</font>
-END
+    my @menu = 
+        ( 
+          { text => 'Uploade a class list', 
+            help => 'Course_Create_Class_List',
+            action => 'upload',
+            permission => $enrl_permission,
+            },
+          { text => 'Enroll a single student', 
+            help => 'Course_Add_Student',
+            action => 'enrollstudent',
+            permission => $enrl_permission,
+            },
+          { text => 'Modify student data', 
+            help => 'Course_Modify_Student_Data',
+            action => 'modifystudent',
+            permission => $enrl_permission,
+            },
+          { text => 'View Class List', 
+            help => 'Course_View_Class_List',
+            action => 'classlist',
+            permission => $view_permission,
+            },
+          { text => 'Drop Students', 
+            help => 'Course_Drop_Student',
+            action => 'drop',
+            permission => $enrl_permission,
+            },
+          { text => 'Automated Enrollment Manager', 
+            permission => &Apache::lonnet::auto_run($cnum,$cdom),
+            url  => '/adm/populate',
+            },
+          );
+    my $menu_html = '';
+    foreach my $menu_item (@menu) {
+        next if (! $menu_item->{'permission'});
+        $menu_html.='<p>';
+        $menu_html.='<font size="+1">';
+        if (exists($menu_item->{'url'})) {
+            $menu_html.=qq{<a href="$menu_item->{'url'}">};
+        } else {
+            $menu_html.=
+                qq{<a href="/adm/dropadd?action=$menu_item->{'action'}">};
+        }
+        $menu_html.= &mt($menu_item->{'text'}).'</a></font>';
+        if (exists($menu_item->{'help'})) {
+            $menu_html.=
+                &Apache::loncommon::help_open_topic($menu_item->{'help'});
+        }
+        $menu_html.='</p>'.$/;
     }
+    $r->print($menu_html);
+    return;
 }
 
 ###############################################################
@@ -2268,14 +2277,23 @@ sub handler {
           text=>"Enrollment Manager",
           faq=>9,bug=>'Instructor Interface',});
     #  Needs to be in a course
-    if (! (($ENV{'request.course.fn'}) &&
-          (&Apache::lonnet::allowed('cst',$ENV{'request.course.id'})))) {
-        # Not in a course, or not allowed to modify parms
+    if (! ($ENV{'request.course.fn'})) {
+        # Not in a course
         $ENV{'user.error.msg'}=
             "/adm/dropadd:cst:0:0:Cannot drop or add students";
         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'});
+    if (! $view_permission && ! $enrl_permission) {
+        $ENV{'user.error.msg'}=
+            "/adm/dropadd:cst:0:0:Cannot drop or add students";
+        return HTTP_NOT_ACCEPTABLE;        
+    }
+    #
     # Only output the header information if they did not request csv format
     #
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
@@ -2289,8 +2307,8 @@ sub handler {
     if (! exists($ENV{'form.action'})) {
         $r->print(&Apache::lonhtmlcommon::breadcrumbs
                   (undef,'Enrollment Manager'));
-        &print_main_menu($r);
-    } elsif ($ENV{'form.action'} eq 'upload') {
+        &print_main_menu($r,$enrl_permission,$view_permission);
+    } elsif ($ENV{'form.action'} eq 'upload' && $enrl_permission) {
         &Apache::lonhtmlcommon::add_breadcrumb
             ({href=>'/adm/dropadd?action=upload&state=',
               text=>"Upload Classlist"});
@@ -2309,7 +2327,7 @@ sub handler {
         } else {
             &print_first_courselist_upload_form($r);            
         }
-    } elsif ($ENV{'form.action'} eq 'drop') {
+    } elsif ($ENV{'form.action'} eq 'drop' && $enrl_permission) {
         &Apache::lonhtmlcommon::add_breadcrumb
             ({href=>'/adm/dropadd?action=drop',
               text=>"Drop Students"});
@@ -2322,7 +2340,7 @@ sub handler {
         } else {
             &print_drop_menu($r);
         }
-    } elsif ($ENV{'form.action'} eq 'enrollstudent') {
+    } elsif ($ENV{'form.action'} eq 'enrollstudent' && $enrl_permission) {
         &Apache::lonhtmlcommon::add_breadcrumb
             ({href=>'/adm/dropadd?action=enrollstudent',
               text=>"Enroll Student"});
@@ -2337,7 +2355,7 @@ sub handler {
         } else {
             &get_student_username_domain_form($r);
         }
-    } elsif ($ENV{'form.action'} eq 'classlist') {
+    } elsif ($ENV{'form.action'} eq 'classlist' && $view_permission) {
         &Apache::lonhtmlcommon::add_breadcrumb
             ({href=>'/adm/dropadd?action=classlist',
               text=>"View Classlist"});
@@ -2352,7 +2370,7 @@ sub handler {
         } else {
             &print_html_classlist($r,undef);
         }
-    } elsif ($ENV{'form.action'} eq 'modifystudent') {
+    } elsif ($ENV{'form.action'} eq 'modifystudent' && $enrl_permission) {
         &Apache::lonhtmlcommon::add_breadcrumb
             ({href=>'/adm/dropadd?action=modifystudent',
               text=>"Modify Student Data"});
@@ -2374,7 +2392,7 @@ sub handler {
                                  "Someone should fix this.");
         $r->print(&Apache::lonhtmlcommon::breadcrumbs
                   (undef,'Enrollment Manager'));
-        &print_main_menu($r);
+        &print_main_menu($r,$enrl_permission,$view_permission);
     }
     #
     # Finish up