Diff for /loncom/interface/coursecatalog.pm between versions 1.95 and 1.96

version 1.95, 2018/02/01 04:51:02 version 1.96, 2018/09/18 02:18:43
Line 225  sub handler { Line 225  sub handler {
         $r->print('<br />'.&Apache::loncommon::end_page());          $r->print('<br />'.&Apache::loncommon::end_page());
         return OK;          return OK;
     } else {      } else {
         if ($env{'form.coursenum'}) {          if ($env{'form.coursenum'} ne '') {
             $cnum = $env{'form.coursenum'};              if ($env{'form.coursenum'} =~ /^$LONCAPA::match_courseid$/) {
                   $cnum = $env{'form.coursenum'};
               } else {
                   delete($env{'form.coursenum'});
               }
         }          }
     }      }
   
     if ($env{'form.catalog_maxdepth'} ne '') {      my (@cats,@trails,%allitems,%idx,@jsarray,%subcathash,$subcats,%maxd,
         $env{'form.catalog_maxdepth'} =~ s{\D}{}g;          $toplevelstr,$maxdepthstr);
     }  
   
     my (@cats,@trails,%allitems,%idx,@jsarray,%subcathash,$subcats);  
     if ($env{'form.withsubcats'}) {      if ($env{'form.withsubcats'}) {
         $subcats = \%subcathash;          $subcats = \%subcathash;
     }      }
     &Apache::loncommon::extract_categories($cathash,\@cats,\@trails,\%allitems,      &Apache::loncommon::extract_categories($cathash,\@cats,\@trails,\%allitems,
                                            \%idx,\@jsarray,$subcats);                                             \%idx,\@jsarray,$subcats,\%maxd);
       if (ref($cats[0]) eq 'ARRAY') {
           foreach my $item (@{$cats[0]}) {
               $toplevelstr .= "'".&js_escape($item)."::0',";
               $maxdepthstr .= "'$maxd{$item}',";
           }
           $toplevelstr =~ s/,$//;
           $maxdepthstr =~ s/,$//;
       }
       &validate_input(\@cats,\%maxd);
     my ($numtitles,@codetitles);      my ($numtitles,@codetitles);
     if (($env{'form.coursenum'} ne '') && ($knownuser)) {      if (($env{'form.coursenum'} ne '') && ($knownuser)) {
         &course_details($r,$codedom,$formname,$domdesc,\@trails,\%allitems,\@codetitles);          &course_details($r,$codedom,$formname,$domdesc,\@trails,\%allitems,\@codetitles);
Line 249  sub handler { Line 259  sub handler {
         my $catjs = <<"ENDSCRIPT";          my $catjs = <<"ENDSCRIPT";
   
 function setCatDepth(depth) {  function setCatDepth(depth) {
     document.coursecats.catalog_maxdepth.value = depth;      var depth = parseInt(depth);
     if (depth == '') {      if (depth !== NaN) {
         document.coursecats.currcat_0.value = '';          if (depth > 0) {
               var possmaxd = 0;
               var toplevel = new Array($toplevelstr);
               var maxdepths = new Array($maxdepthstr);
               if (toplevel.length) {
                   for (var i=0; i<toplevel.length; i++) {
                       var item = unescape(toplevel[i]);
                       if (item == document.coursecats.currcat_0.value) {
                           possmaxd = maxdepths[i];
                           break;
                       }
                   }
               }
               if (depth > possmaxd) {
                   depth = possmaxd;
               }
           }
           document.coursecats.catalog_maxdepth.value = depth;
       } else {
           document.coursecats.currcat_0.value = ''; 
           document.coursecats.catalog_maxdepth.value = '';
     }      }
     document.coursecats.submit();      document.coursecats.submit();
     return;      return;
Line 360  ENDJS Line 390  ENDJS
     return OK;      return OK;
 }  }
   
   sub validate_input {
       my ($cats,$maxd) = @_;
       my $currcat = '';
       my $depth = 0;
       if ($env{'form.catalog_maxdepth'} ne '') {
           $env{'form.catalog_maxdepth'} =~ s{\D}{}g;
       }
       if ((ref($cats) eq 'ARRAY') && (ref($maxd) eq 'HASH')) {
           if (ref($cats->[0]) eq 'ARRAY') {
               if (@{$cats->[0]} == 1) {
                   if ($cats->[0][0] eq 'instcode') {
                       $currcat = 'instcode::0';
                   } elsif ($cats->[0][0] eq 'communities') {
                       $currcat = 'communities::0';
                   } elsif ($cats->[0][0] eq 'placement') {
                       $currcat = 'placement::0';
                   } else {
                       my $name = $cats->[0][0];
                       $currcat = &escape($name).'::0';
                   }
                   if (exists($maxd->{$cats->[0][0]})) {
                       if ($env{'form.catalog_maxdepth'} <= $maxd->{$cats->[0][0]}) {
                           $depth = $env{'form.catalog_maxdepth'};
                       } else {
                           $depth = $maxd->{$cats->[0][0]};
                       }
                   }
               } elsif ((@{$cats->[0]} > 1) && ($env{'form.currcat_0'} ne '')) {
                   my ($escname) = ($env{'form.currcat_0'} =~ /^([^:]+)\:\:0$/);
                   if ($escname =~ /^instcode|communities|placement$/) {
                       $currcat = $env{'form.currcat_0'};
                       if (exists($maxd->{$escname})) {
                           if ($env{'form.catalog_maxdepth'} <= $maxd->{$escname}) {
                               $depth = $env{'form.catalog_maxdepth'};
                           } else {
                               $depth = $maxd->{$escname};
                           }
                       } else {
                           $depth = 1;
                       }
                   } elsif ($escname ne '') {
                       my $name = &unescape($escname);
                       if (grep(/^\Q$name\E$/,@{$cats->[0]})) {
                           $currcat = $env{'form.currcat_0'};
                           if (exists($maxd->{$name})) {
                               if ($env{'form.catalog_maxdepth'} <= $maxd->{$name}) {
                                   $depth = $env{'form.catalog_maxdepth'};
                               } else {
                                   $depth = $maxd->{$name};
                               }
                           }
                       }
                   }
               }
           }
       }
       $env{'form.currcat_0'} = $currcat;
       $env{'form.catalog_maxdepth'} = $depth;
       return;
   }
   
 sub course_details {  sub course_details {
     my ($r,$codedom,$formname,$domdesc,$trails,$allitems,$codetitles) = @_;      my ($r,$codedom,$formname,$domdesc,$trails,$allitems,$codetitles) = @_;
     my $output;      my $output;

Removed from v.1.95  
changed lines
  Added in v.1.96


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