Diff for /loncom/interface/Attic/londropadd.pm between versions 1.50 and 1.52

version 1.50, 2002/09/17 15:52:44 version 1.52, 2002/09/24 18:24:43
Line 728  END Line 728  END
   
 # =================================================== get the current classlist  # =================================================== get the current classlist
 sub get_current_classlist {  sub get_current_classlist {
     my ($domain,$identifier) = @_;      my $r = shift;
     # domain is the domain the class is being run in      # Call DownloadClasslist
     # identifier is the internal, unique identifier for the class.      my $cid = $ENV{'request.course.id'};
     my %currentlist=();      my $c = $r->connection;
     my $now=time;      my $classlisthash = &Apache::loncoursedata::DownloadClasslist
     my %results=&Apache::lonnet::dump('classlist',$domain,$identifier);          ($cid,'Not downloaded',$c);
     my ($tmp) = keys(%results);      # Call ProcessClasslist
     if ($tmp !~ /^(con_lost|error|no_such_host)/i) {      my %cache;
         foreach my $student (keys(%results)) {      my @students = &Apache::loncoursedata::ProcessClasslist(\%cache,
             # Extract the start and end dates                                                              $classlisthash,
             my ($end,$start)=split(/\:/,$results{$student});                                                              $cid,$c);
             # If the class isn't over, put it in the list      return (\@students,\%cache);
             unless (($end) && ($now>$end)) {   
                 $currentlist{$student}=1;  
             }  
         }  
         return (undef,%currentlist);  
     } else {  
         $tmp =~ s/^error://;  
         return ($tmp,undef);  
     }  
 }  }
   
 # ========================================================= Menu Phase Two Drop  # ========================================================= Menu Phase Two Drop
 sub menu_phase_two_drop {  sub print_drop_menu {
     my $r=shift;      my $r=shift;
     $r->print("<h3>Drop Students</h3>");      $r->print("<h3>Drop Students</h3>");
     my $cid=$ENV{'request.course.id'};      my $cid=$ENV{'request.course.id'};
     my ($error,%currentlist)=&get_current_classlist      my ($student_array,$student_data)=&get_current_classlist($r);
         ($ENV{'course.'.$cid.'.domain'},$ENV{'course.'.$cid.'.num'});      if (! scalar(@$student_array)) {
     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");          $r->print("There are no students currently enrolled.\n");
     } else {          return;
         # Print out the available choices  
         &show_drop_list($r,%currentlist);  
     }      }
       # Print out the available choices
       &show_drop_list($student_array,$student_data,$r);
       return;
 }  }
   
 # ============================================== view classlist  # ============================================== view classlist
Line 782  sub print_html_classlist { Line 767  sub print_html_classlist {
 </p>  </p>
 END  END
     my $cid=$ENV{'request.course.id'};      my $cid=$ENV{'request.course.id'};
     my ($error,%currentlist)=&get_current_classlist      my ($student_array,$student_data)=&get_current_classlist($r);
         ($ENV{'course.'.$cid.'.domain'},$ENV{'course.'.$cid.'.num'});      if (! scalar(@$student_array)) {
     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");          $r->print("There are no students currently enrolled.\n");
     } 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',%currentlist);              &show_class_list($r,'view','modify','any',$student_array,$student_data);
         } else {          } else {
             &show_class_list($r,'view','aboutme',%currentlist);              &show_class_list($r,'view','aboutme','any',$student_array,$student_data);
         }          }
     }      }
 }  }
Line 806  END Line 784  END
 sub print_csv_classlist {  sub print_csv_classlist {
     my $r=shift;      my $r=shift;
     my $cid=$ENV{'request.course.id'};      my $cid=$ENV{'request.course.id'};
     my ($error,%currentlist)=&get_current_classlist      my ($student_array,$student_data)=&get_current_classlist($r);
         ($ENV{'course.'.$cid.'.domain'},$ENV{'course.'.$cid.'.num'});      if (! scalar(@$student_array)) {
     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");          $r->print("There are no students currently enrolled.\n");
     } else {      } else {
         &show_class_list($r,'csv','nolink',%currentlist);          &show_class_list($r,'csv','nolink','any',$student_array,$student_data);
     }      }
 }  }
   
 # =================================================== Show student list to drop  # =================================================== Show student list to drop
 sub show_class_list {  sub show_class_list {
     my ($r,$mode,$linkto,%currentlist)=@_;      my ($r,$mode,$linkto,$statusmode,$students,$student_data)=@_;
     my $cid=$ENV{'request.course.id'};      my $cid=$ENV{'request.course.id'};
     # Print out header       # Print out header 
     if ($mode eq 'view') {      if ($mode eq 'view') {
Line 836  sub show_class_list { Line 807  sub show_class_list {
 <p>  <p>
 <table border=2>  <table border=2>
 <tr><th>username</th><th>domain</th><th>ID</th>  <tr><th>username</th><th>domain</th><th>ID</th>
     <th>student name</th><th>generation</th><th>section</th></tr>      <th>student name</th><th>section</th></tr>
 END  END
     } elsif ($mode eq 'csv') {      } elsif ($mode eq 'csv') {
         $r->print('"'.join('","',("username","domain","ID","last name",          $r->print('"'.join('","',("username","domain","ID","student name",
                                   "first name","middle name","generation",  
                                   "section")).'"'."\n");                                    "section")).'"'."\n");
     }      }
     foreach (sort keys %currentlist) {      foreach my $student (@$students) {
         my ($sname,$sdom)=split(/\:/,$_);          my $error;
         my %reply=&Apache::lonnet::idrget($sdom,$sname);          if (exists($student_data->{$student.':error'})) {
         my $ssec=&Apache::lonnet::usection($sdom,$sname,$cid);              $error = $student_data->{$student.':error'};
         my %info=&Apache::lonnet::get('environment',          }
                                       ['firstname','middlename',          if ($error) {
                                        'lastname','generation'],              $r->print('<tr><td colspan="6">'.
                                       $sdom, $sname);                        '<font color="#FF8888">Error</font>'.
         my ($tmp) = keys(%info);                        'Error retrieving data for '.
         if ($tmp =~ /^(con_lost|error|no_such_host)/i) {                        join('@',split(/:/,$student)).
             if ($mode eq 'view') {                        ', '.$error.'</td></tr>'."\n");
                 $r->print('<tr><td colspan="6"><font color="red">'.              next;
                     'Internal error: unable to get environment '.          }
                         'for '.$sname.' in domain '.$sdom.'</font></td></tr>');          my $username = $student_data->{$student.':username'};
             } else {          my $domain   = $student_data->{$student.':domain'};
                 $r->print('"Internal error: unable to get environment for '.          my $section  = $student_data->{$student.':section'};
                           $sname.' in domain '.$sdom.'"');          my $name     = $student_data->{$student.':fullname'};
           my $status   = $student_data->{$student.':Status'};
           my $id       = $student_data->{$student.':id'};
           next if (($statusmode ne 'any') && ($status ne $statusmode));
           if ($mode eq 'view') {
               $r->print("<tr>\n    <td>\n        ");
               if ($linkto eq 'nothing') {
                   $r->print($username);
               } elsif ($linkto eq 'aboutme') {
                   $r->print(&Apache::loncommon::aboutmewrapper($username,
                                                                $username,
                                                                $domain));
               } elsif ($linkto eq 'modify') {
                   $r->print('<a href="/adm/dropadd?action=modifystudent'.
                             '&state=selected'.'&sname='.$username.
                             '&sdom='.$domain.'">'.$username."</a>\n");
             }              }
         } else {              $r->print(<<"END");
             if ($mode eq 'view') {  
                 $r->print("<tr>\n    <td>\n        ");  
                 if ($linkto eq 'nothing') {  
                     $r->print($sname);  
                 } elsif ($linkto eq 'aboutme') {  
                     $r->print(&Apache::loncommon::aboutmewrapper($sname,$sname,  
                                                                  $sdom));  
                 } elsif ($linkto eq 'modify') {  
                     $r->print('<a href="/adm/dropadd?action=modifystudent'.  
                               '&state=selected'.'&sname='.$sname.  
                               '&sdom='.$sdom.'">'.$sname."</a>\n");  
                 }  
                 $r->print(<<"END");  
     </td>      </td>
     <td>$sdom</td>      <td>$domain</td>
     <td>$reply{$sname}</td>      <td>$id</td>
     <td>$info{'lastname'}, $info{'firstname'} $info{'middlename'}</td>      <td>$name</td>
     <td>$info{'generation'}</td>      <td>$section</td>
     <td>$ssec</td>  
 </tr>  </tr>
 END  END
             } elsif ($mode eq 'csv') {          } elsif ($mode eq 'csv') {
                 # no need to bother with $linkto              # no need to bother with $linkto
                 my @line = ();              my @line = ();
                 foreach ($sname,$sdom,$reply{$sname},              foreach ($username,$domain,$id,$name,$section) {
                          $info{'lastname'},$info{'firstname'},                  push @line,&Apache::loncommon::csv_translate($_);
                          $info{'middlename'},$info{'generation'},$ssec) {  
                     push @line,&Apache::loncommon::csv_translate($_);  
                 }  
                 my $tmp = $";  
                 $" = '","';  
                 $r->print("\"@line\"\n");  
                 $" = $tmp;  
             }              }
               my $tmp = $";
               $" = '","';
               $r->print("\"@line\"\n");
               $" = $tmp;
         }          }
     }      }
     $r->print('</table><br>') if ($mode eq 'view');      $r->print('</table><br>') if ($mode eq 'view');
Line 915  sub print_modify_student_form { Line 883  sub print_modify_student_form {
     # determine the students name information      # determine the students name information
     my %info=&Apache::lonnet::get('environment',      my %info=&Apache::lonnet::get('environment',
                                   ['firstname','middlename',                                    ['firstname','middlename',
                                    'lastname','generation'],                                     'lastname','generation','id'],
                                   $sdom, $sname);                                    $sdom, $sname);
     my ($tmp) = keys(%info);      my ($tmp) = keys(%info);
     if ($tmp =~ /^(con_lost|error|no_such_host)/i) {      if ($tmp =~ /^(con_lost|error|no_such_host)/i) {
Line 938  sub print_modify_student_form { Line 906  sub print_modify_student_form {
                                                           $endtime);                                                            $endtime);
     # Make sure student is enrolled in course          # Make sure student is enrolled in course    
     $r->print(<<END);      $r->print(<<END);
   <p>
   <font size="+1">
   Only domain coordinators can change a users password.
   </font>
   </p>
 <input type="hidden" name="slogin"  value="$sname"  />  <input type="hidden" name="slogin"  value="$sname"  />
 <input type="hidden" name="sdomain" value="$sdom" />  <input type="hidden" name="sdomain" value="$sdom" />
 <input type="hidden" name="action"  value="modifystudent" />  <input type="hidden" name="action"  value="modifystudent" />
Line 955  $info{'lastname'} $info{'generation'}, $ Line 928  $info{'lastname'} $info{'generation'}, $
 <input type="text" name="generation" value="$info{'generation'}" /></td></tr>  <input type="text" name="generation" value="$info{'generation'}" /></td></tr>
 </table>  </table>
 </p><p>  </p><p>
   <b>Student ID</b>: <input type="text" name="id" value="$info{'id'}" size="12"/>
   </p><p>
 <b>Section</b>: <input type="text" name="section" value="$section" size="4"/>  <b>Section</b>: <input type="text" name="section" value="$section" size="4"/>
 </p><p>  </p><p>
 <table>  <table>
Line 982  sub modify_single_student { Line 957  sub modify_single_student {
     my $courseid   = $ENV{'request.course.id'};      my $courseid   = $ENV{'request.course.id'};
     my $sname      = $ENV{'form.slogin'};      my $sname      = $ENV{'form.slogin'};
     my $sdom       = $ENV{'form.sdomain'};      my $sdom       = $ENV{'form.sdomain'};
       my $sid        = $ENV{'form.id'};
     my $starttime = &Apache::lonhtmlcommon::get_date_from_form('startdate',      my $starttime = &Apache::lonhtmlcommon::get_date_from_form('startdate',
                                                                time);                                                                 time);
     my $endtime   = &Apache::lonhtmlcommon::get_date_from_form('enddate',      my $endtime   = &Apache::lonhtmlcommon::get_date_from_form('enddate',
Line 990  sub modify_single_student { Line 966  sub modify_single_student {
     my $displayable_endtime   = localtime($endtime);      my $displayable_endtime   = localtime($endtime);
     # talk to the user about what we are going to do      # talk to the user about what we are going to do
     $r->print(<<END);      $r->print(<<END);
 Modifying data for user: $sname \@ $sdom <br />  <h2>Modifying data for user $sname \@ $sdom </h2>
 <h3>Student Information</h3>  <h3>Student Information</h3>
 <table>  <table>
 <tr><td>First name  </td><td> $firstname  </td></tr>  <tr><td>First name  </td><td> $firstname  </td></tr>
Line 1004  Modifying data for user: $sname \@ $sdom Line 980  Modifying data for user: $sname \@ $sdom
 <tr><td>Start Time  </td><td> $displayable_starttime </td></tr>  <tr><td>Start Time  </td><td> $displayable_starttime </td></tr>
 <tr><td>End Time    </td><td> $displayable_endtime   </td></tr>  <tr><td>End Time    </td><td> $displayable_endtime   </td></tr>
 </table>  </table>
   <p>
 END  END
     # send request(s) to modify data      # Send request(s) to modify data
     my $roleresults = 'refused';      #   The '1' in the call to modifystudent is to force the students 
     #my $roleresults = &Apache::lonnet::assignrole($sdom,$sname,      #   id to be changed.
     #                                              $courseid.'/'.$section,      my $roleresults = &Apache::lonnet::modifystudent
     #                                              'st',          ($sdom,$sname,$sid,undef,undef,$firstname,$middlename,$lastname,
     #                                              $endtime,$starttime);           $generation,$section,$endtime,$starttime,1);
     if ($roleresults =~/refused/) {      if ($roleresults =~/refused/) {
         $r->print("Your request to change the role information for this ".          $r->print("Your request to change the role information for this ".
                   "student was refused.");                    "student was refused.");
     } elsif ($roleresults !~ /ok/) {      } elsif ($roleresults !~ /ok/) {
         $r->print("An error occurred during the attempt to change the role".          $r->print("An error occurred during the attempt to change the role".
                   " information for this student.  The error reported was ".                    " information for this student.  <br />".
                     "The error reported was ".
                   $roleresults);                    $roleresults);
     } else { # everything is okay!      } else { # everything is okay!
         $r->print("Student role updated successfully.");          $r->print("Student information updated successfully. <br />".
                     "The student must log out and log in again to see ".
                     "these changes.");
     }      }
     #   
     $r->print(<<END);      $r->print(<<END);
   </p><p>
   <a href="/adm/dropadd?action=modifystudent">Modify another students data</a>
 </body></html>  </body></html>
 END  END
     return;      return;
Line 1063  sub get_enrollment_data { Line 1044  sub get_enrollment_data {
   
 # =================================================== Show student list to drop  # =================================================== Show student list to drop
 sub show_drop_list {  sub show_drop_list {
     my ($r,%currentlist)=@_;      my ($students,$student_data,$r)=@_;
     my $cid=$ENV{'request.course.id'};      my $cid=$ENV{'request.course.id'};
     $r->print(<<'END');      $r->print(<<'END');
 <input type="hidden" name="action" value="drop" />  <input type="hidden" name="action" value="drop" />
 <input type="hidden" name="state"  value="done" />  <input type="hidden" name="state"  value="done" />
 <script>  <script>
 function checkAll(field)  function checkAll(field) {
 {  
     for (i = 0; i < field.length; i++)      for (i = 0; i < field.length; i++)
         field[i].checked = true ;          field[i].checked = true ;
 }  }
   
 function uncheckAll(field)  function uncheckAll(field) {
 {  
     for (i = 0; i < field.length; i++)      for (i = 0; i < field.length; i++)
         field[i].checked = false ;          field[i].checked = false ;
 }  }
Line 1085  function uncheckAll(field) Line 1064  function uncheckAll(field)
 <input type="hidden" name="phase" value="four">  <input type="hidden" name="phase" value="four">
 <table border=2>  <table border=2>
 <tr><th>&nbsp;</th><th>username</th><th>domain</th>  <tr><th>&nbsp;</th><th>username</th><th>domain</th>
 <th>ID</th><th>student name</th><th>generation</th>      <th>ID</th><th>student name</th><th>section</th></tr>
 <th>section</th></tr>  
 END  END
     foreach (sort keys %currentlist) {      foreach my $student (@$students) {
         my ($sname,$sdom)=split(/\:/,$_);          my $error;
         my %reply=&Apache::lonnet::idrget($sdom,$sname);          if (exists($student_data->{$student.':error'})) {
         my $ssec=&Apache::lonnet::usection($sdom,$sname,$cid);              $error = $student_data->{$student.':error'};
         my %info=&Apache::lonnet::get('environment',          }
                                       ['firstname','middlename',          if ($error) {
                                        'lastname','generation'],              $r->print('<tr><td colspan="6">'.
                                       $sdom, $sname);                        '<font color="#FF8888">Error</font>'.
         my ($tmp) = keys(%info);                        'Error retrieving data for '.
         if ($tmp =~ /^(con_lost|error|no_such_host)/i) {                        join('@',split(/:/,$student)).
             $r->print('<tr><td colspan="7"><font color="red">'.                        ', '.$error.'</td></tr>'."\n");
                       'Internal error: unable to get environment '.              next;
                       'for '.$sname.' in domain '.$sdom.'</font></td></tr>');          }
         } else {          my $username = $student_data->{$student.':username'};
             $r->print(<<"END");          my $domain   = $student_data->{$student.':domain'};
           my $section  = $student_data->{$student.':section'};
           my $name     = $student_data->{$student.':fullname'};
           my $status   = $student_data->{$student.':Status'};
           my $id       = $student_data->{$student.':id'};
           next if ($status ne 'Active');
           #
           $r->print(<<"END");
 <tr>  <tr>
     <td><input type="checkbox" name="droplist" value="$_"></td>      <td><input type="checkbox" name="droplist" value="$student"></td>
     <td>$sname</td>      <td>$username</td>
     <td>$sdom</td>      <td>$domain</td>
     <td>$reply{$sname}</td>      <td>$id</td>
     <td>$info{'lastname'}, $info{'firstname'} $info{'middlename'}</td>      <td>$name</td>
     <td>$info{'generation'}</td>      <td>$section</td>
     <td>$ssec</td>  
 </tr>  </tr>
 END  END
         }  
     }      }
     $r->print('</table><br>');      $r->print('</table><br>');
     $r->print(<<"END");      $r->print(<<"END");
Line 1122  END Line 1105  END
 <input type="button" value="uncheck all" onclick="javascript:uncheckAll(document.studentform.droplist)">   <input type="button" value="uncheck all" onclick="javascript:uncheckAll(document.studentform.droplist)"> 
 <p><input type=submit value="Drop Students"></p>  <p><input type=submit value="Drop Students"></p>
 END  END
       return;
 }  }
   
 #  #
Line 1302  sub upfile_drop_add { Line 1286  sub upfile_drop_add {
         if ($ENV{'form.fullup'} eq 'yes') {          if ($ENV{'form.fullup'} eq 'yes') {
             $r->print('<h3>Dropping Students</h3>');              $r->print('<h3>Dropping Students</h3>');
             #  Get current classlist              #  Get current classlist
             my ($error,%currentlist)=&get_current_classlist              my ($error,%currentlist)=&get_current_classlist($r);
                 ($ENV{'course.'.$cid.'.domain'},  
                  $ENV{'course.'.$cid.'.num'});  
             if (defined($error)) {              if (defined($error)) {
                 $r->print('<pre>ERROR:$error</pre>');                  $r->print('<pre>ERROR:$error</pre>');
             }              }
Line 1470  sub handler { Line 1452  sub handler {
         }          }
     } elsif ($ENV{'form.action'} eq 'drop') {      } elsif ($ENV{'form.action'} eq 'drop') {
         if (! exists($ENV{'form.state'})) {          if (! exists($ENV{'form.state'})) {
             &menu_phase_two_drop($r);              &print_drop_menu($r);
         } elsif ($ENV{'form.state'} eq 'done') {          } elsif ($ENV{'form.state'} eq 'done') {
             &drop_student_list($r);              &drop_student_list($r);
         } else {          } else {

Removed from v.1.50  
changed lines
  Added in v.1.52


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