Diff for /loncom/interface/Attic/londropadd.pm between versions 1.51 and 1.53

version 1.51, 2002/09/18 14:17:47 version 1.53, 2002/09/25 16:16:19
Line 773  END Line 773  END
     } 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',$student_array,$student_data);              &show_class_list($r,'view','modify','modifystudent',
                                'any',$student_array,$student_data);
         } else {          } else {
             &show_class_list($r,'view','aboutme',$student_array,$student_data);              &show_class_list($r,'view','aboutme','classlist',
                                'any',$student_array,$student_data);
         }          }
     }      }
 }  }
Line 788  sub print_csv_classlist { Line 790  sub print_csv_classlist {
     if (! scalar(@$student_array)) {      if (! scalar(@$student_array)) {
         $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',$student_array,$student_data);          &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,$students,$student_data)=@_;      my ($r,$mode,$linkto,$action,$statusmode,$students,$s_data)=@_;
     my $cid=$ENV{'request.course.id'};      my $cid=$ENV{'request.course.id'};
       &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
                                               ['sortby']);
       my $sortby = $ENV{'form.sortby'};
       if ($sortby !~ /^(username|domain|section|fullname|id)$/) {
           $sortby = 'username';
       }
     # Print out header       # Print out header 
     if ($mode eq 'view') {      if ($mode eq 'view') {
         if ($linkto eq 'aboutme') {          if ($linkto eq 'aboutme') {
Line 804  sub show_class_list { Line 812  sub show_class_list {
             $r->print('Select a user name to modify the students information');              $r->print('Select a user name to modify the students information');
         }          }
         $r->print(<<END);          $r->print(<<END);
   <input type="hidden" name="sortby" value="$sortby" />
 <p>  <p>
 <table border=2>  <table border=2>
 <tr><th>username</th><th>domain</th><th>ID</th>  <tr><th>
     <th>student name</th><th>section</th></tr>         <a href="/adm/dropadd?action=$action&sortby=username">username</a>
       </th><th>
          <a href="/adm/dropadd?action=$action&sortby=domain">domain</a>
       </th><th>
          <a href="/adm/dropadd?action=$action&sortby=id">ID</a>
       </th><th>
          <a href="/adm/dropadd?action=$action&sortby=fullname">student name</a>
       </th><th>
          <a href="/adm/dropadd?action=$action&sortby=section">section</a>
       </th>
   </tr>
 END  END
     } elsif ($mode eq 'csv') {      } elsif ($mode eq 'csv') {
         $r->print('"'.join('","',("username","domain","ID","student name",          $r->print('"'.join('","',("username","domain","ID","student name",
                                   "section")).'"'."\n");                                    "section")).'"'."\n");
     }      }
     foreach my $student (@$students) {      my @Sorted_Students = sort {
         my $username = $student_data->{$student.':username'};              lc($s_data->{$a.':'.$sortby})  cmp lc($s_data->{$b.':'.$sortby})
         my $domain   = $student_data->{$student.':domain'};                  ||
         my $section  = $student_data->{$student.':section'};              lc($s_data->{$a.':username'}) cmp lc($s_data->{$b.':username'})
         my $name     = $student_data->{$student.':fullname'};                  ||
         my $status   = $student_data->{$student.':Status'};              lc($s_data->{$a.':domain'})   cmp lc($s_data->{$b.':domain'})
         my $id       = $student_data->{$student.':id'};          } @$students;
         next if ($status ne 'Active');      foreach my $student (@Sorted_Students) {
           my $error;
           if (exists($s_data->{$student.':error'})) {
               $error = $s_data->{$student.':error'};
           }
           if ($error) {
               $r->print('<tr><td colspan="6">'.
                         '<font color="#FF8888">Error</font>'.
                         'Error retrieving data for '.
                         join('@',split(/:/,$student)).
                         ', '.$error.'</td></tr>'."\n");
               next;
           }
           my $username = $s_data->{$student.':username'};
           my $domain   = $s_data->{$student.':domain'};
           my $section  = $s_data->{$student.':section'};
           my $name     = $s_data->{$student.':fullname'};
           my $status   = $s_data->{$student.':Status'};
           my $id       = $s_data->{$student.':id'};
           next if (($statusmode ne 'any') && ($status ne $statusmode));
         if ($mode eq 'view') {          if ($mode eq 'view') {
             $r->print("<tr>\n    <td>\n        ");              $r->print("<tr>\n    <td>\n        ");
             if ($linkto eq 'nothing') {              if ($linkto eq 'nothing') {
Line 832  END Line 870  END
             } elsif ($linkto eq 'modify') {              } elsif ($linkto eq 'modify') {
                 $r->print('<a href="/adm/dropadd?action=modifystudent'.                  $r->print('<a href="/adm/dropadd?action=modifystudent'.
                           '&state=selected'.'&sname='.$username.                            '&state=selected'.'&sname='.$username.
                           '&sdom='.$domain.'">'.$username."</a>\n");                            '&sdom='.$domain.'&sortby='.$sortby.'">'.
                             $username."</a>\n");
             }              }
             $r->print(<<"END");              $r->print(<<"END");
     </td>      </td>
Line 864  END Line 903  END
 sub print_modify_student_form {  sub print_modify_student_form {
     my $r = shift();      my $r = shift();
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
                                             ['sdom','sname']);                                              ['sdom','sname','sortby']);    
           my $sname  = $ENV{'form.sname'};
     my $sname = $ENV{'form.sname'};      my $sdom   = $ENV{'form.sdom'};
     my $sdom  = $ENV{'form.sdom'};      my $sortby = $ENV{'form.sortby'};
     # 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 894  sub print_modify_student_form { Line 933  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" />
 <input type="hidden" name="state"  value="done" />  <input type="hidden" name="state"   value="done" />
   <input type="hidden" name="sortby"  value="$sortby" />
 <h2>Modify Enrollment for $info{'firstname'} $info{'middlename'}   <h2>Modify Enrollment for $info{'firstname'} $info{'middlename'} 
 $info{'lastname'} $info{'generation'}, $sname\@$sdom</h2>  $info{'lastname'} $info{'generation'}, $sname\@$sdom</h2>
 <p>  <p>
Line 911  $info{'lastname'} $info{'generation'}, $ Line 956  $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>
   <input type="checkbox" name="forceid" > 
   Disable ID/Student Number Safeguard and Force Change of Conflicting IDs
   (only do if you know what you are doing)
   </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 929  END Line 980  END
 #  #
 sub modify_single_student {  sub modify_single_student {
     my $r = shift;      my $r = shift;
     # make sure user can modify student data?      # Get the 'sortby' variable so the user does not need to re-sort
       my $sortby = $ENV{'form.sortby'};
       #
       # We always need this information
       my $slogin     = $ENV{'form.slogin'};
       my $sdom       = $ENV{'form.sdomain'};
       #
       # Get the old data
       my %old=&Apache::lonnet::get('environment',
                                    ['firstname','middlename',
                                     'lastname','generation','id'],
                                    $sdom, $slogin);
       my ($tmp) = keys(%old);
       if ($tmp =~ /^(con_lost|error|no_such_host)/i) {
           $r->print("There was an error determining the environment values ".
                     " for $slogin \@ $sdom.");
           return;
       }
       undef $tmp;
       #
       # Get the new data
     my $firstname  = $ENV{'form.firstname'};      my $firstname  = $ENV{'form.firstname'};
     my $middlename = $ENV{'form.middlename'};      my $middlename = $ENV{'form.middlename'};
     my $lastname   = $ENV{'form.lastname'};      my $lastname   = $ENV{'form.lastname'};
     my $generation = $ENV{'form.generation'};      my $generation = $ENV{'form.generation'};
     my $section    = $ENV{'form.section'};      my $section    = $ENV{'form.section'};
     my $courseid   = $ENV{'request.course.id'};      my $courseid   = $ENV{'request.course.id'};
     my $sname      = $ENV{'form.slogin'};      my $sid        = $ENV{'form.id'};
     my $sdom       = $ENV{'form.sdomain'};  
     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',
                                                                time);                                                                 time);
     my $displayable_starttime = localtime($starttime);      my $displayable_starttime = localtime($starttime);
     my $displayable_endtime   = localtime($endtime);      my $displayable_endtime   = localtime($endtime);
       # 
       # check for forceid override
       if (($sid ne $old{'id'}) && (! exists($ENV{'form.forceid'}))) {
           $r->print("<font color=\"ff0000\">You changed the students id ".
                     " but did not disable the ID change safeguard.".
                     "  The students id will not be changed.</font>");
           $sid = $old{'id'};
       }
       #
     # 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 $slogin \@ $sdom </h2>
 <h3>Student Information</h3>  <h3>Student Information</h3>
 <table>  <table rules="rows" border="1" cellpadding="3" >
 <tr><td>First name  </td><td> $firstname  </td></tr>  <tr>
 <tr><td>Middle name </td><td> $middlename </td></tr>      <th> Field </th>
 <tr><td>Last name   </td><td> $lastname   </td></tr>      <th> Old Value </th>
 <tr><td>Generation  </td><td> $generation </td></tr>      <th> New Value </th>
   </tr>
   <tr>
       <td> <b>First name</b> </td>
       <td> $old{'firstname'} </td>
       <td> $firstname </td>
   </tr><tr>
       <td> <b>Middle name</b> </td>
       <td> $old{'middlename'} </td>
       <td> $middlename </td>
   </tr><tr>
       <td> <b>Last name</b> </td>
       <td> $old{'lastname'} </td>
       <td> $lastname </td>
   </tr><tr>
       <td> <b>Generation</b> </td>
       <td> $old{'generation'} </td>
       <td> $generation </td>
   </tr><tr>
       <td> <b>ID</b> </td>
       <td> $old{'id'} </td>
       <td> $sid </td>
   </tr>
 </table>  </table>
 <h3>Role Information</h3>  <h3>Role Information</h3>
 <table>  <table>
Line 960  Modifying data for user: $sname \@ $sdom Line 1061  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      #
     my $roleresults = 'refused';      # Send request(s) to modify data
     #my $roleresults = &Apache::lonnet::assignrole($sdom,$sname,      my $roleresults = &Apache::lonnet::modifystudent
     #                                              $courseid.'/'.$section,          ($sdom,$slogin,$sid,undef,undef,$firstname,$middlename,$lastname,
     #                                              'st',           $generation,$section,$endtime,$starttime,$ENV{'form.forceid'});
     #                                              $endtime,$starttime);      if ($roleresults eq '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.  You do not appear to have ".
                     "sufficient authority to change student information.");
     } 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);
           &Apache::lonnet::logthis("londropadd:failed attempt to modify student".
                                    " data for ".$slogin." \@ ".$sdom." by ".
                                    $ENV{'user.name'}." \@ ".$ENV{'user.domain'}.
                                    ":".$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&sortby=$sortby">Modify another students data</a>
 </body></html>  </body></html>
 END  END
     return;      return;
Line 1019  sub get_enrollment_data { Line 1129  sub get_enrollment_data {
   
 # =================================================== Show student list to drop  # =================================================== Show student list to drop
 sub show_drop_list {  sub show_drop_list {
     my ($students,$student_data,$r)=@_;      my ($students,$s_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" />
Line 1042  function uncheckAll(field) { Line 1152  function uncheckAll(field) {
     <th>ID</th><th>student name</th><th>section</th></tr>      <th>ID</th><th>student name</th><th>section</th></tr>
 END  END
     foreach my $student (@$students) {      foreach my $student (@$students) {
         my $username = $student_data->{$student.':username'};          my $error;
         my $domain   = $student_data->{$student.':domain'};          if (exists($s_data->{$student.':error'})) {
         my $section  = $student_data->{$student.':section'};              $error = $s_data->{$student.':error'};
         my $name     = $student_data->{$student.':fullname'};          }
         my $status   = $student_data->{$student.':Status'};          if ($error) {
         my $id       = $student_data->{$student.':id'};              $r->print('<tr><td colspan="6">'.
                         '<font color="#FF8888">Error</font>'.
                         'Error retrieving data for '.
                         join('@',split(/:/,$student)).
                         ', '.$error.'</td></tr>'."\n");
               next;
           }
           my $username = $s_data->{$student.':username'};
           my $domain   = $s_data->{$student.':domain'};
           my $section  = $s_data->{$student.':section'};
           my $name     = $s_data->{$student.':fullname'};
           my $status   = $s_data->{$student.':Status'};
           my $id       = $s_data->{$student.':id'};
         next if ($status ne 'Active');          next if ($status ne 'Active');
         #          #
         $r->print(<<"END");          $r->print(<<"END");

Removed from v.1.51  
changed lines
  Added in v.1.53


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