Diff for /loncom/interface/Attic/londropadd.pm between versions 1.10 and 1.14

version 1.10, 2001/02/13 21:24:18 version 1.14, 2001/08/07 14:07:36
Line 7 Line 7
 #  #
 # (TeX Content Handler  # (TeX Content Handler
 #  #
   # YEAR=2000
 # 05/29/00,05/30,10/11 Gerd Kortemeyer)  # 05/29/00,05/30,10/11 Gerd Kortemeyer)
 #  #
 # 10/11,10/12,10/16 Gerd Kortemeyer)  # 10/11,10/12,10/16 Gerd Kortemeyer)
Line 15 Line 16
 # 12/08,12/12 Gerd Kortemeyer)  # 12/08,12/12 Gerd Kortemeyer)
 #  #
 # 12/26,12/27,12/28,  # 12/26,12/27,12/28,
 # 01/01/01,01/15,02/10,02/13 Gerd Kortemeyer  # YEAR=2001
   # 01/01/01,01/15,02/10,02/13,02/14,02/22 Gerd Kortemeyer
   # 8/6 Scott Harrison
   
 package Apache::londropadd;  package Apache::londropadd;
   
Line 189  sub menu_phase_one { Line 192  sub menu_phase_one {
 <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">
 <hr>  <hr>
 <h3>Drop a student</h3>  <h3>Drop students</h3>
 <p><input type=submit name=drop value="Drop Student">  <p><input type=submit name=drop value="Selection List">
 ENDUPFORM  ENDUPFORM
 }  }
   
Line 411  ENDPICK Line 414  ENDPICK
                       'id:ID/Student Number','sec:Group/Section',                        'id:ID/Student Number','sec:Group/Section',
                       'ipwd:Initial Password');                        'ipwd:Initial Password');
                    $r->print('</select></td><td>');                     $r->print('</select></td><td>');
                    if (defined($sone{$i})) {                      if (defined($sone{$_})) { 
                       $r->print($sone{$i}."</br>\n");                         $r->print($sone{$_}."</br>\n"); 
                    }                     }
            if (defined($stwo{$i})) {              if (defined($stwo{$_})) { 
                       $r->print($stwo{$i}."</br>\n");                         $r->print($stwo{$_}."</br>\n"); 
                    }                     }
            if (defined($sthree{$i})) {              if (defined($sthree{$_})) { 
                       $r->print($sthree{$i}."</br>\n");                         $r->print($sthree{$_}."</br>\n"); 
                    }                     }
                    $r->print('</td></tr>');                     $r->print('</td></tr>');
                    $i++;                     $i++;
Line 431  ENDPICK Line 434  ENDPICK
 <input type=hidden name=nfields value=$i>  <input type=hidden name=nfields value=$i>
 <input type=hidden name=keyfields value="$keyfields">  <input type=hidden name=keyfields value="$keyfields">
 <h3>Login Type</h3>  <h3>Login Type</h3>
   Note: this will not take effect if the user already exists<p>
 <input type=radio name=login value=krb onClick="clickkrb(this.form);">  <input type=radio name=login value=krb onClick="clickkrb(this.form);">
 Kerberos authenticated with domain  Kerberos authenticated with domain
 <input type=text size=10 name=krbdom onChange="setkrb(this.form);"><p>  <input type=text size=10 name=krbdom onChange="setkrb(this.form);"><p>
Line 454  LON-CAPA domain: <input type=text size=1 Line 458  LON-CAPA domain: <input type=text size=1
 >Set Ending Date</a><p>  >Set Ending Date</a><p>
 <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 dropping students)<p>  (also print list of users not enrolled anymore)<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
 }  }
   
   # ======================================================= Enroll single student
   
   sub enroll_single_student {
       my $r=shift;
       $r->print('<h3>Enrolling Student</h3>');
       if (($ENV{'form.cuname'})&&($ENV{'form.cuname'}!~/\W/)&&
           ($ENV{'form.cdomain'})&&($ENV{'form.cdomain'}!~/\W/)) {
    my $amode='';
           my $genpwd='';
           if ($ENV{'form.login'} eq 'krb') {
              $amode='krb4';
              $genpwd=$ENV{'form.krbdom'};
           } elsif ($ENV{'form.login'} eq 'int') {
              $amode='internal';
              $genpwd=$ENV{'form.intpwd'};
           }
           if (($amode) && ($genpwd)) {
      &dropstudent($ENV{'form.cdomain'},$ENV{'form.cuname'},
          $ENV{'request.course.id'},$ENV{'form.csec'});
             $r->print(&Apache::lonnet::modifystudent(
                         $ENV{'form.cdomain'},$ENV{'form.cuname'},
                         $ENV{'form.cstid'},$amode,$genpwd,
                  $ENV{'form.cfirst'},$ENV{'form.cmiddle'},
                         $ENV{'form.clast'},$ENV{'form.cgen'},
                         $ENV{'form.csec'},$ENV{'form.enddate'},
                         $ENV{'form.startdate'}));
    } else {
              $r->print('Invalid login mode or password');    
           }          
       } else {
           $r->print('Invalid username or domain');
       }    
   }
   
 # ======================================================= Menu Phase Two Enroll  # ======================================================= Menu Phase Two Enroll
   
 sub menu_phase_two_enroll {  sub menu_phase_two_enroll {
     my $r=shift;      my $r=shift;
       
       $ENV{'SERVER_NAME'}=~/(\w+\.\w+)$/;
       my $krbdefdom=$1;
       $krbdefdom=~tr/a-z/A-Z/;
   
       my $today=time;
       my $halfyear=$today+15552000;
   
       my $defdom=$r->dir_config('lonDefDomain');
   
       $r->print(<<ENDSENROLL);
   <script>
   function verify(vf) {
       var founduname=0;
       var foundpwd=0;
       var foundname=0;
       var foundid=0;
       var foundsec=0;
       var foundatype=0;
       var tw;
       var message='';
       if ((typeof(vf.cuname.value)!="undefined") && (vf.cuname.value!='') && 
    (typeof(vf.cdomain.value)!="undefined") && (vf.cdomain.value!='')) {
           founduname=1;
       }
       if ((typeof(vf.cfirst.value)!="undefined") && (vf.cfirst.value!='') &&
    (typeof(vf.clast.value)!="undefined") && (vf.clast.value!='')) {
           foundname=1;
       }
       if ((typeof(vf.csec.value)!="undefined") && (vf.csec.value!='')) {
           foundsec=1;
       }
       if ((typeof(vf.cstid.value)!="undefined") && (vf.cstid.value!='')) {
    foundid=1;
       }
       if (founduname==0) {
    alert('You need to specify at least the username and domain fields');
           return;
       }
       if (vf.login[0].checked) {
    foundatype=1;
           if (vf.krbdom.value=='') {
       alert('You need to specify the Kerberos domain');
               return;
           }
       }
       if (vf.login[1].checked) {
    foundatype=1;
           if ((vf.intpwd.value=='') && (foundpwd==0)) {
       alert('You need to specify the initial password');
               return;
           }
       }
       if (foundatype==0) {
    alert('You need to set the login type');
           return;
       }
       if (foundname==0) { message='No first and last name specified. '; }
       if (foundid==0) { message+='No ID or student number field specified. '; }
       if (foundsec==0) { message+='No section or group field specified. '; }
       if (vf.startdate.value=='') {
    message+='No starting date set. ';
       }
       if (vf.enddate.value=='') {
           message+='No ending date set. ';
       }
       if ((vf.enddate.value!='') && (vf.startdate.value!='')) {
          if (Math.round(vf.enddate.value)<Math.round(vf.startdate.value)) {
             alert('Ending date is before starting date');
             return;
          }
       }
       if (message!='') {
          message+='Continue enrollment?';
          if (confirm(message)) {
     pclose();
     vf.submit();
          }
       } else {
         pclose();
         vf.submit();
       }   
   }
   
   function setkrb(vf) {
       if (vf.krbdom.value!='') {
          vf.login[0].checked=true;
          vf.krbdom.value=vf.krbdom.value.toUpperCase();
          vf.intpwd.value='';
      }
   }
   
   function setint(vf) {
       if (vf.intpwd.value!='') {
          vf.login[1].checked=true;
          vf.krbdom.value='';
      }
   }
   
   function clickkrb(vf) {
       vf.krbdom.value='$krbdefdom';
       vf.intpwd.value='';
   }
   
   function clickint(vf) {
       vf.krbdom.value='';
   }
   
       function pclose() {
           parmwin=window.open("/adm/rat/empty.html","LONCAPAparms",
                    "height=350,width=350,scrollbars=no,menubar=no");
           parmwin.close();
       }
   
       function pjump(type,dis,value,marker,ret,call) {
           parmwin=window.open("/adm/rat/parameter.html?type="+escape(type)
                    +"&value="+escape(value)+"&marker="+escape(marker)
                    +"&return="+escape(ret)
                    +"&call="+escape(call)+"&name="+escape(dis),"LONCAPAparms",
                    "height=350,width=350,scrollbars=no,menubar=no");
   
       }
   
       function dateset() {
           if (document.studentform.pres_marker.value=='end') {
              document.studentform.enddate.value=
          document.studentform.pres_value.value;
           }
           if (document.studentform.pres_marker.value=='start') {
              document.studentform.startdate.value=
          document.studentform.pres_value.value;
           }
           pclose();
       }
   
   </script>
   <h3>Personal Data</h3>
   First Name: <input type=text name=cfirst size=15><br>
   Middle Name: <input type=text name=cmiddle size=15><br>
   Last Name: <input type=text name=clast size=15><br>
   Generation: <input type=text name=cgen size=5><p>
   
   ID/Student Number: <input type=text name=cstid size=10><p>
   
   Group/Section: <input type=text name=csec size=5><p>
   
   <h3>Login Data</h3>
   Username: <input type=text name=cuname size=15><p>
   Domain: <input type=text size=10 value=$defdom name=cdomain><p>
   Note: login settings below  will not take effect if the user already exists<p>
   
   <input type=radio name=login value=krb onClick="clickkrb(this.form);">
   Kerberos authenticated with domain
   <input type=text size=10 name=krbdom onChange="setkrb(this.form);"><p>
   <input type=radio name=login value=int onClick="clickint(this.form);"> 
   Internally authenticated (with initial password 
   <input type=text size=10 name=intpwd onChange="setint(this.form);">)
   
   <h3>Starting and Ending Dates</h3>
   <input type="hidden" value='' name="pres_value">
   <input type="hidden" value='' name="pres_type">
   <input type="hidden" value='' name="pres_marker">
   <input type="hidden" value='$today' name=startdate>
   <input type="hidden" value='$halfyear' name=enddate>
   <a 
    href="javascript:pjump('date_start','Enrollment Starting Date',document.studentform.startdate.value,'start','studentform.pres','dateset');"
   >Set Starting Date</a><p>
   
   <a 
    href="javascript:pjump('date_end','Enrollment Ending Date',document.studentform.enddate.value,'end','studentform.pres','dateset');"
   >Set Ending Date</a><p>
   <input type=button onClick="verify(this.form)" value="Enroll as student"><br>
   <input type=hidden name=phase value=five>
   ENDSENROLL
 }  }
   
 # ========================================================= Menu Phase Two Drop  # ========================================================= Menu Phase Two Drop
   
 sub menu_phase_two_drop {  sub menu_phase_two_drop {
     my $r=shift;      my $r=shift;
       my $cid=$ENV{'request.course.id'};
                    my $classlst=&Apache::lonnet::reply
                    ('dump:'.$ENV{'course.'.$cid.'.domain'}.':'.
                     $ENV{'course.'.$cid.'.num'}.':classlist',
                     $ENV{'course.'.$cid.'.home'});
                    my %currentlist=();
                    my $now=time;
                    unless ($classlst=~/^error\:/) {
                        map {
                           my ($name,$value)=split(/\=/,$_);
                           my ($end,$start)=split(/\:/,
                                               &Apache::lonnet::unescape($value));
                           my $active=1;
                           if (($end) && ($now>$end)) { $active=0; }
                           if ($active) {
              $currentlist{&Apache::lonnet::unescape($name)}=1;
                           }
                        } split(/\&/,$classlst);
   # ----------------------------------------------------------- Print out choices
                        &show_drop_list($r,%currentlist);
            } else {
                        $r->print(
                     '<font color=red><h3>Could not access classlist: '.$classlst.
                     '</h3></font>');
                    }
   }
   
   # =================================================== Show student list to drop
   
   sub show_drop_list {
       my ($r,%currentlist)=@_;
       my $cid=$ENV{'request.course.id'};
   
       $r->print('<input type=hidden name=phase value=four>');
                        $r->print('<table border=2>');
                        map {
                            my ($sname,$sdom)=split(/\:/,$_);
                            my %reply=&Apache::lonnet::idrget($sdom,$sname);
                            my $ssec=&Apache::lonnet::usection($sdom,$sname,$cid);
                            my @reply=split(/[\&\=]/,&Apache::lonnet::reply(
                              'get:'.$sdom.':'.$sname.
         ':environment:firstname&middlename&lastname&generation',
                              &Apache::lonnet::homeserver($sname,$sdom)));
     $r->print(
                     '<tr><td><input type=checkbox name="drop:'.$_.'"></td><td>'.
                                      $sname.'</td><td>'.$sdom.'</td><td>'.
                                      $reply{$sname}.'</td><td>'.
                                      &Apache::lonnet::unescape($reply[2]).' '.
                                      &Apache::lonnet::unescape($reply[3]).', '.
                                      &Apache::lonnet::unescape($reply[0]).' '.
                                      &Apache::lonnet::unescape($reply[1]).
                                      '</td><td>'.
                                      $ssec."</td></tr>\n");
                        } sort keys %currentlist;
                        $r->print('</table><br>');
                        $r->print('<input type=submit value="Drop Students">');
 }  }
   
 # ================================================= Drop/Add from uploaded file  # ================================================= Drop/Add from uploaded file
   
 sub upfile_drop_add {  sub upfile_drop_add {
     my $r=shift;      my $r=shift;
     $r->print('<input type=hidden name=phase value=four>');  
   
     &load_tmp_file($r);      &load_tmp_file($r);
     my @studentdata=&upfile_record_sep();      my @studentdata=&upfile_record_sep();
Line 620  sub upfile_drop_add { Line 887  sub upfile_drop_add {
         }          }
                      } @studentdata;                       } @studentdata;
 # ----------------------------------------------------------- Print out choices  # ----------------------------------------------------------- Print out choices
                      $r->print('<table border=2>');                       &show_drop_list($r,%currentlist);
                      map {  
                          my ($sname,$sdom)=split(/\:/,$_);  
                          my %reply=&Apache::lonnet::idrget($sdom,$sname);  
                          my $ssec=&Apache::lonnet::usection($sdom,$sname,$cid);  
                          my @reply=split(/[\&\=]/,&Apache::lonnet::reply(  
                            'get:'.$sdom.':'.$sname.  
       ':environment:firstname&middlename&lastname&generation',  
                            &Apache::lonnet::homeserver($sname,$sdom)));  
   $r->print(  
                   '<tr><td><input type=checkbox name="drop:'.$_.'"></td><td>'.  
                                    $sname.'</td><td>'.$sdom.'</td><td>'.  
                                    $reply{$sname}.'</td><td>'.  
                                    $reply[2].' '.$reply[3],', '.$reply[0].' '.  
                                    $reply[1].'</td><td>'.  
                                    $ssec."</td></tr>\n");  
                      } sort keys %currentlist;  
                      $r->print('</table><br>');  
                      $r->print('<input type=submit value="Drop Students">');  
   
          } else {           } else {
                      $r->print(                       $r->print(
                   '<font color=red><h3>Could not access classlist: '.$classlst.                    '<font color=red><h3>Could not access classlist: '.$classlst.
Line 651  sub upfile_drop_add { Line 899  sub upfile_drop_add {
   }    }
 }  }
   
   # ================================================================== Phase four
   
   sub drop_student_list {
       my $r=shift;
       my $count=0;
       map {
    if ($_=~/^form\.drop\:/) {
       my ($dummy,$uname,$udom)=split(/\:/,$_);
               &dropstudent($udom,$uname,$ENV{'request.course.id'});
               $r->print('Dropped '.$uname.' at '.$udom.'<br>');
               $count++;
           }
       } keys %ENV;
       $r->print('<p><b>Dropped '.$count.' student(s).</b>');
       $r->print('<p>Re-enrollment will re-activate data.');
   }
   
 # ================================================================ Main Handler  # ================================================================ Main Handler
   
 sub handler {  sub handler {
Line 696  sub handler { Line 961  sub handler {
       &upfile_drop_add($r);        &upfile_drop_add($r);
           }            }
       }        }
   # ------------------------------------------------------------------ Phase four
         if ($ENV{'form.phase'} eq 'four') {
     &drop_student_list($r);
         }
   # ------------------------------------------------------------------ Phase four
         if ($ENV{'form.phase'} eq 'five') {
     &enroll_single_student($r);
         }
 # ------------------------------------------------------------------------- End  # ------------------------------------------------------------------------- End
       $r->print('</form></body></html>');        $r->print('</form></body></html>');
    } else {     } else {

Removed from v.1.10  
changed lines
  Added in v.1.14


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