Diff for /loncom/interface/Attic/londropadd.pm between versions 1.37 and 1.45.6.2

version 1.37, 2002/05/01 20:54:10 version 1.45.6.2, 2002/09/13 18:59:53
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 129  sub domain_form { Line 129  sub domain_form {
         $select_menus{$dom}->{'default'}= 'default';          $select_menus{$dom}->{'default'}= 'default';
         $select_menus{$dom}->{'select2'}->{'default'} = 'default';          $select_menus{$dom}->{'select2'}->{'default'} = 'default';
         # Now build up the other items in the second menu          # Now build up the other items in the second menu
         my %servers = &Apache::loncommon::get_home_servers($dom);          my %servers = &Apache::loncommon::get_library_servers($dom);
         foreach my $server (keys(%servers)) {          foreach my $server (keys(%servers)) {
             $select_menus{$dom}->{'select2'}->{$server}               $select_menus{$dom}->{'select2'}->{$server} 
                                             = "$server $servers{$server}";                                              = "$server $servers{$server}";
Line 145  sub domain_form { Line 145  sub domain_form {
 sub menu_phase_one {  sub menu_phase_one {
     my $r=shift;      my $r=shift;
     my $upfile_select=&Apache::loncommon::upfile_select_html();      my $upfile_select=&Apache::loncommon::upfile_select_html();
       my $create_classlist_help = 
    &Apache::loncommon::help_open_topic("Course_Create_Class_List",
              "How do I create a class list from a spreadsheet");
       my $create_csv_help =
    &Apache::loncommon::help_open_topic("Course_Convert_To_CSV",
              "How do I create a CSV file from a spreadsheet");
     $r->print(<<ENDUPFORM);      $r->print(<<ENDUPFORM);
 <input type=hidden name=phase value=two>  <input type=hidden name=phase value=two>
 <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>  <br />
   $create_classlist_help <br />
   $create_csv_help
   
   <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 170  sub phase_two_header { Line 184  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 />
Line 312  function verify(vf) { Line 327  function verify(vf) {
     verify_message(vf,founduname,foundpwd,foundname,foundid,foundsec);      verify_message(vf,founduname,foundpwd,foundname,foundid,foundsec);
 }  }
   
   //
   // vf = this.form
   // tf = column number
   //
   // values of nw
   //
   // 0 = none
   // 1 = username
   // 2 = names (lastname, firstnames)
   // 3 = fname (firstname)
   // 4 = mname (middlename)
   // 5 = lname (lastname)
   // 6 = gen   (generation)
   // 7 = id
   // 8 = section
   // 9 = ipwd  (password)
   //
 function flip(vf,tf) {  function flip(vf,tf) {
    var nw=eval('vf.f'+tf+'.selectedIndex');     var nw=eval('vf.f'+tf+'.selectedIndex');
    var i;     var i;
      // make sure no other columns are labeled the same as this one
    for (i=0;i<=vf.nfields.value;i++) {     for (i=0;i<=vf.nfields.value;i++) {
       if ((i!=tf) && (eval('vf.f'+i+'.selectedIndex')==nw)) {        if ((i!=tf) && (eval('vf.f'+i+'.selectedIndex')==nw)) {
           eval('vf.f'+i+'.selectedIndex=0;')            eval('vf.f'+i+'.selectedIndex=0;')
       }        }
    }     }
    if (tf==1 && nw!=0) {     // If we set this to 'lastname, firstnames', clear out all the ones
       for (i=2;i<=5;i++) {     // set to 'fname','mname','lname','gen' (3,4,5,6) currently.
          eval('vf.f'+i+'.selectedIndex=0;')  
       }  
    }  
    if (nw==2) {     if (nw==2) {
       for (i=0;i<=vf.nfields.value;i++) {        for (i=0;i<=vf.nfields.value;i++) {
          if ((eval('vf.f'+i+'.selectedIndex')>=3) &&           if ((eval('vf.f'+i+'.selectedIndex')>=3) &&
Line 333  function flip(vf,tf) { Line 363  function flip(vf,tf) {
          }           }
       }        }
    }     }
      // If we set this to one of 'fname','mname','lname','gen' (3,4,5,6),
      // clear out any that are set to 'lastname, firstnames' (2)
    if ((nw>=3) && (nw<=6)) {     if ((nw>=3) && (nw<=6)) {
       for (i=0;i<=vf.nfields.value;i++) {        for (i=0;i<=vf.nfields.value;i++) {
          if (eval('vf.f'+i+'.selectedIndex')==2) {           if (eval('vf.f'+i+'.selectedIndex')==2) {
Line 340  function flip(vf,tf) { Line 372  function flip(vf,tf) {
          }           }
       }        }
    }     }
      // If we set the password, make the password form below correspond to 
      // the new value.
    if (nw==9) {     if (nw==9) {
        changed_radio('int',document.studentform);         changed_radio('int',document.studentform);
        set_auth_radio_buttons('int',document.studentform);         set_auth_radio_buttons('int',document.studentform);
Line 521  sub enroll_single_student { Line 555  sub enroll_single_student {
         if (lc($desiredhost) eq 'default') {          if (lc($desiredhost) eq 'default') {
             $desiredhost = undef;              $desiredhost = undef;
         } else {          } else {
             my %home_servers = &Apache::loncommon::get_home_servers($domain);              my %home_servers =&Apache::loncommon::get_library_servers($domain);
             if (! exists($home_servers{$desiredhost})) {              if (! exists($home_servers{$desiredhost})) {
                 $r->print('<font color="#ff0000">Error:</font>'.                  $r->print('<font color="#ff0000">Error:</font>'.
                           'Invalid home server specified');                            'Invalid home server specified');
Line 533  sub enroll_single_student { Line 567  sub enroll_single_student {
  my $amode='';   my $amode='';
         my $genpwd='';          my $genpwd='';
         if ($ENV{'form.login'} eq 'krb') {          if ($ENV{'form.login'} eq 'krb') {
            $amode='krb4';             $amode='krb';
      $amode.=$ENV{'form.krbver'};
            $genpwd=$ENV{'form.krbarg'};             $genpwd=$ENV{'form.krbarg'};
         } elsif ($ENV{'form.login'} eq 'int') {          } elsif ($ENV{'form.login'} eq 'int') {
            $amode='internal';             $amode='internal';
Line 570  sub enroll_single_student { Line 605  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 687  sub get_current_classlist { Line 723  sub get_current_classlist {
         }          }
         return (undef,%currentlist);          return (undef,%currentlist);
     } else {      } else {
           $tmp =~ s/^error://;
         return ($tmp,undef);          return ($tmp,undef);
     }      }
 }  }
Line 694  sub get_current_classlist { Line 731  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 708  sub menu_phase_two_drop { Line 749  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'};
       # Print out header 
       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') {
                   my @line = ();
                   foreach ($sname,$sdom,$reply{$sname},
                            $info{'lastname'},$info{'firstname'},
                            $info{'middlename'},$info{'generation'},$ssec) {
                       push @line,&Apache::loncommon::csv_translate($_);
                   }
                   my $tmp = $";
                   $" = '","';
                   $r->print("\"@line\"\n");
                   $" = $tmp;
               }
           }
       }
       $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 797  sub upfile_drop_add { Line 939  sub upfile_drop_add {
     if (lc($desiredhost) eq 'default') {      if (lc($desiredhost) eq 'default') {
         $desiredhost = undef;          $desiredhost = undef;
     } else {      } else {
         my %home_servers = &Apache::loncommon::get_home_servers($domain);          my %home_servers = &Apache::loncommon::get_library_servers($domain);
         if (! exists($home_servers{$desiredhost})) {          if (! exists($home_servers{$desiredhost})) {
             $r->print('<font color="#ff0000">Error:</font>'.              $r->print('<font color="#ff0000">Error:</font>'.
                       'Invalid home server specified');                        'Invalid home server specified');
Line 808  sub upfile_drop_add { Line 950  sub upfile_drop_add {
     my $amode  = '';      my $amode  = '';
     my $genpwd = '';      my $genpwd = '';
     if ($ENV{'form.login'} eq 'krb') {      if ($ENV{'form.login'} eq 'krb') {
         $amode='krb4';          $amode='krb';
    $amode.=$ENV{'form.krbver'};
         $genpwd=$ENV{'form.krbarg'};          $genpwd=$ENV{'form.krbarg'};
     } elsif ($ENV{'form.login'} eq 'int') {      } elsif ($ENV{'form.login'} eq 'int') {
         $amode='internal';          $amode='internal';
Line 980  sub handler { Line 1123  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 1003  sub handler { Line 1146  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 1020  sub handler { Line 1167  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.37  
changed lines
  Added in v.1.45.6.2


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