Diff for /loncom/interface/courseclassifier.pm between versions 1.16 and 1.20

version 1.16, 2014/03/11 21:42:18 version 1.20, 2014/12/11 00:07:12
Line 37  use LONCAPA; Line 37  use LONCAPA;
 sub retrieve_instcodes {  sub retrieve_instcodes {
     my ($coursecodes,$codedom) = @_;      my ($coursecodes,$codedom) = @_;
     my $totcodes;      my $totcodes;
     my %courses = &Apache::lonnet::courseiddump($codedom,'.',1,'.','.','.',                                                undef,undef,'Course');      my %courses = &Apache::lonnet::courseiddump($codedom,'.',1,'.','.','.',
                                                   undef,undef,'Course');
     foreach my $course (keys(%courses)) {      foreach my $course (keys(%courses)) {
         if (ref($courses{$course}) eq 'HASH') {          if (ref($courses{$course}) eq 'HASH') {
             if ($courses{$course}{'inst_code'} ne '') {              if ($courses{$course}{'inst_code'} ne '') {
Line 147  sub build_code_selections { Line 148  sub build_code_selections {
     for (my $i=1; $i<@{$codetitles}; $i++) {      for (my $i=1; $i<@{$codetitles}; $i++) {
         %{$idarrays{$$codetitles[$i]}} = ();          %{$idarrays{$$codetitles[$i]}} = ();
     }      }
     foreach my $cid (sort keys %{$codes}) {      foreach my $cid (sort(keys(%{$codes}))) {
         &recurse_list($cid,$codetitles,$codes,0,\%idarrays);          &recurse_list($cid,$codetitles,$codes,0,\%idarrays);
     }      }
     for (my $num=0; $num<@{$codetitles}; $num++) {      for (my $num=0; $num<@{$codetitles}; $num++) {
Line 168  sub build_code_selections { Line 169  sub build_code_selections {
         } elsif ($num == 1) {          } elsif ($num == 1) {
             %{$$idlist{$$codetitles[1]}} = ();              %{$$idlist{$$codetitles[1]}} = ();
             %{$$idlist_titles{$$codetitles[1]}} = ();              %{$$idlist_titles{$$codetitles[1]}} = ();
             foreach my $key_a (keys %{$idarrays{$$codetitles[1]}}) {              foreach my $key_a (keys(%{$idarrays{$$codetitles[1]}})) {
                 my @sorted_a = ();                  my @sorted_a = ();
                 my @sorted_a_titles = ();                  my @sorted_a_titles = ();
                 &sort_cats($num,$cat_order,$codetitles,\@{$idarrays{$$codetitles[1]}{$key_a}},\@sorted_a);                  &sort_cats($num,$cat_order,$codetitles,\@{$idarrays{$$codetitles[1]}{$key_a}},\@sorted_a);
Line 186  sub build_code_selections { Line 187  sub build_code_selections {
         } elsif ($num == 2) {          } elsif ($num == 2) {
             %{$$idlist{$$codetitles[2]}} = ();              %{$$idlist{$$codetitles[2]}} = ();
             %{$$idlist_titles{$$codetitles[2]}} = ();              %{$$idlist_titles{$$codetitles[2]}} = ();
             foreach my $key_a (keys %{$idarrays{$$codetitles[2]}}) {              foreach my $key_a (keys(%{$idarrays{$$codetitles[2]}})) {
                 %{$$idlist{$$codetitles[2]}{$key_a}} = ();                  %{$$idlist{$$codetitles[2]}{$key_a}} = ();
                 %{$$idlist_titles{$$codetitles[2]}{$key_a}} = ();                  %{$$idlist_titles{$$codetitles[2]}{$key_a}} = ();
                 foreach my $key_b (keys %{$idarrays{$$codetitles[2]}{$key_a}}) {                  foreach my $key_b (keys(%{$idarrays{$$codetitles[2]}{$key_a}})) {
                     my @sorted_b = ();                      my @sorted_b = ();
                     my @sorted_b_titles = ();                      my @sorted_b_titles = ();
                     &sort_cats($num,$cat_order,$codetitles,\@{$idarrays{$$codetitles[2]}{$key_a}{$key_b}},\@sorted_b);                      &sort_cats($num,$cat_order,$codetitles,\@{$idarrays{$$codetitles[2]}{$key_a}{$key_b}},\@sorted_b);
Line 207  sub build_code_selections { Line 208  sub build_code_selections {
             }              }
         } elsif ($num == 3) {          } elsif ($num == 3) {
             %{$$idlist{$$codetitles[3]}} = ();              %{$$idlist{$$codetitles[3]}} = ();
             foreach my $key_a (keys %{$idarrays{$$codetitles[3]}}) {              foreach my $key_a (keys(%{$idarrays{$$codetitles[3]}})) {
                 %{$$idlist{$$codetitles[3]}{$key_a}} = ();                  %{$$idlist{$$codetitles[3]}{$key_a}} = ();
                 foreach my $key_b (keys %{$idarrays{$$codetitles[3]}{$key_a}}) {                  foreach my $key_b (keys(%{$idarrays{$$codetitles[3]}{$key_a}})) {
                     %{$$idlist{$$codetitles[3]}{$key_a}{$key_b}} = ();                      %{$$idlist{$$codetitles[3]}{$key_a}{$key_b}} = ();
                     foreach my $key_c (keys %{$idarrays{$$codetitles[3]}{$key_a}{$key_b}}) {                      foreach my $key_c (keys(%{$idarrays{$$codetitles[3]}{$key_a}{$key_b}})) {
                         my @sorted_c = ();                          my @sorted_c = ();
                         my @sorted_c_titles = ();                          my @sorted_c_titles = ();
                         &sort_cats($num,$cat_order,$codetitles,\@{$idarrays{$$codetitles[3]}{$key_a}{$key_b}{$key_c}},\@sorted_c);                          &sort_cats($num,$cat_order,$codetitles,\@{$idarrays{$$codetitles[3]}{$key_a}{$key_b}{$key_c}},\@sorted_c);
Line 230  sub build_code_selections { Line 231  sub build_code_selections {
             }              }
         } elsif ($num == 4) {          } elsif ($num == 4) {
             %{$$idlist{$$codetitles[4]}} = ();              %{$$idlist{$$codetitles[4]}} = ();
             foreach my $key_a (keys %{$idarrays{$$codetitles[4]}}) {              foreach my $key_a (keys(%{$idarrays{$$codetitles[4]}})) {
                 %{$$idlist{$$codetitles[4]}{$key_a}} = ();                  %{$$idlist{$$codetitles[4]}{$key_a}} = ();
                 foreach my $key_b (keys %{$idarrays{$$codetitles[4]}{$key_a}}) {                  foreach my $key_b (keys(%{$idarrays{$$codetitles[4]}{$key_a}})) {
                     %{$$idlist{$$codetitles[4]}{$key_a}{$key_b}} = ();                      %{$$idlist{$$codetitles[4]}{$key_a}{$key_b}} = ();
                     foreach my $key_c (keys %{$idarrays{$$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}} = ();                          %{$$idlist{$$codetitles[4]}{$key_a}{$key_b}{$key_c}} = ();
                         foreach my $key_d (keys %{$idarrays{$$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 = ();
                             my @sorted_d_titles = ();                              my @sorted_d_titles = ();
                             &sort_cats($num,$cat_order,$codetitles,$idarrays{$$codetitles[4]}{$key_a}{$key_b}{$key_c}{$key_d},\@sorted_d);                              &sort_cats($num,$cat_order,$codetitles,$idarrays{$$codetitles[4]}{$key_a}{$key_b}{$key_c}{$key_d},\@sorted_d);
Line 488  sub instcode_selectors_data { Line 489  sub instcode_selectors_data {
                 if ($officialjs) {                  if ($officialjs) {
                     $jscript .= '                      $jscript .= '
   
 function toggleOfficial() {';  function toggleOfficial() {
      var choice; 
      for (var i=0; i<document.'.$formname.'.official.length; i++) {
          if (document.'.$formname.'.official[i].checked) {
              choice = document.'.$formname.'.official[i].value;
          }
      }
      if (choice == "off") {
          if (document.getElementById("instcodes")) {
              document.getElementById("instcodes").style.display = "none";
          }';
                     for (my $i=0; $i<@{$codetitles}-1; $i++) {                      for (my $i=0; $i<@{$codetitles}-1; $i++) {
                         $jscript .= '                          $jscript .= '
             document.'.$formname.'.'.$codetitles->[$i].'.selectedIndex = 0;';         document.'.$formname.'.'.$codetitles->[$i].'.selectedIndex = 0;';
                     }                      }
     $jscript .=  '      $jscript .= '
      } else {
          if (document.getElementById("instcodes")) { 
              document.getElementById("instcodes").style.display = "block";
          }
      }
 }  }
   
 function setOfficial(caller) {  function setOfficial(caller) {
Line 563  sub build_instcode_selectors { Line 579  sub build_instcode_selectors {
     my $output;      my $output;
     my @standardnames = &Apache::loncommon::get_standard_codeitems();      my @standardnames = &Apache::loncommon::get_standard_codeitems();
     if ($numtitles > 0) {      if ($numtitles > 0) {
         $output .= '<table><tr>';          my $style;
           if ($env{'form.official'} eq 'off') {
               $style = ' style="display: none"';
           }
           $output .= '<div id="instcodes"'.$style.'><table><tr>';
         for (my $k=0; $k<$lasttitle-1; $k++) {          for (my $k=0; $k<$lasttitle-1; $k++) {
             my (@items,@unsorted);              my (@items,@unsorted);
             if (ref($cat_items->{$codetitles->[$k]}) eq 'ARRAY') {              if (ref($cat_items->{$codetitles->[$k]}) eq 'ARRAY') {
Line 599  sub build_instcode_selectors { Line 619  sub build_instcode_selectors {
                        '<input type="text" name="'.$standardnames[$numtitles-1].                         '<input type="text" name="'.$standardnames[$numtitles-1].
                        '" /><br />'."\n";                         '" /><br />'."\n";
         }          }
         $output .= '<br />';          $output .= '</div>';
     }      }
     return $output;      return $output;
 }  }
Line 613  sub instcode_selectors { Line 633  sub instcode_selectors {
     if ($numtitles > 0) {      if ($numtitles > 0) {
         my $official = ' checked="checked" ';          my $official = ' checked="checked" ';
         my $unofficial = '';          my $unofficial = '';
         if ($env{'form.official'} eq 'off') {          if (($formname eq 'filterpicker') && ($env{'form.official'} eq 'off')) {
             $unofficial = $official;              $unofficial = $official;
             $official = '';              $official = '';
         }          }
         $output .= '<span class="LC_nobreak">'.&mt('Official course:').'&nbsp;<label>'.          $output .= '<span class="LC_nobreak">'.&mt('Official course:').'&nbsp;<label>'.
                    '<input type="radio" name="official" value="on"'.$official.' />'.                     '<input type="radio" name="official" value="on"'.$official.
                    &mt('Yes').'</label>'.('&nbsp;'x3).'<label>'.                     ' onclick="toggleOfficial();" />'.&mt('Yes').'</label>'.
                      ('&nbsp;'x3).'<label>'.
                    '<input type="radio" name="official" value="off"'.$unofficial.                     '<input type="radio" name="official" value="off"'.$unofficial.
                    ' onclick="toggleOfficial();" />'.&mt('No').'</label></span><br />'.                     ' onclick="toggleOfficial();" />'.&mt('No').'</label></span><br />'.
                    &build_instcode_selectors($numtitles,$lasttitle,\%cat_items,$codetitles,                     &build_instcode_selectors($numtitles,$lasttitle,\%cat_items,$codetitles,
Line 718  sub javascript_select_filler { Line 739  sub javascript_select_filler {
     my $nocrs = &mt('No courses');      my $nocrs = &mt('No courses');
     my $output = <<END;      my $output = <<END;
   
 function courseSet(caller) {  function courseSet(caller, onload) {
     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 = '';
     var valsem  = document.$formname.Semester.options[document.$formname.Semester.selectedIndex].value      var valsem = '';
     var valdept = document.$formname.Department.options[document.$formname.Department.selectedIndex].value      var valdept = '';
     var valclass = document.$formname.Number.options[document.$formname.Number.selectedIndex].value      var valclass = '';
       if (onload) {
           valyr = "$env{'form.Year'}";
           valsem = "$env{'form.Semester'}";
           valdept = "$env{'form.Department'}";
           valclass = "$env{'form.Number'}";
       } else {
           valyr = document.$formname.Year.options[document.$formname.Year.selectedIndex].value;
           valsem  = document.$formname.Semester.options[document.$formname.Semester.selectedIndex].value;
           valdept = document.$formname.Department.options[document.$formname.Department.selectedIndex].value;
           valclass = document.$formname.Number.options[document.$formname.Number.selectedIndex].value;
       }
     var idyears = new Array("$allidlist");      var idyears = new Array("$allidlist");
     var idyr = -1;      var idyr = -1;
     var idsem = -1;      var idsem = -1;
Line 732  function courseSet(caller) { Line 764  function courseSet(caller) {
   
     $scripttext      $scripttext
   
     selYear = document.$formname.Year.selectedIndex-1;      if (onload) {
     selSemester = document.$formname.Semester.selectedIndex-1;          if (document.$formname.Year.options.length > 0) {
     selDepartment = document.$formname.Department.selectedIndex-1;              for (var i = 0; i< document.$formname.Year.options.length; i++) {
                   if (document.$formname.Year.options[i].value == "$env{'form.Year'}") {
                       document.$formname.Year.selectedIndex = i;
                       break;
                   }
               }
           }
           if (document.$formname.Department.options.length > 0) {
               for (var i = 0; i< document.$formname.Department.options.length; i++) {
                   if (document.$formname.Department.options[i].value == "$env{'form.Department'}") {
                       document.$formname.Department.selectedIndex = i;
                       break;
                   }
               }
           }
           if (document.$formname.Semester.options.length > 0) {
               for (var i = 0; i< document.$formname.Semester.options.length; i++) {
                   if (document.$formname.Semester.options[i].value == "$env{'form.Semester'}") {
                       document.$formname.Semester.selectedIndex = i;
                       break;
                   }
               }
           }
       }
   
       var selYear = document.$formname.Year.selectedIndex-1;
       var selSemester = document.$formname.Semester.selectedIndex-1;
       var selDepartment = document.$formname.Department.selectedIndex-1;
     if (selYear == -1) {      if (selYear == -1) {
         if (selSemester == -1) {          if (selSemester == -1) {
             if (selDepartment > -1) {              if (selDepartment > -1) {
Line 828  function courseSet(caller) { Line 887  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 849  function courseSet(caller) { Line 908  function courseSet(caller) {
         }          }
         document.$formname.Number.selectedIndex = 0          document.$formname.Number.selectedIndex = 0
     }      }
     $officialjs      if (onload) {
           if (document.$formname.Number.options.length > 0) {
               for (var i = 0; i< document.$formname.Number.options.length; i++) {
                   if (document.$formname.Number.options[i].value == "$env{'form.Number'}") {
                       document.$formname.Number.selectedIndex = i;
                       break;
                   }
               }
           }
       } else {
           $officialjs
       }
 }  }
 END  END
     return $output;      return $output;

Removed from v.1.16  
changed lines
  Added in v.1.20


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