version 1.6, 2009/05/01 01:30:08
|
version 1.31, 2025/02/24 23:41:39
|
Line 30 package Apache::courseclassifier;
|
Line 30 package Apache::courseclassifier;
|
use strict; |
use strict; |
use lib '/home/httpd/lib/perl/'; |
use lib '/home/httpd/lib/perl/'; |
use Apache::lonnet; |
use Apache::lonnet; |
|
use Apache::loncommon; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use LONCAPA; |
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') { |
|
$$coursecodes{$course} = $courses{$course}{'inst_code'}; |
|
$totcodes ++; |
|
} |
|
} |
|
return $totcodes; |
|
} |
|
|
|
sub sort_cats { |
sub sort_cats { |
my ($num,$cat_order,$codetitles,$idsarrayref,$sorted) = @_; |
my ($num,$cat_order,$codetitles,$idsarrayref,$sorted) = @_; |
my @unsorted = @{$idsarrayref}; |
my @unsorted = @{$idsarrayref}; |
if (defined($$cat_order{$$codetitles[$num]})) { |
if (defined($$cat_order{$$codetitles[$num]})) { |
foreach my $item (@{$$cat_order{$$codetitles[$num]}}) { |
foreach my $item (@{$$cat_order{$$codetitles[$num]}}) { |
if (grep/^\Q$item\E$/,@unsorted) { |
if (grep/^\Q$item\E$/,@unsorted) { |
push @{$sorted}, $item; |
push(@{$sorted},$item); |
} |
} |
} |
} |
} else { |
} else { |
Line 81 sub recurse_list {
|
Line 69 sub recurse_list {
|
push @{$$idarrays{$$codetitles[2]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}}, $$codes{$cid}{$$codetitles[2]}; |
push @{$$idarrays{$$codetitles[2]}{$$codes{$cid}{$$codetitles[0]}}{$$codes{$cid}{$$codetitles[1]}}}, $$codes{$cid}{$$codetitles[2]}; |
} |
} |
} else { |
} 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 { |
} else { |
%{$$idarrays{$$codetitles[2]}{$$codes{$cid}{$$codetitles[0]}}} = (); |
%{$$idarrays{$$codetitles[2]}{$$codes{$cid}{$$codetitles[0]}}} = (); |
@{$$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]}"); |
Line 144 sub build_code_selections {
|
Line 133 sub build_code_selections {
|
for (my $i=1; $i<@{$codetitles}; $i++) { |
for (my $i=1; $i<@{$codetitles}; $i++) { |
%{$idarrays{$$codetitles[$i]}} = (); |
%{$idarrays{$$codetitles[$i]}} = (); |
} |
} |
foreach my $cid (sort keys %{$codes}) { |
foreach my $cid (sort(keys(%{$codes}))) { |
&recurse_list($cid,$codetitles,$codes,0,\%idarrays); |
&recurse_list($cid,$codetitles,$codes,0,\%idarrays); |
} |
} |
for (my $num=0; $num<@{$codetitles}; $num++) { |
for (my $num=0; $num<@{$codetitles}; $num++) { |
Line 165 sub build_code_selections {
|
Line 154 sub build_code_selections {
|
} elsif ($num == 1) { |
} elsif ($num == 1) { |
%{$$idlist{$$codetitles[1]}} = (); |
%{$$idlist{$$codetitles[1]}} = (); |
%{$$idlist_titles{$$codetitles[1]}} = (); |
%{$$idlist_titles{$$codetitles[1]}} = (); |
foreach my $key_a (keys %{$idarrays{$$codetitles[1]}}) { |
foreach my $key_a (keys(%{$idarrays{$$codetitles[1]}})) { |
my @sorted_a = (); |
my @sorted_a = (); |
my @sorted_a_titles = (); |
my @sorted_a_titles = (); |
&sort_cats($num,$cat_order,$codetitles,\@{$idarrays{$$codetitles[1]}{$key_a}},\@sorted_a); |
&sort_cats($num,$cat_order,$codetitles,\@{$idarrays{$$codetitles[1]}{$key_a}},\@sorted_a); |
Line 183 sub build_code_selections {
|
Line 172 sub build_code_selections {
|
} elsif ($num == 2) { |
} elsif ($num == 2) { |
%{$$idlist{$$codetitles[2]}} = (); |
%{$$idlist{$$codetitles[2]}} = (); |
%{$$idlist_titles{$$codetitles[2]}} = (); |
%{$$idlist_titles{$$codetitles[2]}} = (); |
foreach my $key_a (keys %{$idarrays{$$codetitles[2]}}) { |
foreach my $key_a (keys(%{$idarrays{$$codetitles[2]}})) { |
%{$$idlist{$$codetitles[2]}{$key_a}} = (); |
%{$$idlist{$$codetitles[2]}{$key_a}} = (); |
%{$$idlist_titles{$$codetitles[2]}{$key_a}} = (); |
%{$$idlist_titles{$$codetitles[2]}{$key_a}} = (); |
foreach my $key_b (keys %{$idarrays{$$codetitles[2]}{$key_a}}) { |
foreach my $key_b (keys(%{$idarrays{$$codetitles[2]}{$key_a}})) { |
my @sorted_b = (); |
my @sorted_b = (); |
my @sorted_b_titles = (); |
my @sorted_b_titles = (); |
&sort_cats($num,$cat_order,$codetitles,\@{$idarrays{$$codetitles[2]}{$key_a}{$key_b}},\@sorted_b); |
&sort_cats($num,$cat_order,$codetitles,\@{$idarrays{$$codetitles[2]}{$key_a}{$key_b}},\@sorted_b); |
Line 204 sub build_code_selections {
|
Line 193 sub build_code_selections {
|
} |
} |
} elsif ($num == 3) { |
} elsif ($num == 3) { |
%{$$idlist{$$codetitles[3]}} = (); |
%{$$idlist{$$codetitles[3]}} = (); |
foreach my $key_a (keys %{$idarrays{$$codetitles[3]}}) { |
foreach my $key_a (keys(%{$idarrays{$$codetitles[3]}})) { |
%{$$idlist{$$codetitles[3]}{$key_a}} = (); |
%{$$idlist{$$codetitles[3]}{$key_a}} = (); |
foreach my $key_b (keys %{$idarrays{$$codetitles[3]}{$key_a}}) { |
foreach my $key_b (keys(%{$idarrays{$$codetitles[3]}{$key_a}})) { |
%{$$idlist{$$codetitles[3]}{$key_a}{$key_b}} = (); |
%{$$idlist{$$codetitles[3]}{$key_a}{$key_b}} = (); |
foreach my $key_c (keys %{$idarrays{$$codetitles[3]}{$key_a}{$key_b}}) { |
foreach my $key_c (keys(%{$idarrays{$$codetitles[3]}{$key_a}{$key_b}})) { |
my @sorted_c = (); |
my @sorted_c = (); |
my @sorted_c_titles = (); |
my @sorted_c_titles = (); |
&sort_cats($num,$cat_order,$codetitles,\@{$idarrays{$$codetitles[3]}{$key_a}{$key_b}{$key_c}},\@sorted_c); |
&sort_cats($num,$cat_order,$codetitles,\@{$idarrays{$$codetitles[3]}{$key_a}{$key_b}{$key_c}},\@sorted_c); |
Line 227 sub build_code_selections {
|
Line 216 sub build_code_selections {
|
} |
} |
} elsif ($num == 4) { |
} elsif ($num == 4) { |
%{$$idlist{$$codetitles[4]}} = (); |
%{$$idlist{$$codetitles[4]}} = (); |
foreach my $key_a (keys %{$idarrays{$$codetitles[4]}}) { |
foreach my $key_a (keys(%{$idarrays{$$codetitles[4]}})) { |
%{$$idlist{$$codetitles[4]}{$key_a}} = (); |
%{$$idlist{$$codetitles[4]}{$key_a}} = (); |
foreach my $key_b (keys %{$idarrays{$$codetitles[4]}{$key_a}}) { |
foreach my $key_b (keys(%{$idarrays{$$codetitles[4]}{$key_a}})) { |
%{$$idlist{$$codetitles[4]}{$key_a}{$key_b}} = (); |
%{$$idlist{$$codetitles[4]}{$key_a}{$key_b}} = (); |
foreach my $key_c (keys %{$idarrays{$$codetitles[4]}{$key_a}{$key_b}}) { |
foreach my $key_c (keys(%{$idarrays{$$codetitles[4]}{$key_a}{$key_b}})) { |
%{$$idlist{$$codetitles[4]}{$key_a}{$key_b}{$key_c}} = (); |
%{$$idlist{$$codetitles[4]}{$key_a}{$key_b}{$key_c}} = (); |
foreach my $key_d (keys %{$idarrays{$$codetitles[4]}{$key_a}{$key_b}{$key_c}}) { |
foreach my $key_d (keys(%{$idarrays{$$codetitles[4]}{$key_a}{$key_b}{$key_c}})) { |
my @sorted_d = (); |
my @sorted_d = (); |
my @sorted_d_titles = (); |
my @sorted_d_titles = (); |
&sort_cats($num,$cat_order,$codetitles,$idarrays{$$codetitles[4]}{$key_a}{$key_b}{$key_c}{$key_d},\@sorted_d); |
&sort_cats($num,$cat_order,$codetitles,$idarrays{$$codetitles[4]}{$key_a}{$key_b}{$key_c}{$key_d},\@sorted_d); |
Line 256 sub build_code_selections {
|
Line 245 sub build_code_selections {
|
} |
} |
|
|
sub javascript_code_selections { |
sub javascript_code_selections { |
my ($formname,@codetitles) = @_; |
my ($formname,$codetitlesref,$knowncodes,$sectionlist) = @_; |
|
return unless (ref($codetitlesref) eq 'ARRAY'); |
|
my @codetitles = @{$codetitlesref}; |
my $numtitles = @codetitles; |
my $numtitles = @codetitles; |
|
my %lt = &Apache::lonlocal::texthash( |
|
Select => 'Select', |
|
Pick => 'Pick', |
|
); |
my $output = (<<END_OF_BLOCK); |
my $output = (<<END_OF_BLOCK); |
var display = new Array($numtitles) |
var display = new Array($numtitles) |
if (caller == "" || caller == "$codetitles[0]") { |
if (caller == "" || caller == "$codetitles[0]") { |
if (caller == "") { |
if (caller == "") { |
document.$formname.Year.length = 0 |
document.$formname.Year.length = 0 |
document.$formname.Year.options[0] = new Option("Select","-1",true,true) |
document.$formname.Year.options[0] = new Option("$lt{'Select'}","-1",true,true) |
display[0] = new Array(idyears.length) |
display[0] = new Array(idyears.length) |
for (var i=0; i<idyears.length; i++) { |
for (var i=0; i<idyears.length; i++) { |
display[0][i] = idyears[i] |
display[0][i] = idyears[i] |
Line 284 sub javascript_code_selections {
|
Line 279 sub javascript_code_selections {
|
document.$formname.Semester.length = 0 |
document.$formname.Semester.length = 0 |
document.$formname.Department.length = 0; |
document.$formname.Department.length = 0; |
document.$formname.Number.length = 0 |
document.$formname.Number.length = 0 |
document.$formname.Department.options[0] = new Option("<-Pick $codetitles[1]","-1",true,true) |
document.$formname.Department.options[0] = new Option("<-$lt{'Pick'} $codetitles[1]","-1",true,true) |
document.$formname.Number.options[0] = new Option("<-Pick $codetitles[2]","-1",true,true) |
document.$formname.Number.options[0] = new Option("<-$lt{'Pick'} $codetitles[2]","-1",true,true) |
if (idyr == 0 || caller == "") { |
if (idyr == 0 || caller == "") { |
document.$formname.Semester.options[0] = new Option("<-Pick $codetitles[0]","-1",true,true) |
document.$formname.Semester.options[0] = new Option("<-$lt{'Pick'} $codetitles[0]","-1",true,true) |
} |
} |
else { |
else { |
document.$formname.Semester.options[0] = new Option("Select","-1",true,true) |
document.$formname.Semester.options[0] = new Option("$lt{'Select'}","-1",true,true) |
display[1] = new Array(idsems[idyr-1].length) |
display[1] = new Array(idsems[idyr-1].length) |
for (var i=0; i<idsems[idyr-1].length; i++) { |
for (var i=0; i<idsems[idyr-1].length; i++) { |
display[1][i] = idsems[idyr-1][i] |
display[1][i] = idsems[idyr-1][i] |
Line 309 sub javascript_code_selections {
|
Line 304 sub javascript_code_selections {
|
document.$formname.Number.length = 0 |
document.$formname.Number.length = 0 |
document.$formname.Number.options[0] = new Option("<-Pick $codetitles[2]","-1",true,true) |
document.$formname.Number.options[0] = new Option("<-Pick $codetitles[2]","-1",true,true) |
if (idsem == 0) { |
if (idsem == 0) { |
document.$formname.Department.options[0] = new Option("<-Pick $codetitles[1]","-1",true,true) |
document.$formname.Department.options[0] = new Option("<-$lt{'Pick'} $codetitles[1]","-1",true,true) |
} |
} |
else { |
else { |
document.$formname.Department.options[0] = new Option("Select","-1",true,true) |
document.$formname.Department.options[0] = new Option("$lt{'Select'}","-1",true,true) |
display[2] = new Array(idcodes[idyr-1][idsem-1].length) |
display[2] = new Array(idcodes[idyr-1][idsem-1].length) |
for (var i=0; i<idcodes[idyr-1][idsem-1].length; i++) { |
for (var i=0; i<idcodes[idyr-1][idsem-1].length; i++) { |
display[2][i] = idcodes[idyr-1][idsem-1][i] |
display[2][i] = idcodes[idyr-1][idsem-1][i] |
Line 329 sub javascript_code_selections {
|
Line 324 sub javascript_code_selections {
|
if (caller == "$codetitles[2]") { |
if (caller == "$codetitles[2]") { |
document.$formname.Number.length = 0 |
document.$formname.Number.length = 0 |
if (iddept == 0) { |
if (iddept == 0) { |
document.$formname.Number.options[0] = new Option("<-Pick $codetitles[2]","-1",true,true) |
document.$formname.Number.options[0] = new Option("<-$lt{'Pick'} $codetitles[2]","-1",true,true) |
} |
} |
else { |
else { |
document.$formname.Number.options[0] = new Option("Select","-1",true,true) |
document.$formname.Number.options[0] = new Option("Select","-1",true,true) |
Line 347 sub javascript_code_selections {
|
Line 342 sub javascript_code_selections {
|
document.$formname.Number.selectedIndex = 0 |
document.$formname.Number.selectedIndex = 0 |
} |
} |
} |
} |
|
END_OF_BLOCK |
|
|
|
if ((ref($knowncodes) eq 'HASH') && (keys(%{$knowncodes}) > 0)) { |
|
my @standardnames = &Apache::loncommon::get_standard_codeitems(); |
|
my (%local_to_standard,$currstr); |
|
for (my $i=0; $i<@codetitles; $i++) { |
|
$local_to_standard{$codetitles[$i]} = $standardnames[$i]; |
|
} |
|
$output .= <<"ENDJS"; |
|
|
|
function initialize_codes() { |
|
ENDJS |
|
for (my $i=0; $i<@codetitles-1; $i++) { |
|
my $item = $local_to_standard{$codetitles[$i]}; |
|
$currstr .= $knowncodes->{$codetitles[$i]}; |
|
if ($knowncodes->{$codetitles[$i]} != -1) { |
|
$output .= ' |
|
for (var j=0; j<document.'.$formname.'.'.$item.'.length; j++) { |
|
if (document.'.$formname.'.'.$item.'[j].value == "'.$knowncodes->{$codetitles[$i]}.'") { |
|
document.'.$formname.'.'.$item.'.selectedIndex = j; |
|
} |
|
} |
|
'; |
|
} |
|
$output .= ' courseSet('."'$codetitles[$i]'".')'."\n"; |
|
} |
|
my $lastcodetitle = $local_to_standard{$codetitles[-1]}; |
|
$currstr .= $knowncodes->{$codetitles[-1]}; |
|
if ($knowncodes->{$codetitles[-1]} != -1) { |
|
$output .= ' |
|
for (var j=0; j<document.'.$formname.'.'.$lastcodetitle.'.length; j++) { |
|
if (document.'.$formname.'.'.$lastcodetitle.'[j].value == "'.$knowncodes->{$codetitles[-1]}.'") { |
|
document.'.$formname.'.'.$lastcodetitle.'.selectedIndex = j; |
|
} |
|
} |
|
'; |
|
} |
|
$output .= " return;\n}\n"; |
|
if ($sectionlist) { |
|
$output .= ' |
|
function toggleSecVis() { |
|
var currcode = ""; |
|
var crscode = '."'$currstr'".'; |
|
'; |
|
for (my $i=0; $i<@codetitles-1; $i++) { |
|
my $item = $local_to_standard{$codetitles[$i]}; |
|
$output .= 'currcode += document.'.$formname.'.'.$item.'.options[document.'.$formname.'.'.$item.'.selectedIndex].value;'."\n"; |
|
} |
|
my $lastcodetitle = $local_to_standard{$codetitles[-1]}; |
|
if ($lastcodetitle ne '') { |
|
if ($knowncodes->{$codetitles[-1]} != -1) { |
|
$output .= 'currcode += document.'.$formname.'.'.$lastcodetitle.'.options[document.'.$formname.'.'.$lastcodetitle.'.selectedIndex].value;'."\n"; |
|
} |
|
} |
|
$output .= <<"ENDSEC"; |
|
var showlist = 'none'; |
|
var showbox = 'inline'; |
|
if ((crscode != '') && (currcode == crscode)) { |
|
showlist = 'inline'; |
|
showbox = 'none'; |
|
} |
|
if (document.getElementById('LC_helpdesk_sectionlist')) { |
|
document.getElementById('LC_helpdesk_sectionlist').style.display = showlist; |
|
} |
|
if (document.getElementById('LC_helpdesk_section')) { |
|
document.getElementById('LC_helpdesk_section').style.display = showbox; |
|
} |
|
if (document.getElementById('section')) { |
|
document.getElementById('section').id = 'wasinuse'; |
|
} |
|
if (document.getElementById('notinuse') { |
|
document.getElementById('notinuse').id = 'section'; |
|
} |
|
if (document.getElementById('wasinuse') { |
|
document.getElementById('wasinuse').id = 'notinuse'; |
|
} |
|
return; |
|
} |
|
|
|
ENDSEC |
|
|
|
} |
|
} else { |
|
$output .= <<"END_OF_JS"; |
|
|
function initialize_codes() { |
function initialize_codes() { |
courseSet(); |
courseSet(); |
return; |
return; |
} |
} |
END_OF_BLOCK |
END_OF_JS |
|
} |
|
return $output; |
} |
} |
|
|
|
|
sub javascript_definitions { |
sub javascript_definitions { |
my ($codetitles,$idlist,$idlist_titles,$idnums,$cat_titles) = @_; |
my ($codetitles,$idlist,$idlist_titles,$idnums,$cat_titles) = @_; |
my $numtitles = @{$codetitles}; |
my $numtitles = @{$codetitles}; |
Line 445 END
|
Line 525 END
|
} |
} |
|
|
sub instcode_selectors_data { |
sub instcode_selectors_data { |
my ($codedom,$formname,$cat_items,$codetitles,$cat_titles,$cat_order) = @_; |
my ($codedom,$formname,$cat_items,$codetitles,$cat_titles,$cat_order,$officialjs) = @_; |
my ($jscript,%coursecodes,%codes,%idlist,%idnums,%idlist_titles, |
my ($jscript,$codes,%idlist,%idnums,%idlist_titles,%by_year,%by_sem,%by_dept); |
%by_year,%by_sem,%by_dept); |
my ($numtitles,$lasttitle,$totcodes); |
my ($numtitles,$lasttitle); |
my $instcats = &Apache::lonnet::get_dom_instcats($codedom); |
my $caller = 'global'; |
if (ref($instcats) eq 'HASH') { |
my $totcodes = &retrieve_instcodes(\%coursecodes,$codedom); |
if ((ref($instcats->{'codetitles'}) eq 'ARRAY') && (ref($instcats->{'codes'}) eq 'HASH') && |
if ($totcodes > 0) { |
(ref($instcats->{'cat_titles'}) eq 'HASH') && (ref($instcats->{'cat_order'}) eq 'HASH')) { |
if (&Apache::lonnet::auto_instcode_format($caller,$codedom,\%coursecodes, |
%{$codes} = %{$instcats->{'codes'}}; |
\%codes,$codetitles,$cat_titles,$cat_order) eq 'ok') { |
@{$codetitles} = @{$instcats->{'codetitles'}}; |
&build_code_selections(\%codes,$codetitles,$cat_titles,$cat_order, |
%{$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); |
\%idlist,\%idnums,\%idlist_titles); |
my ($scripttext,$longtitles) = |
my ($scripttext,$longtitles) = |
&javascript_definitions($codetitles,\%idlist,\%idlist_titles, |
&javascript_definitions($codetitles,\%idlist,\%idlist_titles, |
\%idnums,$cat_titles); |
\%idnums,$cat_titles); |
my $longtitles_str = join('","',@{$longtitles}); |
my $longtitles_str = join('","',@{$longtitles}); |
Line 478 sub instcode_selectors_data {
|
Line 564 sub instcode_selectors_data {
|
$level = &recurse_options($codetitles->[$k],$idlist{$codetitles->[$k]},$level,$cat,$cat_items,\@data,\%by_year,\%by_sem,\%by_dept); |
$level = &recurse_options($codetitles->[$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); |
$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() { |
|
var choice; |
|
for (var i=0; i<document.'.$formname.'.official.length; i++) { |
|
if (document.'.$formname.'.official[i].checked) { |
|
choice = document.'.$formname.'.official[i].value; |
|
} |
|
} |
|
if (choice == "off") { |
|
if (document.getElementById("instcodes")) { |
|
document.getElementById("instcodes").style.display = "none"; |
|
}'; |
|
for (my $i=0; $i<@{$codetitles}-1; $i++) { |
|
$jscript .= ' |
|
document.'.$formname.'.'.$codetitles->[$i].'.selectedIndex = 0;'; |
|
} |
|
$jscript .= ' |
|
} else { |
|
if (document.getElementById("instcodes")) { |
|
document.getElementById("instcodes").style.display = "block"; |
|
} |
|
} |
|
} |
|
|
|
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<document.'.$formname.'.official.length; j++) { |
|
if (document.'.$formname.'.official[j].value == "on") { |
|
document.'.$formname.'.official[j].checked = true; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
return; |
|
} |
|
|
|
'; |
|
|
|
$officialjs = 'setOfficial(caller);'; |
|
} |
|
$jscript .= &javascript_select_filler($formname,$scripttext,$codetitles,$longtitles_str,$allidlist,$officialjs); |
if ($env{'form.state'} eq 'listing') { |
if ($env{'form.state'} eq 'listing') { |
|
my @standardnames = &Apache::loncommon::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]; |
|
} |
|
} |
$jscript .= ' |
$jscript .= ' |
function setElements() { |
function setElements() { |
'; |
'; |
for (my $i=0; $i<@{$codetitles}-1; $i++) { |
for (my $i=0; $i<@{$codetitles}-1; $i++) { |
if ($env{'form.'.$codetitles->[$i]} != -1) { |
my $item = $local_to_standard{$codetitles->[$i]}; |
|
if ($env{'form.'.$item} != -1) { |
$jscript .= ' |
$jscript .= ' |
for (var j=0; j<document.'.$formname.'.'.$codetitles->[$i].'.length; j++) { |
for (var j=0; j<document.'.$formname.'.'.$item.'.length; j++) { |
if (document.'.$formname.'.'.$codetitles->[$i].'[j].value == "'.$env{'form.'.$codetitles->[$i]}.'") { |
if (document.'.$formname.'.'.$item.'[j].value == "'.$env{'form.'.$item}.'") { |
document.'.$formname.'.'.$codetitles->[$i].'.selectedIndex = j; |
document.'.$formname.'.'.$item.'.selectedIndex = j; |
} |
} |
} |
} |
'; |
'; |
} |
} |
} |
} |
$jscript .= ' courseSet()'."\n"; |
$jscript .= ' courseSet()'."\n"; |
if ($env{'form.'.$codetitles->[-1]} != -1) { |
my $lastcodetitle = $local_to_standard{$codetitles->[-1]}; |
|
if ($env{'form.'.$lastcodetitle} != -1) { |
$jscript .= ' |
$jscript .= ' |
for (var j=0; j<document.'.$formname.'.'.$codetitles->[-1].'.length; j++) { |
for (var j=0; j<document.'.$formname.'.'.$lastcodetitle.'.length; j++) { |
if (document.'.$formname.'.'.$codetitles->[-1].'[j].value == "'.$env{'form.'.$codetitles->[-1]}.'") { |
if (document.'.$formname.'.'.$lastcodetitle.'[j].value == "'.$env{'form.'.$lastcodetitle}.'") { |
document.'.$formname.'.'.$codetitles->[-1].'.selectedIndex = j; |
document.'.$formname.'.'.$lastcodetitle.'.selectedIndex = j; |
} |
} |
} |
} |
'; |
'; |
Line 513 function setElements() {
|
Line 653 function setElements() {
|
} |
} |
|
|
sub build_instcode_selectors { |
sub build_instcode_selectors { |
my ($numtitles,$lasttitle,$cat_items,$codetitles,$cat_titles,$cat_order) = @_; |
my ($numtitles,$lasttitle,$cat_items,$codetitles,$cat_titles,$cat_order,$official,$class,$id,$noedit) = @_; |
my $output; |
my $output; |
|
my @standardnames = &Apache::loncommon::get_standard_codeitems(); |
if ($numtitles > 0) { |
if ($numtitles > 0) { |
$output .= '<table><tr>'; |
my $style; |
|
if ($official eq 'off') { |
|
$style = ' style="display: none"'; |
|
} |
|
if ($id eq '') { |
|
$id = 'instcodes'; |
|
} |
|
my $disabled; |
|
if ($noedit) { |
|
$disabled = ' disabled="disabled"'; |
|
} |
|
$output .= '<div id="'.$id.'"'.$style.'><table><tr>'; |
for (my $k=0; $k<$lasttitle-1; $k++) { |
for (my $k=0; $k<$lasttitle-1; $k++) { |
my (@items,@unsorted); |
my (@items,@unsorted); |
if (ref($cat_items->{$codetitles->[$k]}) eq 'ARRAY') { |
if (ref($cat_items->{$codetitles->[$k]}) eq 'ARRAY') { |
Line 532 sub build_instcode_selectors {
|
Line 684 sub build_instcode_selectors {
|
@longitems = @items; |
@longitems = @items; |
} |
} |
$output .= '<td align="center">'.$codetitles->[$k].'<br />'."\n". |
$output .= '<td align="center">'.$codetitles->[$k].'<br />'."\n". |
'<select name="'.$codetitles->[$k].'" onChange="courseSet()"'. |
'<select name="'.$standardnames[$k].'" onchange="courseSet(this)"'; |
'>'."\n".'<option value="0" />All'."\n"; |
if ($class) { |
|
$output .= ' class="'.$class.'"'; |
|
} |
|
$output .= $disabled.'>'."\n".'<option value="0">'.&mt('All').'</option>'."\n"; |
for (my $i=0; $i<@items; $i++) { |
for (my $i=0; $i<@items; $i++) { |
if ($longitems[$i] eq '') { |
if ($longitems[$i] eq '') { |
$longitems[$i] = $items[$i]; |
$longitems[$i] = $items[$i]; |
Line 543 sub build_instcode_selectors {
|
Line 698 sub build_instcode_selectors {
|
$output .= '</select></td>'; |
$output .= '</select></td>'; |
} |
} |
$output .= '<td align="center">'.$codetitles->[$lasttitle-1].'<br />'."\n". |
$output .= '<td align="center">'.$codetitles->[$lasttitle-1].'<br />'."\n". |
'<select name="'.$codetitles->[$lasttitle-1].'">'."\n". |
'<select name="'.$standardnames[$lasttitle-1].'"'; |
|
if ($class) { |
|
$output .= ' class="'.$class.'"'; |
|
} |
|
$output .= $disabled.'>'."\n". |
'<option value="0">'.&mt('All')."\n". |
'<option value="0">'.&mt('All')."\n". |
'</option>'."\n".'</select>'."\n". |
'</option>'."\n".'</select>'."\n". |
'</td></tr></table>'."\n"; |
'</td></tr></table>'."\n"; |
if ($numtitles > 4) { |
if ($numtitles > 4) { |
$output .= '<br /><br />'.$codetitles->[$numtitles-1].'<br />'."\n". |
$output .= '<br /><br />'.$codetitles->[$numtitles-1].'<br />'."\n". |
'<input type="text" name="'.$codetitles->[$numtitles-1]. |
'<input type="text" name="'.$standardnames[$numtitles-1]. |
'" /><br />'."\n"; |
'"'.$disabled.' /><br />'."\n"; |
} |
} |
$output .= '<br />'; |
$output .= '</div>'; |
} |
} |
return $output; |
return $output; |
} |
} |
|
|
|
sub instcode_selectors { |
|
my ($codedom,$formname,$officialjs,$codetitles) = @_; |
|
my ($output,%cat_titles,%cat_order,%cat_items); |
|
my ($jscript,$totcodes,$numtitles,$lasttitle) = |
|
&instcode_selectors_data($codedom,$formname,\%cat_items,$codetitles, |
|
\%cat_titles,\%cat_order,$officialjs); |
|
if ($numtitles > 0) { |
|
my $official = ' checked="checked" '; |
|
my $unofficial = ''; |
|
if (($formname eq 'filterpicker') && ($env{'form.official'} eq 'off')) { |
|
$unofficial = $official; |
|
$official = ''; |
|
} |
|
$output .= '<span class="LC_nobreak">'.&mt('Official course:').' <label>'. |
|
'<input type="radio" name="official" value="on"'.$official. |
|
' onclick="toggleOfficial();" />'.&mt('Yes').'</label>'. |
|
(' 'x3).'<label>'. |
|
'<input type="radio" name="official" value="off"'.$unofficial. |
|
' onclick="toggleOfficial();" />'.&mt('No').'</label></span><br />'. |
|
&build_instcode_selectors($numtitles,$lasttitle,\%cat_items,$codetitles, |
|
\%cat_titles,\%cat_order,$env{'form.official'})."\n". |
|
'<input type="hidden" name="numtitles" value="'.$numtitles.'" />'."\n". |
|
'<input type="hidden" name="state" value="listing" />'."\n"; |
|
} |
|
return ($output,$jscript,$numtitles); |
|
} |
|
|
sub recurse_options { |
sub recurse_options { |
my ($currkey,$currlist,$level,$cat,$cat_options,$data,$by_year,$by_sem,$by_dept) = @_; |
my ($currkey,$currlist,$level,$cat,$cat_options,$data,$by_year,$by_sem,$by_dept) = @_; |
if (ref($currlist) eq 'HASH') { |
if (ref($currlist) eq 'HASH') { |
Line 593 sub build_javascript {
|
Line 779 sub build_javascript {
|
my ($by_year,$by_sem,$by_dept,$cat_order,$codetitles) = @_; |
my ($by_year,$by_sem,$by_dept,$cat_order,$codetitles) = @_; |
my @unsorted = keys(%{$by_year}); |
my @unsorted = keys(%{$by_year}); |
my @sorted_yrs; |
my @sorted_yrs; |
&sort_cats('0',$cat_order,$codetitles,\@unsorted,\@sorted_yrs); my $output = 'var idcse_by_yr_year = new Array("'.join('","',@sorted_yrs).'");'."\n". |
&sort_cats('0',$cat_order,$codetitles,\@unsorted,\@sorted_yrs); |
|
my $output = 'var idcse_by_yr_year = new Array("'.join('","',@sorted_yrs).'");'."\n". |
'var idcse_by_yr_dept = new Array('.scalar(@sorted_yrs).');'."\n". |
'var idcse_by_yr_dept = new Array('.scalar(@sorted_yrs).');'."\n". |
'var idcse_by_yr_num = new Array('.scalar(@sorted_yrs).');'."\n"; |
'var idcse_by_yr_num = new Array('.scalar(@sorted_yrs).');'."\n"; |
for (my $i=0; $i<@sorted_yrs; $i++) { |
for (my $i=0; $i<@sorted_yrs; $i++) { |
Line 640 sub build_javascript {
|
Line 827 sub build_javascript {
|
} |
} |
|
|
sub javascript_select_filler { |
sub javascript_select_filler { |
my ($formname,$scripttext,$codetitles,$longtitles_str,$allidlist) = @_; |
my ($formname,$scripttext,$codetitles,$longtitles_str,$allidlist,$officialjs) = @_; |
|
my $all = &mt('All'); |
|
my $nocrs = &mt('No courses'); |
my $output = <<END; |
my $output = <<END; |
|
|
function courseSet() { |
function courseSet(caller, onload) { |
var longtitles = new Array ("$longtitles_str"); |
var longtitles = new Array ("$longtitles_str"); |
var valyr = document.$formname.Year.options[document.$formname.Year.selectedIndex].value |
var valyr = ''; |
var valsem = document.$formname.Semester.options[document.$formname.Semester.selectedIndex].value |
var valsem = ''; |
var valdept = document.$formname.Department.options[document.$formname.Department.selectedIndex].value |
var valdept = ''; |
var valclass = document.$formname.Number.options[document.$formname.Number.selectedIndex].value |
var valclass = ''; |
|
if (onload) { |
|
valyr = "$env{'form.Year'}"; |
|
valsem = "$env{'form.Semester'}"; |
|
valdept = "$env{'form.Department'}"; |
|
valclass = "$env{'form.Number'}"; |
|
} else { |
|
valyr = document.$formname.Year.options[document.$formname.Year.selectedIndex].value; |
|
valsem = document.$formname.Semester.options[document.$formname.Semester.selectedIndex].value; |
|
valdept = document.$formname.Department.options[document.$formname.Department.selectedIndex].value; |
|
valclass = document.$formname.Number.options[document.$formname.Number.selectedIndex].value; |
|
} |
var idyears = new Array("$allidlist"); |
var idyears = new Array("$allidlist"); |
var idyr = -1; |
var idyr = -1; |
var idsem = -1; |
var idsem = -1; |
Line 657 function courseSet() {
|
Line 857 function courseSet() {
|
|
|
$scripttext |
$scripttext |
|
|
selYear = document.$formname.Year.selectedIndex-1; |
if (onload) { |
selSemester = document.$formname.Semester.selectedIndex-1; |
if (document.$formname.Year.options.length > 0) { |
selDepartment = document.$formname.Department.selectedIndex-1; |
for (var i = 0; i< document.$formname.Year.options.length; i++) { |
|
if (document.$formname.Year.options[i].value == "$env{'form.Year'}") { |
|
document.$formname.Year.selectedIndex = i; |
|
break; |
|
} |
|
} |
|
} |
|
if (document.$formname.Department.options.length > 0) { |
|
for (var i = 0; i< document.$formname.Department.options.length; i++) { |
|
if (document.$formname.Department.options[i].value == "$env{'form.Department'}") { |
|
document.$formname.Department.selectedIndex = i; |
|
break; |
|
} |
|
} |
|
} |
|
if (document.$formname.Semester.options.length > 0) { |
|
for (var i = 0; i< document.$formname.Semester.options.length; i++) { |
|
if (document.$formname.Semester.options[i].value == "$env{'form.Semester'}") { |
|
document.$formname.Semester.selectedIndex = i; |
|
break; |
|
} |
|
} |
|
} |
|
} |
|
|
|
var selYear = document.$formname.Year.selectedIndex-1; |
|
var selSemester = document.$formname.Semester.selectedIndex-1; |
|
var selDepartment = document.$formname.Department.selectedIndex-1; |
if (selYear == -1) { |
if (selYear == -1) { |
if (selSemester == -1) { |
if (selSemester == -1) { |
if (selDepartment > -1) { |
if (selDepartment > -1) { |
document.$formname.Number.options[0] = new Option('All','0',false,false); |
document.$formname.Number.options[0] = new Option('$all','0',false,false); |
for (var k=0; k<idcse_by_dep[selDepartment].length; k++) { |
for (var k=0; k<idcse_by_dep[selDepartment].length; k++) { |
document.$formname.Number.options[k+1] = new Option(idcse_by_dep[selDepartment][k],idcse_by_dep[selDepartment][k],false,false); |
document.$formname.Number.options[k+1] = new Option(idcse_by_dep[selDepartment][k],idcse_by_dep[selDepartment][k],false,false); |
|
|
} |
} |
} |
} |
else { |
else { |
document.$formname.Number.options[0] = new Option("All","0",true,true); |
document.$formname.Number.options[0] = new Option('$all','0',true,true); |
} |
} |
} |
} |
else { |
else { |
Line 688 function courseSet() {
|
Line 915 function courseSet() {
|
} |
} |
} |
} |
if (iddept != -1) { |
if (iddept != -1) { |
document.$formname.Number.options[0] = new Option('All','0',false,false); |
document.$formname.Number.options[0] = new Option('$all','0',false,false); |
for (var k=0; k<idcse_by_sem_num[idsem][iddept].length; k++) { |
for (var k=0; k<idcse_by_sem_num[idsem][iddept].length; k++) { |
document.$formname.Number.options[k+1] = new Option(idcse_by_sem_num[idsem][iddept][k],idcse_by_sem_num[idsem][iddept][k],false,false); |
document.$formname.Number.options[k+1] = new Option(idcse_by_sem_num[idsem][iddept][k],idcse_by_sem_num[idsem][iddept][k],false,false); |
} |
} |
} |
} |
else { |
else { |
document.$formname.Number.options[0] = new Option('No courses','0',true,true); |
document.$formname.Number.options[0] = new Option('$nocrs','0',true,true); |
} |
} |
} |
} |
else { |
else { |
document.$formname.Number.options[0] = new Option("All","0",true,true); |
document.$formname.Number.options[0] = new Option('$all','0',true,true); |
} |
} |
} |
} |
} |
} |
Line 718 function courseSet() {
|
Line 945 function courseSet() {
|
} |
} |
} |
} |
if (iddept != -1) { |
if (iddept != -1) { |
document.$formname.Number.options[0] = new Option('All','0',false,false); |
document.$formname.Number.options[0] = new Option('$all','0',false,false); |
for (var k=0; k<idcse_by_yr_num[idyr][iddept].length; k++) { |
for (var k=0; k<idcse_by_yr_num[idyr][iddept].length; k++) { |
document.$formname.Number.options[k+1] = new Option(idcse_by_yr_num[idyr][iddept][k],idcse_by_yr_num[idyr][iddept][k],false,false); |
document.$formname.Number.options[k+1] = new Option(idcse_by_yr_num[idyr][iddept][k],idcse_by_yr_num[idyr][iddept][k],false,false); |
} |
} |
} |
} |
else { |
else { |
document.$formname.Number.options[0] = new Option('No courses','0',true,true); |
document.$formname.Number.options[0] = new Option('$nocrs','0',true,true); |
} |
} |
} |
} |
else { |
else { |
document.$formname.Number.options[0] = new Option("All","0",true,true); |
document.$formname.Number.options[0] = new Option('$all','0',true,true); |
} |
} |
} |
} |
else { |
else { |
Line 753 function courseSet() {
|
Line 980 function courseSet() {
|
} |
} |
} |
} |
if (iddept != -1) { |
if (iddept != -1) { |
document.$formname.Number.options[0] = new Option('All','0',false,false); |
document.$formname.Number.options[0] = new Option('$all','0',false,false); |
for (var i=0; i<idcourses[idyr][idsem][iddept].length; i++) { |
for (var i=0; i<idcourses[idyr][idsem][iddept].length; i++) { |
var display = idcourses[idyr][idsem][iddept][i]; |
var display = idcourses[idyr][idsem][iddept][i]; |
if (longtitles[3] == 1) { |
if (longtitles[3] == 1) { |
Line 765 function courseSet() {
|
Line 992 function courseSet() {
|
} |
} |
} |
} |
else { |
else { |
document.$formname.Number.options[0] = new Option('No courses','0',true,true); |
document.$formname.Number.options[0] = new Option('$nocrs','0',true,true); |
} |
} |
} |
} |
else { |
else { |
document.$formname.Number.options[0] = new Option('All','0',true,true); |
document.$formname.Number.options[0] = new Option('$all','0',true,true); |
} |
} |
} |
} |
document.$formname.Number.selectedIndex = 0 |
document.$formname.Number.selectedIndex = 0 |
} |
} |
|
if (onload) { |
|
if (document.$formname.Number.options.length > 0) { |
|
for (var i = 0; i< document.$formname.Number.options.length; i++) { |
|
if (document.$formname.Number.options[i].value == "$env{'form.Number'}") { |
|
document.$formname.Number.selectedIndex = i; |
|
break; |
|
} |
|
} |
|
} |
|
} else { |
|
$officialjs |
|
} |
} |
} |
END |
END |
return $output; |
return $output; |
} |
} |
|
|
sub instcode_search_str { |
sub instcode_search_str { |
my ($domain,$numtitles) = @_; |
my ($domain,$numtitles,$codetitles) = @_; |
my $instcode; |
my $instcode; |
if (defined($numtitles) && $numtitles == 0) { |
if (defined($numtitles) && $numtitles == 0) { |
$instcode = '.+'; |
$instcode = '.+'; |
Line 789 sub instcode_search_str {
|
Line 1028 sub instcode_search_str {
|
my $defaults_result = |
my $defaults_result = |
&Apache::lonnet::auto_instcode_defaults($domain,\%codedefaults, |
&Apache::lonnet::auto_instcode_defaults($domain,\%codedefaults, |
\@code_order); |
\@code_order); |
|
my @standardnames = &Apache::loncommon::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') { |
if ($defaults_result eq 'ok') { |
$instcode ='^'; |
$instcode ='^'; |
foreach my $item (@code_order) { |
foreach my $loctitle (@code_order) { |
if ($env{'form.'.$item} eq '0' ) { |
my $item = $local_to_standard{$loctitle}; |
$instcode .= $codedefaults{$item}; |
if ($item ne '') { |
|
if ($env{'form.'.$item} eq '0' ) { |
|
$instcode .= $codedefaults{$loctitle}; |
|
} else { |
|
$instcode .= $env{'form.'.$item}; |
|
} |
} else { |
} else { |
$instcode .= $env{'form.'.$item}; |
$instcode .= '.+'; |
} |
} |
} |
} |
$instcode .= '$'; |
$instcode .= '$'; |
Line 804 sub instcode_search_str {
|
Line 1055 sub instcode_search_str {
|
} |
} |
} |
} |
return $instcode; |
return $instcode; |
|
} |
|
|
|
sub instcode_from_selectors { |
|
my ($cdom,$noregexps) = @_; |
|
my $instcode; |
|
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') && (@codetitles > 0)) { |
|
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' ) { |
|
if ($noregexps) { |
|
$instcode .= ' '; |
|
} else { |
|
$instcode .= $codedefaults{$category}; |
|
} |
|
} else { |
|
$instcode .= $env{'form.'.$category}; |
|
} |
|
} else { |
|
$instcode .= '.+'; |
|
} |
|
} |
|
} |
|
return $instcode; |
} |
} |
|
|
1; |
1; |