--- loncom/interface/coursecatalog.pm 2019/08/02 00:24:02 1.88.2.7
+++ loncom/interface/coursecatalog.pm 2025/02/24 23:20:17 1.108
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler for displaying the course catalog interface
#
-# $Id: coursecatalog.pm,v 1.88.2.7 2019/08/02 00:24:02 raeburn Exp $
+# $Id: coursecatalog.pm,v 1.108 2025/02/24 23:20:17 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -37,6 +37,7 @@ use Apache::lonnet;
use Apache::lonlocal;
use Apache::courseclassifier;
use Apache::lonacc;
+use HTML::Entities();
use LONCAPA;
use LONCAPA::lonauthcgi;
@@ -57,7 +58,9 @@ sub handler {
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
['sortby','showdom']);
- my $codedom = &Apache::lonnet::default_login_domain();
+ my $serverdefdom = &Apache::lonnet::default_login_domain();
+ my $codedom = $serverdefdom;
+ my $hostname = $r->hostname();
if (($env{'user.domain'} ne '') && ($env{'user.domain'} ne 'public')) {
$codedom = $env{'user.domain'};
@@ -74,9 +77,22 @@ sub handler {
$env{'form.showdom'} = '';
}
}
- my $domdesc = &Apache::lonnet::domain($codedom,'description');
+ my $domdesc = &Apache::lonnet::domain($serverdefdom,'description');
&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('
'.&mt('Access to catalog LON-CAPA courses/communities unavailable for: "[_1]" on servers run by: "[_2]".',
+ $domdesc,$serverdomdesc).'
');
+ $r->print(&Apache::loncommon::end_page());
+ return OK;
+ }
my $crscats = &Apache::lonnet::get_dom_cats($codedom);
my %domdefaults = &Apache::lonnet::get_domain_defaults($codedom);
my $knownuser = &user_is_known();
@@ -103,18 +119,30 @@ sub handler {
text=>"Course/Community Catalog"});
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Course/Community Catalog'));
if ($knownuser || $canviewall) {
- $r->print(''.&mt('No catalog of LON-CAPA courses/communities is provided for: [_1]',$domdesc).'
');
+ $r->print(''.&mt('No catalog of LON-CAPA courses/communities is provided for: [_1]',$domdesc).'
');
} else {
if ($domdefaults{'catauth'} eq 'none') {
- $r->print(''.&mt('No catalog of LON-CAPA courses/communities is provided for: [_1]',$domdesc).'
');
+ $r->print(''.&mt('No catalog of LON-CAPA courses/communities is provided for: [_1]',$domdesc).'
');
} else {
- $r->print(''.&mt('The catalog of LON-CAPA courses/communities provided for: "[_1]" is only available to users who are logged in.',$domdesc).'
');
+ $r->print(''.&mt('The catalog of LON-CAPA courses/communities provided for: "[_1]" is only available to users who are logged in.',$domdesc).'
');
}
}
$r->print(&Apache::loncommon::end_page());
return OK;
}
+ for (my $i=0; $i<=$env{'form.catalog_maxdepth'}; $i++) {
+ if ($env{'form.currcat_'.$i} eq '-1') {
+ $env{'form.currcat_'.$i} = '';
+ }
+ if (exists($env{'form.initialcurrcat_'.$i})) {
+ if ($env{'form.currcat_'.$i} ne $env{'form.initialcurrcat_'.$i}) {
+ $env{'form.catalog_maxdepth'} = $i;
+ last;
+ }
+ }
+ }
+
my $cnum;
if ($cattype eq 'codesrch') {
my ($uniquecode,$codemsg,$brtext);
@@ -124,7 +152,7 @@ sub handler {
}
my $js = ''."\n";
$r->print(&Apache::loncommon::start_page('Search for a Course/Community',$js));
@@ -177,7 +205,8 @@ sub handler {
if ($courseinfo{$codedom.'_'.$cnum}{'showsyllabus'}) {
my $usehttp = 0;
if (($ENV{'SERVER_PORT'} == 443) && ($courseinfo{$codedom.'_'.$cnum}{'extsyllplain'})) {
- unless (&Apache::lonnet::uses_sts()) {
+ unless ((&Apache::lonnet::uses_sts()) ||
+ (&Apache::lonnet::waf_allssl($hostname))) {
$usehttp = 1;
}
}
@@ -239,41 +268,19 @@ sub handler {
&validate_input($codedom,\@cats,\%maxd,$cathash);
my ($numtitles,@codetitles);
if (($env{'form.coursenum'} ne '') && ($knownuser)) {
- &course_details($r,$codedom,$formname,$domdesc,\@trails,\%allitems,\@codetitles);
+ &course_details($r,$codedom,$formname,$domdesc,$hostname,\@trails,
+ \%allitems,\@codetitles);
} else {
my ($catlinks,$has_subcats,$selitem) = &category_breadcrumbs($codedom,@cats);
my $wasacctext = &get_wasactive_text();
+ my %js_lt = &Apache::lonlocal::texthash(
+ 'noch' => 'No changes made in drop-down lists',
+ 'chsu' => 'Choose a subcategory to display',
+ 'chca' => 'Choose a category to display',
+ );
+ &js_escape(\%js_lt);
my $catjs = <<"ENDSCRIPT";
-function setCatDepth(depth) {
- var depth = parseInt(depth);
- if (depth !== NaN) {
- if (depth > 0) {
- var possmaxd = 0;
- var toplevel = new Array($toplevelstr);
- var maxdepths = new Array($maxdepthstr);
- if (toplevel.length) {
- for (var i=0; i possmaxd) {
- depth = possmaxd;
- }
- }
- document.coursecats.catalog_maxdepth.value = depth;
- } else {
- document.coursecats.currcat_0.value = '';
- document.coursecats.catalog_maxdepth.value = '';
- }
- document.coursecats.submit();
- return;
-}
-
function changeSort(caller) {
document.$formname.sortby.value = caller;
document.$formname.submit();
@@ -285,7 +292,7 @@ function setCourseId(caller) {
}
ENDSCRIPT
- $catjs .= &courselink_javascript($r);
+ $catjs .= &courselink_javascript($hostname);
if (&user_is_dc($codedom) || $canviewall) {
$catjs .= <print(&print_course_listing($codedom,$numtitles,undef,undef,undef,
- \@codetitles,$canviewall));
+ \@codetitles,$canviewall,$hostname));
}
} else {
my (%add_entries);
my ($currdepth,$deeper) = &get_depth_values();
- if ($selitem) {
- my $alert = &mt('Choose a subcategory to display');
- if (!$deeper) {
- $alert = &mt('Choose a category to display');
- }
- &js_escape(\$alert);
- $catjs .= <'."\n".$catjs."\n".'';
- &cat_header($r,$codedom,$catjs,\%add_entries,$catlinks,undef,$cattype);
+ my $js = '';
+ &cat_header($r,$codedom,$js,\%add_entries,$catlinks,undef,$cattype);
if ($env{'form.currcat_0'} ne '') {
$r->print('