Diff for /loncom/interface/lonsupportreq.pm between versions 1.5 and 1.13

version 1.5, 2004/07/13 17:35:58 version 1.13, 2004/12/18 22:30:28
Line 17  sub handler { Line 17  sub handler {
     if ($r->header_only) {      if ($r->header_only) {
         return OK;          return OK;
     }      }
       &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['origurl','function']);
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['action','origurl','function']);      if ($r->uri eq '/adm/helpdesk') {
     my $action = $ENV{'form.action'};          &Apache::loncommon::get_posted_cgi($r);
       }
     my $function = $ENV{'form.function'};      my $function = $ENV{'form.function'};
     my $origurl = &Apache::lonnet::unescape($ENV{'form.origurl'});      my $origurl = &Apache::lonnet::unescape($ENV{'form.origurl'});
       my $action = $ENV{'form.action'};
   
     if ($action eq 'process') {      if ($action eq 'process') {
         &print_request_receipt($r,$origurl,$function);          &print_request_receipt($r,$origurl,$function);
     } else {      } else {
Line 38  sub print_request_form { Line 41  sub print_request_form {
     if (($tablecolor eq '') || ($tablecolor eq '#FFFFFF')) {      if (($tablecolor eq '') || ($tablecolor eq '#FFFFFF')) {
         $tablecolor = '#CCCCFF';          $tablecolor = '#CCCCFF';
     }      }
       $ccode = '';
     $os = $ENV{'browser.os'};      $os = $ENV{'browser.os'};
     $browser = $ENV{'browser.type'};      $browser = $ENV{'browser.type'};
     $bversion = $ENV{'browser.version'};      $bversion = $ENV{'browser.version'};
Line 49  sub print_request_form { Line 53  sub print_request_form {
     $usec = $ENV{'request.course.sec'};      $usec = $ENV{'request.course.sec'};
     $cid = $ENV{'request.course.id'};      $cid = $ENV{'request.course.id'};
     $server = $ENV{'SERVER_NAME'};      $server = $ENV{'SERVER_NAME'};
     my $scripttag = (<<END);      my $scripttag = (<<'END');
 <script>  
 function validate() {  function validate() {
     if (document.logproblem.email.value.indexOf("\@") == -1) {      if (validmail(document.logproblem.email) == false) {
         alert("You must enter a valid e-mail address");          alert("The e-mail address you entered: "+document.logproblem.email.value+" is not a valid e-mail address.");
         return          return;
     }      }
     document.logproblem.submit();      document.logproblem.submit();
 }  }
 </script>  
   function validmail(field) {
       var str = field.value;
       if (window.RegExp) {
           var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
           var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";
           var reg1 = new RegExp(reg1str);
           var reg2 = new RegExp(reg2str);
           if (!reg1.test(str) && reg2.test(str)) {
               return true;
           }
           return false;
       }
       else
       {
           if(str.indexOf("@") >= 0) {
               return true;
           }
           return false;
       }
   }
 END  END
     if ($cid =~ m/_/) {      if ($cid =~ m/_/) {
         ($cdom,$cnum) = split/_/,$cid;          ($cdom,$cnum) = split/_/,$cid;
Line 94  END Line 117  END
     my @codetitles = ();      my @codetitles = ();
     my %cat_titles = ();      my %cat_titles = ();
     my %cat_order = ();      my %cat_order = ();
       my %idlist = ();
       my %idnums = ();
       my %idlist_titles = ();
     my $caller = 'global';      my $caller = 'global';
     my $totcodes = 0;      my $totcodes = 0;
     my $format_reply;      my $format_reply;
       my $jscript = '';
           
     if ($cdom) {      if ($cdom) {
         $codedom = $cdom;          $codedom = $cdom;
Line 115  END Line 142  END
     }      }
     if ($totcodes > 0) {      if ($totcodes > 0) {
         $format_reply = &Apache::lonnet::auto_instcode_format($caller,$codedom,\%coursecodes,\%codes,\@codetitles,\%cat_titles,\%cat_order);          $format_reply = &Apache::lonnet::auto_instcode_format($caller,$codedom,\%coursecodes,\%codes,\@codetitles,\%cat_titles,\%cat_order);
           if ($ccode eq '') {
               my $numtypes = @codetitles;
               &build_code_selections(\%codes,\@codetitles,\%cat_titles,\%cat_order,\%idlist,\%idnums,\%idlist_titles);
               &javascript_code_selections($numtypes,\$jscript,\%idlist,\%idnums,\%idlist_titles,\@codetitles);
           }
     }      }
     $r->print(<<END);      $r->print(<<END);
 <html>  <html>
 <head>  <head>
  <title>LON-CAPA support request</title>   <title>LON-CAPA support request</title>
   <script>
 $scripttag  $scripttag
   $jscript
   </script>
 </head>  </head>
 $bodytag  $bodytag
  <table width="580" border="0" cellpadding="0" cellspacing="0" bgcolor="#000000">   <table width="580" border="0" cellpadding="0" cellspacing="0" bgcolor="#000000">
Line 303  END Line 338  END
               <tr>                <tr>
                <td>                 <td>
 END  END
     if ($coursecodes{$cnum}) {      if ($cnum) { 
         foreach (@codetitles) {          if ($coursecodes{$cnum}) {
             $r->print('<i>'.$_.'</i>:&nbsp;'.$codes{$cnum}{$_}.';&nbsp;');              foreach (@codetitles) {
                   $r->print('<i>'.$_.'</i>:&nbsp;'.$codes{$cnum}{$_}.';&nbsp;');
               }
               $r->print('&nbsp;<input type="hidden" name="coursecode" value="'.$coursecodes{$cnum}.'" />');
           } else {
               $r->print('Enter institutional course code:&nbsp;
                     <input type="text" name="coursecode" size="15" value="" />');
         }          }
         $r->print('&nbsp;<input type="hidden" name="coursecode" value="'.$coursecodes{$cnum}.'" />');  
     } else {      } else {
         $r->print('Enter institutional course code:&nbsp;          if ($totcodes > 0) {
               my $numtitles = @codetitles;
               if ($numtitles == 0) {
                   $r->print('Enter institutional course code:&nbsp;
                   <input type="text" name="coursecode" size="15" value="" />');                    <input type="text" name="coursecode" size="15" value="" />');
               } else {
                   my $lasttitle = $numtitles;
                   if ($numtitles > 4) {
                       $lasttitle = 4;
                   } 
                   $r->print('<table><tr><td>'.$codetitles[0].'<br />'."\n".
                         '<select name="'.$codetitles[0].'" onChange="courseSet('."'$codetitles[0]'".')">'."\n".
                         ' <option value="-1" />Select'."\n");
                   my @items = ();
                   if ($idlist{$codetitles[0]} =~ /","/) {
                       @items = split/","/,$idlist{$codetitles[0]};
                   } else {
                       $items[0] = $idlist{$codetitles[0]};
                   }
                   foreach (@items) {
                       $r->print(' <option value="'.$_.'" />'.$_);
                   }
                   $r->print('</select></td>');
                   for (my $i=1; $i<$numtitles; $i++) {
                       $r->print('<td>'.$codetitles[$i].'<br />'."\n".
                        '<select name="'.$codetitles[$i].'" onChange="courseSet('."'$codetitles[$i]'".')">'."\n".
                        '<option value="-1">&lt;-Pick '.$codetitles[$i-1].'</option>'."\n".
                        '</select>'."\n".
                        '</td>'
                       );
                   }
                   $r->print('</tr></table>');
                   if ($numtitles > 4) {
                       $r->print('<br /><br />'.$codetitles[$numtitles].'<br />'."\n".
                             '<select name="'.$codetitles[$numtitles].'" onChange="courseSet('."'$codetitles[$numtitles]'".')">'."\n".
                             '<option value="-1">&lt;-Pick '.$codetitles[$numtitles-1].'</option>'."\n".
                             '</select>'."\n");
                   }
               }
           } else {
               $r->print('Enter institutional course code:&nbsp;
                     <input type="text" name="coursecode" size="15" value="" />');
           }
     }      }
     if ($ctitle) {      if ($ctitle) {
         $r->print('<br /><i>Title</i>:&nbsp;'.$ctitle.'<input type="hidden" name="title" value="'.$ctitle.'" />');          $r->print('<br /><i>Title</i>:&nbsp;'.$ctitle.'<input type="hidden" name="title" value="'.$ctitle.'" />');
     } else {      } else {
         $r->print('<br />Enter course title:&nbsp;          $r->print('<br />Enter course title:&nbsp;
                  <input type="text" name="title" size="15" value="" />');                   <input type="text" name="title" size="25" value="" />');
     }      }
     $r->print(<<END);      $r->print(<<END);
                </td>                 </td>
Line 534  Date/Time: $reporttime Line 615  Date/Time: $reporttime
 $bodytag  $bodytag
  <h3>A support request has been sent to $to</h3>   <h3>A support request has been sent to $to</h3>
 END  END
     } else {       } else {
         $to = 'helpdesk@lon-capa.org';          $to = $admin;
         $r->print(<<END);          if ($to =~ m/^[^\@]+\@[^\@]+$/) {
               $r->print(<<END);
   <html>
   <head>
    <title>LON-CAPA support request recorded</title>
   </head>
   $bodytag
    <h3>A support request has been sent to $to</h3>
   END
           } else {
               $r->print(<<END);
 <html>  <html>
 <head>  <head>
  <title>LON-CAPA support request recorded</title>   <title>LON-CAPA support request recorded</title>
 </head>  </head>
 $bodytag  $bodytag
  <h3>Warning: Problem with support e-mail address</h3>   <h3>Warning: Problem with support e-mail address</h3>
 As the e-mail address provided for this LON-CAPA server ($to) does not appear to be a valid e-mail address, your support request has <b>not</b> been sent to the LON-CAPA support staff at your institution. Instead a copy has been sent to the LON-CAPA support team at Michigan State University.   As the e-mail address provided for this LON-CAPA server ($to) does not appear to be a valid e-mail address, your support request has <b>not</b> been sent to the LON-CAPA support staff or administrator at your institution. Instead a copy has been sent to the LON-CAPA support team at Michigan State University. 
 END  END
               $to = 'helpdesk@lon-capa.org';
           }
     }      }
     if (defined($ENV{'form.email'})) {      if (defined($ENV{'form.email'})) {
         if ($ENV{'form.email'} =~ m/^[^\@]+\@[^\@]+$/) {          if ($ENV{'form.email'} =~ m/^[^\@]+\@[^\@]+$/) {
Line 696  END Line 789  END
   
 sub retrieve_instcodes {  sub retrieve_instcodes {
     my ($coursecodes,$codedom,$totcodes) = @_;      my ($coursecodes,$codedom,$totcodes) = @_;
     my %courses = &Apache::lonnet::courseiddump($codedom,'.',1);      my %courses = &Apache::lonnet::courseiddump($codedom,'.',1,'.','.');
     foreach my $course (keys %courses) {      foreach my $course (keys %courses) {
         if ($courses{$course} =~ m/^[^:]*:([^:]+)$/) {          if ($courses{$course} =~ m/^[^:]*:([^:]+)/) {
             $$coursecodes{$course} = &Apache::lonnet::unescape($1);              $$coursecodes{$course} = &Apache::lonnet::unescape($1);
             $totcodes ++;              $totcodes ++;
         }          }
Line 706  sub retrieve_instcodes { Line 799  sub retrieve_instcodes {
     return $totcodes;      return $totcodes;
 }  }
   
   sub build_code_selections {
       my ($codes,$codetitles,$cat_titles,$cat_order,$idlist,$idnums,$idlist_titles) = @_;
       my %idarrays = ();
       for (my $i=1; $i<@{$codetitles}; $i++) {
           %{$idarrays{$$codetitles[$i]}} = ();
       }
       foreach my $cid (sort keys %{$codes}) {
           &recurse_list($cid,$codetitles,$codes,0,\%idarrays);
       }
       for (my $num=0; $num<@{$codetitles}; $num++) {
           if ($num == 0) {
               my @contents = ();
               my @contents_titles = ();
               &sort_cats($num,$cat_order,$codetitles,\@{$idarrays{$$codetitles[0]}},\@contents);
               if (defined($$cat_titles{$$codetitles[0]})) {
                   foreach (@contents) {
                       push @contents_titles, $$cat_titles{$$codetitles[0]}{$_};
                   }
               }
               $$idlist{$$codetitles[0]} = join('","',@contents);
               $$idnums{$$codetitles[0]} = scalar(@contents);
               if (defined($$cat_titles{$$codetitles[0]})) {
                   $$idlist_titles{$$codetitles[0]} = join('","',@contents_titles);
               }
           } elsif ($num == 1) {
               %{$$idlist{$$codetitles[1]}} = ();
               %{$$idlist_titles{$$codetitles[1]}} = ();
               foreach my $key_a (keys %{$idarrays{$$codetitles[1]}}) {
                   my @sorted_a = ();
                   my @sorted_a_titles = ();
                   &sort_cats($num,$cat_order,$codetitles,\@{$idarrays{$$codetitles[1]}{$key_a}},\@sorted_a);
                   if (defined($$cat_titles{$$codetitles[1]})) {
                       foreach (@sorted_a) {
                           push @sorted_a_titles, $$cat_titles{$$codetitles[1]}{$_};
                       }
                   }
                   $$idlist{$$codetitles[1]}{$key_a} = join('","',@sorted_a);
                   $$idnums{$$codetitles[1]}{$key_a} = scalar(@sorted_a);
                   if (defined($$cat_titles{$$codetitles[1]})) {
                       $$idlist_titles{$$codetitles[1]}{$key_a} = join('","',@sorted_a_titles);
                   }
               }
           } elsif ($num == 2) {
               %{$$idlist{$$codetitles[2]}} = ();
               %{$$idlist_titles{$$codetitles[2]}} = ();
               foreach my $key_a (keys %{$idarrays{$$codetitles[2]}}) {
                   %{$$idlist{$$codetitles[2]}{$key_a}} = ();
                   %{$$idlist_titles{$$codetitles[2]}{$key_a}} = ();
                   foreach my $key_b (keys %{$idarrays{$$codetitles[2]}{$key_a}}) {
                       my @sorted_b = ();
                       my @sorted_b_titles = ();
                       &sort_cats($num,$cat_order,$codetitles,\@{$idarrays{$$codetitles[2]}{$key_a}{$key_b}},\@sorted_b);
                       if (defined($$cat_titles{$$codetitles[1]})) {
                           foreach (@sorted_b) {
                               push @sorted_b_titles, $$cat_titles{$$codetitles[1]}{$_};
                           }
                       }
                       $$idlist{$$codetitles[2]}{$key_a}{$key_b} = join('","',@sorted_b);
                       $$idnums{$$codetitles[2]}{$key_a}{$key_b} = scalar(@sorted_b);
                       if (defined($$cat_titles{$$codetitles[2]})) {
                           $$idlist_titles{$$codetitles[2]}{$key_a}{$key_b} = join('","',@sorted_b_titles);
                       }
                   }
               }
           } elsif ($num == 3) {
               %{$$idlist{$$codetitles[3]}} = ();
               foreach my $key_a (keys %{$idarrays{$$codetitles[3]}}) {
                   %{$$idlist{$$codetitles[3]}{$key_a}} = ();
                   foreach my $key_b (keys %{$idarrays{$$codetitles[3]}{$key_a}}) {
                       %{$$idlist{$$codetitles[3]}{$key_a}{$key_b}} = ();
                       foreach my $key_c (keys %{$idarrays{$$codetitles[3]}{$key_a}{$key_b}}) {
                           my @sorted_c = ();
                           &sort_cats($num,$cat_order,$codetitles,\@{$idarrays{$$codetitles[3]}{$key_a}{$key_b}{$key_c}},\@sorted_c);
                           $$idlist{$$codetitles[3]}{$key_a}{$key_b}{$key_c} = join('","',@sorted_c);
                           $$idnums{$$codetitles[3]}{$key_a}{$key_b}{$key_c} = scalar(@sorted_c);
                       }
                   }
               }
           } elsif ($num == 4) {
               %{$$idlist{$$codetitles[4]}} = ();
               foreach my $key_a (keys %{$idarrays{$$codetitles[4]}}) {
                   %{$$idlist{$$codetitles[4]}{$key_a}} = ();
                   foreach my $key_b (keys %{$idarrays{$$codetitles[4]}{$key_a}}) {
                       %{$$idlist{$$codetitles[4]}{$key_a}{$key_b}} = ();
                       foreach my $key_c (keys %{$idarrays{$$codetitles[4]}{$key_a}{$key_b}}) {
                           %{$$idlist{$$codetitles[4]}{$key_a}{$key_b}{$key_c}} = ();
                           foreach my $key_d (keys %{$idarrays{$$codetitles[4]}{$key_a}{$key_b}{$key_c}}) {
                               my @sorted_d = ();
                               &sort_cats($num,$cat_order,$codetitles,$idarrays{$$codetitles[4]}{$key_a}{$key_b}{$key_c}{$key_d},\@sorted_d);
                               $$idlist{$$codetitles[4]}{$key_a}{$key_b}{$key_c}{$key_d} = join('","',@sorted_d);
                               $$idnums{$$codetitles[4]}{$key_a}{$key_b}{$key_c}{$key_d} = scalar(@sorted_d);
                           }
                       }
                   }
               }
           }
       }
   }
   
   sub sort_cats {
       my ($num,$cat_order,$codetitles,$idsarrayref,$sorted) = @_;
       my @unsorted = @{$idsarrayref};
       if (defined($$cat_order{$$codetitles[$num]})) {
           foreach (@{$$cat_order{$$codetitles[$num]}}) {
               if (grep/^$_$/,@unsorted) {
                   push @{$sorted}, $_;
               }
           }
       } else {
           @{$sorted} = sort (@unsorted);
       }
   }
   
   
   sub recurse_list {
       my ($cid,$codetitles,$codes,$num,$idarrays) = @_;
       if ($num == 0) {
           if (!grep/^$$codes{$cid}{$$codetitles[0]}$/,@{$$idarrays{$$codetitles[0]}}) {
               push @{$$idarrays{$$codetitles[0]}}, $$codes{$cid}{$$codetitles[0]};
           }
       } elsif ($num == 1) {
           if (defined($$idarrays{$$codetitles[1]}{$$codes{$cid}{$$codetitles[0]}})) {
               if (!grep/^$$codes{$cid}{$$codetitles[1]}$/,@{$$idarrays{$$codetitles[1]}{$$codes{$cid}{$$codetitles[0]}}}) {
                   push @{$$idarrays{$$codetitles[1]}{$$codes{$cid}{$$codetitles[0]}}}, $$codes{$cid}{$$codetitles[1]};
               }
           } else {
               @{$$idarrays{$$codetitles[1]}{$$codes{$cid}{$$codetitles[0]}}} = ("$$codes{$cid}{$$codetitles[1]}");
           }
       } elsif ($num == 2) {
           if (defined($$idarrays{$$codetitles[2]}{$$codes{$cid}{$$codetitles[0]}})) {
               if (defined($$idarrays{$$codetitles[2]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}})) {
                   if (!grep/^$$codes{$cid}{$$codetitles[2]}$/,@{$$idarrays{$$codetitles[2]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}}) {
                       push @{$$idarrays{$$codetitles[2]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}}, $$codes{$cid}{$$codetitles[2]};
                   }
               } else {
                   @{$$idarrays{$$codetitles[2]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}} = ("$$codes{$cid}{$$codetitles[2]}");
               }
           } else {
               %{$$idarrays{$$codetitles[2]}{$$codes{$cid}{$$codetitles[0]}}} = ();
               @{$$idarrays{$$codetitles[2]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}} = ("$$codes{$cid}{$$codetitles[2]}");
           }
       } elsif ($num == 3) {
           if (defined($$idarrays{$$codetitles[3]}{$$codes{$cid}{$$codetitles[0]}})) {
               if (defined($$idarrays{$$codetitles[3]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}})) {
                   if (defined($$idarrays{$$codetitles[3]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}})) {
                       if (!grep/^$$codes{$cid}{$$codetitles[3]}$/,@{$$idarrays{$$codetitles[3]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}}) {
                           push @{$$idarrays{$$codetitles[3]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}}, $$codes{$cid}{$$codetitles[3]};
                       }
                   } else {
                       @{$$idarrays{$$codetitles[3]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}} = ("$$codes{$cid}{$$codetitles[3]}");
                   }
               } else {
                   %{$$idarrays{$$codetitles[3]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}} = ();
                   @{$$idarrays{$$codetitles[3]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}} = ("$$codes{$cid}{$$codetitles[3]}");
               }
           } else {
               %{$$idarrays{$$codetitles[3]}{$$codes{$cid}{$$codetitles[0]}}} = ();
               %{$$idarrays{$$codetitles[3]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}} = ();
               @{$$idarrays{$$codetitles[3]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}} = ("$$codes{$cid}{$$codetitles[3]}");
           }
       } elsif ($num == 4) {
           if (defined($$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}})) {
               if (defined($$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}})) {
                   if (defined($$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}})) {
                       if (defined($$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}{$$codes{$cid}{$$codetitles[3]}})) {
                           if (!grep/^$$codes{$cid}{$$codetitles[4]}$/,@{$$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}{$$codes{$cid}{$$codetitles[3]}}}) {
                               push @{$$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}{$$codes{$cid}{$$codetitles[3]}}}, $$codes{$cid}{$$codetitles[4]};
                           }
                       } else {
                           @{$$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}{$$codes{$cid}{$$codetitles[3]}}} = ("$$codes{$cid}{$$codetitles[4]}");
                       }
                   } else {
                       %{$$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}} = ();
                       @{$$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}{$$codes{$cid}{$$codetitles[3]}}} = ("$$codes{$cid}{$$codetitles[4]}");
                   }
               } else {
                   %{$$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}} = ();
                   %{$$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}} = ();
                   @{$$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}{$$codes{$cid}{$$codetitles[3]}}} = ("$$codes{$cid}{$$codetitles[4]}");
               }
           } else {
               %{$$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}} = ();
               %{$$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}} = ();
               %{$$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[2]}}} = ();
               @{$$idarrays{$$codetitles[4]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[1]}}{$$codes{$cid}{$$codetitles[3]}}} = ("$$codes{$cid}{$$codetitles[3]}");
           }
       }
       $num ++;
       if ($num <@{$codetitles}) {
           &recurse_list($cid,$codetitles,$codes,$num,$idarrays);
       }
   }
   
   sub javascript_code_selections {
       my ($numcats,$script_tag,$idlist,$idnums,$idlist_titles,$codetitles) = @_;
       my $numtitles = @{$codetitles};
       my @seltitles = (); 
       for (my $j=0; $j<$numtitles; $j++) {
           $seltitles[$j] = 'id'.$$codetitles[$j];
       }
       my $seltitle_str = join('","',@seltitles);
       $$script_tag .= <<END;
   function courseSet(caller) {
       var ids = new Array ("$seltitle_str");
       var formitems = new Array ($numtitles);
       var idyr = document.forms.logproblem.Year.selectedIndex
       var idsem  = document.forms.logproblem.Semester.selectedIndex
       var iddept = document.forms.logproblem.Department.selectedIndex
       var idclass = document.forms.logproblem.Number.selectedIndex
       var idyears = new Array("$$idlist{$$codetitles[0]}");
       var idsems = new Array ($$idnums{$$codetitles[0]});
       var idsemlongs = new Array ($$idnums{$$codetitles[0]});
       var idcodes = new Array ($$idnums{$$codetitles[0]});
       var idcourses = new Array ($$idnums{$$codetitles[0]});
   END
       my @sort_a = split/","/,$$idlist{$$codetitles[0]}; 
       for (my $j=0; $j<@sort_a; $j++) {
           $$script_tag .= qq| idsems[$j] = new Array("$$idlist{$$codetitles[1]}{$sort_a[$j]}")\n|;
           $$script_tag .= qq| idsemlongs[$j] = new Array("$$idlist_titles{$$codetitles[1]}{$sort_a[$j]}")\n|;
           $$script_tag .= qq| idcodes[$j] = new Array($$idnums{$$codetitles[1]}{$sort_a[$j]})\n|;
           $$script_tag .= qq| idcourses[$j] = new Array($$idnums{$$codetitles[1]}{$sort_a[$j]})\n|;
           my @sort_b = split/","/,$$idlist{$$codetitles[1]}{$sort_a[$j]};
           for (my $k=0; $k<@sort_b; $k++) {
               my $idcode_entry = $$idlist{$$codetitles[2]}{$sort_a[$j]}{$sort_b[$k]};
               $$script_tag .= qq| idcodes[$j][$k] = new Array("$idcode_entry")\n|;
               $$script_tag .= qq| idcourses[$j][$k] = new Array($$idnums{$$codetitles[2]}{$sort_a[$j]}{$sort_b[$k]})\n|;
               my @sort_c = split/","/,$$idlist{$$codetitles[2]}{$sort_a[$j]}{$sort_b[$k]};
               for (my $l=0; $l<@sort_c; $l++) {
                   my $idcourse_entry = $$idlist{$$codetitles[3]}{$sort_a[$j]}{$sort_b[$k]}{$sort_c[$l]};
                   $$script_tag .= qq| idcourses[$j][$k][$l] = new Array("$idcourse_entry")\n|;
               }
           }
       }
       $$script_tag .= (<<END_OF_BLOCK);
    if (caller == "Year") {
      document.forms.logproblem.Department.length = 0
      document.forms.logproblem.Number.length = 0
      document.forms.logproblem.Department.options[0] = new Option("<-Pick Semester.","-1",true,true)
      document.forms.logproblem.Number.options[0] = new Option("<-Pick Department","-1",true,true)
      if (idyr == 0) {
       document.forms.logproblem.Semester.length = 0
       document.forms.logproblem.Semester.options[0] = new Option("<-Pick Year","-1",true,true)
      }
      else {
       document.forms.logproblem.Semester.length = 0
       document.forms.logproblem.Semester.options[0] = new Option("Select","-1",true,true)
       for (var i=0; i<idsems[idyr-1].length; i++) {
         document.forms.logproblem.Semester.options[i+1] = new Option(idsemlongs[idyr-1][i],idsems[idyr-1][i],false,false)
       }
      }
      document.forms.logproblem.Semester.selectedIndex = 0;
    }
    if (caller == "Semester") {
      document.forms.logproblem.Department.length = 0
      document.forms.logproblem.Number.length = 0
      document.forms.logproblem.Number.options[0] = new Option("<-Pick Department.","-1",true,true)
      if (idsem == 0) {
        document.forms.logproblem.Department.options[0] = new Option("<-Pick Semester.","-1",true,true)
        document.forms.logproblem.Department.options[0] = new Option("<-Pick Semester","-1",true,true)
      }
      else {
       document.forms.logproblem.Department.options[0] = new Option("Select","-1",true,true)    
       for (var i=0; i<idcodes[idyr-1][idsem-1].length; i++) {
         document.forms.logproblem.Department.options[i+1] = new Option(idcodes[idyr-1][idsem-1][i],idcodes[idyr-1][idsem-1][i],false,false)
       }
      }
      document.forms.logproblem.Department.selectedIndex = 0
    }
    if (caller == "Department") {
      document.forms.logproblem.Number.length = 0
      if (iddept == 0) {
        document.forms.logproblem.Number.options[0] = new Option("<-Pick Department.","-1",true,true)
      }
      else {
       document.forms.logproblem.Number.options[0] = new Option("Select","-1",true,true)
       for (var i=0; i<idcourses[idyr-1][idsem-1][iddept-1].length; i++) {
         document.forms.logproblem.Number.options[i+1] = new Option(idcourses[idyr-1][idsem-1][iddept-1][i],idcourses[idyr-1][idsem-1][iddept-1][i],false,false)
       }
      }
      document.forms.logproblem.Number.selectedIndex = 0
    }
   }
   END_OF_BLOCK
   }
   
 1;  1;

Removed from v.1.5  
changed lines
  Added in v.1.13


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