Diff for /loncom/interface/Attic/londropadd.pm between versions 1.104 and 1.121

version 1.104, 2004/02/27 14:59:19 version 1.121, 2004/11/12 16:34:15
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 135  sub domain_form { Line 136  sub domain_form {
 ###############################################################  ###############################################################
 #  Menu Phase One  #  Menu Phase One
 sub print_main_menu {  sub print_main_menu {
     my $r=shift;      my ($r,$enrl_permission,$view_permission)=@_;
     my %Text = &Apache::lonlocal::texthash      #
         ('upload'    => 'Upload a class list',      my ($cdom,$cnum) = split/_/,$ENV{'request.course.id'};
          'enrollone' => 'Enroll a single student',      my @menu = 
          'modify'    => 'Modify student data',          ( 
          'view'      => 'View Class List',            { text => 'Uploade a class list', 
          'drop'      => 'Drop Students',              help => 'Course_Create_Class_List',
          'populate'  => 'Automated Enrollment Manager');              action => 'upload',
     my %help=();              permission => $enrl_permission,
     foreach ('Course_Drop_Student','Course_Add_Student',              },
      'Course_Modify_Student_Data','Course_View_Class_List',            { text => 'Enroll a single student', 
      'Course_Create_Class_List') {              help => 'Course_Add_Student',
  $help{$_}=&Apache::loncommon::help_open_topic($_);              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);
     $r->print(<<END);      return;
 <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>  
 <font size="+1">  
     <a href="/adm/populate">$Text{'populate'}</a>  
 </font>  
 END  
 }  }
   
 ###############################################################  ###############################################################
Line 303  END Line 318  END
         return;          return;
     }      }
     // alert('current.radiovalue = '+current.radiovalue);      // 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.          // They did not check any of the login radiobuttons.
         alert('$alert{'authen'}');          alert('$alert{'authen'}');
         return;          return;
Line 699  sub enroll_single_student { Line 714  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 780  sub setup_date_selectors { Line 795  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 804  sub setup_date_selectors { Line 819  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 830  sub date_setting_table { Line 853  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 838  sub date_setting_table { Line 861  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 897  sub get_student_username_domain_form { Line 923  sub get_student_username_domain_form {
     <input type="submit" name="Begin Enrollment" value="$lt{'been'}" />      <input type="submit" name="Begin Enrollment" value="$lt{'been'}" />
     </td></tr>      </td></tr>
 </table>  </table>
   <script type="text/javascript">
   // the if prevents the script error if the browser can not handle this
   if ( document.studentform.cuname ) { document.studentform.cuname.focus(); }
   </script>
 END  END
     return;      return;
 }  }
Line 907  sub print_enroll_single_student_form { Line 937  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 1115  sub print_html_classlist { Line 1147  sub print_html_classlist {
     #      #
     # List course personnel      # List course personnel
     my %coursepersonnel=&Apache::lonnet::get_course_adv_roles($cdom.'/'.$cnum);      my %coursepersonnel=&Apache::lonnet::get_course_adv_roles($cdom.'/'.$cnum);
       #
       if (! defined($ENV{'form.output'}) ||
           $ENV{'form.output'} !~ /^(csv|excel|html)$/ ) {
           $ENV{'form.output'} = 'html';
       }
       #
     $r->print('<br /><table border="2">');      $r->print('<br /><table border="2">');
     foreach (sort keys %coursepersonnel) {      foreach my $role (sort keys %coursepersonnel) {
  $r->print('<tr><td>'.$_.'</td><td>');          next if ($role =~ /^\s*$/);
         foreach (split(/\,/,$coursepersonnel{$_})) {   $r->print('<tr><td>'.$role.'</td><td>');
     my ($puname,$pudom)=split(/\:/,$_);          foreach my $user (split(',',$coursepersonnel{$role})) {
       my ($puname,$pudom)=split(':',$user);
     $r->print(' '.&Apache::loncommon::aboutmewrapper(      $r->print(' '.&Apache::loncommon::aboutmewrapper(
                           &Apache::loncommon::plainname($puname,                                      &Apache::loncommon::plainname($puname,
                           $pudom),$puname,$pudom));                                                                    $pudom),
                                                                $puname,$pudom));
  }   }
         $r->print('</td></tr>');          $r->print('</td></tr>');
     }      }
     $r->print('</table>');      $r->print('</table>');
     #      #
     # Interface output      # Interface output
     my $CCL=&mt('Current Class List');  
     $r->print('<input type="hidden" name="action" value="'.      $r->print('<input type="hidden" name="action" value="'.
               $ENV{'form.action'}.'" />');                $ENV{'form.action'}.'" />');
     $r->print("<p>\n");      $r->print("<p>\n");
Line 1137  sub print_html_classlist { Line 1176  sub print_html_classlist {
  my %lt=&Apache::lonlocal::texthash('csv' => "CSV",   my %lt=&Apache::lonlocal::texthash('csv' => "CSV",
                                            'excel' => "Excel",                                             'excel' => "Excel",
                                            'html'  => 'HTML');                                             'html'  => 'HTML');
         $r->print('<font size="+1">');          my $output_selector = '<select size="1" name="output" >';
         my $output_selector = '<select size="1" name="state" >';  
         if ($ENV{'form.state'} !~ /^(csv|excel|html)$/ ) {  
             $ENV{'form.state'} = 'html';  
         }  
         foreach my $outputformat ('html','csv','excel') {          foreach my $outputformat ('html','csv','excel') {
             my $option = '<option value="'.$outputformat.'" ';              my $option = '<option value="'.$outputformat.'" ';
             if ($outputformat eq $ENV{'form.state'}) {              if ($outputformat eq $ENV{'form.output'}) {
                 $option .= 'selected ';                  $option .= 'selected ';
             }              }
             $option .='>'.$lt{$outputformat}.'</option>';              $option .='>'.$lt{$outputformat}.'</option>';
Line 1154  sub print_html_classlist { Line 1189  sub print_html_classlist {
         $r->print(&mt('Output Format: [_1]',$output_selector).('&nbsp;'x3));          $r->print(&mt('Output Format: [_1]',$output_selector).('&nbsp;'x3));
     }      }
     $r->print(&mt('Student Status: [_1]',$status_select)."\n");      $r->print(&mt('Student Status: [_1]',$status_select)."\n");
     $r->print('<input type="submit" value="'.&mt('Refresh Display').'" />'."\n</p>\n");      $r->print('<input type="submit" value="'.&mt('Update Display').'" />'.
                 "\n</p>\n");
     #      #
     # Print the classlist      # Print the classlist
     $r->print('<h2>'.&mt('Current Class List').'</h2>');      $r->print('<h2>'.&mt('Current Class List').'</h2>');
Line 1165  sub print_html_classlist { Line 1200  sub print_html_classlist {
     } 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);  
         } elsif (! defined($mode) || $mode eq '') {  
             &show_class_list($r,'view','aboutme','classlist',  
                              $ENV{'form.Status'},$classlist,$keylist);                               $ENV{'form.Status'},$classlist,$keylist);
         } elsif ($mode eq 'csv' || $mode eq 'excel') {          } else {
             &show_class_list($r,$mode,'nolink','csv',              &show_class_list($r,$ENV{'form.output'},'aboutme',
                              $ENV{'form.Status'},$classlist,$keylist);                               $ENV{'form.Status'},$classlist,$keylist);
         }          }
     }      }
Line 1179  sub print_html_classlist { Line 1211  sub print_html_classlist {
   
 # =================================================== 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
Line 1189  sub show_class_list { Line 1221  sub show_class_list {
     my ($CSVfile,$CSVfilename);      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 
       unless ($mode eq 'autoenroll') {
           $r->print(<<END);
   <input type="hidden" name="state" value="$ENV{'form.state'}" />
   END
       }
     $r->print(<<END);      $r->print(<<END);
 <input type="hidden" name="sortby" value="$sortby" />  <input type="hidden" name="sortby" value="$sortby" />
 <input type="hidden" name="sname"  value="" />  
 <input type="hidden" name="sdom"   value="" />  
 END  END
     if ($mode eq 'view') {      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 1227  END Line 1279  END
        <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') {
  #   #
Line 1252  END Line 1308  END
             print $CSVfile '"'.join('","',map {              print $CSVfile '"'.join('","',map {
  &Apache::loncommon::csv_translate(&mt($_))   &Apache::loncommon::csv_translate(&mt($_))
                 } ("username","domain","ID","student name",                  } ("username","domain","ID","student name",
                    "section","status")).'"'."\n";                     "section","start date","end date","status")).'"'."\n";
         } else {          } else {
             print $CSVfile '"'.join('","',map {              print $CSVfile '"'.join('","',map {
  &Apache::loncommon::csv_translate(&mt($_))   &Apache::loncommon::csv_translate(&mt($_))
                 } ("username","domain","ID","student name",                  } ("username","domain","ID","student name",
                    "section")).'"'."\n";                     "section","start date","end date")).'"'."\n";
         }          }
     } elsif ($mode eq 'excel') {      } elsif ($mode eq 'excel') {
         # Create the excel spreadsheet          # Create the excel spreadsheet
Line 1276  END Line 1332  END
         $excel_sheet->write($row++,0,$description,$format->{'h1'});          $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"],$format->{'bold'});                                        "student name","section",
                                         "start date","end date","status"],
                               $format->{'bold'});
     }      }
     #      #
     # Sort the students      # Sort the students
Line 1295  END Line 1353  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><nobr><input type="checkbox" name="chgmanual" value="'.$username.':'.$domain.'" />&nbsp;Change</nobr></td></tr><tr><td><nobr>';
                       $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 .= '</nobr></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 1326  END Line 1426  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));              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') {
Line 1340  END Line 1452  END
             }              }
             print $CSVfile '"'.join('","',@line).'"'."\n";              print $CSVfile '"'.join('","',@line).'"'."\n";
         } 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();
Line 1357  END Line 1477  END
                   "\n");                    "\n");
         $r->rflush();          $r->rflush();
     }      }
       if ($mode eq 'autoenroll') {
           return ($studentcount,$autocount,$manualcount,$lockcount,$unlockcount);
       }
       return;
 }  }
   
   
Line 1691  sub show_drop_list { Line 1815  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 1715  function uncheckAll(field) { Line 1839  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 1731  END Line 1856  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 1754  END Line 1875  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 1777  END Line 1902  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 1793  END Line 1931  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 2137  sub handler { Line 2277  sub handler {
           text=>"Enrollment Manager",            text=>"Enrollment Manager",
           faq=>9,bug=>'Instructor Interface',});            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'})))) {          # Not in a course
         # Not in a course, or not allowed to modify parms  
         $ENV{'user.error.msg'}=          $ENV{'user.error.msg'}=
             "/adm/dropadd:cst:0:0:Cannot drop or add students";              "/adm/dropadd:cst:0:0:Cannot drop or add students";
         return HTTP_NOT_ACCEPTABLE;           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      # Only output the header information if they did not request csv format
     #      #
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
Line 2158  sub handler { Line 2307  sub handler {
     if (! exists($ENV{'form.action'})) {      if (! exists($ENV{'form.action'})) {
         $r->print(&Apache::lonhtmlcommon::breadcrumbs          $r->print(&Apache::lonhtmlcommon::breadcrumbs
                   (undef,'Enrollment Manager'));                    (undef,'Enrollment Manager'));
         &print_main_menu($r);          &print_main_menu($r,$enrl_permission,$view_permission);
     } elsif ($ENV{'form.action'} eq 'upload') {      } elsif ($ENV{'form.action'} eq 'upload' && $enrl_permission) {
         &Apache::lonhtmlcommon::add_breadcrumb          &Apache::lonhtmlcommon::add_breadcrumb
             ({href=>'/adm/dropadd?action=upload&state=',              ({href=>'/adm/dropadd?action=upload&state=',
               text=>"Upload Classlist",                text=>"Upload Classlist"});
               faq=>9,bug=>'Instructor Interface',});  
         $r->print(&Apache::lonhtmlcommon::breadcrumbs          $r->print(&Apache::lonhtmlcommon::breadcrumbs
                   (undef,'Upload Classlist'));                    (undef,'Upload Classlist','Course_Create_Class_List'));
         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 2179  sub handler { Line 2327  sub handler {
         } else {          } else {
             &print_first_courselist_upload_form($r);                          &print_first_courselist_upload_form($r);            
         }          }
     } elsif ($ENV{'form.action'} eq 'drop') {      } elsif ($ENV{'form.action'} eq 'drop' && $enrl_permission) {
         &Apache::lonhtmlcommon::add_breadcrumb          &Apache::lonhtmlcommon::add_breadcrumb
             ({href=>'/adm/dropadd?action=drop',              ({href=>'/adm/dropadd?action=drop',
               text=>"Drop Students",                text=>"Drop Students"});
               faq=>9,bug=>'Instructor Interface',});  
         $r->print(&Apache::lonhtmlcommon::breadcrumbs          $r->print(&Apache::lonhtmlcommon::breadcrumbs
                   (undef,'Drop Students'));                    (undef,'Drop Students','Course_Drop_Student'));
         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 2193  sub handler { Line 2340  sub handler {
         } else {          } else {
             &print_drop_menu($r);              &print_drop_menu($r);
         }          }
     } elsif ($ENV{'form.action'} eq 'enrollstudent') {      } elsif ($ENV{'form.action'} eq 'enrollstudent' && $enrl_permission) {
         &Apache::lonhtmlcommon::add_breadcrumb          &Apache::lonhtmlcommon::add_breadcrumb
             ({href=>'/adm/dropadd?action=enrollstudent',              ({href=>'/adm/dropadd?action=enrollstudent',
               text=>"Enroll Student",                text=>"Enroll Student"});
               faq=>9,bug=>'Instructor Interface',});  
         $r->print(&Apache::lonhtmlcommon::breadcrumbs          $r->print(&Apache::lonhtmlcommon::breadcrumbs
                   (undef,'Enroll Student'));                    (undef,'Enroll Student','Course_Add_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 2209  sub handler { Line 2355  sub handler {
         } else {          } else {
             &get_student_username_domain_form($r);              &get_student_username_domain_form($r);
         }          }
     } elsif ($ENV{'form.action'} eq 'classlist') {      } elsif ($ENV{'form.action'} eq 'classlist' && $view_permission) {
         &Apache::lonhtmlcommon::add_breadcrumb          &Apache::lonhtmlcommon::add_breadcrumb
             ({href=>'/adm/dropadd?action=classlist',              ({href=>'/adm/dropadd?action=classlist',
               text=>"View Classlist",                text=>"View Classlist"});
               faq=>9,bug=>'Instructor Interface',});  
         $r->print(&Apache::lonhtmlcommon::breadcrumbs          $r->print(&Apache::lonhtmlcommon::breadcrumbs
                   (undef,'View Classlist'));                    (undef,'View Classlist','Course_View_Class_List'));
         if (! exists($ENV{'form.state'})) {          if (! exists($ENV{'form.state'})) {
             &print_html_classlist($r,undef);              &print_html_classlist($r,undef);
         } elsif ($ENV{'form.state'} eq 'csv') {          } elsif ($ENV{'form.state'} eq 'csv') {
Line 2225  sub handler { Line 2370  sub handler {
         } else {          } else {
             &print_html_classlist($r,undef);              &print_html_classlist($r,undef);
         }          }
     } elsif ($ENV{'form.action'} eq 'modifystudent') {      } elsif ($ENV{'form.action'} eq 'modifystudent' && $enrl_permission) {
         &Apache::lonhtmlcommon::add_breadcrumb          &Apache::lonhtmlcommon::add_breadcrumb
             ({href=>'/adm/dropadd?action=modifystudent',              ({href=>'/adm/dropadd?action=modifystudent',
               text=>"Modify Student Data",                text=>"Modify Student Data"});
               faq=>9,bug=>'Instructor Interface',});  
         $r->print(&Apache::lonhtmlcommon::breadcrumbs          $r->print(&Apache::lonhtmlcommon::breadcrumbs
                   (undef,'Modify Student Data'));                    (undef,'Modify Student Data','Course_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 2248  sub handler { Line 2392  sub handler {
                                  "Someone should fix this.");                                   "Someone should fix this.");
         $r->print(&Apache::lonhtmlcommon::breadcrumbs          $r->print(&Apache::lonhtmlcommon::breadcrumbs
                   (undef,'Enrollment Manager'));                    (undef,'Enrollment Manager'));
         &print_main_menu($r);          &print_main_menu($r,$enrl_permission,$view_permission);
     }      }
     #      #
     # Finish up      # Finish up

Removed from v.1.104  
changed lines
  Added in v.1.121


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