--- loncom/interface/Attic/londropadd.pm 2004/07/19 17:58:10 1.116 +++ loncom/interface/Attic/londropadd.pm 2005/03/10 17:33:57 1.126 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to drop and add students in courses # -# $Id: londropadd.pm,v 1.116 2004/07/19 17:58:10 albertel Exp $ +# $Id: londropadd.pm,v 1.126 2005/03/10 17:33:57 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -43,10 +43,11 @@ use Apache::lonlocal; ############################################################### ############################################################### sub header { + my $html=&Apache::lonxml::xmlbegin(); my $bodytag=&Apache::loncommon::bodytag('Enrollment Manager'); my $title = &mt('LON-CAPA Enrollment Manager'); return(< +$html $title @@ -136,52 +137,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(< - -$Text{'upload'} -$help{'Course_Create_Class_List'} -

- - $Text{'enrollone'} - $help{'Course_Add_Student'} -

- - $Text{'modify'} - $help{'Course_Modify_Student_Data'} -

- - $Text{'view'} - $help{'Course_View_Class_List'} -

- - $Text{'drop'} - $help{'Course_Drop_Student'} -

-END + my ($r,$enrl_permission,$view_permission)=@_; + # my ($cdom,$cnum) = split/_/,$ENV{'request.course.id'}; - if (&Apache::lonnet::auto_run($cnum,$cdom) ) { - $r->print(< - $Text{'populate'} - -END + my @menu = + ( + { text => 'Upload 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.='

'; + $menu_html.=''; + if (exists($menu_item->{'url'})) { + $menu_html.=qq{}; + } else { + $menu_html.= + qq{}; + } + $menu_html.= &mt($menu_item->{'text'}).''; + if (exists($menu_item->{'help'})) { + $menu_html.= + &Apache::loncommon::help_open_topic($menu_item->{'help'}); + } + $menu_html.='

'.$/; } + $r->print($menu_html); + return; } ############################################################### @@ -309,7 +319,7 @@ END return; } // alert('current.radiovalue = '+current.radiovalue); - if (current.radiovalue == null || current.radiovalue == 'nochange') { + if (current.radiovalue == null || current.radiovalue == '' || current.radiovalue == 'nochange') { // They did not check any of the login radiobuttons. alert('$alert{'authen'}'); return; @@ -761,7 +771,7 @@ sub enroll_single_student { $ENV{'form.clast'},$ENV{'form.cgen'}, $ENV{'form.csec'},$enddate, $startdate,$ENV{'form.forceid'}, - $desiredhost); + $desiredhost,$ENV{'form.emailaddress'}); if ($login_result =~ /^ok/) { $r->print($login_result); $r->print("

".&mt('If active, the new role will be available when the student next logs in to LON-CAPA.')."

"); @@ -914,6 +924,10 @@ sub get_student_username_domain_form { + END return; } @@ -924,8 +938,8 @@ sub print_enroll_single_student_form { # my $username = $ENV{'form.cuname'}; my $domain = $ENV{'form.cudomain'}; - $username=~s/[\W|_]//gs; - $domain=~s/[\W|_]//gs; + $username=~s/\W//gs; + $domain=~s/\W//gs; my $home = &Apache::lonnet::homeserver($username,$domain); # $new_user flags whether we are creating a new user or using an old one my $new_user = 1; @@ -970,6 +984,7 @@ sub print_enroll_single_student_form { 'hs' => "Home Server", 'pswd' => "Password", 'psam' => "Please select an authentication mechanism", + 'mail' => "Email Address" ); $user_data_html = <$lt{'udf'} $username\@$domain @@ -984,6 +999,8 @@ sub print_enroll_single_student_form { $lt{'hs'}: $homeserver_form +$lt{'mail'}: +

$lt{'pswd'}

$lt{'psam'} @@ -1006,6 +1023,7 @@ END 'mn' => "Middle Name", 'ln' => "Last Name", 'gen' => "Generation", + 'mail' => "Email Address", ); $user_data_html = <$lt{'udf'} $username\@$domain @@ -1027,6 +1045,10 @@ END +$lt{'mail'}: + + + END } @@ -1304,14 +1326,9 @@ END } } elsif ($mode eq 'excel') { # Create the excel spreadsheet - $excel_filename = '/prtspool/'. - $ENV{'user.name'}.'_'.$ENV{'user.domain'}.'_'. - time.'_'.rand(1000000000).'.xls'; - $excel_workbook = Spreadsheet::WriteExcel->new('/home/httpd'. - $excel_filename); - $excel_workbook->set_tempdir('/home/httpd/perl/tmp'); - # - $format = &Apache::loncommon::define_excel_formats($excel_workbook); + ($excel_workbook,$excel_filename,$format) = + &Apache::loncommon::create_workbook($r); + return if (! defined($excel_workbook)); $excel_sheet = $excel_workbook->addworksheet('classlist'); # my $description = 'Class List for '. @@ -1377,7 +1394,7 @@ END $cellentry = ''.&mt('auto').'  Change'; $autocount ++; } else { - $cellentry = '
'.&mt('manual').' Change
'; + $cellentry = '
'.&mt('manual').' Change
'; $manualcount ++; if ($lockedtype) { $cellentry .= ' '.&mt('Unlock'); @@ -1386,7 +1403,7 @@ END $cellentry .= ' '.&mt('Lock'); $lockcount ++; } - $cellentry .= '
'; + $cellentry .= '
'; } $r->print("$cellentry\n "); } else { @@ -2264,14 +2281,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'}, @@ -2285,13 +2311,13 @@ 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"}); $r->print(&Apache::lonhtmlcommon::breadcrumbs - (undef,'Upload Classlist')); + (undef,'Upload Classlist','Course_Create_Class_List')); if (! exists($ENV{'form.state'})) { &print_first_courselist_upload_form($r); } elsif ($ENV{'form.state'} eq 'got_file') { @@ -2305,12 +2331,12 @@ 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"}); $r->print(&Apache::lonhtmlcommon::breadcrumbs - (undef,'Drop Students')); + (undef,'Drop Students','Course_Drop_Student')); if (! exists($ENV{'form.state'})) { &print_drop_menu($r); } elsif ($ENV{'form.state'} eq 'done') { @@ -2318,12 +2344,12 @@ 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"}); $r->print(&Apache::lonhtmlcommon::breadcrumbs - (undef,'Enroll Student')); + (undef,'Enroll Student','Course_Add_Student')); if (! exists($ENV{'form.state'})) { &get_student_username_domain_form($r); } elsif ($ENV{'form.state'} eq 'gotusername') { @@ -2333,12 +2359,12 @@ 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"}); $r->print(&Apache::lonhtmlcommon::breadcrumbs - (undef,'View Classlist')); + (undef,'View Classlist','Course_View_Class_List')); if (! exists($ENV{'form.state'})) { &print_html_classlist($r,undef); } elsif ($ENV{'form.state'} eq 'csv') { @@ -2348,12 +2374,12 @@ 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"}); $r->print(&Apache::lonhtmlcommon::breadcrumbs - (undef,'Modify Student Data')); + (undef,'Modify Student Data','Course_Modify_Student_Data')); if (! exists($ENV{'form.state'})) { &print_html_classlist($r); } elsif ($ENV{'form.state'} eq 'selected') { @@ -2370,7 +2396,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