--- loncom/interface/courseclassifier.pm 2009/05/01 01:30:08 1.6 +++ loncom/interface/courseclassifier.pm 2010/07/09 14:40:20 1.10 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Utilities for classifying courses based on institutional code # -# $Id: courseclassifier.pm,v 1.6 2009/05/01 01:30:08 raeburn Exp $ +# $Id: courseclassifier.pm,v 1.10 2010/07/09 14:40:20 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -30,6 +30,7 @@ package Apache::courseclassifier; use strict; use lib '/home/httpd/lib/perl/'; use Apache::lonnet; +use Apache::loncommon; use Apache::lonlocal; use LONCAPA; @@ -258,12 +259,16 @@ sub build_code_selections { sub javascript_code_selections { my ($formname,@codetitles) = @_; my $numtitles = @codetitles; + my %lt = &Apache::lonlocal::texthash( + Select => 'Select', + Pick => 'Pick', + ); my $output = (<[$k],$idlist{$codetitles->[$k]},$level,$cat,$cat_items,\@data,\%by_year,\%by_sem,\%by_dept); } $scripttext .= &build_javascript(\%by_year,\%by_sem,\%by_dept,$cat_order,$codetitles); - $jscript .= &javascript_select_filler($formname,$scripttext,$codetitles,$longtitles_str,$allidlist); + if ($officialjs) { + $jscript .= ' + +function toggleOfficial() {'; + for (my $i=0; $i<@{$codetitles}-1; $i++) { + $jscript .= ' + document.'.$formname.'.'.$codetitles->[$i].'.selectedIndex = 0;'; + } + $jscript .= ' +} + +function setOfficial(caller) { + if (typeof(caller) != "undefined") { + if (caller.options[caller.selectedIndex].value != 0) { + if (document.'.$formname.'.official.length > 0) { + for (var j=0; j'; for (my $k=0; $k<$lasttitle-1; $k++) { @@ -532,8 +568,8 @@ sub build_instcode_selectors { @longitems = @items; } $output .= ''.$codetitles->[$k].'
'."\n". - ''."\n".''."\n"; for (my $i=0; $i<@items; $i++) { if ($longitems[$i] eq '') { $longitems[$i] = $items[$i]; @@ -543,13 +579,13 @@ sub build_instcode_selectors { $output .= ''; } $output .= ''.$codetitles->[$lasttitle-1].'
'."\n". - ''."\n". ''."\n".''."\n". ''."\n"; if ($numtitles > 4) { $output .= '

'.$codetitles->[$numtitles-1].'
'."\n". - '
'."\n"; } $output .= '
'; @@ -640,10 +676,10 @@ sub build_javascript { } sub javascript_select_filler { - my ($formname,$scripttext,$codetitles,$longtitles_str,$allidlist) = @_; + my ($formname,$scripttext,$codetitles,$longtitles_str,$allidlist,$officialjs) = @_; my $output = <[$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 .= '$'; @@ -804,6 +853,40 @@ sub instcode_search_str { } } return $instcode; +} + +sub instcode_from_selectors { + my ($cdom) = @_; + 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 $defaults_result = + &Apache::lonnet::auto_instcode_defaults($cdom,\%codedefaults, + \@code_order); + if (($defaults_result eq 'ok') && ($format_reply eq 'ok')) { + my @standardnames = &Apache::loncommon::get_standard_codeitems(); + my %local_to_standard; + for (my $i=0; $i<@codetitles; $i++) { + $local_to_standard{$codetitles[$i]} = $standardnames[$i]; + } + foreach my $loctitle (@code_order) { + my $category = $local_to_standard{$loctitle}; + if ($category ne '') { + if ($env{'form.'.$category} eq '-1' ) { + $instcode .= $codedefaults{$category}; + } else { + $instcode .= $env{'form.'.$category}; + } + } else { + $instcode .= '.+'; + } + } + } + return $instcode; } 1;