Diff for /loncom/interface/lonselstudent.pm between versions 1.4 and 1.11

version 1.4, 2006/05/17 15:04:42 version 1.11, 2007/11/01 20:04:17
Line 28 Line 28
   
 package Apache::lonselstudent;  package Apache::lonselstudent;
 use     Apache::lonnet;  use     Apache::lonnet;
 use     Apache::loncoursedata;  use     Apache::lonlocal;
 use     HTML::Entities;  use     Apache::loncoursedata();
   use     HTML::Entities();
   
 #  #
 #  Utility function used when rendering <student> tags.  #  Utility function used when rendering <student> tags.
 #  This function produces a list references to four  #  This function produces a list references to four
 #  arrays:  #  arrays:
 #    (\@course_personel, \@current_members, \@expired_members, \@future_members)  #    (\@course_personel, \@current_members, \@expired_members, \@future_members)
 #    #
   #
   # Parameters;
   #
   #  restrict           - Optional.. if present and defined should be a section name.
   #                       The *_members arrays will then only contain people
   #                       in that section
   #
 # Where:  # Where:
 #    course_personnel - Each element of this array is itself a reference to an array  #    course_personnel - Each element of this array is itself a reference to an array
 #                      containing information about a member of the course staff.  #                      containing information about a member of the course staff.
Line 66  use     HTML::Entities; Line 74  use     HTML::Entities;
 #       [4]    username:domain of the user.  #       [4]    username:domain of the user.
 #  #
 sub get_people_in_class {  sub get_people_in_class {
       my ($section_restriction) = @_;
     my %coursepersonnel = &Apache::lonnet::get_course_adv_roles();      my %coursepersonnel = &Apache::lonnet::get_course_adv_roles();
     #      #
     #  Enumerate the course_personnel.      #  Enumerate the course_personnel.
     #      #
     my @course_personnel;      my @course_personnel;
     for (sort(keys(%coursepersonnel))) {      for my $role (sort(keys(%coursepersonnel))) {
  for my $role (split(/,/, $coursepersonnel{$_})) {   # extract the names so we can sort them
     # extract the names so we can sort them   my @people;
     my @people;   for my $person (split(/,/, $coursepersonnel{$role})) {
           my ($uname,$domain) = split(/:/, $person);
     for (split(/,/, $role)) {      push(@people, [&Apache::loncommon::plainname($uname,$domain),
  push(@people, [split(/:/, $role)]);     $uname,$domain]);
     }   }
        @people = sort { $a->[0] cmp $b->[0] } (@people);
     @people = sort { $a->[0] cmp $b->[0] } (@people);  
           
     for my $person (@people) {   for my $person (@people) {
  push(@course_personnel, [join(':', @$person), $person->[0], '', $_]);      push(@course_personnel, [join(':', $person->[1],$person->[2]), 
     }       $person->[0], '', '', $role]);
  }   }
     }      }
     #  Students must be split into the three categories:      #  Students must be split into the three categories:
Line 103  sub get_people_in_class { Line 111  sub get_people_in_class {
   
     my $classlist = &Apache::loncoursedata::get_classlist();      my $classlist = &Apache::loncoursedata::get_classlist();
     my @keys = keys(%{$classlist});      my @keys = keys(%{$classlist});
     # Sort by: Section, name      # Sort by: fullname, username
     @keys = sort {      @keys = sort {
         if ($classlist->{$a}->[$section] ne $classlist->{$b}->[$section]) {   lc($classlist->{$a}[$fullname]) cmp lc($classlist->{$b}[$fullname]) ||
             return $classlist->{$a}->[$section] cmp $classlist->{$b}->[$section];   lc($a) cmp lc($b)
         }  
         return $classlist->{$a}->[$fullname] cmp $classlist->{$b}->[$fullname];  
     } (@keys);      } (@keys);
     
   
   
   
     for (@keys) {      for my $user (@keys) {
    if (!$section_restriction || 
  if ( $classlist->{$_}->[$status] eq      ($section_restriction eq $classlist->{$user}->[$section])) {
     'Active') {  
     push(@current_members, [$_, $classlist->{$_}->[$fullname],   
      $classlist->{$_}->[$section],  
      $classlist->{$_}->[$status], 'Student']);  
  } else {  
     #  Need to figure out if this user is future or  
     #  Expired... If the start date is in the future  
     #  the user is future...else expired.  
           
     my $now = time;      if ( $classlist->{$user}->[$status] eq
     if ($classlist->{$_}->[$start_date] > $now) {   'Active') {
  push(@future_members, [$_, $classlist->{$_}->[$fullname],   push(@current_members, [$user, $classlist->{$user}->[$fullname], 
  $classlist->{$_}->[$section],   $classlist->{$user}->[$section],
  "Future", "Student"]);   $classlist->{$user}->[$status], 'Student']);
     } else {      } else {
  push(@expired_members, [$_, $classlist->{$_}->[$fullname],   #  Need to figure out if this user is future or
  $classlist->{$_}->[$section],   #  Expired... If the start date is in the future
  "Expired", "Student"]);   #  the user is future...else expired.
   
    my $now = time;
    if ($classlist->{$user}->[$start_date] > $now) {
       push(@future_members, [$user, $classlist->{$user}->[$fullname],
      $classlist->{$user}->[$section],
      "Future", "Student"]);
    } else {
       push(@expired_members, [$user,
       $classlist->{$user}->[$fullname],
       $classlist->{$user}->[$section],
       "Expired", "Student"]);
    }
   
     }      }
   
  }   }
     }      }
     return (\@course_personnel,       return (\@course_personnel, 
Line 177  sub render_student_list { Line 187  sub render_student_list {
   
     my $result = "";      my $result = "";
   
       # no students so no output
       return if (!@$students);
   
     if ($javascript && $multiselect) {      if ($javascript && $multiselect) {
         $result .= <<SCRIPT;          $result .= <<SCRIPT;
 <script type="text/javascript">  <script type="text/javascript">
Line 258  sub render_student_list { Line 271  sub render_student_list {
  if (elem != null) {   if (elem != null) {
     for (k = 0; k < elem.length; k++) {      for (k = 0; k < elem.length; k++) {
  if (elem.options[k].selected) {   if (elem.options[k].selected) {
     what = elem.options[k].text;      what = elem.options[k].value;
     if (what == 'All Students') {      if (what == 'allstudents') {
  setAllStudents(value, which);   setAllStudents(value, which);
     } else if (what == 'All Course Personnel') {      } else if (what == 'allpersonnel') {
  setAllCoursePersonnel(value, which);   setAllCoursePersonnel(value, which);
     } else if (what == 'No Section') {      } else if (what == 'nosection') {
  setSection('',value, which);   setSection('',value, which);
     } else {      } else {
  setSection(what, value, which);   setSection(what, value, which);
Line 310  SCRIPT Line 323  SCRIPT
  }   }
  $result .= '<select multiple name="'.$formprefix   $result .= '<select multiple name="'.$formprefix
     .'.chosensections" size="'.$size.'">'."\n";      .'.chosensections" size="'.$size.'">'."\n";
  $result .= '<option name="allstudents">All Students</option>';   $result .= '<option value="allstudents">'.&mt('All Students').'</option>';
  $result .= '<option name="allpersonnel">All Course Personnel</option>';   $result .= '<option value="allpersonnel">'.&mt('All Course Personnel').'</option>';
  $result .= '<option name="nosection">No Section</option>';   $result .= '<option value="nosection">'.&mt('No Section').'</option>';
  $result .= "\n";   $result .= "\n";
  foreach my $sec (sort {lc($a) cmp lc($b)} (keys(%sections))) {   foreach my $sec (sort {lc($a) cmp lc($b)} (keys(%sections))) {
     $result .= '<option name="'.$sec.'">'.$sec.'</option>'."\n";      $result .= '<option name="'.$sec.'">'.$sec.'</option>'."\n";
  }   }
  $result .= '</td><td valign="top">';   $result .= '</td><td valign="top">';
  $result .= '<input type="button" name="'.$formprefix.'.select" value="Select" onclick='   $result .= '<input type="button" name="'.$formprefix.'.select" value="'.'Select" onclick='
     ."'selectSections(\"$formprefix.chosensections\", \"$formprefix\")'".' /></td>';      ."'selectSections(\"$formprefix.chosensections\", \"$formprefix\")'".' /></td>';
  $result .= '<td valign="top"><input type="button" name="'.$formprefix   $result .= '<td valign="top"><input type="button" name="'.$formprefix
     .'.unselect" value="Unselect"  onclick='.      .'.unselect" value="'.&mt('Unselect').'"  onclick='.
     "'unselectSections(\"$formprefix.chosensections\", \"$formprefix\")' ".' /></td></tr></table>';      "'unselectSections(\"$formprefix.chosensections\", \"$formprefix\")' ".' /></td></tr></table>';
     }      }
   
Line 332  SCRIPT Line 345  SCRIPT
   
     $result .= &Apache::loncommon::start_data_table();      $result .= &Apache::loncommon::start_data_table();
     $result .= &Apache::loncommon::start_data_table_header_row();      $result .= &Apache::loncommon::start_data_table_header_row();
     $result .= '<th></th><th>Name</th>'."\n";      $result .= '<th></th><th>'.&mt('Name').'</th>'."\n";
     $result .= '    <th>Section</th>'."\n";      $result .= '    <th>'.&mt('Section').'</th>'."\n";
     $result .= '    <th>Status</th>'."\n";      $result .= '    <th>'.&mt('Status').'</th>'."\n";
     $result .= '    <th>Role</th>'."\n";      $result .= '    <th>'.&mt('Role').'</th>'."\n";
     $result .= '    <th>Username : Domain</th>'."\n";      $result .= '    <th>'.&mt('Username : Domain').'</th>'."\n";
     $result .= &Apache::loncommon::end_data_table_header_row();      $result .= &Apache::loncommon::end_data_table_header_row();
   
     my $input_type;      my $input_type;
Line 350  SCRIPT Line 363  SCRIPT
     for my $student (@$students) {      for my $student (@$students) {
  $result .= &Apache::loncommon::start_data_table_row().   $result .= &Apache::loncommon::start_data_table_row().
     '<td><input type="'.$input_type.'"  name="'.      '<td><input type="'.$input_type.'"  name="'.
     $resultname.".forminput".'"';      $resultname."_forminput".'"';
  my $user    = $student->[0];   my $user    = $student->[0];
   
  # Figure out which students are checked by default...   # Figure out which students are checked by default...

Removed from v.1.4  
changed lines
  Added in v.1.11


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