Diff for /loncom/interface/courseclassifier.pm between versions 1.6 and 1.9

version 1.6, 2009/05/01 01:30:08 version 1.9, 2010/07/08 23:19:19
Line 445  END Line 445  END
 }  }
   
 sub instcode_selectors_data {  sub instcode_selectors_data {
     my ($codedom,$formname,$cat_items,$codetitles,$cat_titles,$cat_order) = @_;      my ($codedom,$formname,$cat_items,$codetitles,$cat_titles,$cat_order,$officialjs) = @_;
     my ($jscript,%coursecodes,%codes,%idlist,%idnums,%idlist_titles,      my ($jscript,%coursecodes,%codes,%idlist,%idnums,%idlist_titles,
         %by_year,%by_sem,%by_dept);          %by_year,%by_sem,%by_dept);
     my ($numtitles,$lasttitle);      my ($numtitles,$lasttitle);
Line 478  sub instcode_selectors_data { Line 478  sub instcode_selectors_data {
                     $level = &recurse_options($codetitles->[$k],$idlist{$codetitles->[$k]},$level,$cat,$cat_items,\@data,\%by_year,\%by_sem,\%by_dept);                      $level = &recurse_options($codetitles->[$k],$idlist{$codetitles->[$k]},$level,$cat,$cat_items,\@data,\%by_year,\%by_sem,\%by_dept);
                 }                  }
                 $scripttext .= &build_javascript(\%by_year,\%by_sem,\%by_dept,$cat_order,$codetitles);                  $scripttext .= &build_javascript(\%by_year,\%by_sem,\%by_dept,$cat_order,$codetitles);
                 $jscript .= &javascript_select_filler($formname,$scripttext,$codetitles,$longtitles_str,$allidlist);                  if ($officialjs) {
                       $jscript .= '
   
   function toggleOfficial() {';
                       for (my $i=0; $i<@{$codetitles}-1; $i++) {
                           $jscript .= '
               document.'.$formname.'.'.$codetitles->[$i].'.selectedIndex = 0;';
                       }
       $jscript .=  '
   }
   
   function setOfficial(caller) {
      if (typeof(caller) != "undefined") {
          if (caller.options[caller.selectedIndex].value != 0) {
              if (document.'.$formname.'.official.length > 0) {
                  for (var j=0; j<document.'.$formname.'.official.length; j++) {
                      if (document.'.$formname.'.official[j].value == "on") {
                          document.'.$formname.'.official[j].checked = true;
                      }
                  }
               }
           }
       }
       return;
   }
   
   ';
   
                       $officialjs = 'setOfficial(caller);';
                   }
                   $jscript .= &javascript_select_filler($formname,$scripttext,$codetitles,$longtitles_str,$allidlist,$officialjs);
                 if ($env{'form.state'} eq 'listing') {                  if ($env{'form.state'} eq 'listing') {
                     $jscript .= '                      $jscript .= '
 function setElements() {  function setElements() {
Line 515  function setElements() { Line 545  function setElements() {
 sub build_instcode_selectors {  sub build_instcode_selectors {
     my ($numtitles,$lasttitle,$cat_items,$codetitles,$cat_titles,$cat_order) = @_;      my ($numtitles,$lasttitle,$cat_items,$codetitles,$cat_titles,$cat_order) = @_;
     my $output;      my $output;
       my @standardnames = &get_standard_codeitems();
     if ($numtitles > 0) {      if ($numtitles > 0) {
         $output .= '<table><tr>';          $output .= '<table><tr>';
         for (my $k=0; $k<$lasttitle-1; $k++) {          for (my $k=0; $k<$lasttitle-1; $k++) {
Line 532  sub build_instcode_selectors { Line 563  sub build_instcode_selectors {
                 @longitems = @items;                  @longitems = @items;
             }              }
             $output .= '<td align="center">'.$codetitles->[$k].'<br />'."\n".              $output .= '<td align="center">'.$codetitles->[$k].'<br />'."\n".
                        '<select name="'.$codetitles->[$k].'" onChange="courseSet()"'.                         '<select name="'.$standardnames[$k].'" onChange="courseSet(this)"'.
                        '>'."\n".'<option value="0" />All'."\n";                         '>'."\n".'<option value="0">'.&mt('All').'</option>'."\n";
             for (my $i=0; $i<@items; $i++) {              for (my $i=0; $i<@items; $i++) {
                 if ($longitems[$i] eq '') {                  if ($longitems[$i] eq '') {
                     $longitems[$i] = $items[$i];                      $longitems[$i] = $items[$i];
Line 543  sub build_instcode_selectors { Line 574  sub build_instcode_selectors {
             $output .= '</select></td>';              $output .= '</select></td>';
         }          }
         $output .= '<td align="center">'.$codetitles->[$lasttitle-1].'<br />'."\n".          $output .= '<td align="center">'.$codetitles->[$lasttitle-1].'<br />'."\n".
                    '<select name="'.$codetitles->[$lasttitle-1].'">'."\n".                     '<select name="'.$standardnames[$lasttitle-1].'">'."\n".
                    '<option value="0">'.&mt('All')."\n".                     '<option value="0">'.&mt('All')."\n".
                    '</option>'."\n".'</select>'."\n".                     '</option>'."\n".'</select>'."\n".
                    '</td></tr></table>'."\n";                     '</td></tr></table>'."\n";
         if ($numtitles > 4) {          if ($numtitles > 4) {
             $output .= '<br /><br />'.$codetitles->[$numtitles-1].'<br />'."\n".              $output .= '<br /><br />'.$codetitles->[$numtitles-1].'<br />'."\n".
                        '<input type="text" name="'.$codetitles->[$numtitles-1].                         '<input type="text" name="'.$standardnames[$numtitles-1].
                        '" /><br />'."\n";                         '" /><br />'."\n";
         }          }
         $output .= '<br />';          $output .= '<br />';
Line 640  sub build_javascript { Line 671  sub build_javascript {
 }  }
   
 sub javascript_select_filler {  sub javascript_select_filler {
     my ($formname,$scripttext,$codetitles,$longtitles_str,$allidlist) = @_;      my ($formname,$scripttext,$codetitles,$longtitles_str,$allidlist,$officialjs) = @_;
     my $output = <<END;      my $output = <<END;
   
 function courseSet() {  function courseSet(caller) {
     var longtitles = new Array ("$longtitles_str");      var longtitles = new Array ("$longtitles_str");
     var valyr = document.$formname.Year.options[document.$formname.Year.selectedIndex].value      var valyr = document.$formname.Year.options[document.$formname.Year.selectedIndex].value
     var valsem  = document.$formname.Semester.options[document.$formname.Semester.selectedIndex].value      var valsem  = document.$formname.Semester.options[document.$formname.Semester.selectedIndex].value
Line 774  function courseSet() { Line 805  function courseSet() {
         }          }
         document.$formname.Number.selectedIndex = 0          document.$formname.Number.selectedIndex = 0
     }      }
       $officialjs
 }  }
 END  END
     return $output;      return $output;
 }  }
   
 sub instcode_search_str {  sub instcode_search_str {
     my ($domain,$numtitles) = @_;      my ($domain,$numtitles,$codetitles) = @_;
     my $instcode;      my $instcode;
     if (defined($numtitles) && $numtitles == 0) {      if (defined($numtitles) && $numtitles == 0) {
         $instcode = '.+';          $instcode = '.+';
Line 789  sub instcode_search_str { Line 821  sub instcode_search_str {
         my $defaults_result =          my $defaults_result =
             &Apache::lonnet::auto_instcode_defaults($domain,\%codedefaults,              &Apache::lonnet::auto_instcode_defaults($domain,\%codedefaults,
                                                     \@code_order);                                                      \@code_order);
           my @standardnames = &get_standard_codeitems();
           my %local_to_standard;
           if (ref($codetitles) eq 'ARRAY') {
               for (my $i=0; $i<@{$codetitles}; $i++) {
                   $local_to_standard{$codetitles->[$i]} = $standardnames[$i];
               }
           }
         if ($defaults_result eq 'ok') {          if ($defaults_result eq 'ok') {
             $instcode ='^';              $instcode ='^';
             foreach my $item (@code_order) {              foreach my $loctitle (@code_order) {
                 if ($env{'form.'.$item} eq '0' ) {                  my $item = $local_to_standard{$loctitle};
                     $instcode .= $codedefaults{$item};                  if ($item ne '') {
                       if ($env{'form.'.$item} eq '0' ) {
                           $instcode .= $codedefaults{$item};
                       } else {
                           $instcode .= $env{'form.'.$item};
                       }
                 } else {                  } else {
                     $instcode .= $env{'form.'.$item};                      $instcode .= '.+';
                 }                  }
             }              }
             $instcode .= '$';              $instcode .= '$';
Line 806  sub instcode_search_str { Line 850  sub instcode_search_str {
     return $instcode;      return $instcode;
 }  }
   
   sub get_standard_codeitems {
       return ('Year','Semester','Department','Number');
   }
   
 1;  1;
   

Removed from v.1.6  
changed lines
  Added in v.1.9


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