version 1.92, 2017/02/20 18:29:22
|
version 1.97, 2018/12/16 03:17:07
|
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(); |
|
|
|
unless (($serverdefdom eq $codedom) || |
|
(&Apache::lonnet::will_trust('catalog',$serverdefdom,$codedom))) { |
|
my $serverdomdesc = &Apache::lonnet::domain($serverdefdom,'description'); |
|
$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 = |
my %domconfig = |
&Apache::lonnet::get_dom('configuration',['coursecategories'],$codedom); |
&Apache::lonnet::get_dom('configuration',['coursecategories'],$codedom); |
my $knownuser = &user_is_known(); |
my $knownuser = &user_is_known(); |
Line 211 sub handler {
|
Line 225 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'}) { |
if ($env{'form.coursenum'} ne '') { |
$cnum = $env{'form.coursenum'}; |
if ($env{'form.coursenum'} =~ /^$LONCAPA::match_courseid$/) { |
|
$cnum = $env{'form.coursenum'}; |
|
} else { |
|
delete($env{'form.coursenum'}); |
|
} |
} |
} |
} |
} |
|
|
if ($env{'form.catalog_maxdepth'} ne '') { |
my (@cats,@trails,%allitems,%idx,@jsarray,%subcathash,$subcats,%maxd, |
$env{'form.catalog_maxdepth'} =~ s{\D}{}g; |
$toplevelstr,$maxdepthstr); |
} |
|
|
|
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); |
\%idx,\@jsarray,$subcats,\%maxd); |
|
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(\@cats,\%maxd); |
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 235 sub handler {
|
Line 259 sub handler {
|
my $catjs = <<"ENDSCRIPT"; |
my $catjs = <<"ENDSCRIPT"; |
|
|
function setCatDepth(depth) { |
function setCatDepth(depth) { |
document.coursecats.catalog_maxdepth.value = depth; |
var depth = parseInt(depth); |
if (depth == '') { |
if (depth !== NaN) { |
document.coursecats.currcat_0.value = ''; |
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.catalog_maxdepth.value = ''; |
} |
} |
document.coursecats.submit(); |
document.coursecats.submit(); |
return; |
return; |
Line 346 ENDJS
|
Line 390 ENDJS
|
return OK; |
return OK; |
} |
} |
|
|
|
sub validate_input { |
|
my ($cats,$maxd) = @_; |
|
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; |
|
return; |
|
} |
|
|
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 1655 sub identify_sections {
|
Line 1760 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 %validations; |
my (@sections,@xlists,%possclasses,%okclasses,%validations); |
@{$validations{'sections'}} = (); |
@{$validations{'sections'}} = (); |
@{$validations{'xlists'}} = (); |
@{$validations{'xlists'}} = (); |
my $totalitems = 0; |
my $totalitems = 0; |
if ($seclist) { |
if ($seclist) { |
foreach my $sec (split(/, /,$seclist)) { |
@sections = split(/,\s+/,$seclist); |
my $class = $crscode.$sec; |
map { $possclasses{$crscode.$_} = 1; } @sections; |
if (&Apache::lonnet::auto_validate_class_sec($cdom,$cnum,$owners, |
} |
$class) eq 'ok') { |
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)) { |
|
foreach my $sec (@sections) { |
|
if ($okclasses{$crscode.$sec}) { |
if (!grep(/^\Q$sec$\E/,@{$validations{'sections'}})) { |
if (!grep(/^\Q$sec$\E/,@{$validations{'sections'}})) { |
push(@{$validations{'sections'}},$sec); |
push(@{$validations{'sections'}},$sec); |
$totalitems ++; |
$totalitems ++; |
} |
} |
} |
} |
} |
} |
} |
foreach my $item (@xlists) { |
if ($xlist_items) { |
if ($okclasses{$item}) { |
foreach my $item (split(/, /,$xlist_items)) { |
if (!grep(/^\Q$item\E$/,@{$validations{'xlists'}})) { |
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 ++; |
} |
} |