--- loncom/interface/coursecatalog.pm 2016/10/05 13:36:53 1.90 +++ loncom/interface/coursecatalog.pm 2017/08/08 15:32:30 1.94 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler for displaying the course catalog interface # -# $Id: coursecatalog.pm,v 1.90 2016/10/05 13:36:53 raeburn Exp $ +# $Id: coursecatalog.pm,v 1.94 2017/08/08 15:32:30 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -57,7 +57,8 @@ 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; if (($env{'user.domain'} ne '') && ($env{'user.domain'} ne 'public')) { $codedom = $env{'user.domain'}; @@ -74,9 +75,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 %domconfig = &Apache::lonnet::get_dom('configuration',['coursecategories'],$codedom); my $knownuser = &user_is_known(); @@ -125,7 +139,7 @@ sub handler { } my $js = ''."\n"; $r->print(&Apache::loncommon::start_page('Search for a Course/Community',$js)); @@ -176,8 +190,12 @@ sub handler { $courseinfo{$codedom.'_'.$cnum}{$item}); if ($item eq 'title') { if ($courseinfo{$codedom.'_'.$cnum}{'showsyllabus'}) { + my $usehttp = 0; + if (($ENV{'SERVER_PORT'} == 443) && ($courseinfo{$codedom.'_'.$cnum}{'extsyllplain'})) { + $usehttp = 1; + } $r->print(' '. - ''. + ''. &mt('Syllabus').''); } } @@ -250,7 +268,7 @@ function setCourseId(caller) { } ENDSCRIPT - $catjs .= &courselink_javascript(); + $catjs .= &courselink_javascript($r); if (&user_is_dc($codedom) || $canviewall) { $catjs .= < "0", marginheight => "0",); my $js = ''."\n"; + &courselink_javascript($r).''."\n"; my $start_page = &Apache::loncommon::start_page('Course/Community Catalog',$js, {'add_entries' => \%add_entries, }); @@ -412,9 +430,11 @@ END } sub courselink_javascript { + my ($r) = @_; + my $hostname = $r->hostname(); return <<"END"; -function ToSyllabus(cdom,cnum) { +function ToSyllabus(cdom,cnum,usehttp) { if (cdom == '' || cdom == null) { return; } @@ -422,6 +442,13 @@ function ToSyllabus(cdom,cnum) { return; } document.linklaunch.action = "/public/"+cdom+"/"+cnum+"/syllabus"; + if (usehttp == 1) { + var hostname = '$hostname'; + if (hostname != '') { + document.linklaunch.action = 'http://'+hostname+document.linklaunch.action; + } + document.linklaunch.action += '?usehttp=1'; + } document.linklaunch.submit(); } @@ -1275,7 +1302,7 @@ sub build_courseinfo_hash { $cleandesc=~s/'/\\'/g; $cleandesc =~ s/^\s+//; my ($cdom,$cnum)=split(/\_/,$course); - my ($instcode,$singleowner,$ttype,$selfenroll_types, + my ($instcode,$singleowner,$ttype,$selfenroll_types,$extsyllplain, $selfenroll_start,$selfenroll_end,@owners,%ownernames,$categories); if (ref($courses->{$course}) eq 'HASH') { $descr = $courses->{$course}{'description'}; @@ -1286,6 +1313,7 @@ sub build_courseinfo_hash { $selfenroll_start = $courses->{$course}{'selfenroll_start_date'}; $selfenroll_end = $courses->{$course}{'selfenroll_end_date'}; $categories = $courses->{$course}{'categories'}; + $extsyllplain = $courses->{$course}{'extsyllplain'}; push(@owners,$singleowner); if ($courses->{$course}{'co-owners'} ne '') { foreach my $item (split(/,/,$courses->{$course}{'co-owners'})) { @@ -1329,6 +1357,7 @@ sub build_courseinfo_hash { $courseinfo{$course}{'selfenroll_start'} = $selfenroll_start; $courseinfo{$course}{'selfenroll_end'} = $selfenroll_end; $courseinfo{$course}{'categories'} = $categories; + $courseinfo{$course}{'extsyllplain'} = $extsyllplain; my %coursehash = &Apache::lonnet::dump('environment',$cdom,$cnum); my @classids; @@ -1513,7 +1542,8 @@ sub count_students { sub courseinfo_row { my ($info,$knownuser,$details,$countref,$now,$course,$trails,$allitems,$numbers,$canviewall) = @_; my ($cdom,$cnum,$title,$ownerlast,$code,$owner,$seclist,$xlist_items, - $accessdates,$showsyllabus,$counts,$autoenrollment,$output,$categories); + $accessdates,$showsyllabus,$counts,$autoenrollment,$output,$categories, + $extsyllplain); if (ref($info) eq 'HASH') { $cdom = $info->{'cdom'}; $cnum = $info->{'cnum'}; @@ -1527,6 +1557,7 @@ sub courseinfo_row { $counts = $info->{'counts'}; $autoenrollment = $info->{'autoenrollment'}; $showsyllabus = $info->{'showsyllabus'}; + $extsyllplain = $info->{'extsyllplain'}; $categories = $info->{'categories'}; } else { $output = ''.&mt('No information available for [_1].', @@ -1554,7 +1585,11 @@ sub courseinfo_row { ''.$xlist_items.''. ''.$title.' '; if ($showsyllabus) { - $output .= ''.&mt('Syllabus').''; + my $usehttp = 0; + if (($ENV{'SERVER_PORT'} == 443) && ($extsyllplain)) { + $usehttp = 1; + } + $output .= ''.&mt('Syllabus').''; } else { $output .= ' '; }