Diff for /loncom/interface/lonpickcourse.pm between versions 1.45 and 1.50

version 1.45, 2006/05/09 15:09:27 version 1.50, 2006/06/28 16:06:06
Line 34  use Apache::loncommon; Line 34  use Apache::loncommon;
 use Apache::loncoursedata;  use Apache::loncoursedata;
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::lonlocal;  use Apache::lonlocal;
   use Apache::longroup;
   use lib '/home/httpd/lib/perl/';
   use LONCAPA;
   
 sub handler {  sub handler {
     my $r = shift;      my $r = shift;
Line 49  sub handler { Line 52  sub handler {
        'sincefilter','form','cnumelement',         'sincefilter','form','cnumelement',
        'cdomelement','cnameelement','roleelement',         'cdomelement','cnameelement','roleelement',
                                'pickedcourse','instcodefilter',                                 'pickedcourse','instcodefilter',
                                'ownerfilter','coursefilter','multiple']);                                 'ownerfilter','coursefilter','multiple',
                                  'type']);
 # domain filter and selection  # domain filter and selection
     my $domainfilter=$env{'form.domainfilter'};      my $domainfilter=$env{'form.domainfilter'};
     $domainfilter=~s/\W//g;      $domainfilter=~s/\W//g;
Line 96  sub handler { Line 100  sub handler {
                       ['-1','86400','604800','2592000','7776000',                        ['-1','86400','604800','2592000','7776000',
       '15552000','31104000']));        '15552000','31104000']));
 # if called from loncreateuser, report sections, then close  # if called from loncreateuser, report sections, then close
     my (%loaditem,$seclist,$groupslist);      my (%loaditem,$seclist,$groupslist,$roleslist,$rolesnameslist,
    $accesslist,$accessnameslist);
       my $sec_element = 'currsec';
       my $grplist_element = 'groups';
     my $num_sections = 0;      my $num_sections = 0;
       my $num_groups = 0;
       my $num_roles = 0;
       my $num_access = 0;
       my ($cdom,$cnum);
       if ($env{'form.pickedcourse'}) {
           ($cdom,$cnum) = split/_/,$env{'form.pickedcourse'};
       }
       my $type = $env{'form.type'};
       if (!defined($env{'form.type'})) {
           $type = 'Course';
       }
     if ($env{'form.form'} eq 'cu' && $env{'form.pickedcourse'}) {      if ($env{'form.form'} eq 'cu' && $env{'form.pickedcourse'}) {
         $loaditem{'onload'} ="setSections()";          $loaditem{'onload'} ="setSections()";
         my ($cdom,$cnum) = split/_/,$env{'form.pickedcourse'};          ($seclist,$num_sections,$groupslist,$num_groups) = 
                &build_selection_lists($cdom,$cnum,$type,undef,undef,
                                       $env{'form.form'});
       }
   # if called from portfolio, report roles, sections, groups and close
       my ($roles_element,$groups_element,$status_element,$setitems_function);
       if ($env{'form.form'} eq 'portform' && $env{'form.pickedcourse'}) {
           my ($row_id) = ($env{'form.cnumelement'} =~ /^crsnum_(\d+)$/);
           $roles_element = 'role_'.$row_id.'_1';
           $groups_element = 'group_'.$row_id.'_1';
           $sec_element = 'section_'.$row_id.'_1';
           $status_element = 'access_'.$row_id.'_1';
           $grplist_element = 'grplist_'.$row_id.'_1';
           $loaditem{'onload'} ="setItems()";
           ($seclist,$num_sections,$groupslist,$num_groups,$roleslist,$num_roles,
            $rolesnameslist,$accesslist,$num_access,$accessnameslist) =
                  &build_selection_lists($cdom,$cnum,$type,1,1,$env{'form.form'});
           $setitems_function = qq|
   function setItems() {
       opener.document.$env{"form.form"}.activate.checked = true;
       setRoles();
       setGroups();
       setStatus();
       setSections();
   }
   
   function setRoles() {
       var numRoles = $num_roles
       var rolesArray = new Array("$roleslist");
       var roleNamesArray = new Array("$rolesnameslist");
       opener.document.$env{"form.form"}.$roles_element.length = 0;
       if (numRoles == 0) {
           opener.document.$env{"form.form"}.$roles_element.multiple=false;
           opener.document.$env{"form.form"}.$roles_element.size=1;
           opener.document.$env{"form.form"}.$roles_element.options[0] = new Option('No existing roles','',false,false);
       } else {
           if (numRoles == 1) {
               opener.document.$env{"form.form"}.$roles_element.multiple=false;
               opener.document.$env{"form.form"}.$roles_element.size=1;
               opener.document.$env{"form.form"}.$roles_element.options[0] = new Option('Select','',true,true);
               opener.document.$env{"form.form"}.$roles_element.options[1] = new Option(roleNamesArray[0],rolesArray[0],false,false);
           } else {
               for (var i=0; i<numRoles; i++) {
                   opener.document.$env{"form.form"}.$roles_element.options[i] = new Option(roleNamesArray[i],rolesArray[i],false,false);
               }
               opener.document.$env{"form.form"}.$roles_element.multiple=true;
               if (numRoles < 3) {
                   opener.document.$env{"form.form"}.$roles_element.size=numRoles;
               } else {
                   opener.document.$env{"form.form"}.$roles_element.size=3;
               }
               opener.document.$env{"form.form"}.$roles_element.options[0].selected = false;
           }
       }
   }
   
   function setStatus() {
       var numStatus = $num_access;
       var statusArray = new Array("$accesslist");
       var statusNamesArray = new Array("$accessnameslist");
       opener.document.$env{"form.form"}.$status_element.multiple=true;
       opener.document.$env{"form.form"}.$status_element.size=3;
       for (var i=0; i<numStatus; i++) {
           opener.document.$env{"form.form"}.$status_element.options[i] = new Option(statusNamesArray[i],statusArray[i],false,false);
       }
   }
   
         my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum);  function setGroups() {
         my @sections =  (sort {$a <=> $b} keys(%sections_count));      var numGroups = $num_groups;
  $seclist = join('","',@sections);      var groupsArray = new Array("$groupslist");
       opener.document.$env{"form.form"}.$groups_element.length = 0;
       if (numGroups == 0) {
           opener.document.$env{"form.form"}.$groups_element.multiple=false;
           opener.document.$env{"form.form"}.$groups_element.size=1;
           opener.document.$env{"form.form"}.$groups_element.options[0] = new Option('No existing groups','',false,false);
       } else {
           if (numGroups == 1) {
               opener.document.$env{"form.form"}.$groups_element.multiple=false;
               opener.document.$env{"form.form"}.$groups_element.size=1;
               opener.document.$env{"form.form"}.$groups_element.options[0] = new Option('Select','',true,true);
               opener.document.$env{"form.form"}.$groups_element.options[1] = new Option('No group','',false,false);
               opener.document.$env{"form.form"}.$groups_element.options[2] = new Option(groupsArray[0],groupsArray[0],false,false);
           } else {
               for (var i=0; i<numGroups; i++) {
                   opener.document.$env{"form.form"}.$groups_element.options[i] = new Option(groupsArray[i],groupsArray[i],false,false);
               }
               opener.document.$env{"form.form"}.$groups_element.multiple=true;
               if (numGroups < 3) {
                   opener.document.$env{"form.form"}.$groups_element.size=numGroups;
               } else {
                   opener.document.$env{"form.form"}.$groups_element.size=3;
               }
               opener.document.$env{"form.form"}.$groups_element.options[0].selected = false;
           }
       }
   }
   
         my %curr_groups = &Apache::loncommon::coursegroups($cdom,$cnum);  |;
  $groupslist = join(',',sort(keys(%curr_groups)));  
     }      }
     my $jscript;      my $jscript;
     my $title = 'Selecting a course';      my $typeselectform =  '<select name="type" size="1"';
       $typeselectform .= ">\n";
       foreach my $posstype ('Course','Group') { 
           $typeselectform.='<option value="'.$posstype.'" "'.
               ($posstype eq $type ? 'selected="selected" ' : ''). ">$posstype</option>\n";
       }
       $typeselectform.="</select>";
       my $title = &mt('Selecting a [_1]',$type);
 # Setup for multiple course selections, if flag for multiples set.  # Setup for multiple course selections, if flag for multiples set.
     my $multiple = $env{'form.multiple'};      my $multiple = $env{'form.multiple'};
     my $multelement;      my $multelement;
     if ($multiple) {      if ($multiple) {
         $title = 'Selecting course(s)';          $title = &mt('Selecting [_1](s)',lc($type));
         $jscript = &Apache::loncommon::check_uncheck_jscript();          $jscript = &Apache::loncommon::check_uncheck_jscript();
         $multelement = '<input type="hidden" name="multiple" value="'.$multiple.'" />';          $multelement = '<input type="hidden" name="multiple" value="'.$multiple.'" />';
     }      }
     $r->print(&Apache::loncommon::start_page($title,undef,      $r->print(&Apache::loncommon::start_page($title,undef,
      {'add_entries' => \%loaditem,       {'add_entries' => \%loaditem,
       'no_nav_bar'  => 1, }));        'no_nav_bar'  => 1, }));
     my %lt=&Apache::lonlocal::texthash(      my %lt = (
        'cac' => 'Course Activity',        'cac' => &mt('[_1] Activity',$type),
        'cde' => 'Course Description',        'cde' => &mt('[_1] Description',$type),
        'cdo' => 'Course Domain',        'cdo' => &mt('[_1] Domain',$type),
                                        'cin' => 'Course Institutional Code',                'cin' => &mt('Course Institutional Code'),
                                        'cow' => "Course Owner's Username");                'cow' => &mt("[_1] Owner's Username",$type),
                 'cog' => &mt('Course or Group')
                );
      
     my ($name_code,$name_input);      my ($name_code,$name_input);
     if (defined($env{'form.cnameelement'}) && $env{'form.cnameelement'} ne '') {      if (defined($env{'form.cnameelement'}) && $env{'form.cnameelement'} ne '') {
  $name_code = "opener.document.$env{'form.form'}.$env{'form.cnameelement'}.value=cdesc;";   $name_code = "opener.document.$env{'form.form'}.$env{'form.cnameelement'}.value=cdesc;";
Line 142  sub handler { Line 260  sub handler {
         $lastaction = 'document.courselist.pickedcourse.value = cdom+"_"+cname;'."\n".          $lastaction = 'document.courselist.pickedcourse.value = cdom+"_"+cname;'."\n".
                       'document.courselist.submit();';                        'document.courselist.submit();';
     }      }
       if ($env{'form.form'} eq 'portform') {
           $lastaction = 'document.courselist.pickedcourse.value = cdom+"_"+cname;'."\n".
                         'document.courselist.submit();';
       }
     my $roledom = $env{'form.roleelement'};      my $roledom = $env{'form.roleelement'};
     if ($roledom) {      if ($roledom) {
         $roleelement = '<input type="hidden" name="roleelement" value="'.$roledom.'" />';          $roleelement = '<input type="hidden" name="roleelement" value="'.$roledom.'" />';
         $submitopener = &Apache::lonroles::processpick();          $submitopener = &Apache::lonroles::processpick();
         $autosubmit = 'process_pick("'.$roledom.'")';          $autosubmit = 'process_pick("'.$roledom.'")';
     }      }
       my $instcodeform;
       if ($type eq 'Course') {
           $instcodeform = $lt{'cin'}.':<input type="text" name="instcodefilter" 
    size="10" value="'.$listinstcode.'" /><br />';
       }
   
       my %elements = (
                        Course => {
                                    name  => 'coursepick',
                                    total => 'coursetotal',
                                    list  => 'courselist',
                                  },
                        Group => {
                                    name  => 'grouppick',
                                    total => 'grouptotal',
                                    list  => 'grouplist',
                                },
                       );
   
     $r->print(<<ENDSCRIPT);      $r->print(<<ENDSCRIPT);
 <script>  <script>
 function gochoose(cname,cdom,cdesc,multiple,caller) {  function gochoose(cname,cdom,cdesc,multiple,caller) {
Line 169  function gochoose(cname,cdom,cdesc,multi Line 310  function gochoose(cname,cdom,cdesc,multi
  }   }
     }      }
  }    } 
         opener.document.$env{'form.form'}.coursetotal.value = courseCount;          opener.document.$env{'form.form'}.$elements{$type}{'total'}.value = courseCount;
  if (typeof(opener.document.$env{'form.form'}.coursepick.length) ==   if (typeof(opener.document.$env{'form.form'}.$elements{$type}{'name'}.length) ==
     'undefined') {      'undefined') {
     if (opener.document.$env{'form.form'}.coursepick.value == 'specific') {        if (opener.document.$env{'form.form'}.$elements{$type}{'name'}.value == 'specific') {  
  opener.document.$env{'form.form'}.coursepick.checked = true;   opener.document.$env{'form.form'}.$elements{$type}{'name'}.checked = true;
     } else {      } else {
  opener.document.$env{'form.form'}.coursepick.checked = false;   opener.document.$env{'form.form'}.$elements{$type}{'name'}.checked = false;
     }      }
  } else {   } else {
     for (var j=0; j<opener.document.$env{'form.form'}.coursepick.length; j++) {       for (var j=0; j<opener.document.$env{'form.form'}.$elements{$type}{'name'}.length; j++) { 
  if (opener.document.$env{'form.form'}.coursepick[j].value == 'specific') {     if (opener.document.$env{'form.form'}.$elements{$type}{'name'}\[j].value == 'specific') {  
     opener.document.$env{'form.form'}.coursepick[j].checked = true;      opener.document.$env{'form.form'}.$elements{$type}{'name'}\[j].checked = true;
  } else {   } else {
     opener.document.$env{'form.form'}.coursepick[j].checked = false;      opener.document.$env{'form.form'}.$elements{$type}{'name'}\[j].checked = false;
  }   }
     }      }
  }   }
  if (courseCount > 0) {   if (courseCount > 0) {
     courses = courses.substr(0,courses.length-2);      courses = courses.substr(0,courses.length-2);
     opener.document.$env{'form.form'}.courselist.value = courses;      opener.document.$env{'form.form'}.$elements{$type}{'list'}.value = courses;
  }   }
     } else {      } else {
         $name_code          $name_code
Line 211  function gochoose(cname,cdom,cdesc,multi Line 352  function gochoose(cname,cdom,cdesc,multi
 function setSections() {  function setSections() {
     var numSections = $num_sections      var numSections = $num_sections
     var sectionsArray = new Array("$seclist")      var sectionsArray = new Array("$seclist")
     opener.document.$env{"form.form"}.currsec.length = 0      opener.document.$env{"form.form"}.$sec_element.length = 0
     if (numSections == 0) {      if (numSections == 0) {
         opener.document.$env{"form.form"}.currsec.multiple=false          opener.document.$env{"form.form"}.$sec_element.multiple=false
         opener.document.$env{"form.form"}.currsec.size=1;          opener.document.$env{"form.form"}.$sec_element.size=1;
         opener.document.$env{"form.form"}.currsec.options[0] = new Option('No existing sections','',false,false)          opener.document.$env{"form.form"}.$sec_element.options[0] = new Option('No existing sections','',false,false)
     } else {      } else {
         if (numSections == 1) {          if (numSections == 1) {
             opener.document.$env{"form.form"}.currsec.multiple=false;              opener.document.$env{"form.form"}.$sec_element.multiple=false;
             opener.document.$env{"form.form"}.currsec.size=1;              opener.document.$env{"form.form"}.$sec_element.size=1;
             opener.document.$env{"form.form"}.currsec.options[0] = new Option('Select','',true,true);              opener.document.$env{"form.form"}.$sec_element.options[0] = new Option('Select','',true,true);
             opener.document.$env{"form.form"}.currsec.options[1] = new Option('No section','',false,false)               opener.document.$env{"form.form"}.$sec_element.options[1] = new Option('No section','',false,false) 
             opener.document.$env{"form.form"}.currsec.options[2] = new Option(sectionsArray[0],sectionsArray[0],false,false);              opener.document.$env{"form.form"}.$sec_element.options[2] = new Option(sectionsArray[0],sectionsArray[0],false,false);
         } else {          } else {
             for (var i=0; i<numSections; i++) {              for (var i=0; i<numSections; i++) {
                 opener.document.$env{"form.form"}.currsec.options[i] = new Option(sectionsArray[i],sectionsArray[i],false,false)                  opener.document.$env{"form.form"}.$sec_element.options[i] = new Option(sectionsArray[i],sectionsArray[i],false,false)
             }              }
             opener.document.$env{"form.form"}.currsec.multiple=true              opener.document.$env{"form.form"}.$sec_element.multiple=true
             if (numSections < 3) {              if (numSections < 3) {
                 opener.document.$env{"form.form"}.currsec.size=numSections;                  opener.document.$env{"form.form"}.$sec_element.size=numSections;
             } else {              } else {
                 opener.document.$env{"form.form"}.currsec.size=3;                  opener.document.$env{"form.form"}.$sec_element.size=3;
             }              }
             opener.document.$env{"form.form"}.currsec.options[0].selected = false              opener.document.$env{"form.form"}.$sec_element.options[0].selected = false
         }          }
     }      }
     opener.document.$env{"form.form"}.groups.value='$groupslist';      opener.document.$env{"form.form"}.$grplist_element.value='$groupslist';
     self.close()      self.close()
 }  }
   
   $setitems_function
   
 $jscript  $jscript
 </script>  </script>
 $submitopener  $submitopener
 <form method="post" name="filterpicker">  <form method="post" name="filterpicker" action="/adm/pickcourse">
 <input type="hidden" name="cnumelement" value="$env{'form.cnumelement'}" />  <input type="hidden" name="cnumelement" value="$env{'form.cnumelement'}" />
 <input type="hidden" name="cdomelement" value="$env{'form.cdomelement'}" />  <input type="hidden" name="cdomelement" value="$env{'form.cdomelement'}" />
 $name_input  $name_input
Line 254  $lt{'cac'}: $sincefilterform Line 397  $lt{'cac'}: $sincefilterform
 <br />  <br />
 $lt{'cdo'}: $domainselectform  $lt{'cdo'}: $domainselectform
 <br />  <br />
 $lt{'cin'}:  $lt{'cog'}: $typeselectform
 <input type="text" name="instcodefilter" size="10" value="$listinstcode" />  
 <br />  <br />
   $instcodeform
 $lt{'cow'}:  $lt{'cow'}:
 <input type="text" name="ownerfilter" size="10" value="$listowner" />  <input type="text" name="ownerfilter" size="10" value="$listowner" />
 <br />  <br />
Line 275  ENDSCRIPT Line 418  ENDSCRIPT
         unless ($instcodefilter) { $instcodefilter='.'; }          unless ($instcodefilter) { $instcodefilter='.'; }
         unless ($ownerfilter) { $ownerfilter='.'; }          unless ($ownerfilter) { $ownerfilter='.'; }
         unless ($coursefilter) { $coursefilter='.'; }          unless ($coursefilter) { $coursefilter='.'; }
           unless ($type) { $type = '.'; }
         my $timefilter=($sincefilter==-1?1:time-$sincefilter);          my $timefilter=($sincefilter==-1?1:time-$sincefilter);
  my %courses=   my %courses=
     &Apache::lonnet::courseiddump      &Apache::lonnet::courseiddump
     ($domainfilter,$descriptfilter,$timefilter,$instcodefilter,$ownerfilter,$coursefilter);      ($domainfilter,$descriptfilter,$timefilter,$instcodefilter,$ownerfilter,$coursefilter,undef,undef,$type);
  $r->print('<form name="courselist">');   $r->print('<form name="courselist" method="post" action="/adm/pickcourse">');
  my %by_descrip;   my %by_descrip;
         my $numcourses = keys(%courses);          my $numcourses = keys(%courses);
  foreach my $course (keys(%courses)) {   foreach my $course (keys(%courses)) {
             my $descr;              my $descr;
             if ($courses{$course} =~ m/^([^:]*):/i) {              if ($courses{$course} =~ m/^([^:]*):/i) {
                 $descr = &Apache::lonnet::unescape($1);                  $descr = &unescape($1);
             } else {              } else {
                 $descr = &Apache::lonnet::unescape($courses{$course});                  $descr = &unescape($courses{$course});
             }              }
             my $description = $descr;              my $description = $descr;
             push (@{$by_descrip{$description}}, $course);              push (@{$by_descrip{$description}}, $course);
Line 304  ENDSCRIPT Line 448  ENDSCRIPT
         my $cleandesc=&HTML::Entities::encode($description,'<>&"');          my $cleandesc=&HTML::Entities::encode($description,'<>&"');
         $cleandesc=~s/'/\\'/g;          $cleandesc=~s/'/\\'/g;
         my ($cdom,$cnum)=split(/\_/,$course);          my ($cdom,$cnum)=split(/\_/,$course);
                 my ($descr,$instcode,$owner) = split/:/,$courses{$course};                  my ($descr,$instcode,$owner,$ttype) = split/:/,$courses{$course};
                 $r->print(&course_chooser($multiple,$cdom,$cnum,$cleandesc));                  $r->print(&course_chooser($multiple,$cdom,$cnum,$cleandesc));
         $r->print($description.'('.          $r->print($description.'('.
       ($Apache::lonnet::domaindescription{$cdom}?        ($Apache::lonnet::domaindescription{$cdom}?
                        $Apache::lonnet::domaindescription{$cdom}:$cdom).")");                         $Apache::lonnet::domaindescription{$cdom}:$cdom).")");
                 unless ($instcode eq '') {                  unless ($instcode eq '') {
                     $r->print(" - ".&Apache::lonnet::unescape($instcode));                      $r->print(" - ".&unescape($instcode));
                 }                  }
                 unless ($owner eq '') {                  unless ($owner eq '') {
                     $r->print(", owner - ".&Apache::lonnet::unescape($owner));                      $r->print(", owner - ".&unescape($owner));
                   }
                   unless ($ttype eq '') {
                       $r->print('('.&Apache::lonnet::unescape($ttype).')');
                 }                  }
  if ($multiple) { $r->print("</label>\n"); }   if ($multiple) { $r->print("</label>\n"); }
                 $r->print("<br />\n");                  $r->print("<br />\n");
Line 327  ENDSCRIPT Line 474  ENDSCRIPT
         $r->print('<input type="hidden" name="form" value="'.$env{'form.form'}.'" />'."\n".          $r->print('<input type="hidden" name="form" value="'.$env{'form.form'}.'" />'."\n".
                    '<input type="hidden" name="pickedcourse" value="" />'."\n".                     '<input type="hidden" name="pickedcourse" value="" />'."\n".
                    '<input type="hidden" name="cnumelement" value="'.$env{'form.cnumelement'}.'" />'."\n".                     '<input type="hidden" name="cnumelement" value="'.$env{'form.cnumelement'}.'" />'."\n".
                    '<input type="hidden" name="cdomelement" value="'.$env{'form.cdomelement'}.'" />'."\n");                     '<input type="hidden" name="cdomelement" value="'.$env{'form.cdomelement'}.'" />'."\n".
                      '<input type="hidden" name="type" value="'.$type.'" />'."\n");
         if ((exists($env{'form.roleelement'})) && ($env{'form.form'} eq 'rolechoice')) {          if ((exists($env{'form.roleelement'})) && ($env{'form.form'} eq 'rolechoice')) {
            $r->print('<input type="hidden" name="roleelement" value="'.$env{'form.roleelement'}.'" />'."\n");             $r->print('<input type="hidden" name="roleelement" value="'.$env{'form.roleelement'}.'" />'."\n");
         }          }
Line 347  sub course_chooser { Line 495  sub course_chooser {
                   "'".$cnum."','".$cdom."','".$cleandesc."')".'" />'."\n";                    "'".$cnum."','".$cdom."','".$cleandesc."')".'" />'."\n";
     }      }
     return $output;      return $output;
 }   }
   
   sub build_selection_lists {
       my ($cdom,$cnum,$type,$needroles,$needaccess,$caller) = @_;
       my ($sections,$groups,$allroles,$roleshash,$accesshash) = 
             &Apache::loncommon::get_secgrprole_info($cdom,$cnum,$needroles,$type);
       if ($caller eq 'portform') {
           if (@{$sections} == 0) {
               @{$sections} = ('none');
           } else {
               unshift(@{$sections},('all','none'));
           }
           if (@{$groups} == 0) {
               @{$groups} = ('none');
           } else {
               unshift(@{$groups},('all','none'));
           }
   
       } 
       my $num_sections = scalar(@{$sections});
       my $seclist = join('","',@{$sections});
       my $num_groups = scalar(@{$groups});
       my $groupslist = join('","',@{$groups});
       my ($roleslist,$num_roles,$rolesnameslist,$num_access,$accesslist,
           $accessnameslist);
       if ($needroles) {
           $num_roles = @{$allroles};
           $roleslist = join('","',@{$allroles});
           my @allrolesnames; 
           foreach my $role (@{$allroles}) {
               push(@allrolesnames,$$roleshash{$role});
           }  
           $rolesnameslist = join('","',@allrolesnames);
       }
       if ($needaccess) {
           $num_access = keys(%{$accesshash});
           my (@allaccess,@allaccessnames);
           foreach my $key (sort(keys(%{$accesshash}))) {
               push(@allaccess,$key);
               push(@allaccessnames,$$accesshash{$key}); 
           }
           $accesslist = join('","',@allaccess);
           $accessnameslist = join('","',@allaccessnames);
       }
       return ($seclist,$num_sections,$groupslist,$num_groups,$roleslist,
               $num_roles,$rolesnameslist,$accesslist,$num_access,$accessnameslist);
   }
   
 1;  1;
 __END__  __END__

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


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.