Diff for /loncom/interface/courseclassifier.pm between versions 1.8.8.1 and 1.15

version 1.8.8.1, 2010/12/03 04:57:35 version 1.15, 2013/07/15 14:32:45
Line 30  package Apache::courseclassifier; Line 30  package Apache::courseclassifier;
 use strict;  use strict;
 use lib '/home/httpd/lib/perl/';  use lib '/home/httpd/lib/perl/';
 use Apache::lonnet;  use Apache::lonnet;
   use Apache::loncommon;
 use Apache::lonlocal;  use Apache::lonlocal;
 use LONCAPA;  use LONCAPA;
   
Line 54  sub sort_cats { Line 55  sub sort_cats {
     if (defined($$cat_order{$$codetitles[$num]})) {      if (defined($$cat_order{$$codetitles[$num]})) {
         foreach my $item (@{$$cat_order{$$codetitles[$num]}}) {          foreach my $item (@{$$cat_order{$$codetitles[$num]}}) {
             if (grep/^\Q$item\E$/,@unsorted) {              if (grep/^\Q$item\E$/,@unsorted) {
                 push @{$sorted}, $item;                  push(@{$sorted},$item);
             }              }
         }          }
     } else {      } else {
Line 260  sub build_code_selections { Line 261  sub build_code_selections {
 sub javascript_code_selections {  sub javascript_code_selections {
     my ($formname,@codetitles) = @_;      my ($formname,@codetitles) = @_;
     my $numtitles = @codetitles;      my $numtitles = @codetitles;
       my %lt = &Apache::lonlocal::texthash(
                         Select => 'Select',
                         Pick   => 'Pick',
                );
     my $output = (<<END_OF_BLOCK);      my $output = (<<END_OF_BLOCK);
  var display = new Array($numtitles)   var display = new Array($numtitles)
  if (caller == "" || caller == "$codetitles[0]") {   if (caller == "" || caller == "$codetitles[0]") {
      if (caller == "") {       if (caller == "") {
          document.$formname.Year.length = 0           document.$formname.Year.length = 0
          document.$formname.Year.options[0] = new Option("Select","-1",true,true)           document.$formname.Year.options[0] = new Option("$lt{'Select'}","-1",true,true)
          display[0] = new Array(idyears.length)           display[0] = new Array(idyears.length)
          for (var i=0; i<idyears.length; i++) {           for (var i=0; i<idyears.length; i++) {
              display[0][i] = idyears[i]               display[0][i] = idyears[i]
Line 286  sub javascript_code_selections { Line 291  sub javascript_code_selections {
      document.$formname.Semester.length = 0       document.$formname.Semester.length = 0
      document.$formname.Department.length = 0;       document.$formname.Department.length = 0;
      document.$formname.Number.length = 0       document.$formname.Number.length = 0
      document.$formname.Department.options[0] = new Option("<-Pick $codetitles[1]","-1",true,true)       document.$formname.Department.options[0] = new Option("<-$lt{'Pick'} $codetitles[1]","-1",true,true)
      document.$formname.Number.options[0] = new Option("<-Pick $codetitles[2]","-1",true,true)       document.$formname.Number.options[0] = new Option("<-$lt{'Pick'} $codetitles[2]","-1",true,true)
      if (idyr == 0 || caller == "") {       if (idyr == 0 || caller == "") {
          document.$formname.Semester.options[0] = new Option("<-Pick $codetitles[0]","-1",true,true)           document.$formname.Semester.options[0] = new Option("<-$lt{'Pick'} $codetitles[0]","-1",true,true)
      }       }
      else {       else {
          document.$formname.Semester.options[0] = new Option("Select","-1",true,true)           document.$formname.Semester.options[0] = new Option("$lt{'Select'}","-1",true,true)
          display[1] = new Array(idsems[idyr-1].length)           display[1] = new Array(idsems[idyr-1].length)
          for (var i=0; i<idsems[idyr-1].length; i++) {           for (var i=0; i<idsems[idyr-1].length; i++) {
              display[1][i] = idsems[idyr-1][i]               display[1][i] = idsems[idyr-1][i]
Line 311  sub javascript_code_selections { Line 316  sub javascript_code_selections {
    document.$formname.Number.length = 0     document.$formname.Number.length = 0
    document.$formname.Number.options[0] = new Option("<-Pick $codetitles[2]","-1",true,true)     document.$formname.Number.options[0] = new Option("<-Pick $codetitles[2]","-1",true,true)
    if (idsem == 0) {     if (idsem == 0) {
      document.$formname.Department.options[0] = new Option("<-Pick $codetitles[1]","-1",true,true)       document.$formname.Department.options[0] = new Option("<-$lt{'Pick'} $codetitles[1]","-1",true,true)
    }     }
    else {     else {
     document.$formname.Department.options[0] = new Option("Select","-1",true,true)      document.$formname.Department.options[0] = new Option("$lt{'Select'}","-1",true,true)
     display[2] = new Array(idcodes[idyr-1][idsem-1].length)      display[2] = new Array(idcodes[idyr-1][idsem-1].length)
     for (var i=0; i<idcodes[idyr-1][idsem-1].length; i++) {      for (var i=0; i<idcodes[idyr-1][idsem-1].length; i++) {
       display[2][i] = idcodes[idyr-1][idsem-1][i]        display[2][i] = idcodes[idyr-1][idsem-1][i]
Line 331  sub javascript_code_selections { Line 336  sub javascript_code_selections {
  if (caller == "$codetitles[2]") {   if (caller == "$codetitles[2]") {
    document.$formname.Number.length = 0     document.$formname.Number.length = 0
    if (iddept == 0) {     if (iddept == 0) {
      document.$formname.Number.options[0] = new Option("<-Pick $codetitles[2]","-1",true,true)       document.$formname.Number.options[0] = new Option("<-$lt{'Pick'} $codetitles[2]","-1",true,true)
    }     }
    else {     else {
     document.$formname.Number.options[0] = new Option("Select","-1",true,true)      document.$formname.Number.options[0] = new Option("Select","-1",true,true)
Line 512  function setOfficial(caller) { Line 517  function setOfficial(caller) {
                 }                  }
                 $jscript .= &javascript_select_filler($formname,$scripttext,$codetitles,$longtitles_str,$allidlist,$officialjs);                  $jscript .= &javascript_select_filler($formname,$scripttext,$codetitles,$longtitles_str,$allidlist,$officialjs);
                 if ($env{'form.state'} eq 'listing') {                  if ($env{'form.state'} eq 'listing') {
                       my @standardnames = &Apache::loncommon::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];
                           }
                       }
                     $jscript .= '                      $jscript .= '
 function setElements() {  function setElements() {
 ';  ';
                     for (my $i=0; $i<@{$codetitles}-1; $i++) {                      for (my $i=0; $i<@{$codetitles}-1; $i++) {
                         if ($env{'form.'.$codetitles->[$i]} != -1) {                          my $item = $local_to_standard{$codetitles->[$i]};
                           if ($env{'form.'.$item} != -1) {
                             $jscript .= '                              $jscript .= '
     for (var j=0; j<document.'.$formname.'.'.$codetitles->[$i].'.length; j++) {      for (var j=0; j<document.'.$formname.'.'.$item.'.length; j++) {
         if (document.'.$formname.'.'.$codetitles->[$i].'[j].value == "'.$env{'form.'.$codetitles->[$i]}.'") {          if (document.'.$formname.'.'.$item.'[j].value == "'.$env{'form.'.$item}.'") {
             document.'.$formname.'.'.$codetitles->[$i].'.selectedIndex = j;              document.'.$formname.'.'.$item.'.selectedIndex = j;
         }          }
     }      }
 ';  ';
                         }                          }
                     }                      }
                     $jscript .= '   courseSet()'."\n";                      $jscript .= '   courseSet()'."\n";
                     if ($env{'form.'.$codetitles->[-1]} != -1) {                      my $lastcodetitle =  $local_to_standard{$codetitles->[-1]};
                       if ($env{'form.'.$lastcodetitle} != -1) {
                         $jscript .= '                          $jscript .= '
     for (var j=0; j<document.'.$formname.'.'.$codetitles->[-1].'.length; j++) {      for (var j=0; j<document.'.$formname.'.'.$lastcodetitle.'.length; j++) {
         if (document.'.$formname.'.'.$codetitles->[-1].'[j].value == "'.$env{'form.'.$codetitles->[-1]}.'") {          if (document.'.$formname.'.'.$lastcodetitle.'[j].value == "'.$env{'form.'.$lastcodetitle}.'") {
             document.'.$formname.'.'.$codetitles->[-1].'.selectedIndex = j;              document.'.$formname.'.'.$lastcodetitle.'.selectedIndex = j;
         }          }
     }      }
 ';  ';
Line 547  function setElements() { Line 561  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 = &Apache::loncommon::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 564  sub build_instcode_selectors { Line 579  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(this)"'.                         '<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 575  sub build_instcode_selectors { Line 590  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 673  sub build_javascript { Line 688  sub build_javascript {
   
 sub javascript_select_filler {  sub javascript_select_filler {
     my ($formname,$scripttext,$codetitles,$longtitles_str,$allidlist,$officialjs) = @_;      my ($formname,$scripttext,$codetitles,$longtitles_str,$allidlist,$officialjs) = @_;
       my $all = &mt('All');
       my $nocrs = &mt('No courses');
     my $output = <<END;      my $output = <<END;
   
 function courseSet(caller) {  function courseSet(caller) {
Line 695  function courseSet(caller) { Line 712  function courseSet(caller) {
     if (selYear == -1) {      if (selYear == -1) {
         if (selSemester == -1) {          if (selSemester == -1) {
             if (selDepartment > -1) {              if (selDepartment > -1) {
                 document.$formname.Number.options[0] =  new Option('All','0',false,false);                  document.$formname.Number.options[0] =  new Option('$all','0',false,false);
                 for (var k=0; k<idcse_by_dep[selDepartment].length; k++) {                  for (var k=0; k<idcse_by_dep[selDepartment].length; k++) {
                     document.$formname.Number.options[k+1] = new Option(idcse_by_dep[selDepartment][k],idcse_by_dep[selDepartment][k],false,false);                      document.$formname.Number.options[k+1] = new Option(idcse_by_dep[selDepartment][k],idcse_by_dep[selDepartment][k],false,false);
   
                 }                  }
             }              }
             else {              else {
                 document.$formname.Number.options[0] = new Option("All","0",true,true);                  document.$formname.Number.options[0] = new Option('$all','0',true,true);
             }              }
         }          }
         else {          else {
Line 720  function courseSet(caller) { Line 737  function courseSet(caller) {
                     }                      }
                 }                  }
                 if (iddept != -1) {                  if (iddept != -1) {
                     document.$formname.Number.options[0] =  new Option('All','0',false,false);                      document.$formname.Number.options[0] =  new Option('$all','0',false,false);
                     for (var k=0; k<idcse_by_sem_num[idsem][iddept].length; k++) {                      for (var k=0; k<idcse_by_sem_num[idsem][iddept].length; k++) {
                         document.$formname.Number.options[k+1] = new Option(idcse_by_sem_num[idsem][iddept][k],idcse_by_sem_num[idsem][iddept][k],false,false);                          document.$formname.Number.options[k+1] = new Option(idcse_by_sem_num[idsem][iddept][k],idcse_by_sem_num[idsem][iddept][k],false,false);
                     }                      }
                 }                  }
                 else {                  else {
                     document.$formname.Number.options[0] =  new Option('No courses','0',true,true);                      document.$formname.Number.options[0] =  new Option('$nocrs','0',true,true);
                 }                  }
             }              }
             else {              else {
                 document.$formname.Number.options[0] = new Option("All","0",true,true);                  document.$formname.Number.options[0] = new Option('$all','0',true,true);
             }              }
         }          }
     }      }
Line 750  function courseSet(caller) { Line 767  function courseSet(caller) {
                     }                      }
                 }                  }
                 if (iddept != -1) {                  if (iddept != -1) {
                     document.$formname.Number.options[0] =  new Option('All','0',false,false);                      document.$formname.Number.options[0] =  new Option('$all','0',false,false);
                     for (var k=0; k<idcse_by_yr_num[idyr][iddept].length; k++) {                      for (var k=0; k<idcse_by_yr_num[idyr][iddept].length; k++) {
                         document.$formname.Number.options[k+1] = new Option(idcse_by_yr_num[idyr][iddept][k],idcse_by_yr_num[idyr][iddept][k],false,false);                          document.$formname.Number.options[k+1] = new Option(idcse_by_yr_num[idyr][iddept][k],idcse_by_yr_num[idyr][iddept][k],false,false);
                     }                      }
                 }                  }
                 else {                  else {
                     document.$formname.Number.options[0] =  new Option('No courses','0',true,true);                      document.$formname.Number.options[0] =  new Option('$nocrs','0',true,true);
                 }                  }
             }              }
             else {              else {
                 document.$formname.Number.options[0] = new Option("All","0",true,true);                  document.$formname.Number.options[0] = new Option('$all','0',true,true);
             }              }
         }          }
         else {          else {
Line 785  function courseSet(caller) { Line 802  function courseSet(caller) {
                     }                      }
                 }                  }
                 if (iddept != -1) {                  if (iddept != -1) {
                     document.$formname.Number.options[0] =  new Option('All','0',false,false);                      document.$formname.Number.options[0] =  new Option('$all','0',false,false);
                     for (var i=0; i<idcourses[idyr][idsem][iddept].length; i++) {                      for (var i=0; i<idcourses[idyr][idsem][iddept].length; i++) {
                         var display = idcourses[idyr][idsem][iddept][i];                          var display = idcourses[idyr][idsem][iddept][i];
                         if (longtitles[3] == 1) {                          if (longtitles[3] == 1) {
Line 797  function courseSet(caller) { Line 814  function courseSet(caller) {
                     }                      }
                 }                  }
                 else {                  else {
                     document.$formname.Number.options[0] =  new Option('No courses','0',true,true);                      document.$formname.Number.options[0] =  new Option('$nocrs','0',true,true);
                 }                  }
             }              }
             else {              else {
                 document.$formname.Number.options[0] =  new Option('All','0',true,true);                  document.$formname.Number.options[0] =  new Option('$all','0',true,true);
             }              }
         }          }
         document.$formname.Number.selectedIndex = 0          document.$formname.Number.selectedIndex = 0
Line 813  END Line 830  END
 }  }
   
 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 822  sub instcode_search_str { Line 839  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 = &Apache::loncommon::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{$loctitle};
                       } else {
                           $instcode .= $env{'form.'.$item};
                       }
                 } else {                  } else {
                     $instcode .= $env{'form.'.$item};                      $instcode .= '.+';
                 }                  }
             }              }
             $instcode .= '$';              $instcode .= '$';
Line 837  sub instcode_search_str { Line 866  sub instcode_search_str {
         }          }
     }      }
     return $instcode;      return $instcode;
   }
   
   sub instcode_from_selectors {
       my ($cdom,$noregexps) = @_;
       my $instcode;
       my $caller = 'global';
       my (%coursecodes,%codes,@codetitles,%cat_titles,%cat_order,
           %codedefaults,@code_order);
       my $format_reply =
           &Apache::lonnet::auto_instcode_format($caller,$cdom,\%coursecodes,
                               \%codes,\@codetitles,\%cat_titles,\%cat_order);
       my $defaults_result =
           &Apache::lonnet::auto_instcode_defaults($cdom,\%codedefaults,
                                                   \@code_order);
       if (($defaults_result eq 'ok') && ($format_reply eq 'ok')) {
           my @standardnames = &Apache::loncommon::get_standard_codeitems();
           my %local_to_standard;
           for (my $i=0; $i<@codetitles; $i++) {
               $local_to_standard{$codetitles[$i]} = $standardnames[$i];
           }
           foreach my $loctitle (@code_order) {
               my $category = $local_to_standard{$loctitle};
               if ($category ne '') {
                   if ($env{'form.'.$category} eq '-1' ) {
                       if ($noregexps) {
                           $instcode .= ' ';
                       } else {
                           $instcode .= $codedefaults{$category};
                       }
                   } else {
                       $instcode .= $env{'form.'.$category};
                   }
               } else {
                   $instcode .= '.+';
               }
           }
       }
       return $instcode;
 }  }
   
 1;  1;

Removed from v.1.8.8.1  
changed lines
  Added in v.1.15


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