Diff for /loncom/interface/Attic/londropadd.pm between versions 1.34 and 1.41

version 1.34, 2002/04/30 13:51:00 version 1.41, 2002/05/06 17:48:57
Line 62  sub header { Line 62  sub header {
     return(<<ENDHEAD);      return(<<ENDHEAD);
 <html>  <html>
 <head>  <head>
 <title>LON-CAPA Student Drop/Add</title>  <title>LON-CAPA Enrollment Manager</title>
 </head>  </head>
 <body bgcolor="#FFFFFF">  <body bgcolor="#FFFFFF">
 <img align=right src=/adm/lonIcons/lonlogos.gif>  <img align=right src=/adm/lonIcons/lonlogos.gif>
 <h1>Drop/Add Students</h1>  <h1>$ENV{'course.'.$ENV{'request.course.id'}.'.description'}</h1>
 <form method="post" enctype="multipart/form-data"  <h2>Enrollment Manager</h2>
 action="/adm/dropadd" name="studentform">  <form method="post" enctype="multipart/form-data"  
 <h2>Course: $ENV{'course.'.$ENV{'request.course.id'}.'.description'}</h2>        action="/adm/dropadd" name="studentform">
 ENDHEAD  ENDHEAD
 }  }
   
Line 84  sub modifystudent { Line 84  sub modifystudent {
     my %roles = &Apache::lonnet::dump('roles',$udom,$unam);      my %roles = &Apache::lonnet::dump('roles',$udom,$unam);
     my ($tmp) = keys(%roles);      my ($tmp) = keys(%roles);
     # Bail out if we were unable to get the students roles      # Bail out if we were unable to get the students roles
     return if ($tmp =~ /^(con_lost|error|no_such_host)/i);      return "$1" if ($tmp =~ /^(con_lost|error|no_such_host)/i);
     # Go through the roles looking for enrollment in this course      # Go through the roles looking for enrollment in this course
       my $result = '';
     foreach my $course (keys(%roles)) {      foreach my $course (keys(%roles)) {
         my $value = $roles{$course};          if ($course=~/^$courseid(?:\/)*(?:\s+)*(\w+)*\_st$/) {
         if ($course=~/^$courseid(?:\/)*(\w+)*\_st$/) {  
             # We are in this course              # We are in this course
             my $section=$1;              my $section=$1;
             $section='' if ($course eq $courseid.'_st');              $section='' if ($course eq $courseid.'_st');
             if (((!$section) && (!$csec)) || ($section ne $csec)) {              if ( ((!$section) && (!$csec)) || ($section ne $csec) ) {
                 my (undef,$end,$start)=split(/\_/,$roles{$course});                  my (undef,$end,$start)=split(/\_/,$roles{$course});
                 my $now=time;                  my $now=time;
                 if (!($start && ($now<$start)) || !($end && ($now>$end))) {                  if (!($start && ($now<$start)) || !($end && ($now>$end))) {
                     my $reply=&Apache::lonnet::modifystudent                      my $reply=&Apache::lonnet::modifystudent
                         ($udom,$unam,'','','','','','','',                          ($udom,$unam,'','','','','','','',
                          $section,time,undef,undef,$desiredhost);                           $section,time,undef,undef,$desiredhost);
                       $result .= $reply.':';
                 }                  }
             }              }
         }          }
     }      }
       if ($result eq '') {
           $result eq 'Unable to find section for this student';
       } else {
           $result =~ s/(ok:)+/ok/g;
       }
       return $result;
 }  }
   
 # ============ build a domain and server selection form  # ============ build a domain and server selection form
Line 143  sub menu_phase_one { Line 150  sub menu_phase_one {
 <hr>  <hr>
 <h3>Upload a courselist</h3>  <h3>Upload a courselist</h3>
 $upfile_select  $upfile_select
 <p><input type=submit name=fileupload value="Upload Courselist">  <p><input type=submit name="fileupload" value="Upload Courselist">
 <hr>  <hr />
 <h3>Enroll a single student</h3>  <h3>Enroll a single student</h3>
 <p><input type=submit name=enroll value="Enroll Student">  <p><input type=submit name="enroll" value="Enroll Student"></p>
 <hr>  <hr />
   <h3>Classlist</h3>
   <p><input type=submit name="view" value="View Class List">
   <input type=submit name="viewcsv" value="Comma Separated Class List"></p>
   <hr />
 <h3>Drop students</h3>  <h3>Drop students</h3>
 <p><input type=submit name=drop value="Selection List">  <p><input type=submit name="drop" value="Selection List"></p>
 ENDUPFORM  ENDUPFORM
 }  }
   
Line 163  sub phase_two_header { Line 174  sub phase_two_header {
     }      }
     my $javascript_validations=&javascript_validations($krbdefdom);      my $javascript_validations=&javascript_validations($krbdefdom);
     $r->print(<<ENDPICK);      $r->print(<<ENDPICK);
   <h3>Uploading Class List</h3>
 <hr>  <hr>
 <h3>Identify fields</h3>  <h3>Identify fields</h3>
 Total number of records found in file: $distotal <hr />  Total number of records found in file: $distotal <hr />
 Enter as many fields as you can. The system will inform you and bring you back  Enter as many fields as you can. The system will inform you and bring you back
 to this page if the data selected is insufficient to run your class.<hr />  to this page if the data selected is insufficient to run your class.<hr />
 <input type="submit" name="associate"  value="Reverse Association" />  <input type="button" value="Reverse Association" onClick="javascript:this.form.associate.value='Reverse Association';submit(this.form);" />
   <input type="hidden" name="associate"  value="" />
 <input type="hidden" name="phase"      value="three" />  <input type="hidden" name="phase"      value="three" />
 <input type="hidden" name="datatoken"  value="$datatoken" />  <input type="hidden" name="datatoken"  value="$datatoken" />
 <input type="hidden" name="fileupload" value="$ENV{'form.fileupload'}" />  <input type="hidden" name="fileupload" value="$ENV{'form.fileupload'}" />
Line 450  LON-CAPA domain: $domform <p> Line 463  LON-CAPA domain: $domform <p>
 <input type=checkbox name=forceid value=yes>   <input type=checkbox name=forceid value=yes> 
 Disable ID/Student Number Safeguard and Force Change of Conflicting IDs  Disable ID/Student Number Safeguard and Force Change of Conflicting IDs
 (only do if you know what you are doing)<p>  (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="javascript: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 562  sub enroll_single_student { Line 575  sub enroll_single_student {
 # ======================================================= Menu Phase Two Enroll  # ======================================================= Menu Phase Two Enroll
 sub menu_phase_two_enroll {  sub menu_phase_two_enroll {
     my $r=shift;      my $r=shift;
       $r->print("<h3>Enroll One Student</h3>");
     my ($krbdefdom) = $ENV{'SERVER_NAME'}=~/(\w+\.\w+)$/;      my ($krbdefdom) = $ENV{'SERVER_NAME'}=~/(\w+\.\w+)$/;
     $krbdefdom=~tr/a-z/A-Z/;      $krbdefdom=~tr/a-z/A-Z/;
     my $today    = time;      my $today    = time;
Line 679  sub get_current_classlist { Line 693  sub get_current_classlist {
         }          }
         return (undef,%currentlist);          return (undef,%currentlist);
     } else {      } else {
           $tmp =~ s/^error://;
         return ($tmp,undef);          return ($tmp,undef);
     }      }
 }  }
Line 686  sub get_current_classlist { Line 701  sub get_current_classlist {
 # ========================================================= Menu Phase Two Drop  # ========================================================= Menu Phase Two Drop
 sub menu_phase_two_drop {  sub menu_phase_two_drop {
     my $r=shift;      my $r=shift;
       $r->print("<h3>Drop Students</h3>");
     my $cid=$ENV{'request.course.id'};      my $cid=$ENV{'request.course.id'};
     my ($error,%currentlist)=&get_current_classlist($ENV{'course.'.$cid.'.domain'},      my ($error,%currentlist)=&get_current_classlist
                                            $ENV{'course.'.$cid.'.num'});          ($ENV{'course.'.$cid.'.domain'},$ENV{'course.'.$cid.'.num'});
     if (defined($error)) {      if (defined($error)) {
         $r->print('<pre>ERROR:$error</pre>');          if ($error =~ /^No such file or directory/) {
     }              $r->print("There are no students currently enrolled.\n");
     if (!defined(%currentlist)) {           } else {
               $r->print("<pre>ERROR:$error</pre>");
           }
       } elsif (!defined(%currentlist)) { 
         $r->print("There are no students currently enrolled.\n");          $r->print("There are no students currently enrolled.\n");
     } else {      } else {
         # Print out the available choices          # Print out the available choices
Line 700  sub menu_phase_two_drop { Line 719  sub menu_phase_two_drop {
     }      }
 }  }
   
   # ============================================== view classlist
   sub menu_phase_two_view {
       my $r=shift;
       $r->print("<h3>Current Classlist</h3>");
       my $cid=$ENV{'request.course.id'};
       my ($error,%currentlist)=&get_current_classlist
           ($ENV{'course.'.$cid.'.domain'},$ENV{'course.'.$cid.'.num'});
       if (defined($error)) {
           if ($error =~ /^No such file or directory/) {
               $r->print("There are no students currently enrolled.\n");
           } else {
               $r->print("<pre>ERROR:$error</pre>");
           }
       } elsif (!defined(%currentlist)) { 
           $r->print("There are no students currently enrolled.\n");
       } else {
           # Print out the available choices
           &show_class_list($r,'view',%currentlist);
       }
   }
   
   # ============================================== view classlist
   sub menu_phase_two_viewcsv {
       my $r=shift;
       my $cid=$ENV{'request.course.id'};
       my ($error,%currentlist)=&get_current_classlist
           ($ENV{'course.'.$cid.'.domain'},$ENV{'course.'.$cid.'.num'});
       if (defined($error)) {
           if ($error =~ /^No such file or directory/) {
               $r->print("There are no students currently enrolled.\n");
           } else {
               $r->print("<pre>ERROR:$error</pre>");
           }
       } elsif (!defined(%currentlist)) { 
           $r->print("There are no students currently enrolled.\n");
       } else {
           &show_class_list($r,'csv',%currentlist);
       }
   }
   
   # =================================================== Show student list to drop
   sub show_class_list {
       my ($r,$mode,%currentlist)=@_;
       my $cid=$ENV{'request.course.id'};
       if ($mode eq 'view') {
           $r->print(<<END);
   <p>
   <table border=2>
   <tr><th>username</th><th>domain</th><th>ID</th>
       <th>student name</th><th>generation</th><th>section</th></tr>
   END
       } elsif ($mode eq 'csv') {
           $r->print(<<END);
   username,domain,ID,last name,first name,middle name,generation,section
   END
       }
       foreach (sort keys %currentlist) {
           my ($sname,$sdom)=split(/\:/,$_);
           my %reply=&Apache::lonnet::idrget($sdom,$sname);
           my $ssec=&Apache::lonnet::usection($sdom,$sname,$cid);
           my %info=&Apache::lonnet::get('environment',
                                         ['firstname','middlename',
                                          'lastname','generation'],
                                         $sdom, $sname);
           my ($tmp) = keys(%info);
           if ($tmp =~ /^(con_lost|error|no_such_host)/i) {
               $r->print( ($mode eq 'view' ? 
                          '<tr><td colspan="6"><font color="red">' :'').
                          'Internal error: unable to get environment '.
                          'for '.$sname.' in domain '.$sdom.
                          ( $mode eq 'view' ?'</font></td></tr>' :''));
           } else {
               if ($mode eq 'view') {
                   $r->print(<<"END");
   <tr>
       <td>$sname</td>
       <td>$sdom</td>
       <td>$reply{$sname}</td>
       <td>$info{'lastname'}, $info{'firstname'} $info{'middlename'}</td>
       <td>$info{'generation'}</td>
       <td>$ssec</td>
   </tr>
   END
               } elsif ($mode eq 'csv') {
                   $r->print($sname.','.
                             $sdom.','.
                             $reply{$sname}.','.
                             $info{'lastname'}.','.
                             $info{'firstname'}.','.
                             $info{'middlename'}.','.
                             $info{'generation'}.','.
                             $ssec."\n");
               }
           }
       }
       $r->print('</table><br>') if ($mode eq 'view');
   }
   
 # =================================================== Show student list to drop  # =================================================== Show student list to drop
 sub show_drop_list {  sub show_drop_list {
     my ($r,%currentlist)=@_;      my ($r,%currentlist)=@_;
Line 939  sub upfile_drop_add { Line 1056  sub upfile_drop_add {
 sub drop_student_list {  sub drop_student_list {
     my $r=shift;      my $r=shift;
     my $count=0;      my $count=0;
     foreach (@{$ENV{'form.droplist'}}) {      my @droplist;
       if (ref($ENV{'form.droplist'})) {
           @droplist = @{$ENV{'form.droplist'}};
       } else {
           @droplist = ($ENV{'form.droplist'});
       }
       foreach (@droplist) {
         my ($uname,$udom)=split(/\:/,$_);          my ($uname,$udom)=split(/\:/,$_);
         &modifystudent($udom,$uname,$ENV{'request.course.id'});          my $result = &modifystudent($udom,$uname,$ENV{'request.course.id'});
         $r->print('Dropped '.$uname.' at '.$udom.'<br>');          if ($result eq 'ok' || $result eq 'ok:') {
               $r->print('Dropped '.$uname.' at '.$udom.'<br>');
           } else {
               $r->print('Error dropping '.$uname.' at '.$udom.': '.$result.
                         '<br />');
           }
         $count++;          $count++;
     }      }
     $r->print('<p><b>Dropped '.$count.' student(s).</b>');      $r->print('<p><b>Dropped '.$count.' student(s).</b>');
Line 961  sub handler { Line 1089  sub handler {
     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'}))) {
         # Start page          # Start page
         $r->content_type('text/html');          $r->content_type('text/html') if (! exists($ENV{'form.viewcsv'}));
         $r->send_http_header;          $r->send_http_header;
         $r->print(&header());          $r->print(&header()) if (! exists($ENV{'form.viewcsv'}));
         # Phase one, initial screen          # Phase one, initial screen
         unless ($ENV{'form.phase'}) {          unless ($ENV{'form.phase'}) {
             &menu_phase_one($r);              &menu_phase_one($r);
Line 984  sub handler { Line 1112  sub handler {
                 &menu_phase_two_enroll($r);                  &menu_phase_two_enroll($r);
             } elsif ($ENV{'form.drop'}) {              } elsif ($ENV{'form.drop'}) {
                 &menu_phase_two_drop($r);                  &menu_phase_two_drop($r);
               } elsif ($ENV{'form.view'}) {
                   &menu_phase_two_view($r);
               } elsif ($ENV{'form.viewcsv'}) {
                   &menu_phase_two_viewcsv($r);
             }              }
         }          }
         # Phase three          # Phase three
Line 1001  sub handler { Line 1133  sub handler {
             &enroll_single_student($r);              &enroll_single_student($r);
         }          }
          # End           # End
         $r->print('</form></body></html>');          $r->print('</form></body></html>') if (! exists($ENV{'form.viewcsv'}));
     } else {      } else {
         # Not in a course, or not allowed to modify parms          # Not in a course, or not allowed to modify parms
         $ENV{'user.error.msg'}=          $ENV{'user.error.msg'}=

Removed from v.1.34  
changed lines
  Added in v.1.41


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