--- loncom/interface/coursecatalog.pm 2014/04/28 14:23:47 1.83
+++ loncom/interface/coursecatalog.pm 2018/04/29 00:31:25 1.88.2.2
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler for displaying the course catalog interface
#
-# $Id: coursecatalog.pm,v 1.83 2014/04/28 14:23:47 raeburn Exp $
+# $Id: coursecatalog.pm,v 1.88.2.2 2018/04/29 00:31:25 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -38,6 +38,7 @@ use Apache::lonlocal;
use Apache::courseclassifier;
use Apache::lonacc;
use LONCAPA;
+use LONCAPA::lonauthcgi;
sub handler {
my ($r) = @_;
@@ -79,15 +80,19 @@ sub handler {
my %domconfig =
&Apache::lonnet::get_dom('configuration',['coursecategories'],$codedom);
my $knownuser = &user_is_known();
-
+ my $canviewall = &canview_all($knownuser,$codedom);
+
my ($cathash,$cattype);
if (ref($domconfig{'coursecategories'}) eq 'HASH') {
$cathash = $domconfig{'coursecategories'}{'cats'};
- if ($knownuser) {
+ if ($knownuser || $canviewall) {
$cattype = $domconfig{'coursecategories'}{'auth'};
} else {
$cattype = $domconfig{'coursecategories'}{'unauth'};
}
+ if ($cattype eq '') {
+ $cattype = 'std';
+ }
} else {
$cathash = {};
$cattype = 'std';
@@ -98,7 +103,7 @@ sub handler {
({href=>"/adm/coursecatalog",
text=>"Course/Community Catalog"});
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Course/Community Catalog'));
- if ($knownuser) {
+ if ($knownuser || $canviewall) {
$r->print('
'.&mt('No catalog of LON-CAPA courses/communities is provided for: [_1]',$domdesc).'
');
} else {
if ($domconfig{'coursecategories'}{'auth'} eq 'none') {
@@ -146,8 +151,8 @@ sub handler {
my %courses = &Apache::lonnet::courseiddump($codedom,'.',1,'.','.',
$cnum,undef,undef,'.',1);
if (keys(%courses)) {
- $env{'form.coursenum'} = $cnum;
- my %courseinfo = &build_courseinfo_hash(\%courses,$knownuser,$codedom);
+ $env{'form.coursenum'} = $cnum;
+ my %courseinfo = &build_courseinfo_hash(\%courses,$knownuser,$codedom,$canviewall);
undef($env{'form.coursenum'});
if (ref($courseinfo{$codedom.'_'.$cnum}) eq 'HASH') {
$r->print(&Apache::lonhtmlcommon::start_pick_box());
@@ -246,7 +251,7 @@ function setCourseId(caller) {
ENDSCRIPT
$catjs .= &courselink_javascript();
- if (&user_is_dc($codedom)) {
+ if (&user_is_dc($codedom) || $canviewall) {
$catjs .= <print(&print_course_listing($codedom,$numtitles,undef,undef,undef,
- \@codetitles));
+ \@codetitles,$canviewall));
}
} else {
my (%add_entries);
@@ -290,6 +295,7 @@ ENDTOGGJS
if (!$deeper) {
$alert = &mt('Choose a category to display');
}
+ &js_escape(\$alert);
$catjs .= <print('
');
}
if ($env{'form.state'} eq 'listing') {
- $r->print(&print_course_listing($codedom,undef,\@trails,\%allitems,$subcats,\@codetitles));
+ $r->print(&print_course_listing($codedom,undef,\@trails,\%allitems,$subcats,\@codetitles,
+ $canviewall));
}
}
}
@@ -386,7 +393,7 @@ sub coursesearch {
my %lt = &Apache::lonlocal::texthash (
crlk => 'Course look-up',
code => 'Code',
- ifyo => 'Enter the character code (six letters and numbers)',
+ ifyo => 'Enter the course code (six letters and numbers)',
srch => 'Find course',
);
return <<"END";
@@ -428,7 +435,7 @@ END
}
sub instcode_course_selector {
- my ($r,$codedom,$formname,$domdesc,$catlinks,$catjs,$codetitles,$cattype) = @_;
+ my ($r,$codedom,$formname,$domdesc,$catlinks,$catjs,$codetitles,$cattype,$canviewall) = @_;
my %coursecodes = ();
my %codes = ();
my %cat_titles = ();
@@ -448,10 +455,10 @@ sub instcode_course_selector {
'';
if ($totcodes) {
if (($env{'form.state'} eq 'listing') && ($numtitles > 0)) {
- $add_entries{'onLoad'} = 'setElements();';
+ $add_entries{'onload'} = 'setElements();';
}
- if (&user_is_dc($codedom)) {
- $add_entries{'onLoad'} .= ' toggleStatuses();toggleWasActive();'
+ if (&user_is_dc($codedom) || $canviewall) {
+ $add_entries{'onload'} .= ' toggleStatuses();toggleWasActive();'
}
&cat_header($r,$codedom,$js,\%add_entries,$catlinks,$numtitles,$cattype);
my $cat_maxdepth = $env{'form.catalog_maxdepth'};
@@ -459,7 +466,7 @@ sub instcode_course_selector {
''."\n".
''."\n".
''.
- &additional_filters($codedom));
+ &additional_filters($codedom,undef,$canviewall));
if ($numtitles > 0) {
$r->print(''.&mt('Choose which course(s) to list.').'
'.
&Apache::courseclassifier::build_instcode_selectors($numtitles,
@@ -680,10 +687,10 @@ sub get_depth_values {
}
sub additional_filters {
- my ($codedom,$has_subcats) = @_;
+ my ($codedom,$has_subcats,$canviewall) = @_;
my $is_dc = &user_is_dc($codedom);
my $output = '';
- if ($is_dc) {
+ if ($is_dc || $canviewall) {
$output .= '