--- loncom/interface/courseclassifier.pm 2017/01/18 21:24:39 1.26 +++ loncom/interface/courseclassifier.pm 2023/07/10 01:55:15 1.30 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Utilities for classifying courses based on institutional code # -# $Id: courseclassifier.pm,v 1.26 2017/01/18 21:24:39 raeburn Exp $ +# $Id: courseclassifier.pm,v 1.30 2023/07/10 01:55:15 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -34,22 +34,6 @@ use Apache::loncommon; use Apache::lonlocal; use LONCAPA; -sub retrieve_instcodes { - my ($coursecodes,$codedom) = @_; - my $totcodes; - my %courses = &Apache::lonnet::courseiddump($codedom,'.',1,'.','.','.', - undef,undef,'Course'); - foreach my $course (keys(%courses)) { - if (ref($courses{$course}) eq 'HASH') { - if ($courses{$course}{'inst_code'} ne '') { - $$coursecodes{$course} = $courses{$course}{'inst_code'}; - $totcodes ++; - } - } - } - return $totcodes; -} - sub sort_cats { my ($num,$cat_order,$codetitles,$idsarrayref,$sorted) = @_; my @unsorted = @{$idsarrayref}; @@ -85,7 +69,8 @@ sub recurse_list { push @{$$idarrays{$$codetitles[2]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}}, $$codes{$cid}{$$codetitles[2]}; } } else { - @{$$idarrays{$$codetitles[2]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}} = ("$$codes{$cid}{$$codetitles[2]}"); } + @{$$idarrays{$$codetitles[2]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}} = ("$$codes{$cid}{$$codetitles[2]}"); + } } else { %{$$idarrays{$$codetitles[2]}{$$codes{$cid}{$$codetitles[0]}}} = (); @{$$idarrays{$$codetitles[2]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}} = ("$$codes{$cid}{$$codetitles[2]}"); @@ -418,7 +403,6 @@ function toggleSecVis() { showlist = 'inline'; showbox = 'none'; } - alert("crscode is ||"+crscode+"|| and currcode is ||"+currcode+"|| and showlist is ||"+showlist+"|| and showbox is ||"+showbox+"||"); if (document.getElementById('LC_helpdesk_sectionlist')) { document.getElementById('LC_helpdesk_sectionlist').style.display = showlist; } @@ -533,17 +517,23 @@ END sub instcode_selectors_data { my ($codedom,$formname,$cat_items,$codetitles,$cat_titles,$cat_order,$officialjs) = @_; - my ($jscript,%coursecodes,%codes,%idlist,%idnums,%idlist_titles, - %by_year,%by_sem,%by_dept); - my ($numtitles,$lasttitle); - my $caller = 'global'; - my $totcodes = &retrieve_instcodes(\%coursecodes,$codedom); - if ($totcodes > 0) { - if (&Apache::lonnet::auto_instcode_format($caller,$codedom,\%coursecodes, - \%codes,$codetitles,$cat_titles,$cat_order) eq 'ok') { - &build_code_selections(\%codes,$codetitles,$cat_titles,$cat_order, + my ($jscript,$codes,%idlist,%idnums,%idlist_titles,%by_year,%by_sem,%by_dept); + my ($numtitles,$lasttitle,$totcodes); + my $instcats = &Apache::lonnet::get_dom_instcats($codedom); + if (ref($instcats) eq 'HASH') { + if ((ref($instcats->{'codetitles'}) eq 'ARRAY') && (ref($instcats->{'codes'}) eq 'HASH') && + (ref($instcats->{'cat_titles'}) eq 'HASH') && (ref($instcats->{'cat_order'}) eq 'HASH')) { + %{$codes} = %{$instcats->{'codes'}}; + @{$codetitles} = @{$instcats->{'codetitles'}}; + %{$cat_titles} = %{$instcats->{'cat_titles'}}; + %{$cat_order} = %{$instcats->{'cat_order'}}; + $totcodes = scalar(keys(%{$codes})); + if ((!$totcodes) && (exists($instcats->{'totcodes'}))) { + $totcodes = $instcats->{'totcodes'}; + } + &build_code_selections($codes,$codetitles,$cat_titles,$cat_order, \%idlist,\%idnums,\%idlist_titles); - my ($scripttext,$longtitles) = + my ($scripttext,$longtitles) = &javascript_definitions($codetitles,\%idlist,\%idlist_titles, \%idnums,$cat_titles); my $longtitles_str = join('","',@{$longtitles}); @@ -1061,16 +1051,17 @@ sub instcode_search_str { 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 (@codetitles,%codedefaults,@code_order); + my $instcats = &Apache::lonnet::get_dom_instcats($cdom); + if (ref($instcats) eq 'HASH') { + if (ref($instcats->{'codetitles'}) eq 'ARRAY') { + @codetitles = @{$instcats->{'codetitles'}}; + } + } my $defaults_result = &Apache::lonnet::auto_instcode_defaults($cdom,\%codedefaults, \@code_order); - if (($defaults_result eq 'ok') && ($format_reply eq 'ok')) { + if (($defaults_result eq 'ok') && (@codetitles > 0)) { my @standardnames = &Apache::loncommon::get_standard_codeitems(); my %local_to_standard; for (my $i=0; $i<@codetitles; $i++) {