version 1.88.2.8, 2021/06/20 17:49:08
|
version 1.93, 2017/08/07 20:22:12
|
Line 57 sub handler {
|
Line 57 sub handler {
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['sortby','showdom']); |
['sortby','showdom']); |
|
|
my $codedom = &Apache::lonnet::default_login_domain(); |
my $serverdefdom = &Apache::lonnet::default_login_domain(); |
|
my $codedom = $serverdefdom; |
|
|
if (($env{'user.domain'} ne '') && ($env{'user.domain'} ne 'public')) { |
if (($env{'user.domain'} ne '') && ($env{'user.domain'} ne 'public')) { |
$codedom = $env{'user.domain'}; |
$codedom = $env{'user.domain'}; |
Line 74 sub handler {
|
Line 75 sub handler {
|
$env{'form.showdom'} = ''; |
$env{'form.showdom'} = ''; |
} |
} |
} |
} |
my $domdesc = &Apache::lonnet::domain($codedom,'description'); |
my $domdesc = &Apache::lonnet::domain($serverdefdom,'description'); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
|
if (&Apache::lonnet::notcallable('catalog',$codedom)) { |
my $crscats = &Apache::lonnet::get_dom_cats($codedom); |
my $serverdomdesc = &Apache::lonnet::domain($serverdefdom,'description'); |
my %domdefaults = &Apache::lonnet::get_domain_defaults($codedom); |
$r->print(&Apache::loncommon::start_page('Course/Community Catalog')); |
|
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>"/adm/coursecatalog", |
|
text=>"Course/Community Catalog"}); |
|
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Course/Community Catalog')); |
|
$r->print('<div>'.&mt('Access to catalog LON-CAPA courses/communities unavailable for: "[_1]" on servers run by: "[_2]".', |
|
$domdesc,$serverdomdesc).'</div>'); |
|
$r->print(&Apache::loncommon::end_page()); |
|
return OK; |
|
} |
|
my %domconfig = |
|
&Apache::lonnet::get_dom('configuration',['coursecategories'],$codedom); |
my $knownuser = &user_is_known(); |
my $knownuser = &user_is_known(); |
my $canviewall = &canview_all($knownuser,$codedom); |
my $canviewall = &canview_all($knownuser,$codedom); |
|
|
my ($cathash,$cattype); |
my ($cathash,$cattype); |
if (ref($crscats) eq 'HASH') { |
if (ref($domconfig{'coursecategories'}) eq 'HASH') { |
%{$cathash} = %{$crscats}; |
$cathash = $domconfig{'coursecategories'}{'cats'}; |
|
if ($knownuser || $canviewall) { |
|
$cattype = $domconfig{'coursecategories'}{'auth'}; |
|
} else { |
|
$cattype = $domconfig{'coursecategories'}{'unauth'}; |
|
} |
|
if ($cattype eq '') { |
|
$cattype = 'std'; |
|
} |
} else { |
} else { |
$cathash = {}; |
$cathash = {}; |
} |
|
if ($knownuser || $canviewall) { |
|
$cattype = $domdefaults{'catauth'}; |
|
} else { |
|
$cattype = $domdefaults{'catunauth'}; |
|
} |
|
if ($cattype eq '') { |
|
$cattype = 'std'; |
$cattype = 'std'; |
} |
} |
if ($cattype eq 'none') { |
if ($cattype eq 'none') { |
Line 105 sub handler {
|
Line 118 sub handler {
|
if ($knownuser || $canviewall) { |
if ($knownuser || $canviewall) { |
$r->print('<div>'.&mt('No catalog of LON-CAPA courses/communities is provided for: [_1]',$domdesc).'</div>'); |
$r->print('<div>'.&mt('No catalog of LON-CAPA courses/communities is provided for: [_1]',$domdesc).'</div>'); |
} else { |
} else { |
if ($domdefaults{'catauth'} eq 'none') { |
if ($domconfig{'coursecategories'}{'auth'} eq 'none') { |
$r->print('<div>'.&mt('No catalog of LON-CAPA courses/communities is provided for: [_1]',$domdesc).'</div>'); |
$r->print('<div>'.&mt('No catalog of LON-CAPA courses/communities is provided for: [_1]',$domdesc).'</div>'); |
} else { |
} else { |
$r->print('<div>'.&mt('The catalog of LON-CAPA courses/communities provided for: "[_1]" is only available to users who are logged in.',$domdesc).'</div>'); |
$r->print('<div>'.&mt('The catalog of LON-CAPA courses/communities provided for: "[_1]" is only available to users who are logged in.',$domdesc).'</div>'); |
Line 115 sub handler {
|
Line 128 sub handler {
|
return OK; |
return OK; |
} |
} |
|
|
my $cnum; |
my $cnum; |
if ($cattype eq 'codesrch') { |
if ($cattype eq 'codesrch') { |
my ($uniquecode,$codemsg,$brtext); |
my ($uniquecode,$codemsg,$brtext); |
if ($env{'form.uniquecode'}) { |
if ($env{'form.uniquecode'}) { |
Line 177 sub handler {
|
Line 190 sub handler {
|
if ($courseinfo{$codedom.'_'.$cnum}{'showsyllabus'}) { |
if ($courseinfo{$codedom.'_'.$cnum}{'showsyllabus'}) { |
my $usehttp = 0; |
my $usehttp = 0; |
if (($ENV{'SERVER_PORT'} == 443) && ($courseinfo{$codedom.'_'.$cnum}{'extsyllplain'})) { |
if (($ENV{'SERVER_PORT'} == 443) && ($courseinfo{$codedom.'_'.$cnum}{'extsyllplain'})) { |
unless (&Apache::lonnet::uses_sts()) { |
$usehttp = 1; |
$usehttp = 1; |
|
} |
|
} |
} |
$r->print(' <font size="-2">'. |
$r->print(' <font size="-2">'. |
'<a href="javascript:ToSyllabus('."'$codedom','$cnum','$usehttp'".')">'. |
'<a href="javascript:ToSyllabus('."'$codedom','$cnum','$usehttp'".')">'. |
Line 212 sub handler {
|
Line 223 sub handler {
|
$r->print('<br />'.&Apache::loncommon::end_page()); |
$r->print('<br />'.&Apache::loncommon::end_page()); |
return OK; |
return OK; |
} else { |
} else { |
if ($env{'form.coursenum'} ne '') { |
if ($env{'form.coursenum'}) { |
if ($env{'form.coursenum'} =~ /^$LONCAPA::match_courseid$/) { |
$cnum = $env{'form.coursenum'}; |
$cnum = $env{'form.coursenum'}; |
|
} else { |
|
delete($env{'form.coursenum'}); |
|
} |
|
} |
} |
} |
} |
|
|
my (@cats,@trails,%allitems,%idx,@jsarray,%subcathash,$subcats,%maxd, |
if ($env{'form.catalog_maxdepth'} ne '') { |
$toplevelstr,$maxdepthstr); |
$env{'form.catalog_maxdepth'} =~ s{\D}{}g; |
|
} |
|
|
|
my (@cats,@trails,%allitems,%idx,@jsarray,%subcathash,$subcats); |
if ($env{'form.withsubcats'}) { |
if ($env{'form.withsubcats'}) { |
$subcats = \%subcathash; |
$subcats = \%subcathash; |
} |
} |
&Apache::loncommon::extract_categories($cathash,\@cats,\@trails,\%allitems, |
&Apache::loncommon::extract_categories($cathash,\@cats,\@trails,\%allitems, |
\%idx,\@jsarray,$subcats,\%maxd); |
\%idx,\@jsarray,$subcats); |
if (ref($cats[0]) eq 'ARRAY') { |
|
foreach my $item (@{$cats[0]}) { |
|
$toplevelstr .= "'".&js_escape($item)."::0',"; |
|
$maxdepthstr .= "'$maxd{$item}',"; |
|
} |
|
$toplevelstr =~ s/,$//; |
|
$maxdepthstr =~ s/,$//; |
|
} |
|
&validate_input($codedom,\@cats,\%maxd,$cathash); |
|
my ($numtitles,@codetitles); |
my ($numtitles,@codetitles); |
if (($env{'form.coursenum'} ne '') && ($knownuser)) { |
if (($env{'form.coursenum'} ne '') && ($knownuser)) { |
&course_details($r,$codedom,$formname,$domdesc,\@trails,\%allitems,\@codetitles); |
&course_details($r,$codedom,$formname,$domdesc,\@trails,\%allitems,\@codetitles); |
Line 246 sub handler {
|
Line 247 sub handler {
|
my $catjs = <<"ENDSCRIPT"; |
my $catjs = <<"ENDSCRIPT"; |
|
|
function setCatDepth(depth) { |
function setCatDepth(depth) { |
var depth = parseInt(depth); |
document.coursecats.catalog_maxdepth.value = depth; |
if (depth !== NaN) { |
if (depth == '') { |
if (depth > 0) { |
|
var possmaxd = 0; |
|
var toplevel = new Array($toplevelstr); |
|
var maxdepths = new Array($maxdepthstr); |
|
if (toplevel.length) { |
|
for (var i=0; i<toplevel.length; i++) { |
|
var item = unescape(toplevel[i]); |
|
if (item == document.coursecats.currcat_0.value) { |
|
possmaxd = maxdepths[i]; |
|
break; |
|
} |
|
} |
|
} |
|
if (depth > possmaxd) { |
|
depth = possmaxd; |
|
} |
|
} |
|
document.coursecats.catalog_maxdepth.value = depth; |
|
} else { |
|
document.coursecats.currcat_0.value = ''; |
document.coursecats.currcat_0.value = ''; |
document.coursecats.catalog_maxdepth.value = ''; |
|
} |
} |
document.coursecats.submit(); |
document.coursecats.submit(); |
return; |
return; |
Line 354 ENDJS
|
Line 335 ENDJS
|
my $display_button; |
my $display_button; |
if ($env{'form.currcat_0'} eq 'communities::0') { |
if ($env{'form.currcat_0'} eq 'communities::0') { |
$display_button = &mt('Display communities'); |
$display_button = &mt('Display communities'); |
|
} elsif ($env{'form.currcat_0'} eq 'placement::0') { |
|
$display_button = &mt('Display placement tests'); |
} else { |
} else { |
$display_button = &mt('Display courses'); |
$display_button = &mt('Display courses'); |
} |
} |
Line 375 ENDJS
|
Line 358 ENDJS
|
return OK; |
return OK; |
} |
} |
|
|
sub validate_input { |
|
my ($codedom,$cats,$maxd,$crscatsref) = @_; |
|
my $currcat = ''; |
|
my $depth = 0; |
|
if ($env{'form.catalog_maxdepth'} ne '') { |
|
$env{'form.catalog_maxdepth'} =~ s{\D}{}g; |
|
} |
|
if ((ref($cats) eq 'ARRAY') && (ref($maxd) eq 'HASH')) { |
|
if (ref($cats->[0]) eq 'ARRAY') { |
|
if (@{$cats->[0]} == 1) { |
|
if ($cats->[0][0] eq 'instcode') { |
|
$currcat = 'instcode::0'; |
|
} elsif ($cats->[0][0] eq 'communities') { |
|
$currcat = 'communities::0'; |
|
} elsif ($cats->[0][0] eq 'placement') { |
|
$currcat = 'placement::0'; |
|
} else { |
|
my $name = $cats->[0][0]; |
|
$currcat = &escape($name).'::0'; |
|
} |
|
if (exists($maxd->{$cats->[0][0]})) { |
|
if ($env{'form.catalog_maxdepth'} <= $maxd->{$cats->[0][0]}) { |
|
$depth = $env{'form.catalog_maxdepth'}; |
|
} else { |
|
$depth = $maxd->{$cats->[0][0]}; |
|
} |
|
} |
|
} elsif ((@{$cats->[0]} > 1) && ($env{'form.currcat_0'} ne '')) { |
|
my ($escname) = ($env{'form.currcat_0'} =~ /^([^:]+)\:\:0$/); |
|
if ($escname =~ /^instcode|communities|placement$/) { |
|
$currcat = $env{'form.currcat_0'}; |
|
if (exists($maxd->{$escname})) { |
|
if ($env{'form.catalog_maxdepth'} <= $maxd->{$escname}) { |
|
$depth = $env{'form.catalog_maxdepth'}; |
|
} else { |
|
$depth = $maxd->{$escname}; |
|
} |
|
} else { |
|
$depth = 1; |
|
} |
|
} elsif ($escname ne '') { |
|
my $name = &unescape($escname); |
|
if (grep(/^\Q$name\E$/,@{$cats->[0]})) { |
|
$currcat = $env{'form.currcat_0'}; |
|
if (exists($maxd->{$name})) { |
|
if ($env{'form.catalog_maxdepth'} <= $maxd->{$name}) { |
|
$depth = $env{'form.catalog_maxdepth'}; |
|
} else { |
|
$depth = $maxd->{$name}; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
$env{'form.currcat_0'} = $currcat; |
|
$env{'form.catalog_maxdepth'} = $depth; |
|
|
|
my %possibles = ( |
|
backto => 1, |
|
catalogfilter => 1, |
|
catalog_maxdepth => 1, |
|
courseid => 1, |
|
coursenum => 1, |
|
currcat_0 => 1, |
|
numtitles => 1, |
|
Year => 1, |
|
Semester => 1, |
|
Department => 1, |
|
Number => 1, |
|
showdom => 1, |
|
sortby => 1, |
|
showcounts => 1, |
|
showdetails => 1, |
|
showhidden => 1, |
|
showselfenroll => 1, |
|
state => 1, |
|
uniquecode => 1, |
|
wasactive => 1, |
|
wasactiveon_day => 1, |
|
wasactiveon_month => 1, |
|
wasactiveon_year => 1, |
|
withsubcats => 1, |
|
); |
|
my %currcats; |
|
if ($env{'form.catalog_maxdepth'} > 0) { |
|
for (my $i=1; $i<=$env{'form.catalog_maxdepth'}; $i++) { |
|
$currcats{'currcat_'.$i} = 1; |
|
$possibles{'currcat_'.$i} = 1; |
|
} |
|
} |
|
|
|
foreach my $key (sort(keys(%env))) { |
|
if ($key =~ /^form\.(.+)$/) { |
|
unless ($possibles{$1}) { |
|
delete($env{$key}); |
|
} |
|
} |
|
} |
|
if (exists($env{'form.backto'})) { |
|
unless ($env{'form.backto'} eq 'coursecatalog') { |
|
delete($env{'form.backto'}); |
|
} |
|
} |
|
if (exists($env{'form.catalogfilter'})) { |
|
unless (($env{'form.catalogfilter'} eq &mt('Display courses')) || |
|
($env{'form.catalogfilter'} eq &mt('Display communities')) || |
|
($env{'form.catalogfilter'} eq &mt('Display placement tests'))) { |
|
delete($env{'form.catalogfilter'}); |
|
} |
|
} |
|
if (exists($env{'form.courseid'})) { |
|
if ($env{'form.courseid'} ne '') { |
|
unless ($env{'form.courseid'} =~ /^\Q$codedom\E_$LONCAPA::match_courseid$/) { |
|
$env{'form.courseid'} = ''; |
|
} |
|
} |
|
} |
|
if (exists($env{'form.coursenum'})) { |
|
unless ($env{'form.coursenum'} =~ /^$LONCAPA::match_courseid$/) { |
|
$env{'form.coursenum'} = ''; |
|
} |
|
} |
|
if (exists($env{'form.currcat_0'})) { |
|
unless ($env{'form.currcat_0'} =~ /^(instcode|communities|placement)\Q::0\E$/) { |
|
if ($env{'form.currcat_0'} =~ /^.+\Q::0\E$/) { |
|
if (ref($crscatsref) eq 'HASH') { |
|
unless (exists($crscatsref->{$env{'form.currcat_0'}})) { |
|
delete($env{'form.currcat_0'}); |
|
} |
|
} else { |
|
delete($env{'form.currcat_0'}); |
|
} |
|
} else { |
|
delete($env{'form.currcat_0'}); |
|
} |
|
} |
|
} |
|
if (exists($env{'form.numtitles'})) { |
|
unless ($env{'form.numtitles'} =~ /^\d+$/) { |
|
delete($env{'form.numtitles'}); |
|
} |
|
} |
|
my ($gotcodes,%possvals); |
|
foreach my $item ('Year','Semester','Department','Number') { |
|
if (exists($env{'form.'.$item})) { |
|
unless ($env{'form.'.$item} eq '0') { |
|
unless ($gotcodes) { |
|
$gotcodes = &get_instcode_allowable($codedom,\%possvals); |
|
} |
|
if (ref($possvals{$item}) eq 'HASH') { |
|
unless (exists($possvals{$item}{$env{'form.'.$item}})) { |
|
delete($env{'form.'.$item}); |
|
} |
|
} else { |
|
delete($env{'form.'.$item}); |
|
} |
|
} |
|
} |
|
} |
|
if (exists($env{'form.showdom'})) { |
|
unless ($env{'form.showdom'} =~ /^$LONCAPA::match_domain$/) { |
|
delete($env{'form.showdom'}); |
|
} |
|
} |
|
if (exists($env{'form.sortby'})) { |
|
unless ($env{'form.sortby'} =~ /^(title|code|owner|cats)$/) { |
|
delete($env{'form.sortby'}); |
|
} |
|
} |
|
if (exists($env{'form.showcounts'})) { |
|
if (ref($env{'form.showcounts'}) eq 'ARRAY') { |
|
foreach my $item (@{$env{'form.showcounts'}}) { |
|
unless ($item =~ /^(Active|Future|Previous)$/) { |
|
delete($env{'form.showcounts'}); |
|
last; |
|
} |
|
} |
|
} else { |
|
unless ($env{'form.showcounts'} =~ /^(Active|Future|Previous)$/) { |
|
delete($env{'form.showcounts'}); |
|
} |
|
} |
|
} |
|
foreach my $item ('showhidden','showdetails','showselfenroll','withsubcats') { |
|
if (exists($env{'form.'.$item})) { |
|
unless ($env{'form.'.$item} eq '1') { |
|
delete($env{'form.'.$item}); |
|
} |
|
} |
|
} |
|
if (exists($env{'form.state'})) { |
|
unless ($env{'form.state'} eq 'listing') { |
|
delete($env{'form.state'}); |
|
} |
|
} |
|
if (exists($env{'form.uniquecode'})) { |
|
unless ($env{'form.uniquecode'} =~ /^\w{6}$/) { |
|
delete($env{'form.uniquecode'}); |
|
} |
|
} |
|
if (exists($env{'form.wasactive'})) { |
|
unless (($env{'form.wasactive'} eq 'accessend') || ($env{'form.wasactive'} eq 'enrollend')) { |
|
delete($env{'form.wasactive'}); |
|
} |
|
} |
|
if (exists($env{'form.wasactiveon_day'})) { |
|
my $tmpday = $env{'form.wasactiveon_day'}; |
|
unless (($tmpday =~ /^\d+$/) && ($tmpday > 0) && ($tmpday < 32)) { |
|
delete($env{'form.wasactiveon_day'}); |
|
} |
|
} |
|
if (exists($env{'form.wasactiveon_month'})) { |
|
my $tmpmonth = $env{'form.wasactiveon_month'}; |
|
unless (($tmpmonth =~ /^\d+$/) && ($tmpmonth > 0) && ($tmpmonth < 13)) { |
|
delete($env{'form.wasactiveon_month'}); |
|
} |
|
} |
|
if (exists($env{'form.wasactiveon_year'})) { |
|
my $tmpyear = $env{'form.wasactiveon_year'}; |
|
unless (($tmpyear =~ /^\d+$/) && ($tmpyear >= 1970)) { |
|
delete($env{'form.wasactiveon_year'}); |
|
} |
|
} |
|
if (keys(%currcats)) { |
|
foreach my $key (keys(%currcats)) { |
|
if ($env{'form.'.$key} eq '') { |
|
delete($env{'form.'.$key}); |
|
} elsif (ref($crscatsref) eq 'HASH') { |
|
unless (exists($crscatsref->{$env{'form.'.$key}})) { |
|
delete($env{'form.'.$key}); |
|
} |
|
} else { |
|
delete($env{'form.'.$key}); |
|
} |
|
} |
|
} |
|
return; |
|
} |
|
|
|
sub get_instcode_allowable { |
|
my ($codedom,$possvalref) = @_; |
|
return 1 unless (ref($possvalref) eq 'HASH'); |
|
my $instcats = &Apache::lonnet::get_dom_instcats($codedom); |
|
if (ref($instcats) eq 'HASH') { |
|
if ((ref($instcats->{'codetitles'}) eq 'ARRAY') && (ref($instcats->{'codes'}) eq 'HASH')) { |
|
my %codes = %{$instcats->{'codes'}}; |
|
my @codetitles = @{$instcats->{'codetitles'}}; |
|
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]; |
|
$possvalref->{$standardnames[$i]} = {}; |
|
} |
|
foreach my $cid (sort(keys(%codes))) { |
|
if (ref($codes{$cid}) eq 'HASH') { |
|
foreach my $item (keys(%{$codes{$cid}})) { |
|
$possvalref->{$local_to_standard{$item}}{$codes{$cid}{$item}} = 1; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
return 1; |
|
} |
|
|
|
sub course_details { |
sub course_details { |
my ($r,$codedom,$formname,$domdesc,$trails,$allitems,$codetitles) = @_; |
my ($r,$codedom,$formname,$domdesc,$trails,$allitems,$codetitles) = @_; |
my $output; |
my $output; |
Line 660 sub course_details {
|
Line 376 sub course_details {
|
} |
} |
my $brtextone = 'Course listing'; |
my $brtextone = 'Course listing'; |
my $brtexttwo = 'Course details'; |
my $brtexttwo = 'Course details'; |
|
my $textthree = &mt('Detailed course information:'); |
|
my $textfour = &mt('Back to course listing'); |
if ($env{'form.currcat_0'} eq 'communities::0') { |
if ($env{'form.currcat_0'} eq 'communities::0') { |
$brtextone = 'Community listing'; |
$brtextone = 'Community listing'; |
$brtexttwo = 'Community details'; |
$brtexttwo = 'Community details'; |
|
$textthree = &mt('Detailed community information:'); |
|
$textfour = &mt('Back to community listing'); |
|
} elsif ($env{'form.currcat_0'} eq 'placement::0') { |
|
$brtextone = 'Placement test listing'; |
|
$brtexttwo = 'Placement test details'; |
|
$textthree = &mt('Detailed placement test information:'); |
|
$textfour = &mt('Back to placement test listing'); |
} |
} |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:document.$formname.submit()", |
({href=>"javascript:document.$formname.submit()", |
Line 670 sub course_details {
|
Line 395 sub course_details {
|
{text=>$brtexttwo}); |
{text=>$brtexttwo}); |
$r->print( |
$r->print( |
&Apache::lonhtmlcommon::breadcrumbs('Course/Community Catalog'). |
&Apache::lonhtmlcommon::breadcrumbs('Course/Community Catalog'). |
'<h2>'. |
'<h2>'.$textthree.'</h2>'. |
(($env{'form.currcat_0'} eq 'communities::0') ? |
|
&mt('Detailed community information:') : |
|
&mt('Detailed course information:')). |
|
'</h2>'. |
|
&print_course_listing($codedom,undef,$trails,$allitems,undef,$codetitles). |
&print_course_listing($codedom,undef,$trails,$allitems,undef,$codetitles). |
'<br />'. |
'<br />'. |
'<form name="'.$formname.'" method="post" action="/adm/coursecatalog">'. |
'<form name="'.$formname.'" method="post" action="/adm/coursecatalog">'. |
&Apache::lonhtmlcommon::actionbox([ |
&Apache::lonhtmlcommon::actionbox([ |
'<a href = "javascript:document.coursecatalog.submit()">'. |
'<a href = "javascript:document.coursecatalog.submit()">'.$textfour.'</a>']). |
(($env{'form.currcat_0'} eq 'communities::0') ? |
|
&mt('Back to community listing') : &mt('Back to course listing')). |
|
'</a>' |
|
]). |
|
&Apache::lonhtmlcommon::echo_form_input(['coursenum','catalogfilter', |
&Apache::lonhtmlcommon::echo_form_input(['coursenum','catalogfilter', |
'showdetails','courseid']). |
'showdetails','courseid']). |
'</form>'); |
'</form>'); |
Line 712 END
|
Line 429 END
|
|
|
sub courselink_javascript { |
sub courselink_javascript { |
my ($r) = @_; |
my ($r) = @_; |
my $hostname = $r->hostname(); |
my $hostname = $r->hostname(); |
return <<"END"; |
return <<"END"; |
|
|
function ToSyllabus(cdom,cnum,usehttp) { |
function ToSyllabus(cdom,cnum,usehttp) { |
Line 747 END
|
Line 464 END
|
|
|
sub instcode_course_selector { |
sub instcode_course_selector { |
my ($r,$codedom,$formname,$domdesc,$catlinks,$catjs,$codetitles,$cattype,$canviewall) = @_; |
my ($r,$codedom,$formname,$domdesc,$catlinks,$catjs,$codetitles,$cattype,$canviewall) = @_; |
|
my %coursecodes = (); |
|
my %codes = (); |
my %cat_titles = (); |
my %cat_titles = (); |
my %cat_order = (); |
my %cat_order = (); |
my %cat_items = (); |
my %cat_items; |
|
my $caller = 'global'; |
|
my $format_reply; |
my %add_entries = (topmargin => "0", |
my %add_entries = (topmargin => "0", |
marginheight => "0",); |
marginheight => "0",); |
my ($jscript,$totcodes,$numtitles,$lasttitle) = |
my ($jscript,$totcodes,$numtitles,$lasttitle) = |
Line 812 sub cat_header {
|
Line 533 sub cat_header {
|
my $brtext = 'Course listing'; |
my $brtext = 'Course listing'; |
if ($env{'form.currcat_0'} eq 'communities::0') { |
if ($env{'form.currcat_0'} eq 'communities::0') { |
$brtext = 'Community listing'; |
$brtext = 'Community listing'; |
|
} elsif ($env{'form.currcat_0'} eq 'placement::0') { |
|
$brtext = 'Placement test listing'; |
} |
} |
if ($env{'form.state'} eq 'listing') { |
if ($env{'form.state'} eq 'listing') { |
if ($numtitles > 0) { |
if ($numtitles > 0) { |
Line 865 sub category_breadcrumbs {
|
Line 588 sub category_breadcrumbs {
|
} elsif ($cats[0][0] eq 'communities') { |
} elsif ($cats[0][0] eq 'communities') { |
$catlinks .= &mt('Communities'); |
$catlinks .= &mt('Communities'); |
$env{'form.currcat_0'} = 'communities::0'; |
$env{'form.currcat_0'} = 'communities::0'; |
|
} elsif ($cats[0][0] eq 'placement') { |
|
$catlinks .= &mt('Placement Tests'); |
|
$env{'form.currcat_0'} = 'placement::0'; |
} else { |
} else { |
my $name = $cats[0][0]; |
my $name = $cats[0][0]; |
my $item = &escape($name).'::0'; |
my $item = &escape($name).'::0'; |
Line 969 sub main_category_selector {
|
Line 695 sub main_category_selector {
|
$maincatlinks .= &mt('Official courses (with institutional codes)'); |
$maincatlinks .= &mt('Official courses (with institutional codes)'); |
} elsif ($name eq 'communities') { |
} elsif ($name eq 'communities') { |
$maincatlinks .= &mt('Communities'); |
$maincatlinks .= &mt('Communities'); |
|
} elsif ($name eq 'placement') { |
|
$maincatlinks .= &mt('Placement Tests'); |
} else { |
} else { |
$maincatlinks .= $name; |
$maincatlinks .= $name; |
} |
} |
Line 1031 sub additional_filters {
|
Line 759 sub additional_filters {
|
my $selfenroll_text; |
my $selfenroll_text; |
if ($env{'form.currcat_0'} eq 'communities::0') { |
if ($env{'form.currcat_0'} eq 'communities::0') { |
$selfenroll_text = &mt('Only show communities which currently allow self-enrollment (or will allow it in the future)'); |
$selfenroll_text = &mt('Only show communities which currently allow self-enrollment (or will allow it in the future)'); |
|
} elsif ($env{'form.currcat_0'} eq 'placement::0') { |
|
$selfenroll_text = &mt('Only show placement tests which currently allow self-enrollment (or will allow it in the future)'); |
} else { |
} else { |
$selfenroll_text = &mt('Only show courses which currently allow self-enrollment (or will allow it in the future)'); |
$selfenroll_text = &mt('Only show courses which currently allow self-enrollment (or will allow it in the future)'); |
} |
} |
Line 1064 sub additional_filters {
|
Line 794 sub additional_filters {
|
if ($env{'form.currcat_0'} eq 'communities::0') { |
if ($env{'form.currcat_0'} eq 'communities::0') { |
$details_text = &mt('Show full details for each community (domain staff only)'); |
$details_text = &mt('Show full details for each community (domain staff only)'); |
$hidden_text = &mt('Include communities set to be hidden from catalog (domain staff only)'); |
$hidden_text = &mt('Include communities set to be hidden from catalog (domain staff only)'); |
|
} elsif ($env{'form.currcat_0'} eq 'placement::0') { |
|
$details_text = &mt('Show full details for each placement test (domain staff only)'); |
|
$hidden_text = &mt('Include placement tests set to be hidden from catalog (domain staff only)'); |
} else { |
} else { |
$details_text = &mt('Show full details for each course (domain staff only)'); |
$details_text = &mt('Show full details for each course (domain staff only)'); |
$hidden_text = &mt('Include courses set to be hidden from catalog (domain staff only)'); |
$hidden_text = &mt('Include courses set to be hidden from catalog (domain staff only)'); |
Line 1277 sub search_courselist {
|
Line 1010 sub search_courselist {
|
} |
} |
if ($env{'form.currcat_0'} eq 'communities::0') { |
if ($env{'form.currcat_0'} eq 'communities::0') { |
$typefilter = 'Community'; |
$typefilter = 'Community'; |
|
} elsif ($env{'form.currcat_0'} eq 'placement::0') { |
|
$typefilter = 'Placement'; |
} else { |
} else { |
$typefilter = '.'; |
$typefilter = '.'; |
} |
} |
Line 1308 sub print_course_listing {
|
Line 1043 sub print_course_listing {
|
$output = '<p class="LC_error">'; |
$output = '<p class="LC_error">'; |
if ($env{'form.currcat_0'} eq 'communities::0') { |
if ($env{'form.currcat_0'} eq 'communities::0') { |
$output .= &mt('The courseID provided does not match a community in this domain.'); |
$output .= &mt('The courseID provided does not match a community in this domain.'); |
} else { |
} elsif ($env{'form.currcat_0'} eq 'placement::0') { |
|
$output .= &mt('The courseID provided does not match a placement test in this domain.'); |
|
} else { |
$output .= &mt('The courseID provided does not match a course in this domain.'); |
$output .= &mt('The courseID provided does not match a course in this domain.'); |
} |
} |
$output .= '</p>'; |
$output .= '</p>'; |
Line 1324 sub print_course_listing {
|
Line 1061 sub print_course_listing {
|
$output = '<p class="LC_info">'; |
$output = '<p class="LC_info">'; |
if ($env{'form.currcat_0'} eq 'communities::0') { |
if ($env{'form.currcat_0'} eq 'communities::0') { |
$output .= &mt('No communities match the criteria you selected.'); |
$output .= &mt('No communities match the criteria you selected.'); |
|
} elsif ($env{'form.currcat_0'} eq 'placement::0') { |
|
$output .= &mt('No placement tests match the criteria you selected.'); |
} else { |
} else { |
$output .= &mt('No courses match the criteria you selected.'); |
$output .= &mt('No courses match the criteria you selected.'); |
} |
} |
Line 1384 sub construct_data_table {
|
Line 1123 sub construct_data_table {
|
if ($env{'form.currcat_0'} eq 'communities::0') { |
if ($env{'form.currcat_0'} eq 'communities::0') { |
$output .= '<th>'.&mt('Default Access Dates for Members').'</th>'. |
$output .= '<th>'.&mt('Default Access Dates for Members').'</th>'. |
'<th>'.&mt('Member Counts').'</th>'; |
'<th>'.&mt('Member Counts').'</th>'; |
|
} elsif ($env{'form.currcat_0'} eq 'placement::0') { |
|
$output .= |
|
'<th>'.&mt('Default Access Dates for Students').'</th>'. |
|
'<th>'.&mt('Student Counts').'</th>'; |
} else { |
} else { |
$output .= |
$output .= |
'<th>'.&mt('Default Access Dates for Students').'</th>'. |
'<th>'.&mt('Default Access Dates for Students').'</th>'. |
Line 1431 sub construct_data_table {
|
Line 1174 sub construct_data_table {
|
my (%numbers,%creditsum); |
my (%numbers,%creditsum); |
my ($showcredits,$defofficial,$defunofficial,$deftextbook); |
my ($showcredits,$defofficial,$defunofficial,$deftextbook); |
my %domdefaults = &Apache::lonnet::get_domain_defaults($domain); |
my %domdefaults = &Apache::lonnet::get_domain_defaults($domain); |
unless ($env{'form.currcat_0'} eq 'communities::0') { |
unless (($env{'form.currcat_0'} eq 'communities::0') || ($env{'form.currcat_0'} eq 'placement::0')) { |
if ($domdefaults{'officialcredits'} || $domdefaults{'unofficialcredits'} || $domdefaults{'textbookcredits'}) { |
if ($domdefaults{'officialcredits'} || $domdefaults{'unofficialcredits'} || $domdefaults{'textbookcredits'}) { |
$showcredits = 1; |
$showcredits = 1; |
$defofficial = $domdefaults{'officialcredits'}; |
$defofficial = $domdefaults{'officialcredits'}; |
Line 1469 sub construct_data_table {
|
Line 1212 sub construct_data_table {
|
} |
} |
my $count = 1; |
my $count = 1; |
my $totalsec = 0; |
my $totalsec = 0; |
my %clutteredxlists; |
|
foreach my $course (keys(%courseinfo)) { |
|
if (ref($courseinfo{$course}) eq 'HASH') { |
|
if ($courseinfo{$course}{'xlist'} ne '') { |
|
my $crskey = $courseinfo{$course}{'cnum'}.':'.$courseinfo{$course}{'code'}; |
|
my @xlists = split(/,\s/,$courseinfo{$course}{'xlist'}); |
|
$clutteredxlists{$crskey} = \@xlists; |
|
} |
|
} |
|
} |
|
if (keys(%clutteredxlists)) { |
|
my %reformattedxlists = &Apache::lonnet::auto_instsec_reformat($domain,'declutter',\%clutteredxlists); |
|
foreach my $crskey (keys(%reformattedxlists)) { |
|
if (ref($reformattedxlists{$crskey}) eq 'ARRAY') { |
|
my $course = $domain.'_'.(split(/:/,$crskey))[0]; |
|
$courseinfo{$course}{'xlist'} = join(', ',@{$reformattedxlists{$crskey}}); |
|
} |
|
} |
|
} |
|
foreach my $item (@sorted_courses) { |
foreach my $item (@sorted_courses) { |
foreach my $course (@{$Sortby{$item}}) { |
foreach my $course (@{$Sortby{$item}}) { |
$output.=&Apache::loncommon::start_data_table_row(); |
$output.=&Apache::loncommon::start_data_table_row(); |
Line 1516 sub construct_data_table {
|
Line 1240 sub construct_data_table {
|
$lt{'Active'} = &mt('Total current members'); |
$lt{'Active'} = &mt('Total current members'); |
$lt{'Future'} = &mt('Total future members'); |
$lt{'Future'} = &mt('Total future members'); |
$lt{'Previous'} = &mt('Total previous members'); |
$lt{'Previous'} = &mt('Total previous members'); |
|
} elsif ($env{'form.currcat_0'} eq 'placement::0') { |
|
$lt{'courses'} = &mt('Total placement tests'); |
} |
} |
my $colspan = 8; |
my $colspan = 8; |
if ($showcredits) { |
if ($showcredits) { |
Line 1859 sub courseinfo_row {
|
Line 1585 sub courseinfo_row {
|
if ($showsyllabus) { |
if ($showsyllabus) { |
my $usehttp = 0; |
my $usehttp = 0; |
if (($ENV{'SERVER_PORT'} == 443) && ($extsyllplain)) { |
if (($ENV{'SERVER_PORT'} == 443) && ($extsyllplain)) { |
unless (&Apache::lonnet::uses_sts()) { |
$usehttp = 1; |
$usehttp = 1; |
|
} |
|
} |
} |
$output .= '<a href="javascript:ToSyllabus('."'$cdom','$cnum','$usehttp'".')">'.&mt('Syllabus').'</a>'; |
$output .= '<a href="javascript:ToSyllabus('."'$cdom','$cnum','$usehttp'".')">'.&mt('Syllabus').'</a>'; |
} else { |
} else { |
Line 1874 sub courseinfo_row {
|
Line 1598 sub courseinfo_row {
|
$output .= |
$output .= |
'<td>'.$accessdates.'</td>'. |
'<td>'.$accessdates.'</td>'. |
'<td>'.$counts.'</td>'; |
'<td>'.$counts.'</td>'; |
unless ($env{'form.currcat_0'} eq 'communities::0') { |
unless (($env{'form.currcat_0'} eq 'communities::0') || ($env{'form.currcat_0'} eq 'placement::0')) { |
$output .= '<td>'.$autoenrollment.'</td>'; |
$output .= '<td>'.$autoenrollment.'</td>'; |
} |
} |
} else { |
} else { |
Line 1943 sub identify_sections {
|
Line 1667 sub identify_sections {
|
sub get_valid_classes { |
sub get_valid_classes { |
my ($seclist,$xlist_items,$crscode,$owners,$cdom,$cnum) = @_; |
my ($seclist,$xlist_items,$crscode,$owners,$cdom,$cnum) = @_; |
my $response; |
my $response; |
my (@sections,@format_sections,@xlists,%possclasses,%okclasses,%validations); |
my %validations; |
@{$validations{'sections'}} = (); |
@{$validations{'sections'}} = (); |
@{$validations{'xlists'}} = (); |
@{$validations{'xlists'}} = (); |
my $totalitems = 0; |
my $totalitems = 0; |
if ($seclist) { |
if ($seclist) { |
@sections = split(/,\s+/,$seclist); |
foreach my $sec (split(/, /,$seclist)) { |
my $crskey = $cnum.':'.$crscode; |
my $class = $crscode.$sec; |
my %formattedsec = &Apache::lonnet::auto_instsec_reformat($cdom,'clutter', |
if (&Apache::lonnet::auto_validate_class_sec($cdom,$cnum,$owners, |
{$crskey => \@sections}); |
$class) eq 'ok') { |
if (ref($formattedsec{$crskey}) eq 'ARRAY') { |
if (!grep(/^\Q$sec$\E/,@{$validations{'sections'}})) { |
@format_sections = @{$formattedsec{$crskey}}; |
|
map { $possclasses{$crscode.$_} = 1; } @format_sections; |
|
} |
|
} |
|
if ($xlist_items) { |
|
@xlists = split(/,\s+/,$xlist_items); |
|
map { $possclasses{$_} = 1; } @xlists; |
|
} |
|
my %okclasses = &Apache::lonnet::auto_validate_instclasses($cdom,$cnum,$owners, |
|
\%possclasses); |
|
if (keys(%okclasses)) { |
|
for (my $i=0; $i<@sections; $i++) { |
|
if ($okclasses{$crscode.$format_sections[$i]}) { |
|
my $sec = $sections[$i]; |
|
if (!grep(/^\Q$sec\E$/,@{$validations{'sections'}})) { |
|
push(@{$validations{'sections'}},$sec); |
push(@{$validations{'sections'}},$sec); |
$totalitems ++; |
$totalitems ++; |
} |
} |
} |
} |
} |
} |
foreach my $item (@xlists) { |
} |
if ($okclasses{$item}) { |
if ($xlist_items) { |
if (!grep(/^\Q$item\E$/,@{$validations{'xlists'}})) { |
foreach my $item (split(/, /,$xlist_items)) { |
|
if (&Apache::lonnet::auto_validate_class_sec($cdom,$cnum,$owners, |
|
$item) eq 'ok') { |
|
if (!grep(/^\Q$item$\E/,@{$validations{'xlists'}})) { |
push(@{$validations{'xlists'}},$item); |
push(@{$validations{'xlists'}},$item); |
$totalitems ++; |
$totalitems ++; |
} |
} |
Line 1988 sub get_valid_classes {
|
Line 1700 sub get_valid_classes {
|
join(', ',@{$validations{'sections'}}).'<br />'; |
join(', ',@{$validations{'sections'}}).'<br />'; |
} |
} |
if (@{$validations{'xlists'}}) { |
if (@{$validations{'xlists'}}) { |
my $crskey = $cnum.':'.$crscode; |
|
my %reformattedxlists = |
|
&Apache::lonnet::auto_instsec_reformat($cdom,'declutter', |
|
{$crskey => $validations{'xlists'}}); |
|
if (ref($reformattedxlists{$crskey}) eq 'ARRAY') { |
|
$validations{'xlists'} = $reformattedxlists{$crskey}; |
|
} |
|
$response .= &mt('Courses:').' '. |
$response .= &mt('Courses:').' '. |
join(', ',@{$validations{'xlists'}}); |
join(', ',@{$validations{'xlists'}}); |
} |
} |