--- loncom/interface/courseclassifier.pm 2010/12/03 04:57:35 1.8.8.1 +++ loncom/interface/courseclassifier.pm 2010/07/08 23:19:19 1.9 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Utilities for classifying courses based on institutional code # -# $Id: courseclassifier.pm,v 1.8.8.1 2010/12/03 04:57:35 raeburn Exp $ +# $Id: courseclassifier.pm,v 1.9 2010/07/08 23:19:19 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -39,10 +39,8 @@ sub retrieve_instcodes { 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 ++; - } + $$coursecodes{$course} = $courses{$course}{'inst_code'}; + $totcodes ++; } } return $totcodes; @@ -547,6 +545,7 @@ function setElements() { sub build_instcode_selectors { my ($numtitles,$lasttitle,$cat_items,$codetitles,$cat_titles,$cat_order) = @_; my $output; + my @standardnames = &get_standard_codeitems(); if ($numtitles > 0) { $output .= ''; for (my $k=0; $k<$lasttitle-1; $k++) { @@ -564,8 +563,8 @@ sub build_instcode_selectors { @longitems = @items; } $output .= ''; } $output .= '
'.$codetitles->[$k].'
'."\n". - ''."\n".''."\n"; for (my $i=0; $i<@items; $i++) { if ($longitems[$i] eq '') { $longitems[$i] = $items[$i]; @@ -575,13 +574,13 @@ sub build_instcode_selectors { $output .= '
'.$codetitles->[$lasttitle-1].'
'."\n". - ''."\n". ''."\n".''."\n". '
'."\n"; if ($numtitles > 4) { $output .= '

'.$codetitles->[$numtitles-1].'
'."\n". - '
'."\n"; } $output .= '
'; @@ -813,7 +812,7 @@ END } sub instcode_search_str { - my ($domain,$numtitles) = @_; + my ($domain,$numtitles,$codetitles) = @_; my $instcode; if (defined($numtitles) && $numtitles == 0) { $instcode = '.+'; @@ -822,13 +821,25 @@ sub instcode_search_str { my $defaults_result = &Apache::lonnet::auto_instcode_defaults($domain,\%codedefaults, \@code_order); + my @standardnames = &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') { $instcode ='^'; - foreach my $item (@code_order) { - if ($env{'form.'.$item} eq '0' ) { - $instcode .= $codedefaults{$item}; + foreach my $loctitle (@code_order) { + my $item = $local_to_standard{$loctitle}; + if ($item ne '') { + if ($env{'form.'.$item} eq '0' ) { + $instcode .= $codedefaults{$item}; + } else { + $instcode .= $env{'form.'.$item}; + } } else { - $instcode .= $env{'form.'.$item}; + $instcode .= '.+'; } } $instcode .= '$'; @@ -839,5 +850,9 @@ sub instcode_search_str { return $instcode; } +sub get_standard_codeitems { + return ('Year','Semester','Department','Number'); +} + 1;