Diff for /loncom/interface/Attic/londropadd.pm between versions 1.97 and 1.116

version 1.97, 2003/12/28 01:30:50 version 1.116, 2004/07/19 17:58:10
Line 37  use Apache::loncommon(); Line 37  use Apache::loncommon();
 use Apache::lonhtmlcommon();  use Apache::lonhtmlcommon();
 use Apache::Constants qw(:common :http REDIRECT);  use Apache::Constants qw(:common :http REDIRECT);
 use Spreadsheet::WriteExcel;  use Spreadsheet::WriteExcel;
   use Apache::lonstathelpers();
 use Apache::lonlocal;  use Apache::lonlocal;
   
 ###############################################################  ###############################################################
Line 143  sub print_main_menu { Line 144  sub print_main_menu {
          'view'      => 'View Class List',           'view'      => 'View Class List',
          'drop'      => 'Drop Students',           'drop'      => 'Drop Students',
          'populate'  => 'Automated Enrollment Manager');           '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);      $r->print(<<END);
 <p>  <p>
 <font size="+1">  <font size="+1">
     <a href="/adm/dropadd?action=upload">$Text{'upload'}</a>  <a href="/adm/dropadd?action=upload">$Text{'upload'}</a>
 </font>  </font>$help{'Course_Create_Class_List'}
 </p><p>  </p><p>
 <font size="+1">  <font size="+1">
     <a href="/adm/dropadd?action=enrollstudent">$Text{'enrollone'}</a>      <a href="/adm/dropadd?action=enrollstudent">$Text{'enrollone'}</a>
 </font>      </font>$help{'Course_Add_Student'}
 </p><p>  </p><p>
 <font size="+1">  <font size="+1">
     <a href="/adm/dropadd?action=modifystudent">$Text{'modify'}</a>      <a href="/adm/dropadd?action=modifystudent">$Text{'modify'}</a>
 </font>      </font>$help{'Course_Modify_Student_Data'}
 </p><p>  </p><p>
 <font size="+1">  <font size="+1">
     <a href="/adm/dropadd?action=classlist">$Text{'view'}</a>      <a href="/adm/dropadd?action=classlist">$Text{'view'}</a>
 </font>      </font>$help{'Course_View_Class_List'}
 </p><p>  </p><p>
 <font size="+1">  <font size="+1">
     <a href="/adm/dropadd?action=drop">$Text{'drop'}</a>      <a href="/adm/dropadd?action=drop">$Text{'drop'}</a>
 </font>      </font>$help{'Course_Drop_Student'}
 </p><p>  </p><p>
   END
       my ($cdom,$cnum) = split/_/,$ENV{'request.course.id'};
       if (&Apache::lonnet::auto_run($cnum,$cdom) ) {
           $r->print(<<END);
 <font size="+1">  <font size="+1">
     <a href="/adm/populate">$Text{'populate'}</a>      <a href="/adm/populate">$Text{'populate'}</a>
 </font>  </font>
 END  END
       }
 }  }
   
 ###############################################################  ###############################################################
Line 182  sub hidden_input { Line 194  sub hidden_input {
 sub print_upload_manager_header {  sub print_upload_manager_header {
     my ($r,$datatoken,$distotal,$krbdefdom)=@_;      my ($r,$datatoken,$distotal,$krbdefdom)=@_;
     my $javascript;      my $javascript;
       #
     if (! exists($ENV{'form.upfile_associate'})) {      if (! exists($ENV{'form.upfile_associate'})) {
         $ENV{'form.upfile_associate'} = 'forward';          $ENV{'form.upfile_associate'} = 'forward';
     }      }
Line 197  sub print_upload_manager_header { Line 210  sub print_upload_manager_header {
     } else {      } else {
  $javascript=&upload_manager_javascript_forward_associate();   $javascript=&upload_manager_javascript_forward_associate();
     }      }
     my $javascript_validations=&javascript_validations('auth',$krbdefdom);      #
       # Deal with restored settings
       my $password_choice = '';
       if (exists($ENV{'form.ipwd_choice'}) &&
           $ENV{'form.ipwd_choice'} ne '') {
           # If a column was specified for password, assume it is for an
           # internal password.  This is a bug waiting to be filed (could be
           # local or krb auth instead of internal) but I do not have the 
           # time to mess around with this now.
           $password_choice = 'int';        
       }
       #
       my $javascript_validations=&javascript_validations('auth',$krbdefdom,
                                       $password_choice);
     my $checked=(($ENV{'form.noFirstLine'})?' checked="1"':'');      my $checked=(($ENV{'form.noFirstLine'})?' checked="1"':'');
     $r->print('<h3>'.&mt('Uploading Class List')."</h3>\n".      $r->print('<h3>'.&mt('Uploading Class List')."</h3>\n".
               "<hr>\n".                "<hr>\n".
Line 231  sub javascript_validations { Line 257  sub javascript_validations {
     my $authheader;      my $authheader;
     if ($mode eq 'auth') {      if ($mode eq 'auth') {
         my %param = ( formname => 'studentform',          my %param = ( formname => 'studentform',
                       kerb_def_dom => $krbdefdom );                        kerb_def_dom => $krbdefdom,
                         curr_authtype => $curr_authtype);
         $authheader = &Apache::loncommon::authform_header(%param);          $authheader = &Apache::loncommon::authform_header(%param);
     } elsif ($mode eq 'createcourse') {      } elsif ($mode eq 'createcourse') {
         my %param = ( formname => 'ccrs',          my %param = ( formname => 'ccrs',
                   kerb_def_dom => $krbdefdom );                    kerb_def_dom => $krbdefdom,
                         curr_authtype => $curr_authtype );
         $authheader = &Apache::loncommon::authform_header(%param);          $authheader = &Apache::loncommon::authform_header(%param);
     } elsif ($mode eq 'modifycourse') {      } elsif ($mode eq 'modifycourse') {
         my %param = ( formname => 'cmod',          my %param = ( formname => 'cmod',
Line 553  sub print_upload_manager_footer { Line 581  sub print_upload_manager_footer {
                   kerb_def_dom => $krbdefdom,                    kerb_def_dom => $krbdefdom,
                   kerb_def_auth => $krbdef                    kerb_def_auth => $krbdef
                   );                    );
       if (exists($ENV{'form.ipwd_choice'}) &&
           defined($ENV{'form.ipwd_choice'}) &&
           $ENV{'form.ipwd_choice'} ne '') {
           $param{'curr_authtype'} = 'int';
       }
     my $krbform = &Apache::loncommon::authform_kerberos(%param);      my $krbform = &Apache::loncommon::authform_kerberos(%param);
     my $intform = &Apache::loncommon::authform_internal(%param);      my $intform = &Apache::loncommon::authform_internal(%param);
     my $locform = &Apache::loncommon::authform_local(%param);      my $locform = &Apache::loncommon::authform_local(%param);
Line 593  sub print_upload_manager_footer { Line 626  sub print_upload_manager_footer {
 ###############################################################  ###############################################################
 sub print_upload_manager_form {  sub print_upload_manager_form {
     my $r=shift;      my $r=shift;
   
     my $firstLine;      my $firstLine;
     my $datatoken;      my $datatoken;
     if (!$ENV{'form.datatoken'}) {      if (!$ENV{'form.datatoken'}) {
Line 609  sub print_upload_manager_form { Line 643  sub print_upload_manager_form {
     my $distotal=$total+1;      my $distotal=$total+1;
     my $today=time;      my $today=time;
     my $halfyear=$today+15552000;      my $halfyear=$today+15552000;
       #
       # Restore memorized settings
       &Apache::loncommon::restore_course_settings
           ('enrollment_upload',{ 'username_choice' => 'scalar', # column settings
                                  'names_choice' => 'scalar',
                                  'fname_choice' => 'scalar',
                                  'mname_choice' => 'scalar',
                                  'lname_choice' => 'scalar',
                                  'gen_choice' => 'scalar',
                                  'id_choice' => 'scalar',
                                  'sec_choice' => 'scalar',
                                  'ipwd_choice' => 'scalar',
                                  'email_choice' => 'scalar',
                              });
       #
       # Determine kerberos parameters as appropriate
     my $defdom=$ENV{'course.'.$ENV{'request.course.id'}.'.domain'};      my $defdom=$ENV{'course.'.$ENV{'request.course.id'}.'.domain'};
     my ($krbdef,$krbdefdom) =      my ($krbdef,$krbdefdom) =
         &Apache::loncommon::get_kerberos_defaults($defdom);          &Apache::loncommon::get_kerberos_defaults($defdom);
       #
     &print_upload_manager_header($r,$datatoken,$distotal,$krbdefdom);      &print_upload_manager_header($r,$datatoken,$distotal,$krbdefdom);
     my $i;      my $i;
     my $keyfields;      my $keyfields;
     if ($total>=0) {      if ($total>=0) {
         my @field=(['username',&mt('Username')],          my @field=
                    ['names',&mt('Last Name, First Names')],              (['username',&mt('Username'),     $ENV{'form.username_choice'}],
                    ['fname',&mt('First Name')],               ['names',&mt('Last Name, First Names'),$ENV{'form.names_choice'}],
                    ['mname',&mt('Middle Names/Initials')],               ['fname',&mt('First Name'),      $ENV{'form.fname_choice'}],
                    ['lname',&mt('Last Name')],               ['mname',&mt('Middle Names/Initials'),$ENV{'form.mname_choice'}],
                    ['gen',&mt('Generation')],               ['lname',&mt('Last Name'),       $ENV{'form.lname_choice'}],
                    ['id',&mt('ID/Student Number')],               ['gen',  &mt('Generation'),      $ENV{'form.gen_choice'}],
                    ['sec',&mt('Group/Section')],               ['id',   &mt('ID/Student Number'),$ENV{'form.id_choice'}],
                    ['ipwd',&mt('Initial Password')],               ['sec',  &mt('Group/Section'),   $ENV{'form.sec_choice'}],
                    ['email',&mt('EMail Address')]);               ['ipwd', &mt('Initial Password'),$ENV{'form.ipwd_choice'}],
                ['email',&mt('EMail Address'),   $ENV{'form.email_choice'}]);
  if ($ENV{'form.upfile_associate'} eq 'reverse') {   if ($ENV{'form.upfile_associate'} eq 'reverse') {
     &Apache::loncommon::csv_print_samples($r,\@records);      &Apache::loncommon::csv_print_samples($r,\@records);
     $i=&Apache::loncommon::csv_print_select_table($r,\@records,      $i=&Apache::loncommon::csv_print_select_table($r,\@records,
Line 653  sub enroll_single_student { Line 705  sub enroll_single_student {
     $ENV{'form.csec'}=~s/\W//g;      $ENV{'form.csec'}=~s/\W//g;
     #      #
     # We do the dates first because the action of making them the defaul      # We do the dates first because the action of making them the defaul
     # in the course is entirely seperate from the action of enrolling the      # 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      # student.  Also, a failure in setting the dates as default is not fatal
     # to the process of enrolling / modifying a student.      # to the process of enrolling / modifying a student.
     my ($startdate,$enddate) = &get_dates_from_form();      my ($startdate,$enddate) = &get_dates_from_form();
Line 734  sub setup_date_selectors { Line 786  sub setup_date_selectors {
     my ($starttime,$endtime,$mode) = @_;      my ($starttime,$endtime,$mode) = @_;
     if (! defined($starttime)) {      if (! defined($starttime)) {
         $starttime = time;          $starttime = time;
         unless ($mode eq 'createcourse') {          unless ($mode eq 'create_enrolldates' || $mode eq 'create_defaultdates') {
             if (exists($ENV{'course.'.$ENV{'request.course.id'}.              if (exists($ENV{'course.'.$ENV{'request.course.id'}.
                             '.default_enrollment_start_date'})) {                              '.default_enrollment_start_date'})) {
                 $starttime = $ENV{'course.'.$ENV{'request.course.id'}.                  $starttime = $ENV{'course.'.$ENV{'request.course.id'}.
Line 758  sub setup_date_selectors { Line 810  sub setup_date_selectors {
     my $enddateform = &Apache::lonhtmlcommon::date_setter('studentform',      my $enddateform = &Apache::lonhtmlcommon::date_setter('studentform',
                                                           'enddate',                                                            'enddate',
                                                           $endtime);                                                            $endtime);
     if ($mode eq 'createcourse') {      if ($mode eq 'create_enrolldates') {
         $startdateform = &Apache::lonhtmlcommon::date_setter('ccrs',          $startdateform = &Apache::lonhtmlcommon::date_setter('ccrs',
                                                             'startdate',                                                              'startenroll',
                                                             $starttime);                                                              $starttime);
         $enddateform = &Apache::lonhtmlcommon::date_setter('ccrs',          $enddateform = &Apache::lonhtmlcommon::date_setter('ccrs',
                                                           'enddate',                                                            'endenroll',
                                                             $endtime);
       }
       if ($mode eq 'create_defaultdates') {
           $startdateform = &Apache::lonhtmlcommon::date_setter('ccrs',
                                                               'startaccess',
                                                               $starttime);
           $enddateform = &Apache::lonhtmlcommon::date_setter('ccrs',
                                                             'endaccess',
                                                           $endtime);                                                            $endtime);
     }      }
     return ($startdateform,$enddateform);      return ($startdateform,$enddateform);
Line 784  sub date_setting_table { Line 844  sub date_setting_table {
     my $dateDefault = '<nobr>'.      my $dateDefault = '<nobr>'.
         '<input type="checkbox" name="makedatesdefault" /> '.          '<input type="checkbox" name="makedatesdefault" /> '.
         &mt('make these dates the default for future enrollment');          &mt('make these dates the default for future enrollment');
     if ($mode eq 'createcourse') {      if ($mode eq 'create_enrolldates' || $mode eq 'create_defaultdates') {
         $dateDefault = '&nbsp;';          $dateDefault = '&nbsp;';
     }      }
     my $perpetual = '<nobr><input type="checkbox" name="no_end_date"';      my $perpetual = '<nobr><input type="checkbox" name="no_end_date"';
Line 792  sub date_setting_table { Line 852  sub date_setting_table {
         $perpetual .= ' checked';          $perpetual .= ' checked';
     }      }
     $perpetual.= ' /> '.&mt('no ending date').'</nobr>';      $perpetual.= ' /> '.&mt('no ending date').'</nobr>';
       if ($mode eq 'create_enrolldates') {
           $perpetual = '&nbsp;';
       }
     my $result = '';      my $result = '';
     $result .= "<table>\n";      $result .= "<table>\n";
     $result .= '<tr><td align="right">'.&mt('Starting Date').'</td>'.      $result .= '<tr><td align="right">'.&mt('Starting Date').'</td>'.
Line 861  sub print_enroll_single_student_form { Line 924  sub print_enroll_single_student_form {
     #      #
     my $username = $ENV{'form.cuname'};      my $username = $ENV{'form.cuname'};
     my $domain   = $ENV{'form.cudomain'};      my $domain   = $ENV{'form.cudomain'};
       $username=~s/[\W|_]//gs;
       $domain=~s/[\W|_]//gs;
     my $home = &Apache::lonnet::homeserver($username,$domain);      my $home = &Apache::lonnet::homeserver($username,$domain);
     # $new_user flags whether we are creating a new user or using an old one      # $new_user flags whether we are creating a new user or using an old one
     my $new_user = 1;      my $new_user = 1;
Line 1054  sub print_drop_menu { Line 1119  sub print_drop_menu {
   
 # ============================================== view classlist  # ============================================== view classlist
 sub print_html_classlist {  sub print_html_classlist {
     my $r=shift;      my ($r,$mode) = @_;
     if (! exists($ENV{'form.sortby'})) {      if (! exists($ENV{'form.sortby'})) {
         $ENV{'form.sortby'} = 'username';          $ENV{'form.sortby'} = 'username';
     }      }
Line 1062  sub print_html_classlist { Line 1127  sub print_html_classlist {
         $ENV{'form.Status'} = 'Active';          $ENV{'form.Status'} = 'Active';
     }      }
     my $status_select = &Apache::lonhtmlcommon::StatusOptions      my $status_select = &Apache::lonhtmlcommon::StatusOptions
         ($ENV{'form.Status'},'studentform');          ($ENV{'form.Status'});
     my $CCL=&mt('Current Class List');      my $cid=$ENV{'request.course.id'};
     $r->print(<<END);      my $cdom=$ENV{'course.'.$cid.'.domain'};
 <input type="hidden" name="action" value="$ENV{'form.action'}" />      my $cnum=$ENV{'course.'.$cid.'.num'};
 <input type="hidden" name="state"  value="" />      #
 <p>      # List course personnel
 <font size="+1">$CCL</font>      my %coursepersonnel=&Apache::lonnet::get_course_adv_roles($cdom.'/'.$cnum);
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      #
 END      if (! defined($ENV{'form.output'}) ||
           $ENV{'form.output'} !~ /^(csv|excel|html)$/ ) {
           $ENV{'form.output'} = 'html';
       }
       #
       $r->print('<br /><table border="2">');
       foreach my $role (sort keys %coursepersonnel) {
           next if ($role =~ /^\s*$/);
    $r->print('<tr><td>'.$role.'</td><td>');
           foreach my $user (split(',',$coursepersonnel{$role})) {
       my ($puname,$pudom)=split(':',$user);
       $r->print(' '.&Apache::loncommon::aboutmewrapper(
                                       &Apache::loncommon::plainname($puname,
                                                                     $pudom),
                                                                $puname,$pudom));
    }
           $r->print('</td></tr>');
       }
       $r->print('</table>');
       #
       # Interface output
       $r->print('<input type="hidden" name="action" value="'.
                 $ENV{'form.action'}.'" />');
       $r->print("<p>\n");
     if ($ENV{'form.action'} ne 'modifystudent') {      if ($ENV{'form.action'} ne 'modifystudent') {
  my %lt=&Apache::lonlocal::texthash(   my %lt=&Apache::lonlocal::texthash('csv' => "CSV",
    'ef'   => "Excel format",                                             'excel' => "Excel",
                    'ss'   => "Student Status",                                             'html'  => 'HTML');
    );          my $output_selector = '<select size="1" name="output" >';
         $r->print(<<END);          foreach my $outputformat ('html','csv','excel') {
 <font size="+1">              my $option = '<option value="'.$outputformat.'" ';
 <a href="javascript:document.studentform.state.value='csv';document.studentform.submit();">CSV format</a>              if ($outputformat eq $ENV{'form.output'}) {
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                  $option .= 'selected ';
 <a href="javascript:document.studentform.state.value='excel';document.studentform.submit();">$lt{'ef'}</a>              }
 </font>              $option .='>'.$lt{$outputformat}.'</option>';
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;              $output_selector .= "\n".$option;
 $lt{'ss'}:          }
 END          $output_selector .= '</select>';
           $r->print(&mt('Output Format: [_1]',$output_selector).('&nbsp;'x3));
     }      }
     $r->print($status_select."</p>\n");      $r->print(&mt('Student Status: [_1]',$status_select)."\n");
     my $cid=$ENV{'request.course.id'};      $r->print('<input type="submit" value="'.&mt('Update Display').'" />'.
                 "\n</p>\n");
       #
       # Print the classlist
       $r->print('<h2>'.&mt('Current Class List').'</h2>');
     my ($classlist,$keylist)=&Apache::loncoursedata::get_classlist();      my ($classlist,$keylist)=&Apache::loncoursedata::get_classlist();
     if (! defined($classlist)) {      if (! defined($classlist)) {
         $r->print(&mt('There are no students currently enrolled.')."\n");          $r->print(&mt('There are no students currently enrolled.')."\n");
     } else {      } else {
         # Print out the available choices          # Print out the available choices
         if ($ENV{'form.action'} eq 'modifystudent') {          if ($ENV{'form.action'} eq 'modifystudent') {
             &show_class_list($r,'view','modify','modifystudent',              &show_class_list($r,'view','modify',
                              $ENV{'form.Status'},$classlist,$keylist);                               $ENV{'form.Status'},$classlist,$keylist);
         } else {          } else {
             &show_class_list($r,'view','aboutme','classlist',              &show_class_list($r,$ENV{'form.output'},'aboutme',
                              $ENV{'form.Status'},$classlist,$keylist);                               $ENV{'form.Status'},$classlist,$keylist);
         }          }
     }      }
 }  }
   
 # ============================================== view classlist  
 sub print_formatted_classlist {  
     my $r=shift;  
     my $mode = shift;  
     my $cid=$ENV{'request.course.id'};  
     my ($classlist,$keylist)=&Apache::loncoursedata::get_classlist();  
     if (! defined($classlist)) {  
         $r->print(&mt('There are no students currently enrolled.')."\n");  
     } else {  
         &show_class_list($r,$mode,'nolink','csv',  
                          $ENV{'form.Status'},$classlist,$keylist);  
     }  
 }  
   
 # =================================================== Show student list to drop  # =================================================== Show student list to drop
 sub show_class_list {  sub show_class_list {
     my ($r,$mode,$linkto,$action,$statusmode,$classlist,$keylist)=@_;      my ($r,$mode,$linkto,$statusmode,$classlist,$keylist)=@_;
     my $cid=$ENV{'request.course.id'};      my $cid=$ENV{'request.course.id'};
     #      #
     # Variables for excel output      # Variables for excel output
     my ($excel_workbook, $excel_sheet, $excel_filename,$row);      my ($excel_workbook, $excel_sheet, $excel_filename,$row,$format);
       #
       # Variables for csv output
       my ($CSVfile,$CSVfilename);
     #      #
     my $sortby = $ENV{'form.sortby'};      my $sortby = $ENV{'form.sortby'};
     if ($sortby !~ /^(username|domain|section|fullname|id)$/) {      if ($sortby !~ /^(username|domain|section|fullname|id|start|end|type)$/) {
         $sortby = 'username';          $sortby = 'username';
     }      }
     # Print out header       # Print out header 
     if ($mode eq 'view') {      unless ($mode eq 'autoenroll') {
           $r->print(<<END);
   <input type="hidden" name="state" value="$ENV{'form.state'}" />
   END
       }
       $r->print(<<END);
   <input type="hidden" name="sortby" value="$sortby" />
   END
       if ($mode eq 'html' || $mode eq 'view' || $mode eq 'autoenroll') {
         if ($linkto eq 'aboutme') {          if ($linkto eq 'aboutme') {
             $r->print(&mt('Select a user name to view the users personal page.'));              $r->print(&mt('Select a user name to view the users personal page.'));
         } elsif ($linkto eq 'modify') {          } elsif ($linkto eq 'modify') {
             $r->print(&mt('Select a user name to modify the students information'));              $r->print(&mt('Select a user name to modify the students information'));
         }          }
  my %lt=&Apache::lonlocal::texthash(   my %lt=&Apache::lonlocal::texthash(
                'usrn'   => "username",                                             'usrn'   => "username",
                        'dom'    => "domain",                                             'dom'    => "domain",
                        'sn'     => "student name",                                             'sn'     => "student name",
                        'sec'    => "section",                                             'sec'    => "section",
                                              'start'  => "start date",
                                              'end'    => "end date",
                                              'type'   => "enroll type/action"
    );     );
         $r->print(<<END);          unless ($mode eq 'autoenroll') {
               $r->print(<<END);
 <input type="hidden" name="sortby" value="$sortby" />  
 <input type="hidden" name="sname"  value="" />  <input type="hidden" name="sname"  value="" />
 <input type="hidden" name="sdom"   value="" />  <input type="hidden" name="sdom"   value="" />
   END
           }
           $r->print("
 <p>  <p>
 <table border=2>  <table border=2>
 <tr><th>  <tr>
           ");
           if ($mode eq 'autoenroll') {
               $r->print("
    <th><a href=\"javascript:document.studentform.sortby.value='type';document.studentform.submit();\">$lt{'type'}</a></th>
               ");
           } else {
               $r->print("
   <th>Count</th>
               ");
           }
           $r->print(<<END);
       <th>
        <a href="javascript:document.studentform.sortby.value='username';document.studentform.submit();">$lt{'usrn'}</a>         <a href="javascript:document.studentform.sortby.value='username';document.studentform.submit();">$lt{'usrn'}</a>
     </th><th>      </th><th>
        <a href="javascript:document.studentform.sortby.value='domain';document.studentform.submit();">$lt{'dom'}</a>         <a href="javascript:document.studentform.sortby.value='domain';document.studentform.submit();">$lt{'dom'}</a>
Line 1159  sub show_class_list { Line 1266  sub show_class_list {
        <a href="javascript:document.studentform.sortby.value='fullname';document.studentform.submit();">$lt{'sn'}</a>         <a href="javascript:document.studentform.sortby.value='fullname';document.studentform.submit();">$lt{'sn'}</a>
     </th><th>      </th><th>
        <a href="javascript:document.studentform.sortby.value='section';document.studentform.submit();">$lt{'sec'}</a>         <a href="javascript:document.studentform.sortby.value='section';document.studentform.submit();">$lt{'sec'}</a>
       </th><th>
          <a href="javascript:document.studentform.sortby.value='start';document.studentform.submit();">$lt{'start'}</a>
       </th><th>
          <a href="javascript:document.studentform.sortby.value='end';document.studentform.submit();">$lt{'end'}</a>
     </th>      </th>
 </tr>    </tr>
 END  END
     } elsif ($mode eq 'csv') {      } elsif ($mode eq 'csv') {
    #
    # Open a file
    $CSVfilename = '/prtspool/'.
       $ENV{'user.name'}.'_'.$ENV{'user.domain'}.'_'.
               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.");
       $CSVfile = undef;
    }
    #
    # Write headers and data to file
         if($statusmode eq 'Expired') {          if($statusmode eq 'Expired') {
             $r->print(&mt('Students with expired roles'));              print $CSVfile '"'.&mt('Students with expired roles').'"'."\n";
         }          }
         if ($statusmode eq 'Any') {          if ($statusmode eq 'Any') {
             $r->print('"'.join('","',(&mt("username"),&mt("domain"),"ID",              print $CSVfile '"'.join('","',map {
                       &mt("student name"),&mt("section"),&mt("status"))).   &Apache::loncommon::csv_translate(&mt($_))
                       '"'."\n");                  } ("username","domain","ID","student name",
                      "section","start date","end date","status")).'"'."\n";
         } else {          } else {
             $r->print('"'.join('","',(&mt("username"),&mt("domain"),"ID",              print $CSVfile '"'.join('","',map {
                       &mt("student name"),&mt("section"))).'"'."\n");   &Apache::loncommon::csv_translate(&mt($_))
                   } ("username","domain","ID","student name",
                      "section","start date","end date")).'"'."\n";
         }          }
     } elsif ($mode eq 'excel') {      } elsif ($mode eq 'excel') {
         # Create the excel spreadsheet          # Create the excel spreadsheet
Line 1182  END Line 1310  END
         $excel_workbook = Spreadsheet::WriteExcel->new('/home/httpd'.          $excel_workbook = Spreadsheet::WriteExcel->new('/home/httpd'.
                                                        $excel_filename);                                                         $excel_filename);
         $excel_workbook->set_tempdir('/home/httpd/perl/tmp');          $excel_workbook->set_tempdir('/home/httpd/perl/tmp');
           #
           $format = &Apache::loncommon::define_excel_formats($excel_workbook);
         $excel_sheet = $excel_workbook->addworksheet('classlist');          $excel_sheet = $excel_workbook->addworksheet('classlist');
         #          #
         my $description = 'Class List for '.          my $description = 'Class List for '.
             $ENV{'course.'.$ENV{'request.course.id'}.'.description'};              $ENV{'course.'.$ENV{'request.course.id'}.'.description'};
         $excel_sheet->write($row++,0,$description);          $excel_sheet->write($row++,0,$description,$format->{'h1'});
         #          #
         $excel_sheet->write($row++,0,["username","domain","ID",          $excel_sheet->write($row++,0,["username","domain","ID",
                                       "student name","section","status"]);                                        "student name","section",
                                         "start date","end date","status"],
                               $format->{'bold'});
     }      }
     #      #
     # Sort the students      # Sort the students
Line 1208  END Line 1340  END
             ||              ||
         lc($classlist->{$a}->[$third]) cmp lc($classlist->{$b}->[$third])          lc($classlist->{$a}->[$third]) cmp lc($classlist->{$b}->[$third])
         } (keys(%$classlist));          } (keys(%$classlist));
       my $studentcount = 0;
       my $autocount = 0;
       my $manualcount = 0;
       my $unlockcount = 0;
       my $lockcount = 0;
     foreach my $student (@Sorted_Students) {      foreach my $student (@Sorted_Students) {
         my $username = $classlist->{$student}->[$index{'username'}];          my $sdata = $classlist->{$student};
         my $domain   = $classlist->{$student}->[$index{'domain'}];          my $username = $sdata->[$index{'username'}];
         my $section  = $classlist->{$student}->[$index{'section'}];          my $domain   = $sdata->[$index{'domain'}];
         my $name     = $classlist->{$student}->[$index{'fullname'}];          my $section  = $sdata->[$index{'section'}];
         my $id       = $classlist->{$student}->[$index{'id'}];          my $name     = $sdata->[$index{'fullname'}];
         my $status   = $classlist->{$student}->[$index{'status'}];          my $id       = $sdata->[$index{'id'}];
           my $status   = $sdata->[$index{'status'}];
           my $start    = $sdata->[$index{'start'}];
           my $end      = $sdata->[$index{'end'}];
           my $type     = $sdata->[$index{'type'}];
         next if (($statusmode ne 'Any') && ($status ne $statusmode));          next if (($statusmode ne 'Any') && ($status ne $statusmode));
         if ($mode eq 'view') {          if ($mode eq 'view' || $mode eq 'html' || $mode eq 'autoenroll') {
             $r->print("<tr>\n    <td>\n        ");              if (! defined($start) || $start == 0) {
                   $start = &mt('none');
               } else {
                   $start = &Apache::lonlocal::locallocaltime($start);
               }
               if (! defined($end) || $end == 0) {
                   $end = &mt('none');
               } else {
                   $end = &Apache::lonlocal::locallocaltime($end);
               }
               $r->print("<tr>\n    ");
               if ($mode eq 'autoenroll') {
                   my $lockedtype = $sdata->[$index{'lockedtype'}];
                   $studentcount++;
                   my $cellentry;
                   if ($type eq 'auto') {
                       $cellentry = '<b>'.&mt('auto').'</b>&nbsp;<input type="checkbox" name="chgauto" value="'.$username.':'.$domain.'" />&nbsp;Change';
                       $autocount ++;
                   } else {
                       $cellentry = '<table border="0" cellspacing="0"><tr><td rowspan="2"><b>'.&mt('manual').'</b></td><td><input type="checkbox" name="chgmanual" value="'.$username.':'.$domain.'" />&nbsp;Change</td></tr><tr><td>';
                       $manualcount ++;
                       if ($lockedtype) {
                           $cellentry .= '<input type="checkbox" name="unlockchg" value="'.$username.':'.$domain.'" />&nbsp;'.&mt('Unlock');
                           $unlockcount ++;
                       } else {
                           $cellentry .= '<input type="checkbox" name="lockchg" value="'.$username.':'.$domain.'" />&nbsp;'.&mt('Lock');
                           $lockcount ++;
                       }
                       $cellentry .= '</td></tr></table>';
                   }
                   $r->print("<td>$cellentry<td>\n    ");
               } else {
                   $r->print("<td>".(++$studentcount)."</td><td>\n    ");
               }
             if ($linkto eq 'nothing') {              if ($linkto eq 'nothing') {
                 $r->print($username);                  $r->print($username);
             } elsif ($linkto eq 'aboutme') {              } elsif ($linkto eq 'aboutme') {
Line 1239  END Line 1413  END
     <td>$id</td>      <td>$id</td>
     <td>$name</td>      <td>$name</td>
     <td>$section</td>      <td>$section</td>
 </tr>      <td>$start</td>
       <td>$end</td>
      </tr>
 END  END
         } elsif ($mode eq 'csv') {          } elsif ($mode eq 'csv') {
               next if (! defined($CSVfile));
             # no need to bother with $linkto              # no need to bother with $linkto
               if (! defined($start) || $start == 0) {
                   $start = &mt('none');
               } else {
                   $start = &Apache::lonlocal::locallocaltime($start);
               }
               if (! defined($end) || $end == 0) {
                   $end = &mt('none');
               } else {
                   $end = &Apache::lonlocal::locallocaltime($end);
               }
             my @line = ();              my @line = ();
             foreach ($username,$domain,$id,$name,$section) {              foreach ($username,$domain,$id,$name,$section,$start,$end) {
                 push @line,&Apache::loncommon::csv_translate($_);                  push @line,&Apache::loncommon::csv_translate($_);
             }              }
             if ($statusmode eq 'Any') {              if ($statusmode eq 'Any') {
                 push @line,&Apache::loncommon::csv_translate($status);                  push @line,&Apache::loncommon::csv_translate($status);
             }              }
             my $tmp = $";              print $CSVfile '"'.join('","',@line).'"'."\n";
             $" = '","';  
             $r->print("\"@line\"\n");  
             $" = $tmp;  
         } elsif ($mode eq 'excel') {          } elsif ($mode eq 'excel') {
             $excel_sheet->write($row++,0,[$username,$domain,$id,              $excel_sheet->write($row,0,[$username,$domain,$id,
                                           $name,$section,$status]);                                            $name,$section]);
               my $col = 5;
               foreach my $time ($start,$end) {
                   $excel_sheet->write($row,$col++,
                                      &Apache::lonstathelpers::calc_serial($time),
                                       $format->{'date'});
               }
               $excel_sheet->write($row,$col++,$status);
               $row++;
         }          }
     }      }
     if ($mode eq 'view') {      if ($mode eq 'view' || $mode eq 'html' || $mode eq 'autoenroll') {
         $r->print('</table><br>');          $r->print('</table><br>');
     } elsif ($mode eq 'excel') {      } elsif ($mode eq 'excel') {
         $excel_workbook->close();          $excel_workbook->close();
         $r->print('<p><a href="'.$excel_filename.'">'.          $r->print('<p><a href="'.$excel_filename.'">'.
                   &mt('Your Excel spreadsheet').'</a> '.&mt('is ready for download').'.</p>'."\n");                    &mt('Your Excel spreadsheet').'</a> '.&mt('is ready for download').'.</p>'."\n");
       } elsif ($mode eq 'csv') {
           close($CSVfile);
           $r->print('<a href="'.$CSVfilename.'">'.
                     &mt('Your CSV file').'</a> is ready for download.'.
                     "\n");
           $r->rflush();
     }      }
       if ($mode eq 'autoenroll') {
           return ($studentcount,$autocount,$manualcount,$lockcount,$unlockcount);
       }
       return;
 }  }
   
   
Line 1300  sub print_modify_student_form { Line 1502  sub print_modify_student_form {
         $r->print('<p>'.$starttime.'</p>');          $r->print('<p>'.$starttime.'</p>');
         return;          return;
     }      }
       #
     # Deal with date forms      # Deal with date forms
       my $current_date_description = '';
       my $textdate = '';
   
       if (! defined($starttime) || $starttime == 0) {
           $current_date_description = &mt('Current Starting Date: not set').
               '<br />';
       } else {
           $current_date_description = 
               &mt('Current Starting Date: [_1]',
                   &Apache::lonlocal::locallocaltime($starttime)).'<br />';
       }
       if (! defined($endtime) || $endtime == 0) {
           $current_date_description.= &mt('Current Ending Date: not set').
               '<br />';
       } else {
           $current_date_description.= 
               &mt('Current Ending Date: [_1]',
                   &Apache::lonlocal::locallocaltime($endtime)).'<br />';
   
       }
     my $date_table = &date_setting_table($starttime,$endtime);      my $date_table = &date_setting_table($starttime,$endtime);
     #      #
     if (! exists($ENV{'form.Status'}) ||       if (! exists($ENV{'form.Status'}) || 
Line 1333  $lt{'odcc'} Line 1556  $lt{'odcc'}
 <input type="hidden" name="state"   value="done" />  <input type="hidden" name="state"   value="done" />
 <input type="hidden" name="sortby"  value="$sortby" />  <input type="hidden" name="sortby"  value="$sortby" />
 <input type="hidden" name="Status"  value="$ENV{'form.Status'}" />  <input type="hidden" name="Status"  value="$ENV{'form.Status'}" />
   
 <h2>$lt{'mef'} $info{'firstname'} $info{'middlename'}   <h2>$lt{'mef'} $info{'firstname'} $info{'middlename'} 
 $info{'lastname'} $info{'generation'}, $sname\@$sdom</h2>  $info{'lastname'} $info{'generation'}, $sname\@$sdom</h2>
 <p>  <p>
Line 1352  $info{'lastname'} $info{'generation'}, $ Line 1574  $info{'lastname'} $info{'generation'}, $
 <input type="checkbox" name="forceid" >   <input type="checkbox" name="forceid" > 
 $lt{'disn'}  $lt{'disn'}
 </p><p>  </p><p>
 <b>$lt{'sec'}</b>: <input type="text" name="section" value="$section" size="4"/>  <b>$lt{'sec'}</b>: <input type="text" name="section" value="$section" size="14"/>
 </p>  </p>
   <p>$current_date_description</p>
 <p>$date_table</p>  <p>$date_table</p>
 <input type="submit" value="$lt{'sm'}" />  <input type="submit" value="$lt{'sm'}" />
 </body></html>  </body></html>
Line 1579  sub show_drop_list { Line 1802  sub show_drop_list {
                                                 ['sortby']);                                                  ['sortby']);
     }      }
     my $sortby = $ENV{'form.sortby'};      my $sortby = $ENV{'form.sortby'};
     if ($sortby !~ /^(username|domain|section|fullname|id)$/) {      if ($sortby !~ /^(username|domain|section|fullname|id|start|end)$/) {
         $sortby = 'username';          $sortby = 'username';
     }      }
     #      #
Line 1603  function uncheckAll(field) { Line 1826  function uncheckAll(field) {
 <input type="hidden" name="phase" value="four">  <input type="hidden" name="phase" value="four">
 END  END
   
   my %lt=&Apache::lonlocal::texthash('usrn'   => "username",
                                      'dom'    => "domain",
                                      'sn'     => "student name",
                                      'sec'    => "section",
                                      'start'  => "start date",
                                      'end'    => "end date",
                                      );
     if ($nosort) {      if ($nosort) {
  my %lt=&Apache::lonlocal::texthash(  
                'usrn'   => "username",  
                        'dom'    => "domain",  
                        'sn'     => "student name",  
                        'sec'    => "section",  
    );  
         $r->print(<<END);          $r->print(<<END);
 <table border=2>  <table border=2>
 <tr>  <tr>
Line 1619  END Line 1843  END
     <th>ID</th>      <th>ID</th>
     <th>$lt{'sn'}</th>      <th>$lt{'sn'}</th>
     <th>$lt{'sec'}</th>      <th>$lt{'sec'}</th>
       <th>$lt{'start'}</th>
       <th>$lt{'end'}</th>
 </tr>  </tr>
 END  END
   
     } else  {      } else  {
  my %lt=&Apache::lonlocal::texthash(  
                'usrn'   => "username",  
                        'dom'    => "domain",  
                        'sn'     => "student name",  
                        'sec'    => "section",  
    );  
         $r->print(<<END);          $r->print(<<END);
 <table border=2>  <table border=2>
 <tr><th>&nbsp;</th>  <tr><th>&nbsp;</th>
Line 1642  END Line 1862  END
        <a href="/adm/dropadd?action=$action&sortby=fullname">$lt{'sn'}</a>         <a href="/adm/dropadd?action=$action&sortby=fullname">$lt{'sn'}</a>
     </th><th>      </th><th>
        <a href="/adm/dropadd?action=$action&sortby=section">$lt{'sec'}</a>         <a href="/adm/dropadd?action=$action&sortby=section">$lt{'sec'}</a>
       </th><th>
          <a href="/adm/dropadd?action=$action&sortby=start">$lt{'start'}</a>
       </th><th>
          <a href="/adm/dropadd?action=$action&sortby=end">$lt{'end'}</a>
     </th>      </th>
 </tr>  </tr>
 END  END
Line 1665  END Line 1889  END
         } (keys(%$classlist));          } (keys(%$classlist));
     foreach my $student (@Sorted_Students) {      foreach my $student (@Sorted_Students) {
         my $error;          my $error;
         my $username = $classlist->{$student}->[$index{'username'}];          my $sdata = $classlist->{$student};
         my $domain   = $classlist->{$student}->[$index{'domain'}];          my $username = $sdata->[$index{'username'}];
         my $section  = $classlist->{$student}->[$index{'section'}];          my $domain   = $sdata->[$index{'domain'}];
         my $name     = $classlist->{$student}->[$index{'fullname'}];          my $section  = $sdata->[$index{'section'}];
         my $id       = $classlist->{$student}->[$index{'id'}];          my $name     = $sdata->[$index{'fullname'}];
         my $status   = $classlist->{$student}->[$index{'status'}];          my $id       = $sdata->[$index{'id'}];
           my $start    = $sdata->[$index{'start'}];
           my $end      = $sdata->[$index{'end'}];
           if (! defined($start) || $start == 0) {
               $start = &mt('none');
           } else {
               $start = &Apache::lonlocal::locallocaltime($start);
           }
           if (! defined($end) || $end == 0) {
               $end = &mt('none');
           } else {
               $end = &Apache::lonlocal::locallocaltime($end);
           }
           my $status   = $sdata->[$index{'status'}];
         next if ($status ne 'Active');          next if ($status ne 'Active');
         #          #
         $r->print(<<"END");          $r->print(<<"END");
Line 1681  END Line 1918  END
     <td>$id</td>      <td>$id</td>
     <td>$name</td>      <td>$name</td>
     <td>$section</td>      <td>$section</td>
       <td>$start</td>
       <td>$end</td>
 </tr>  </tr>
 END  END
     }      }
     $r->print('</table><br>');      $r->print('</table><br>');
     my %lt=&Apache::lonlocal::texthash(      %lt=&Apache::lonlocal::texthash(
                'dp'   => "Drop Students",                 'dp'   => "Drop Students",
                        'ca'   => "check all",                         'ca'   => "check all",
                        'ua'   => "uncheck all",                         'ua'   => "uncheck all",
Line 1745  sub upfile_drop_add { Line 1984  sub upfile_drop_add {
         }          }
     }      }
     #      #
       # Store the field choices away
       foreach my $field (qw/username names 
                          fname mname lname gen id sec ipwd email/) {
           $ENV{'form.'.$field.'_choice'}=$fields{$field};
       }
       &Apache::loncommon::store_course_settings('enrollment_upload',
                                                 { 'username_choice' => 'scalar',
                                                   'names_choice' => 'scalar',
                                                   'fname_choice' => 'scalar',
                                                   'mname_choice' => 'scalar',
                                                   'lname_choice' => 'scalar',
                                                   'gen_choice' => 'scalar',
                                                   'id_choice' => 'scalar',
                                                   'sec_choice' => 'scalar',
                                                   'ipwd_choice' => 'scalar',
                                                   'email_choice' => 'scalar' });
   
       #
     my ($startdate,$enddate) = &get_dates_from_form();      my ($startdate,$enddate) = &get_dates_from_form();
     if ($ENV{'form.makedatesdefault'}) {      if ($ENV{'form.makedatesdefault'}) {
         $r->print(&make_dates_default($startdate,$enddate));          $r->print(&make_dates_default($startdate,$enddate));
Line 2000  sub handler { Line 2257  sub handler {
     }      }
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
                                             ['action','state']);                                              ['action','state']);
   
       &Apache::lonhtmlcommon::clear_breadcrumbs();
       &Apache::lonhtmlcommon::add_breadcrumb
           ({href=>"/adm/dropadd",
             text=>"Enrollment Manager",
             faq=>9,bug=>'Instructor Interface',});
     #  Needs to be in a course      #  Needs to be in a course
     if (! (($ENV{'request.course.fn'}) &&      if (! (($ENV{'request.course.fn'}) &&
           (&Apache::lonnet::allowed('cst',$ENV{'request.course.id'})))) {            (&Apache::lonnet::allowed('cst',$ENV{'request.course.id'})))) {
Line 2011  sub handler { Line 2274  sub handler {
     #      #
     # Only output the header information if they did not request csv format      # Only output the header information if they did not request csv format
     #      #
     if (exists($ENV{'form.state'}) && ($ENV{'form.state'} eq 'csv')) {      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
         $r->content_type('text/csv');                                              ['state','action']);
     } else {      # Start page
         # Start page      &Apache::loncommon::content_type($r,'text/html');
         &Apache::loncommon::content_type($r,'text/html');      $r->send_http_header;
         $r->send_http_header;      $r->print(&header());
         $r->print(&header());  
     }  
     #      #
     # Main switch on form.action and form.state, as appropriate      # Main switch on form.action and form.state, as appropriate
     if (! exists($ENV{'form.action'})) {      if (! exists($ENV{'form.action'})) {
           $r->print(&Apache::lonhtmlcommon::breadcrumbs
                     (undef,'Enrollment Manager'));
         &print_main_menu($r);          &print_main_menu($r);
     } elsif ($ENV{'form.action'} eq 'upload') {      } elsif ($ENV{'form.action'} eq 'upload') {
           &Apache::lonhtmlcommon::add_breadcrumb
               ({href=>'/adm/dropadd?action=upload&state=',
                 text=>"Upload Classlist"});
           $r->print(&Apache::lonhtmlcommon::breadcrumbs
                     (undef,'Upload Classlist'));
         if (! exists($ENV{'form.state'})) {          if (! exists($ENV{'form.state'})) {
             &print_first_courselist_upload_form($r);                          &print_first_courselist_upload_form($r);            
         } elsif ($ENV{'form.state'} eq 'got_file') {          } elsif ($ENV{'form.state'} eq 'got_file') {
Line 2038  sub handler { Line 2306  sub handler {
             &print_first_courselist_upload_form($r);                          &print_first_courselist_upload_form($r);            
         }          }
     } elsif ($ENV{'form.action'} eq 'drop') {      } elsif ($ENV{'form.action'} eq 'drop') {
           &Apache::lonhtmlcommon::add_breadcrumb
               ({href=>'/adm/dropadd?action=drop',
                 text=>"Drop Students"});
           $r->print(&Apache::lonhtmlcommon::breadcrumbs
                     (undef,'Drop Students'));
         if (! exists($ENV{'form.state'})) {          if (! exists($ENV{'form.state'})) {
             &print_drop_menu($r);              &print_drop_menu($r);
         } elsif ($ENV{'form.state'} eq 'done') {          } elsif ($ENV{'form.state'} eq 'done') {
Line 2046  sub handler { Line 2319  sub handler {
             &print_drop_menu($r);              &print_drop_menu($r);
         }          }
     } elsif ($ENV{'form.action'} eq 'enrollstudent') {      } elsif ($ENV{'form.action'} eq 'enrollstudent') {
           &Apache::lonhtmlcommon::add_breadcrumb
               ({href=>'/adm/dropadd?action=enrollstudent',
                 text=>"Enroll Student"});
           $r->print(&Apache::lonhtmlcommon::breadcrumbs
                     (undef,'Enroll Student'));
         if (! exists($ENV{'form.state'})) {          if (! exists($ENV{'form.state'})) {
             &get_student_username_domain_form($r);              &get_student_username_domain_form($r);
         } elsif ($ENV{'form.state'} eq 'gotusername') {          } elsif ($ENV{'form.state'} eq 'gotusername') {
Line 2056  sub handler { Line 2334  sub handler {
             &get_student_username_domain_form($r);              &get_student_username_domain_form($r);
         }          }
     } elsif ($ENV{'form.action'} eq 'classlist') {      } elsif ($ENV{'form.action'} eq 'classlist') {
           &Apache::lonhtmlcommon::add_breadcrumb
               ({href=>'/adm/dropadd?action=classlist',
                 text=>"View Classlist"});
           $r->print(&Apache::lonhtmlcommon::breadcrumbs
                     (undef,'View Classlist'));
         if (! exists($ENV{'form.state'})) {          if (! exists($ENV{'form.state'})) {
             &print_html_classlist($r);              &print_html_classlist($r,undef);
         } elsif ($ENV{'form.state'} eq 'csv') {          } elsif ($ENV{'form.state'} eq 'csv') {
             &print_formatted_classlist($r,'csv');              &print_html_classlist($r,'csv');
         } elsif ($ENV{'form.state'} eq 'excel') {          } elsif ($ENV{'form.state'} eq 'excel') {
             &print_formatted_classlist($r,'excel');              &print_html_classlist($r,'excel');
         } else {          } else {
             &print_html_classlist($r);              &print_html_classlist($r,undef);
         }          }
     } elsif ($ENV{'form.action'} eq 'modifystudent') {      } elsif ($ENV{'form.action'} eq 'modifystudent') {
           &Apache::lonhtmlcommon::add_breadcrumb
               ({href=>'/adm/dropadd?action=modifystudent',
                 text=>"Modify Student Data"});
           $r->print(&Apache::lonhtmlcommon::breadcrumbs
                     (undef,'Modify Student Data'));
         if (! exists($ENV{'form.state'})) {          if (! exists($ENV{'form.state'})) {
             &print_html_classlist($r);              &print_html_classlist($r);
         } elsif ($ENV{'form.state'} eq 'selected') {          } elsif ($ENV{'form.state'} eq 'selected') {
Line 2080  sub handler { Line 2368  sub handler {
         &Apache::lonnet::logthis("Undetermined state in londropadd.pm.  ".          &Apache::lonnet::logthis("Undetermined state in londropadd.pm.  ".
                                  "form.action = ".$ENV{'form.action'}.                                   "form.action = ".$ENV{'form.action'}.
                                  "Someone should fix this.");                                   "Someone should fix this.");
           $r->print(&Apache::lonhtmlcommon::breadcrumbs
                     (undef,'Enrollment Manager'));
         &print_main_menu($r);          &print_main_menu($r);
     }      }
     #      #
     # Finish up      # Finish up
     if (exists($ENV{'form.state'}) && ($ENV{'form.state'} eq 'csv')) {      $r->print('</form></body></html>');
         $r->print("\n");  
     } else {  
         $r->print('</form></body></html>');  
     }  
     return OK;      return OK;
 }  }
   

Removed from v.1.97  
changed lines
  Added in v.1.116


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>