--- loncom/interface/coursecatalog.pm 2008/06/27 04:59:45 1.32 +++ loncom/interface/coursecatalog.pm 2008/07/07 15:20:18 1.36 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler for displaying the course catalog interface # -# $Id: coursecatalog.pm,v 1.32 2008/06/27 04:59:45 raeburn Exp $ +# $Id: coursecatalog.pm,v 1.36 2008/07/07 15:20:18 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -71,19 +71,48 @@ sub handler { } my $domdesc = &Apache::lonnet::domain($codedom,'description'); &Apache::lonhtmlcommon::clear_breadcrumbs(); + + my %domconfig = + &Apache::lonnet::get_dom('configuration',['coursecategories'],$codedom); + my (@cats,@trails,%allitems,%idx,@jsarray,%subcathash,$cathash); + if (ref($domconfig{'coursecategories'}) eq 'HASH') { + $cathash = $domconfig{'coursecategories'}{'cats'}; + } else { + $cathash = {}; + } + my $subcats; + if ($env{'form.withsubcats'}) { + $subcats = \%subcathash; + } + &Apache::loncommon::extract_categories($cathash,\@cats,\@trails,\%allitems, + \%idx,\@jsarray,$subcats); if ($env{'form.coursenum'} ne '' && &user_is_known()) { - &course_details($r,$codedom,$formname,$domdesc); + &course_details($r,$codedom,$formname,$domdesc,\@trails,\%allitems); } else { - my $catlinks = &category_breadcrumbs($codedom); + my ($catlinks,$has_subcats) = &category_breadcrumbs($codedom,@cats); my $catjs = <<"ENDSCRIPT"; function setCatDepth(depth) { document.coursecats.catalog_maxdepth.value = depth; + if (depth == '') { + document.coursecats.currcat_0.value = ''; + } document.coursecats.submit(); return; } ENDSCRIPT + if ($env{'form.state'} eq 'listing') { + $catjs .= qq| +function changeSort(caller) { + document.$formname.sortby.value = caller; + document.$formname.submit(); +} +function setCourseId(caller) { + document.$formname.coursenum.value = caller; + document.$formname.submit(); +}\n|; + } my $numtitles; if ($env{'form.currcat_0'} eq 'instcode::0') { $numtitles = &instcode_course_selector($r,$codedom,$formname,$domdesc, @@ -96,7 +125,25 @@ ENDSCRIPT $catjs = ''; &cat_header($r,$codedom,$catjs,\%add_entries,$catlinks); if ($env{'form.currcat_0'} ne '') { - $r->print(&print_course_listing($codedom)); + $r->print('