Diff for /loncom/interface/Attic/londropadd.pm between versions 1.15 and 1.20

version 1.15, 2001/08/24 21:09:53 version 1.20, 2002/03/06 22:34:06
Line 1 Line 1
 # The LearningOnline Network with CAPA  # The LearningOnline Network with CAPA
 # Handler to drop and add students in courses   # Handler to drop and add students in courses 
 #  #
   # $Id$
   #
   # Copyright Michigan State University Board of Trustees
   #
   # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
   #
   # LON-CAPA is free software; you can redistribute it and/or modify
   # it under the terms of the GNU General Public License as published by
   # the Free Software Foundation; either version 2 of the License, or
   # (at your option) any later version.
   #
   # LON-CAPA is distributed in the hope that it will be useful,
   # but WITHOUT ANY WARRANTY; without even the implied warranty of
   # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   # GNU General Public License for more details.
   #
   # You should have received a copy of the GNU General Public License
   # along with LON-CAPA; if not, write to the Free Software
   # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   #
   # /home/httpd/html/adm/gpl.txt
   #
   # http://www.lon-capa.org/
   #
 # (Handler to set parameters for assessments  # (Handler to set parameters for assessments
 #  #
 # (Handler to resolve ambiguous file locations  # (Handler to resolve ambiguous file locations
Line 19 Line 43
 # YEAR=2001  # YEAR=2001
 # 01/01/01,01/15,02/10,02/13,02/14,02/22 Gerd Kortemeyer  # 01/01/01,01/15,02/10,02/13,02/14,02/22 Gerd Kortemeyer
 # 8/6 Scott Harrison  # 8/6 Scott Harrison
   # Guy Albertelli
   # 9/25 Gerd Kortemeyer
   # 12/19 Guy Albertelli
   # YEAR=2002
   # 1/4 Gerd Kortemeyer
   
 package Apache::londropadd;  package Apache::londropadd;
   
Line 100  sub record_sep { Line 129  sub record_sep {
     if ($ENV{'form.upfiletype'} eq 'xml') {      if ($ENV{'form.upfiletype'} eq 'xml') {
     } elsif ($ENV{'form.upfiletype'} eq 'space') {      } elsif ($ENV{'form.upfiletype'} eq 'space') {
         my $i=0;          my $i=0;
         map {          foreach (split(/\s+/,$record) {
             my $field=$_;              my $field=$_;
             $field=~s/^(\"|\')//;              $field=~s/^(\"|\')//;
             $field=~s/(\"|\')$//;              $field=~s/(\"|\')$//;
             $components{$i}=$field;              $components{$i}=$field;
             $i++;              $i++;
         } split(/\s+/,$record);          }
     } elsif ($ENV{'form.upfiletype'} eq 'tab') {      } elsif ($ENV{'form.upfiletype'} eq 'tab') {
         my $i=0;          my $i=0;
         map {          foreach (split(/\t+/,$record)) {
             my $field=$_;              my $field=$_;
             $field=~s/^(\"|\')//;              $field=~s/^(\"|\')//;
             $field=~s/(\"|\')$//;              $field=~s/(\"|\')$//;
             $components{$i}=$field;              $components{$i}=$field;
             $i++;              $i++;
         } split(/\t+/,$record);                  }
     } else {      } else {
         my @allfields=split(/\,/,$record);          my @allfields=split(/\,/,$record);
         my $i=0;          my $i=0;
Line 144  sub dropstudent { Line 173  sub dropstudent {
      my ($udom,$unam,$courseid,$csec)=@_;       my ($udom,$unam,$courseid,$csec)=@_;
      $courseid=~s/\_/\//g;       $courseid=~s/\_/\//g;
      $courseid=~s/^(\w)/\/$1/;       $courseid=~s/^(\w)/\/$1/;
      map {       foreach (split(/\&/,
       &Apache::lonnet::reply('dump:'.$udom.':'.$unam.':roles',
        &Apache::lonnet::homeserver($unam,$udom)))) {
         my ($key,$value)=split(/\=/,$_);          my ($key,$value)=split(/\=/,$_);
         $key=&Apache::lonnet::unescape($key);          $key=&Apache::lonnet::unescape($key);
         if ($key=~/^$courseid(?:\/)*(\w+)*\_st$/) {          if ($key=~/^$courseid(?:\/)*(\w+)*\_st$/) {
           my $section=$1;            my $section=$1;
           if ($key eq $courseid.'_st') { $section=''; }            if ($key eq $courseid.'_st') { $section=''; }
           if ($section ne $csec) {            if (((!$section) && (!$csec)) || ($section ne $csec)) {
     my ($dummy,$end,$start)=split(/\_/,      my ($dummy,$end,$start)=split(/\_/,
                                     &Apache::lonnet::unescape($value));                                      &Apache::lonnet::unescape($value));
             my $now=time;              my $now=time;
Line 168  sub dropstudent { Line 199  sub dropstudent {
             }              }
   }    }
         }          }
     } split(/\&/,&Apache::lonnet::reply('dump:'.$udom.':'.$unam.':roles',      }
                                  &Apache::lonnet::homeserver($unam,$udom)));  
 }  }
   
 # ============================================================== Menu Phase One  # ============================================================== Menu Phase One
Line 405  ENDPICK Line 435  ENDPICK
                 if ($total>=2) {                  if ($total>=2) {
                    %sthree=&record_sep($records[2]);                     %sthree=&record_sep($records[2]);
         }          }
                 map {                  foreach (sort keys %sone) {
                    $r->print('<tr><td><select name=f'.$i.                     $r->print('<tr><td><select name=f'.$i.
                        ' onChange="flip(this.form,'.$i.');">');                         ' onChange="flip(this.form,'.$i.');">');
                    map {                     foreach ('none: ','username:Username',
                       my ($value,$display)=split(/\:/,$_);  
                       $r->print('<option value='.$value.'>'.$display.  
                               '</option>');  
                    } ('none: ','username:Username',  
                       'names:Last Name, First Names',                        'names:Last Name, First Names',
                       'fname:First Name','mname:Middle Names/Initials',                        'fname:First Name','mname:Middle Names/Initials',
                       'lname:Last Name','gen:Generation',                        'lname:Last Name','gen:Generation',
                       'id:ID/Student Number','sec:Group/Section',                        'id:ID/Student Number','sec:Group/Section',
                       'ipwd:Initial Password');                        'ipwd:Initial Password') {
         my ($value,$display)=split(/\:/,$_);
                         $r->print('<option value='.$value.'>'.$display.
                                 '</option>');
                      }
                    $r->print('</select></td><td>');                     $r->print('</select></td><td>');
                    if (defined($sone{$_})) {                      if (defined($sone{$_})) { 
                       $r->print($sone{$_}."</br>\n");                         $r->print($sone{$_}."</br>\n"); 
Line 430  ENDPICK Line 460  ENDPICK
                    }                     }
                    $r->print('</td></tr>');                     $r->print('</td></tr>');
                    $i++;                     $i++;
        } sort keys %sone;         }
        $i--;         $i--;
      }       }
              my $keyfields=join(',',sort keys %sone);               my $keyfields=join(',',sort keys %sone);
Line 473  LON-CAPA domain: <input type=text size=1 Line 503  LON-CAPA domain: <input type=text size=1
 <h3>Full Update</h3>  <h3>Full Update</h3>
 <input type=checkbox name=fullup value=yes> Full update   <input type=checkbox name=fullup value=yes> Full update 
 (also print list of users not enrolled anymore)<p>  (also print list of users not enrolled anymore)<p>
   <h3>ID/Student Number</h3>
   <input type=checkbox name=forceid value=yes> 
   Disable ID/Student Number Safeguard and Force Change of Conflicting IDs
   (only do if you know what you are doing)<p>
 <input type=button onClick="verify(this.form)" value="Update Courselist"><br>  <input type=button onClick="verify(this.form)" value="Update Courselist"><br>
 Note: for large courses, this operation might be time consuming.  Note: for large courses, this operation might be time consuming.
 ENDPICK  ENDPICK
Line 507  sub enroll_single_student { Line 541  sub enroll_single_student {
                $ENV{'form.cfirst'},$ENV{'form.cmiddle'},                 $ENV{'form.cfirst'},$ENV{'form.cmiddle'},
                       $ENV{'form.clast'},$ENV{'form.cgen'},                        $ENV{'form.clast'},$ENV{'form.cgen'},
                       $ENV{'form.csec'},$ENV{'form.enddate'},                        $ENV{'form.csec'},$ENV{'form.enddate'},
                       $ENV{'form.startdate'}));                        $ENV{'form.startdate'},$ENV{'form.forceid'}));
  } else {   } else {
            $r->print('Invalid login mode or password');                 $r->print('Invalid login mode or password');    
         }                    }          
Line 716  Local Authentication with argument Line 750  Local Authentication with argument
 <a   <a 
  href="javascript:pjump('date_end','Enrollment Ending Date',document.studentform.enddate.value,'end','studentform.pres','dateset');"   href="javascript:pjump('date_end','Enrollment Ending Date',document.studentform.enddate.value,'end','studentform.pres','dateset');"
 >Set Ending Date</a><p>  >Set Ending Date</a><p>
   <h3>ID/Student Number</h3>
   <input type=checkbox name=forceid value=yes> 
   Disable ID/Student Number Safeguard and Force Change of Conflicting IDs
   (only do if you know what you are doing)<p>
 <input type=button onClick="verify(this.form)" value="Enroll as student"><br>  <input type=button onClick="verify(this.form)" value="Enroll as student"><br>
 <input type=hidden name=phase value=five>  <input type=hidden name=phase value=five>
 ENDSENROLL  ENDSENROLL
Line 733  sub menu_phase_two_drop { Line 771  sub menu_phase_two_drop {
                  my %currentlist=();                   my %currentlist=();
                  my $now=time;                   my $now=time;
                  unless ($classlst=~/^error\:/) {                   unless ($classlst=~/^error\:/) {
                      map {                       foreach (split(/\&/,$classlst)) {
                         my ($name,$value)=split(/\=/,$_);                          my ($name,$value)=split(/\=/,$_);
                         my ($end,$start)=split(/\:/,                          my ($end,$start)=split(/\:/,
                                             &Apache::lonnet::unescape($value));                                              &Apache::lonnet::unescape($value));
Line 742  sub menu_phase_two_drop { Line 780  sub menu_phase_two_drop {
                         if ($active) {                          if ($active) {
            $currentlist{&Apache::lonnet::unescape($name)}=1;             $currentlist{&Apache::lonnet::unescape($name)}=1;
                         }                          }
                      } split(/\&/,$classlst);                       }
 # ----------------------------------------------------------- Print out choices  # ----------------------------------------------------------- Print out choices
                      &show_drop_list($r,%currentlist);                       &show_drop_list($r,%currentlist);
          } else {           } else {
Line 760  sub show_drop_list { Line 798  sub show_drop_list {
   
     $r->print('<input type=hidden name=phase value=four>');      $r->print('<input type=hidden name=phase value=four>');
                      $r->print('<table border=2>');                       $r->print('<table border=2>');
                      map {                       foreach (sort keys %currentlist) {
                          my ($sname,$sdom)=split(/\:/,$_);                           my ($sname,$sdom)=split(/\:/,$_);
                          my %reply=&Apache::lonnet::idrget($sdom,$sname);                           my %reply=&Apache::lonnet::idrget($sdom,$sname);
                          my $ssec=&Apache::lonnet::usection($sdom,$sname,$cid);                           my $ssec=&Apache::lonnet::usection($sdom,$sname,$cid);
Line 778  sub show_drop_list { Line 816  sub show_drop_list {
                                    &Apache::lonnet::unescape($reply[1]).                                     &Apache::lonnet::unescape($reply[1]).
                                    '</td><td>'.                                     '</td><td>'.
                                    $ssec."</td></tr>\n");                                     $ssec."</td></tr>\n");
                      } sort keys %currentlist;                       }
                      $r->print('</table><br>');                       $r->print('</table><br>');
                      $r->print('<input type=submit value="Drop Students">');                       $r->print('<input type=submit value="Drop Students">');
 }  }
Line 826  sub upfile_drop_add { Line 864  sub upfile_drop_add {
               my %student=();                my %student=();
 # ----------------------------------------------------------- Get new classlist  # ----------------------------------------------------------- Get new classlist
 # --------------------------------------------------------- Enroll new students  # --------------------------------------------------------- Enroll new students
       map {        foreach (@studentdata) {
   my %entries=&record_sep($_);    my %entries=&record_sep($_);
   
                 unless (($entries{$fields{'username'}} eq '') ||                  unless (($entries{$fields{'username'}} eq '') ||
Line 882  sub upfile_drop_add { Line 920  sub upfile_drop_add {
  &dropstudent($domain,$username,$cid,$sec);   &dropstudent($domain,$username,$cid,$sec);
                          my $reply=&Apache::lonnet::modifystudent(                           my $reply=&Apache::lonnet::modifystudent(
                           $domain,$username,$id,$amode,$password,                            $domain,$username,$id,$amode,$password,
    $fname,$mname,$lname,$gen,$sec,$enddate,$startdate);     $fname,$mname,$lname,$gen,$sec,$enddate,$startdate,
                              $ENV{'form.forceid'});
                          unless ($reply eq 'ok') {                           unless ($reply eq 'ok') {
                             $r->print(                              $r->print(
                              "<p><b>Error enrolling $username: $reply</b><p>");                               "<p><b>Error enrolling $username: $reply</b><p>");
Line 901  sub upfile_drop_add { Line 940  sub upfile_drop_add {
                      }                       }
                   }                    }
                  }                                    }                 
               } @studentdata;                }
               $r->print('<p>Processed Students: '.$count);                $r->print('<p>Processed Students: '.$count);
 # --------------------------------------------------------------- Drop students  # --------------------------------------------------------------- Drop students
               if ($ENV{'form.fullup'} eq 'yes') {                if ($ENV{'form.fullup'} eq 'yes') {
Line 914  sub upfile_drop_add { Line 953  sub upfile_drop_add {
                  my %currentlist=();                   my %currentlist=();
                  my $now=time;                   my $now=time;
                  unless ($classlst=~/^error\:/) {                   unless ($classlst=~/^error\:/) {
                      map {                       foreach (split(/\&/,$classlst)) {
                         my ($name,$value)=split(/\=/,$_);                          my ($name,$value)=split(/\=/,$_);
                         my ($end,$start)=split(/\:/,                          my ($end,$start)=split(/\:/,
                                             &Apache::lonnet::unescape($value));                                              &Apache::lonnet::unescape($value));
Line 923  sub upfile_drop_add { Line 962  sub upfile_drop_add {
                         if ($active) {                          if ($active) {
            $currentlist{&Apache::lonnet::unescape($name)}=1;             $currentlist{&Apache::lonnet::unescape($name)}=1;
                         }                          }
                      } split(/\&/,$classlst);                       }
 # ------------------------------------------------ Now got up-to-date classlist  # ------------------------------------------------ Now got up-to-date classlist
                      map {                       foreach (@studentdata) {
                  my %entries=&record_sep($_);                   my %entries=&record_sep($_);
                         unless (($entries{$fields{'username'}} eq '') ||                          unless (($entries{$fields{'username'}} eq '') ||
                           (!defined($entries{$fields{'username'}}))) {                            (!defined($entries{$fields{'username'}}))) {
Line 933  sub upfile_drop_add { Line 972  sub upfile_drop_add {
                             $entries{$fields{'username'}}.':'.                              $entries{$fields{'username'}}.':'.
                             $domain});                              $domain});
         }          }
                      } @studentdata;                       }
 # ----------------------------------------------------------- Print out choices  # ----------------------------------------------------------- Print out choices
                      &show_drop_list($r,%currentlist);                       &show_drop_list($r,%currentlist);
          } else {           } else {
Line 952  sub upfile_drop_add { Line 991  sub upfile_drop_add {
 sub drop_student_list {  sub drop_student_list {
     my $r=shift;      my $r=shift;
     my $count=0;      my $count=0;
     map {      foreach (keys %ENV) {
  if ($_=~/^form\.drop\:/) {   if ($_=~/^form\.drop\:/) {
     my ($dummy,$uname,$udom)=split(/\:/,$_);      my ($dummy,$uname,$udom)=split(/\:/,$_);
             &dropstudent($udom,$uname,$ENV{'request.course.id'});              &dropstudent($udom,$uname,$ENV{'request.course.id'});
             $r->print('Dropped '.$uname.' at '.$udom.'<br>');              $r->print('Dropped '.$uname.' at '.$udom.'<br>');
             $count++;              $count++;
         }          }
     } keys %ENV;      }
     $r->print('<p><b>Dropped '.$count.' student(s).</b>');      $r->print('<p><b>Dropped '.$count.' student(s).</b>');
     $r->print('<p>Re-enrollment will re-activate data.');      $r->print('<p>Re-enrollment will re-activate data.');
 }  }

Removed from v.1.15  
changed lines
  Added in v.1.20


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