version 1.13, 2011/02/25 02:40:42
|
version 1.21, 2015/05/13 19:30:13
|
Line 37 use LONCAPA;
|
Line 37 use LONCAPA;
|
sub retrieve_instcodes { |
sub retrieve_instcodes { |
my ($coursecodes,$codedom) = @_; |
my ($coursecodes,$codedom) = @_; |
my $totcodes; |
my $totcodes; |
my %courses = &Apache::lonnet::courseiddump($codedom,'.',1,'.','.','.', undef,undef,'Course'); |
my %courses = &Apache::lonnet::courseiddump($codedom,'.',1,'.','.','.', |
|
undef,undef,'Course'); |
foreach my $course (keys(%courses)) { |
foreach my $course (keys(%courses)) { |
if (ref($courses{$course}) eq 'HASH') { |
if (ref($courses{$course}) eq 'HASH') { |
if ($courses{$course}{'inst_code'} ne '') { |
if ($courses{$course}{'inst_code'} ne '') { |
Line 147 sub build_code_selections {
|
Line 148 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 168 sub build_code_selections {
|
Line 169 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 186 sub build_code_selections {
|
Line 187 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 207 sub build_code_selections {
|
Line 208 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 230 sub build_code_selections {
|
Line 231 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 488 sub instcode_selectors_data {
|
Line 489 sub instcode_selectors_data {
|
if ($officialjs) { |
if ($officialjs) { |
$jscript .= ' |
$jscript .= ' |
|
|
function toggleOfficial() {'; |
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++) { |
for (my $i=0; $i<@{$codetitles}-1; $i++) { |
$jscript .= ' |
$jscript .= ' |
document.'.$formname.'.'.$codetitles->[$i].'.selectedIndex = 0;'; |
document.'.$formname.'.'.$codetitles->[$i].'.selectedIndex = 0;'; |
} |
} |
$jscript .= ' |
$jscript .= ' |
|
} else { |
|
if (document.getElementById("instcodes")) { |
|
document.getElementById("instcodes").style.display = "block"; |
|
} |
|
} |
} |
} |
|
|
function setOfficial(caller) { |
function setOfficial(caller) { |
Line 563 sub build_instcode_selectors {
|
Line 579 sub build_instcode_selectors {
|
my $output; |
my $output; |
my @standardnames = &Apache::loncommon::get_standard_codeitems(); |
my @standardnames = &Apache::loncommon::get_standard_codeitems(); |
if ($numtitles > 0) { |
if ($numtitles > 0) { |
$output .= '<table><tr>'; |
my $style; |
|
if ($env{'form.official'} eq 'off') { |
|
$style = ' style="display: none"'; |
|
} |
|
$output .= '<div id="instcodes"'.$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 579 sub build_instcode_selectors {
|
Line 599 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="'.$standardnames[$k].'" onChange="courseSet(this)"'. |
'<select name="'.$standardnames[$k].'" onchange="courseSet(this)"'. |
'>'."\n".'<option value="0">'.&mt('All').'</option>'."\n"; |
'>'."\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 '') { |
Line 599 sub build_instcode_selectors {
|
Line 619 sub build_instcode_selectors {
|
'<input type="text" name="'.$standardnames[$numtitles-1]. |
'<input type="text" name="'.$standardnames[$numtitles-1]. |
'" /><br />'."\n"; |
'" /><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)."\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 640 sub build_javascript {
|
Line 687 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 692 sub javascript_select_filler {
|
Line 740 sub javascript_select_filler {
|
my $nocrs = &mt('No courses'); |
my $nocrs = &mt('No courses'); |
my $output = <<END; |
my $output = <<END; |
|
|
function courseSet(caller) { |
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 706 function courseSet(caller) {
|
Line 765 function courseSet(caller) {
|
|
|
$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) { |
Line 802 function courseSet(caller) {
|
Line 888 function courseSet(caller) {
|
} |
} |
} |
} |
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 823 function courseSet(caller) {
|
Line 909 function courseSet(caller) {
|
} |
} |
document.$formname.Number.selectedIndex = 0 |
document.$formname.Number.selectedIndex = 0 |
} |
} |
$officialjs |
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; |
Line 869 sub instcode_search_str {
|
Line 966 sub instcode_search_str {
|
} |
} |
|
|
sub instcode_from_selectors { |
sub instcode_from_selectors { |
my ($cdom) = @_; |
my ($cdom,$noregexps) = @_; |
my $instcode; |
my $instcode; |
my $caller = 'global'; |
my $caller = 'global'; |
my (%coursecodes,%codes,@codetitles,%cat_titles,%cat_order, |
my (%coursecodes,%codes,@codetitles,%cat_titles,%cat_order, |
Line 890 sub instcode_from_selectors {
|
Line 987 sub instcode_from_selectors {
|
my $category = $local_to_standard{$loctitle}; |
my $category = $local_to_standard{$loctitle}; |
if ($category ne '') { |
if ($category ne '') { |
if ($env{'form.'.$category} eq '-1' ) { |
if ($env{'form.'.$category} eq '-1' ) { |
$instcode .= $codedefaults{$category}; |
if ($noregexps) { |
|
$instcode .= ' '; |
|
} else { |
|
$instcode .= $codedefaults{$category}; |
|
} |
} else { |
} else { |
$instcode .= $env{'form.'.$category}; |
$instcode .= $env{'form.'.$category}; |
} |
} |