--- 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 .= ''.$codetitles->[$k].' '."\n".
- ' | ';
}
$output .= ''.$codetitles->[$lasttitle-1].' '."\n".
- ''."\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;