Diff for /loncom/interface/lonselstudent.pm between versions 1.8 and 1.16

version 1.8, 2006/06/30 01:43:06 version 1.16, 2016/10/22 01:53:27
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.
Line 60  use     HTML::Entities; Line 61  use     HTML::Entities;
 #  Course personnel elements include:  #  Course personnel elements include:
 #       [0]    Last, First of the user.  #       [0]    Last, First of the user.
 #       [1]    Role held by the user.  #       [1]    Role held by the user.
 #       [2]    Empty.  #       [2]    Section associated with role.
 #       [3]    Empty  #       [3]    Empty
 #       [4]    username:domain of the user.  #       [4]    username:domain of the user.
 #  #
Line 73  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 ($section_restriction,$personnel_section) = @_;
     my %coursepersonnel = &Apache::lonnet::get_course_adv_roles();      my %coursepersonnel = &Apache::lonnet::get_course_adv_roles($env{'request.course.id'},1);
       my $crstype = &Apache::loncommon::course_type();
     #      #
     #  Enumerate the course_personnel.      #  Enumerate the course_personnel.
     #      #
     my @course_personnel;      my @course_personnel;
     for my $role (sort(keys(%coursepersonnel))) {      foreach my $key (sort(keys(%coursepersonnel))) {
           my ($role,$section) = split(/:/,$key);
  # extract the names so we can sort them   # extract the names so we can sort them
           next if (($personnel_section ne '') && ($personnel_section ne $section)); 
  my @people;   my @people;
  for my $person (split(/,/, $coursepersonnel{$role})) {          
    foreach my $person (split(/,/, $coursepersonnel{$key})) {
     my ($uname,$domain) = split(/:/, $person);      my ($uname,$domain) = split(/:/, $person);
     push(@people, [&Apache::loncommon::plainname($uname,$domain),      push(@people, [&Apache::loncommon::plainname($uname,$domain),
    $uname,$domain]);     $uname,$domain]);
  }   }
  @people = sort { $a->[0] cmp $b->[0] } (@people);   @people = sort { $a->[0] cmp $b->[0] } (@people);
           
  for my $person (@people) {   foreach my $person (@people) {
     push(@course_personnel, [join(':', $person->[1],$person->[2]),       push(@course_personnel, [join(':', $person->[1],$person->[2]), 
      $person->[0], '', '', $role]);       $person->[0], $section, 'Active',
                                        &Apache::lonnet::plaintext($role)]);
  }   }
     }      }
     #  Students must be split into the three categories:      #  Students must be split into the three categories:
Line 110  sub get_people_in_class { Line 116  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 {
  lc($classlist->{$a}[$section])  cmp lc($classlist->{$b}[$section])  ||  
  lc($classlist->{$a}[$fullname]) cmp lc($classlist->{$b}[$fullname]) ||   lc($classlist->{$a}[$fullname]) cmp lc($classlist->{$b}[$fullname]) ||
  lc($a) cmp lc($b)   lc($a) cmp lc($b)
     } (@keys);      } (@keys);
Line 178  sub get_people_in_class { Line 183  sub get_people_in_class {
 #                     This should be true for the first call for a page  #                     This should be true for the first call for a page
 #                     and false for all other calls... only matters if  #                     and false for all other calls... only matters if
 #                     multiselect is true.  #                     multiselect is true.
   #     $context      - If email, do not include <br /><hr /> tags at the end
   #                     of the data table.
 #  Returns:  #  Returns:
 #     HTML  text to add to the rendering of the helper.  #     HTML  text to add to the rendering of the helper.
 #  #
 sub render_student_list {  sub render_student_list {
     my ($students, $formname, $formprefix, $defaultusers,      my ($students, $formname, $formprefix, $defaultusers,
  $multiselect, $resultname, $javascript) = @_;   $multiselect, $resultname, $javascript, $context) = @_;
   
     my $result = "";      my $result = "";
   
Line 195  sub render_student_list { Line 202  sub render_student_list {
 <script type="text/javascript">  <script type="text/javascript">
 // <!--  // <!--
   
     function findElement(name) {      function findElement(name,formname) {
  var i;   var i;
  var ele;   var ele;
  for(i =0; i < document.forms.$formname.elements.length; i++) {   for(i =0; i < formname.elements.length; i++) {
     ele = document.forms.$formname.elements[i];      ele = formname.elements[i];
     if(ele.name == name) {      if(ele.name == name) {
  return ele;   return ele;
     }      }
Line 230  sub render_student_list { Line 237  sub render_student_list {
  }   }
     }      }
   
     function setAllStudents(value, which) {      function setAllStudents(value, which, formname) {
  var i;   var i;
  var ele;   var ele;
  for (i =0; i < document.forms.$formname.elements.length; i++) {   for (i =0; i < formname.elements.length; i++) {
     ele = document.forms.$formname.elements[i];      ele = formname.elements[i];
     if(isStudent(ele) && rightSubForm(ele, which)) {      if(isStudent(ele) && rightSubForm(ele, which)) {
  ele.checked=value;   ele.checked=value;
     }      }
  }   }
     }      }
     function setAllCoursePersonnel(value, which) {      function setAllCoursePersonnel(value, which, formname) {
  var i;   var i;
  var ele;   var ele;
  for (i =0; i < document.forms.$formname.elements.length; i++) {   for (i =0; i < formname.elements.length; i++) {
     ele = document.forms.$formname.elements[i];      ele = formname.elements[i];
     if(!isStudent(ele) && rightSubForm(ele, which)) {      if(!isStudent(ele) && rightSubForm(ele, which)) {
  ele.checked = value;   ele.checked = value;
     }      }
  }   }
     }      }
     function setSection(which, value, subform) {      function setSection(which, value, subform, formname) {
  var i;   var i;
  var ele;   var ele;
  for (i =0; i < document.forms.$formname.elements.length; i++) {   for (i =0; i < formname.elements.length; i++) {
     ele = document.forms.$formname.elements[i];      ele = formname.elements[i];
     if (ele.value.indexOf(':') != -1) {      if (ele.value.indexOf(':') != -1) {
  if ((section(ele) == which) && rightSubForm(ele, subform)) {   if ((section(ele) == which) && rightSubForm(ele, subform)) {
     ele.checked = value;      ele.checked = value;
Line 263  sub render_student_list { Line 270  sub render_student_list {
  }   }
     }      }
   
     function setCheckboxes(listbox, which, value) {      function setCheckboxes(listbox, which, value, formname) {
  var k;   var k;
  var elem;   var elem;
  var what;   var what;
         elem = findElement(listbox);          elem = findElement(listbox, formname);
  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, formname);
     } else if (what == 'All Course Personnel') {      } else if (what == 'allpersonnel') {
  setAllCoursePersonnel(value, which);   setAllCoursePersonnel(value, which, formname);
     } else if (what == 'No Section') {      } else if (what == 'nosection') {
  setSection('',value, which);   setSection('',value, which, formname);
     } else {      } else {
  setSection(what, value, which);   setSection(what, value, which, formname);
     }      }
  }   }
     }      }
  }   }
     }      }
     function selectSections(listbox, which) {      function selectSections(listbox, which, formname) {
  setCheckboxes(listbox, which, true);   setCheckboxes(listbox, which, true, formname);
   
     }      }
     function unselectSections(listbox, which) {      function unselectSections(listbox, which, formname) {
  setCheckboxes(listbox, which, false);   setCheckboxes(listbox, which, false, formname);
     }      }
   
 // -->  // -->
Line 321  SCRIPT Line 328  SCRIPT
  if ($size > 5) {    if ($size > 5) { 
     $size = 5;       $size = 5; 
  }   }
  $result .= '<select multiple name="'.$formprefix   $result .= '<select multiple="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 value="'.$sec.'">'.$sec.'</option>'."\n";
  }   }
  $result .= '</td><td valign="top">';   $result .= '</select></td><td valign="top">';
  $result .= '<input type="button" name="'.$formprefix.'.select" value="Select" onclick='   $result .= '<input type="button" name="'.$formprefix.'.select" value="'.&mt('Select').'" onclick='
     ."'selectSections(\"$formprefix.chosensections\", \"$formprefix\")'".' /></td>';      ."'selectSections(\"$formprefix.chosensections\", \"$formprefix\", document.forms.$formname)'".' /></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\", document.forms.$formname)' ".' /></td></tr></table>';
     }      }
   
     #  Now we list the students, but the form element type      #  Now we list the students, but the form element type
Line 345  SCRIPT Line 352  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 363  SCRIPT Line 370  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...
Line 396  SCRIPT Line 403  SCRIPT
         . '</td>'.&Apache::loncommon::end_data_table_row().          . '</td>'.&Apache::loncommon::end_data_table_row().
  "\n";   "\n";
     }      }
     $result .= &Apache::loncommon::end_data_table().      $result .= &Apache::loncommon::end_data_table();
  " <br /> <hr />\n";      if ($context ne 'email') {
    $result .= "<br /> <hr />\n";
       }
   
     return $result;      return $result;
 }  }

Removed from v.1.8  
changed lines
  Added in v.1.16


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