Diff for /loncom/interface/lonsupportreq.pm between versions 1.5.2.1.2.1 and 1.24

version 1.5.2.1.2.1, 2004/11/08 19:23:26 version 1.24, 2005/04/07 03:58:02
Line 1 Line 1
   #
   # $Id$
   #
   # Copyright Michigan State University Board of Trustees
   #
   # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
   #
   # LON-CAPA is free software; you can redistribute it and/or modify
   # it under the terms of the GNU General Public License as published by
   # the Free Software Foundation; either version 2 of the License, or
   # (at your option) any later version.
   #
   # LON-CAPA is distributed in the hope that it will be useful,
   # but WITHOUT ANY WARRANTY; without even the implied warranty of
   # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   # GNU General Public License for more details.
   #
   # You should have received a copy of the GNU General Public License
   # along with LON-CAPA; if not, write to the Free Software
   # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   #
   # /home/httpd/html/adm/gpl.txt
   #
   # http://www.lon-capa.org/
   #
   
 package Apache::lonsupportreq;  package Apache::lonsupportreq;
   
 use strict;  use strict;
Line 6  use MIME::Types; Line 32  use MIME::Types;
 use MIME::Lite;  use MIME::Lite;
 use Apache::Constants qw(:common);  use Apache::Constants qw(:common);
 use Apache::loncommon();  use Apache::loncommon();
 use Apache::lonnet();  use Apache::lonnet;
 use Apache::lonlocal;  use Apache::lonlocal;
   
 sub handler {  sub handler {
Line 17  sub handler { Line 43  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 33  sub handler { Line 62  sub handler {
 sub print_request_form {  sub print_request_form {
     my ($r,$origurl,$function) = @_;      my ($r,$origurl,$function) = @_;
     my ($os,$browser,$bversion,$uhost,$uname,$udom,$uhome,$urole,$usec,$email,$cid,$cdom,$cnum,$ctitle,$ccode,$sectionlist,$lastname,$firstname,$server);      my ($os,$browser,$bversion,$uhost,$uname,$udom,$uhome,$urole,$usec,$email,$cid,$cdom,$cnum,$ctitle,$ccode,$sectionlist,$lastname,$firstname,$server);
     my $bodytag = &Apache::loncommon::bodytag('',$function,'topmargin="0",marginheight="0"',1);      my $bodytag = &Apache::loncommon::bodytag('',$function,'topmargin="0" marginheight="0" onLoad="initialize_codes()"',1);
     my $tablecolor = &Apache::loncommon::designparm($function.'.tabbg');      my $tablecolor = &Apache::loncommon::designparm($function.'.tabbg');
     if (($tablecolor eq '') || ($tablecolor eq '#FFFFFF')) {      if (($tablecolor eq '') || ($tablecolor eq '#FFFFFF')) {
         $tablecolor = '#CCCCFF';          $tablecolor = '#EEEE99';
     }      }
       $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 48  sub print_request_form { Line 78  sub print_request_form {
     $urole = $ENV{'request.role'};      $urole = $ENV{'request.role'};
     $usec = $ENV{'request.course.sec'};      $usec = $ENV{'request.course.sec'};
     $cid = $ENV{'request.course.id'};      $cid = $ENV{'request.course.id'};
     $server = $ENV{'SERVER_NAME'};      if ($origurl =~ m-^http://-) {
     my $scripttag = (<<END);          $server = $origurl;
 <script>      } else {
           $server = 'http://'.$ENV{'SERVER_NAME'}.$origurl;
       }
       my $scripttag = (<<'END');
 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 87  END Line 140  END
         my ($sec,$grp) = split/:/,$_;          my ($sec,$grp) = split/:/,$_;
         $groupid{$sec} = $grp;          $groupid{$sec} = $grp;
     }      }
     my $defdom = $Apache::lonnet::perlvar{'lonDefDomain'};      my $codedom = $Apache::lonnet::perlvar{'lonDefDomain'};
     my $codedom = $defdom;      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['codedom']);
       if (exists($ENV{'form.codedom'})) {
           $codedom = $ENV{'form.codedom'};
       }
       my $details_title;
       if ($codedom) {
           $details_title = '<br />('.$codedom.')';
       }
     my %coursecodes = ();      my %coursecodes = ();
     my %codes = ();      my %codes = ();
     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 = '';
       my $loaditems = qq|
   function initialize_codes() {
       return;
   }
       |;
     if ($cdom) {      if ($cdom) {
         $codedom = $cdom;          $codedom = $cdom;
     }      }
Line 114  END Line 182  END
         $totcodes = &retrieve_instcodes(\%coursecodes,$codedom,$totcodes);          $totcodes = &retrieve_instcodes(\%coursecodes,$codedom,$totcodes);
     }      }
     if ($totcodes > 0) {      if ($totcodes > 0) {
         $format_reply = &Apache::lonnet::auto_instcode_format($caller,$codedom,\%coursecodes,\%codes,\@codetitles,\%cat_titles,\%cat_order);          if ($ccode eq '') {
               $format_reply = &Apache::lonnet::auto_instcode_format($caller,$codedom,\%coursecodes,\%codes,\@codetitles,\%cat_titles,\%cat_order);
               if ($format_reply eq 'ok') {
                   my $numtypes = @codetitles;
                   &build_code_selections(\%codes,\@codetitles,\%cat_titles,\%cat_order,\%idlist,\%idnums,\%idlist_titles);
                   &javascript_code_selections($numtypes,\%cat_titles,\$jscript,\%idlist,\%idnums,\%idlist_titles,\@codetitles);
                   $loaditems = '';
               }
           }
     }      }
     $r->print(<<END);      my $html=&Apache::lonxml::xmlbegin();
 <html>      $r->print(<<ENDHEAD);
   $html
 <head>  <head>
  <title>LON-CAPA support request</title>   <title>LON-CAPA support request</title>
   <script type"text/javascript">
 $scripttag  $scripttag
   $jscript
   </script>
 </head>  </head>
 $bodytag  $bodytag
   ENDHEAD
       if ($r->uri eq '/adm/helpdesk') {
           &print_header($r,$origurl);
       }
       $r->print(<<"END");
   <form method="post" name="logproblem" enctype="multipart/form-data">
  <table width="580" border="0" cellpadding="0" cellspacing="0" bgcolor="#000000">   <table width="580" border="0" cellpadding="0" cellspacing="0" bgcolor="#000000">
   <tr>    <tr>
    <td>     <td>
Line 133  $bodytag Line 219  $bodytag
         <tr>          <tr>
          <td>           <td>
   <table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#ffffff">    <table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#ffffff">
            <form method="post" name="logproblem" enctype="multipart/form-data">  
            <tr>             <tr>
             <td width="140" bgcolor="$tablecolor">              <td width="140" bgcolor="$tablecolor">
              <table width="140" border="0" cellpadding="8" cellspacing="0">               <table width="140" border="0" cellpadding="8" cellspacing="0">
Line 158  END Line 243  END
         } elsif (defined($lastname) && $lastname ne '') {          } elsif (defined($lastname) && $lastname ne '') {
             $fullname= " $lastname";              $fullname= " $lastname";
         }          }
         $r->print('<input type="text" size="20" name="username" value="'.$fullname.'" /><br />');          $r->print('<input type="text" size="20" name="username" value="'.$fullname.'" />');
     }      }
     $r->print(<<END);      $r->print(<<END);
                   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" value="Submit Request" onClick="validate()" />&nbsp;
                </td>                 </td>
               </tr>                </tr>
              </table>               </table>
Line 223  END Line 309  END
         }          }
         if ($udomform eq '') {          if ($udomform eq '') {
             $udomform = '<i>domain</i>:&nbsp;';              $udomform = '<i>domain</i>:&nbsp;';
             $udomform .= &Apache::loncommon::select_dom_form('','udom');              $udomform .= &Apache::loncommon::select_dom_form($codedom,'udom');
         }          }
         if ($unameform eq '') {          if ($unameform eq '') {
             $unameform= '<i>username</i>:&nbsp;<input type="text" size="20" name="loncname" value="'.$uname.'" />&nbsp;&nbsp;';              $unameform= '<i>username</i>:&nbsp;<input type="text" size="12" name="uname" value="'.$uname.'" />&nbsp;&nbsp;';
         }          }
         $r->print($unameform.$udomform.'<br />Enter the username you use to log-in to your LON-CAPA system, and choose your domain.');          $r->print($unameform.$udomform.'<br />Enter the username you use to log-in to your LON-CAPA system, and choose your domain.');
     }      }
Line 254  END Line 340  END
              <table width="100%" border="0" cellpadding="8" cellspacing="0">               <table width="100%" border="0" cellpadding="8" cellspacing="0">
               <tr>                <tr>
                <td>                 <td>
                 http://$server$origurl<input type="hidden" name="origurl" value="http://$server$origurl" />                  $server<input type="hidden" name="sourceurl" value="$server" />
                </td>                 </td>
               </tr>                </tr>
              </table>               </table>
Line 293  END Line 379  END
             <td width="140" bgcolor="$tablecolor">              <td width="140" bgcolor="$tablecolor">
              <table width="140" border="0" cellpadding="8" cellspacing="0">               <table width="140" border="0" cellpadding="8" cellspacing="0">
               <tr>                <tr>
                <td align="right"><b>Course Details:</b>                 <td align="right"><b>Course Details:</b>$details_title
                </td>                 </td>
               </tr>                </tr>
              </table>               </table>
Line 303  END Line 389  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 = ();
                   my @longitems = ();
                   if ($idlist{$codetitles[0]} =~ /","/) {
                       @items = split/","/,$idlist{$codetitles[0]};
                   } else {
                       $items[0] = $idlist{$codetitles[0]};
                   }
                   if (defined($idlist_titles{$codetitles[0]})) {
                       if ($idlist_titles{$codetitles[0]} =~ /","/) {
                           @longitems = split/","/,$idlist_titles{$codetitles[0]};
                       } else {
                           $longitems[0] = $idlist_titles{$codetitles[0]};
                       }
                       for (my $i=0; $i<@longitems; $i++) {
                           if ($longitems[$i] eq '') {
                               $longitems[$i] = $items[$i];
                           }
                       }
                   } else {
                       @longitems = @items;
                   }
                   for (my $i=0; $i<@items; $i++) {
                       $r->print(' <option value="'.$items[$i].'">'.$longitems[$i].'</option>');
                   }
                   $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 344  END Line 491  END
                <td>                 <td>
 END  END
     if ($sectionlist) {      if ($sectionlist) {
         $r->print("<select name=\"section\">");          $r->print("<select name=\"section\"\n>".
                     "  <option value=\"\" selected=\"selected\">Select</option>\n");
         foreach (sort keys %groupid) {          foreach (sort keys %groupid) {
             if ($_ eq $groupid{$_} || $groupid{$_} eq '') {              if ($_ eq $groupid{$_} || $groupid{$_} eq '') {
                 $r->print("<option value=\"$_\" />$_");                  $r->print("  <option value=\"$_\" >$_</option>\n");
             } else {              } else {
                 $r->print("<option value=\"$_\" />$_ - (LON-CAPA sec: $groupid{$_})");                  $r->print("  <option value=\"$_\" >$_ - (LON-CAPA sec: $groupid{$_})</option>\n");
             }              }
         }          }
         $r->print("</select>");          $r->print("</select>");
Line 459  END Line 607  END
               <tr>                <tr>
                <td>                 <td>
                 <input type="hidden" name="action" value="process" />                  <input type="hidden" name="action" value="process" />
                 <input type="button" value="Submit Request Form" onClick="validate()"/> &nbsp;                  <input type="button" value="Submit Request" onClick="validate()"/> &nbsp;
                </td>                 </td>
                <td>&nbsp;</td>                 <td>&nbsp;</td>
                <td>                 <td>
Line 479  END Line 627  END
    </td>     </td>
   </tr>    </tr>
  </table>   </table>
   </form>
   </body>
   </html>
 END  END
     return;      return;
 }  }
Line 496  sub print_request_receipt { Line 647  sub print_request_receipt {
     my $fontcolor = &Apache::loncommon::designparm($function.'.font');      my $fontcolor = &Apache::loncommon::designparm($function.'.font');
     my $vlinkcolor = &Apache::loncommon::designparm($function.'.vlink');      my $vlinkcolor = &Apache::loncommon::designparm($function.'.vlink');
     my $tablecolor = &Apache::loncommon::designparm($function.'.tabbg');      my $tablecolor = &Apache::loncommon::designparm($function.'.tabbg');
     my @formvars = ('username','email','uname','udom','origurl','phone','section','coursecode','title','subject','description','screenshot');      my @formvars = ('username','email','uname','udom','sourceurl','phone','section','coursecode','title','subject','description','screenshot');
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},\@formvars);  
   
       &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},\@formvars);
       my $coursecode = $ENV{'form.coursecode'};
       if ($coursecode eq '') {
           if (defined($ENV{'form.Year'})) {
               $coursecode .= $ENV{'form.Year'};
           }
           if (defined($ENV{'form.Semester'})) {
               $coursecode .= $ENV{'form.Semester'};
           }
           if (defined($ENV{'form.Department'})) {
               $coursecode .= $ENV{'form.Department'};
           }
           if (defined($ENV{'form.Number'})) {
               $coursecode .= $ENV{'form.Number'};
           }
       }
     my $supportmsg = qq|      my $supportmsg = qq|
 Name: $ENV{'form.username'}  Name: $ENV{'form.username'}
 Email: $ENV{'form.email'}  Email: $ENV{'form.email'}
 Username/domain: $ENV{'form.uname'} - $ENV{'form.udom'}  Username/domain: $ENV{'form.uname'} - $ENV{'form.udom'}
 Tel: $ENV{'form.phone'}  Tel: $ENV{'form.phone'}
 Course Information: $ENV{'form.title'} - $ENV{'form.coursecode'} - section: $ENV{'form.section'}  Course Information: $ENV{'form.title'} - $coursecode - section: $ENV{'form.section'}
 Subject: $ENV{'form.subject'}  Subject: $ENV{'form.subject'}
 Description: $ENV{'form.description'}  Description: $ENV{'form.description'}
 URL: $ENV{'form.origurl'}  URL: $ENV{'form.sourceurl'}
 Date/Time: $reporttime  Date/Time: $reporttime
   
     |;      |;
Line 518  Date/Time: $reporttime Line 684  Date/Time: $reporttime
 <font color="$fontcolor">Email: </font><font color="$vlinkcolor">$ENV{'form.email'}</font><br />  <font color="$fontcolor">Email: </font><font color="$vlinkcolor">$ENV{'form.email'}</font><br />
 <font color="$fontcolor">Username/domain: </font><font color="$vlinkcolor">$ENV{'form.uname'} - $ENV{'form.udom'}</font><br />  <font color="$fontcolor">Username/domain: </font><font color="$vlinkcolor">$ENV{'form.uname'} - $ENV{'form.udom'}</font><br />
 <font color="$fontcolor">Tel: </font><font color="$vlinkcolor">$ENV{'form.phone'}</font><br />  <font color="$fontcolor">Tel: </font><font color="$vlinkcolor">$ENV{'form.phone'}</font><br />
 <font color="$fontcolor">Course Information: </font><font color="$vlinkcolor">$ENV{'form.title'} - $ENV{'form.coursecode'} - section: $ENV{'form.section'}</font><br />  <font color="$fontcolor">Course Information: </font><font color="$vlinkcolor">$ENV{'form.title'} - $coursecode - section: $ENV{'form.section'}</font><br />
 <font color="$fontcolor">Subject: </font><font color="$vlinkcolor">$ENV{'form.subject'}</font><br />  <font color="$fontcolor">Subject: </font><font color="$vlinkcolor">$ENV{'form.subject'}</font><br />
 <font color="$fontcolor">Description: </font><font color="$vlinkcolor">$descrip</font><br />  <font color="$fontcolor">Description: </font><font color="$vlinkcolor">$descrip</font><br />
 <font color="$fontcolor">URL: </font><font color="$vlinkcolor">$ENV{'form.origurl'}</font><br />  <font color="$fontcolor">URL: </font><font color="$vlinkcolor">$ENV{'form.sourceurl'}</font><br />
 <font color="$fontcolor">Date/Time: </font><font color="$vlinkcolor">$reporttime</font><br />  <font color="$fontcolor">Date/Time: </font><font color="$vlinkcolor">$reporttime</font><br />
     |;      |;
       my $html=&Apache::lonxml::xmlbegin();
     if ($to =~ m/^[^\@]+\@[^\@]+$/) {      $r->print(<<"END");
         $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>A support request has been sent to $to</h3>  <form name="logproblem">
   <input type="hidden" name="action" value="result" />
   </form>
 END  END
     } else {       if ($r->uri eq '/adm/helpdesk') {
           &print_header($r,$url,'process');
       }
       if ($to =~ m/^[^\@]+\@[^\@]+$/) {
           $r->print("<h3>A support request has been sent to $to</h3>");
       } else {
         $to = $admin;          $to = $admin;
  if ($to =~ m/^[^\@]+\@[^\@]+$/) {          if ($to =~ m/^[^\@]+\@[^\@]+$/) {
     $r->print(<<END);              $r->print("<h3>A support request has been sent to $to</h3>");
 <html>  
 <head>  
  <title>LON-CAPA support request recorded</title>  
 </head>  
 $bodytag  
  <h3>A support request has been sent to $to</h3>  
 END  END
         } else {          } else {
     $r->print(<<END);              $r->print(<<END);
 <html>  
 <head>  
  <title>LON-CAPA support request recorded</title>  
 </head>  
 $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 or administrator 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';              $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 703  END Line 864  END
    </td>     </td>
   </tr>    </tr>
  </table>   </table>
   </body>
   </html>
     ");      ");
 }  }
   
   sub print_header {
       my ($r,$origurl,$action) = @_;
       my $location=&Apache::loncommon::lonhttpdurl("/adm");
       my $tablecolor = '#EEEE99';
       my ($component_url);
       my $helpdesk_link = '<a href="javascript:validate()">';
       if ($action eq 'process') {
           $helpdesk_link = '<a href="/adm/helpdesk">';
       }
       my %lt = &Apache::lonlocal::texthash (
                                              login => 'Log-in help',
                                              ask   => 'Ask helpdesk',
                                              getst => 'Getting started guide',
                                              back =>  'Back to last location'
                                            );
       my ($getstartlink,$getstarttext);
       if (-e $Apache::lonnet::perlvar{'lonDocRoot'}.'/adm/gettingstarted.html') {
           $getstartlink = qq|<td align="center">&nbsp;<b><a href="/adm/gettingstarted.html">$lt{'getst'}</a></td>|;
           $getstarttext = ' '.&mt('and the "Getting started" guide').' ';
       }
       $r->print(<<END);
   <table width="620" border="0" cellspacing="0" cellpadding="0" height="55">   <tr height="50">    <td width='5'>&nbsp;</td>
      <td>
       <fieldset><legend><img src="$location/lonIcons/minilogo.gif" height='20' width='29' valign='bottom' />&nbsp;&nbsp;<b><font size="+1">LON-CAPA help/support</font></b></legend>
    <table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#000000">
     <tr>
      <td>
       <table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#000000">
        <tr>
         <td>
          <table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#ffffff">
           <tr>
            <td>
             <table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#ffffff">
              <tr bgcolor="$tablecolor">
               <td align="center"><img src="$location/help/gif/smallHelp.gif" border="0" alt="(Login help)" valign="middle" />&nbsp;<b><a href="/adm/loginproblems.html">$lt{'login'}</a></td>
               <td align="center">&nbsp;<b>$helpdesk_link<img src="$location/lonIcons/helpdesk.gif" border="0" alt="(Ask helpdesk)" valign="middle" />&nbsp;$lt{'ask'}</a></b>&nbsp;</td>$getstartlink
               <td align="center">&nbsp;<b><a href="$origurl" target="_top"><img src="$location/lonIcons/move_up.gif" border="0" alt="(Back to last location)" valign="middle" />&nbsp;$lt{'back'}</a></b>&nbsp;</td>
              </tr>
             </table>
            </td>
           </tr>
          </table>
         </td>
        </tr>
       </table>
      </td>
     </tr>
    </table>
   </fieldset>
     </td>
     <td width='5'>&nbsp;</td>
    </tr>
    <tr height='5'>
     <td colspan='3' height='5'>&nbsp;</td>
    </tr>
   END
       unless ($action eq 'process') {
           $r->print('
    <tr>
     <td colspan="3">'.&mt('
   Please review the information in "Log-in help"').$getstarttext.' '.&mt('if you are unable to log-in').'.  '.&mt('If your problem is still unresolved, the form below can be used to send a question to the LON-CAPA helpdesk').'.<br /><font size="-1"><b>'.&mt('Note').':</b> '.&mt('Student questions about course content should be directed to the course instructor').'.</font><br /><br />
     </td>
    </tr>');
       }
       $r->print('
   </table>');
       return;
   }
   
 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 718  sub retrieve_instcodes { Line 951  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[2]})) {
                           foreach (@sorted_b) {
                               push @sorted_b_titles, $$cat_titles{$$codetitles[2]}{$_};
                           }
                       }
                       $$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 = ();
                           my @sorted_c_titles = ();
                           &sort_cats($num,$cat_order,$codetitles,\@{$idarrays{$$codetitles[3]}{$key_a}{$key_b}{$key_c}},\@sorted_c);
                           if (defined($$cat_titles{$$codetitles[3]})) {
                               foreach (@sorted_c) {
                                   push @sorted_c_titles, $$cat_titles{$$codetitles[3]}{$_};
                               }
                           }
                           $$idlist{$$codetitles[3]}{$key_a}{$key_b}{$key_c} = join('","',@sorted_c);
                           $$idnums{$$codetitles[3]}{$key_a}{$key_b}{$key_c} = scalar(@sorted_c);
                           if (defined($$cat_titles{$$codetitles[3]})) {
                               $$idlist_titles{$$codetitles[2]}{$key_a}{$key_b} = join('","',@sorted_c_titles);
                           }
                       }
                   }
               }
           } 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 = ();
                               my @sorted_d_titles = ();
                               &sort_cats($num,$cat_order,$codetitles,$idarrays{$$codetitles[4]}{$key_a}{$key_b}{$key_c}{$key_d},\@sorted_d);
                               if (defined($$cat_titles{$$codetitles[4]})) {
                                   foreach (@sorted_d) {
                                       push @sorted_d_titles, $$cat_titles{$$codetitles[4]}{$_};
                                   }
                               }
                               $$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,$cat_titles,$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);
       my @longtitles = ();
       for (my $i=0; $i<$numtitles; $i++) {
          if (defined($$cat_titles{$$codetitles[$i]})) {
              $longtitles[$i] = 1;
          } else {
              $longtitles[$i] = 0;
          }
       }
       my $longtitles_str = join('","',@longtitles);
       $$script_tag .= <<END;
   function courseSet(caller) {
       var ids = new Array ("$seltitle_str");
       var formitems = new Array ($numtitles);
       var longtitles = new Array ("$longtitles_str");
       var idyr = document.logproblem.Year.selectedIndex
       var idsem  = document.logproblem.Semester.selectedIndex
       var iddept = document.logproblem.Department.selectedIndex
       var idclass = document.logproblem.Number.selectedIndex
       var idyears = new Array("$$idlist{$$codetitles[0]}");
   END
       if ($longtitles[0]) {
           $$script_tag .=
             qq|      var idyearslongs = new Array("$$idlist_titles{$$codetitles[0]}")\n|;
       }
       $$script_tag .=
             "      var idsems = new Array ($$idnums{$$codetitles[0]})\n";
       if ($longtitles[1]) {
           $$script_tag .=
             "      var idsemslongs = new Array ($$idnums{$$codetitles[0]})\n";
       }
       $$script_tag .=
             "      var idcodes = new Array ($$idnums{$$codetitles[0]})\n";
       if ($longtitles[2]) {
           $$script_tag .=
             "      var idcodeslongs = new Array ($$idnums{$$codetitles[0]})\n";
       }
       $$script_tag .=
             "      var idcourses = new Array ($$idnums{$$codetitles[0]})\n";
       if ($longtitles[3]) {
           $$script_tag .=
             "      var idcourseslongs =  new Array ($$idnums{$$codetitles[0]})\n";
       }
       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|;
           if ($longtitles[1]) {
               $$script_tag .= qq| idsemslongs[$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|;
           if ($longtitles[2]) {
               $$script_tag .= qq| idcodeslongs[$j] = new Array($$idnums{$$codetitles[1]}{$sort_a[$j]})\n|;
           }
           $$script_tag .= qq| idcourses[$j] = new Array($$idnums{$$codetitles[1]}{$sort_a[$j]})\n|;
           if ($longtitles[3]) {
               $$script_tag .= qq| idcourseslongs[$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|;
               if ($longtitles[2]) {
                   my $idcodelong_entry = $$idlist_titles{$$codetitles[2]}{$sort_a[$j]}{$sort_b[$k]};
                   $$script_tag .= qq| idcodeslongs[$j][$k] = new Array("$idcodelong_entry")\n|;
               }
               $$script_tag .= qq| idcourses[$j][$k] = new Array($$idnums{$$codetitles[2]}{$sort_a[$j]}{$sort_b[$k]})\n|;
               if ($longtitles[3]) {
                   $$script_tag .= qq| idcourseslongs[$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|;
                   if ($longtitles[3]) {
                       my $idcourselong_entry = $$idlist_titles{$$codetitles[3]}{$sort_a[$j]}{$sort_b[$k]}{$sort_c[$l]};
                       $$script_tag .= qq| idcourseslongs[$j][$k][$l] = new Array("$idcourselong_entry")\n|;
                   }
               }
           }
       }
       $$script_tag .= (<<END_OF_BLOCK);
    var display = new Array($numtitles)
    if (caller == "") {
       document.logproblem.Year.length = 0
       document.logproblem.Year.options[0] = new Option("Select","-1",true,true)
       display[0] = new Array(idyears.length)
       for (var i=0; i<idyears.length; i++) {
         display[0][i] = idyears[i]
         if (longtitles[0] == 1) {
             if (idyearslongs[i] != "") {
                 display[0][i] = idyearslongs[i]
             }
         }
         document.logproblem.Year.options[i+1] = new Option(display[0][i],idyears[i],false,false)
       }
       document.logproblem.Year.selectedIndex = 0;
    }
    if (caller == "$$codetitles[0]") {
      document.logproblem.Department.length = 0
      document.logproblem.Number.length = 0
      document.logproblem.Department.options[0] = new Option("<-Pick $$codetitles[1]","-1",true,true)
      document.logproblem.Number.options[0] = new Option("<-Pick $$codetitles[2]","-1",true,true)
      if (idyr == 0) {
       document.logproblem.Semester.length = 0
       document.logproblem.Semester.options[0] = new Option("<-Pick $$codetitles[0]","-1",true,true)
      }
      else {
       document.logproblem.Semester.length = 0
       document.logproblem.Semester.options[0] = new Option("Select","-1",true,true)
       display[1] = new Array(idsems[idyr-1].length)
       for (var i=0; i<idsems[idyr-1].length; i++) {
         display[1][i] = idsems[idyr-1][i]
         if (longtitles[1] == 1) {
             if (idsemslongs[idyr-1][i] != "") {
                 display[1][i] = idsemslongs[idyr-1][i]
             }
         }
         document.logproblem.Semester.options[i+1] = new Option(display[1][i],idsems[idyr-1][i],false,false)
       }
      }
      document.logproblem.Semester.selectedIndex = 0;
    }
    if (caller == "$$codetitles[1]") {
      document.logproblem.Department.length = 0
      document.logproblem.Number.length = 0
      document.logproblem.Number.options[0] = new Option("<-Pick $$codetitles[2]","-1",true,true)
      if (idsem == 0) {
        document.logproblem.Department.options[0] = new Option("<-Pick $$codetitles[1]","-1",true,true)
      }
      else {
       document.logproblem.Department.options[0] = new Option("Select","-1",true,true)    
       display[2] = new Array(idcodes[idyr-1][idsem-1].length)
       for (var i=0; i<idcodes[idyr-1][idsem-1].length; i++) {
         display[2][i] = idcodes[idyr-1][idsem-1][i]
         if (longtitles[2] == 1) {
             if (idcodeslongs[idyr-1][idsem-1][i] != "") {
                 display[2][i] = idcodeslongs[idyr-1][idsem-1][i]
             }
         }
         document.logproblem.Department.options[i+1] = new Option(display[2][i],idcodes[idyr-1][idsem-1][i],false,false)
       }
      }
      document.logproblem.Department.selectedIndex = 0
    }
    if (caller == "$$codetitles[2]") {
      document.logproblem.Number.length = 0
      if (iddept == 0) {
        document.logproblem.Number.options[0] = new Option("<-Pick $$codetitles[2]","-1",true,true)
      }
      else {
       document.logproblem.Number.options[0] = new Option("Select","-1",true,true)
       display[3] = new Array (idcourses[idyr-1][idsem-1][iddept-1].length)
       for (var i=0; i<idcourses[idyr-1][idsem-1][iddept-1].length; i++) {
         display[3][i] = idcourses[idyr-1][idsem-1][iddept-1][i]
         if (longtitles[3] == 1) {
           if (idcourseslongs[idyr-1][idsem-1][iddept-1][i] != "") {
               display[3][i] = idcourseslongs[idyr-1][idsem-1][iddept-1][i]
           }
         }
         document.logproblem.Number.options[i+1] = new Option(display[3][i],idcourses[idyr-1][idsem-1][iddept-1][i],false,false)
       }
      }
      document.logproblem.Number.selectedIndex = 0
    }
   }
   
   function initialize_codes() {
       courseSet();
       return;
   }
   END_OF_BLOCK
   }
   
 1;  1;

Removed from v.1.5.2.1.2.1  
changed lines
  Added in v.1.24


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.