--- loncom/interface/lonmenu.pm 2022/06/11 04:30:48 1.523 +++ loncom/interface/lonmenu.pm 2022/06/30 21:04:14 1.524 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.523 2022/06/11 04:30:48 raeburn Exp $ +# $Id: lonmenu.pm,v 1.524 2022/06/30 21:04:14 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -846,7 +846,8 @@ sub build_submenu { } sub innerregister { - my ($forcereg,$bread_crumbs,$group,$pagebuttonshide,$hostname,$ltiscope,$ltiuri) = @_; + my ($forcereg,$bread_crumbs,$group,$pagebuttonshide,$hostname, + $ltiscope,$ltiuri,$showncrumbsref) = @_; my $const_space = ($env{'request.state'} eq 'construct'); my $is_const_dir = 0; @@ -938,14 +939,17 @@ sub innerregister { if ($env{'form.folderpath'}) { &prepare_functions($resurl,$forcereg,$group,undef,undef,1,$hostname); ($trail) = - &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1); + &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1,1); } else { &Apache::lonhtmlcommon::add_breadcrumb( {text => "Supplemental $crstype Content", href => "javascript:gopost('/adm/supplemental','')"}); $title = &mt('View Resource'); ($trail) = - &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1); + &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1,1); + } + if (ref($showncrumbsref)) { + $$showncrumbsref = 1; } return $trail; } elsif ($resurl =~ m{^\Q/uploaded$courseurl/portfolio/syllabus/}) { @@ -954,7 +958,10 @@ sub innerregister { $forcereg,$group,undef,undef,1,$hostname); $title = &mt('Syllabus File'); my ($trail) = - &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1,$hostname); + &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1,1); + if (ref($showncrumbsref)) { + $$showncrumbsref = 1; + } return $trail; } unless ($env{'request.state'} eq 'construct') { @@ -1261,10 +1268,13 @@ ENDMENUITEMS } } } - my $showprogress; + my ($showprogress,$linkprotout); if (($crstype eq 'Placement') && (!$env{'request.role.adv'})) { $showprogress = &placement_progress(); } + if ($env{'request.deeplink.login'}) { + $linkprotout = &linkprot_exit(); + } my $addremote=0; foreach (@inlineremote) { if ($_ ne '') { $addremote=1; last;} } @@ -1290,6 +1300,9 @@ ENDMENUITEMS if ($countdown) { &Apache::lonhtmlcommon::add_breadcrumb_tool('tools',$countdown); } + if ($linkprotout) { + &Apache::lonhtmlcommon::add_breadcrumb_tool('tools',$linkprotout); + } if ($showprogress) { &Apache::lonhtmlcommon::add_breadcrumb_tool('tools',$showprogress); } @@ -1298,6 +1311,9 @@ ENDMENUITEMS if ($countdown) { unshift(@tools,$countdown); } + if ($linkprotout) { + unshift(@tools,$linkprotout); + } &Apache::lonhtmlcommon::add_breadcrumb_tool( 'tools',@tools); @@ -1315,6 +1331,9 @@ ENDMENUITEMS if ($showprogress) { &Apache::lonhtmlcommon::add_breadcrumb_tool('tools',$showprogress); } + if ($linkprotout) { + &Apache::lonhtmlcommon::add_breadcrumb_tool('tools',$linkprotout); + } } my ($topic_help,$topic_help_text); if ($is_const_dir == 2) { @@ -1326,6 +1345,9 @@ ENDMENUITEMS $topic_help_text = 'About WebDAV access'; } } + if (ref($showncrumbsref)) { + $$showncrumbsref = 1; + } return &Apache::lonhtmlcommon::scripttag('', 'start') . &Apache::lonhtmlcommon::breadcrumbs(undef,undef,0,'','','','',$topic_help,$topic_help_text) . &Apache::lonhtmlcommon::scripttag('', 'end'); @@ -3177,6 +3199,86 @@ sub placement_progress { &mt('Test is [_1]% complete',$complete).''; } +sub linkprot_exit { + if (($env{'request.ciurse.id'}) && ($env{'request.deeplink.login'})) { + my ($deeplink_symb,$deeplink); + my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; + my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; + if (($cnum ne '') && ($cdom ne '')) { + $deeplink_symb = &Apache::loncommon::deeplink_login_symb($cnum,$cdom); + if ($deeplink_symb) { + if ($deeplink_symb =~ /\.(page|sequence)$/) { + my $mapname = &Apache::lonnet::deversion((&Apache::lonnet::decode_symb($deeplink_symb))[2]); + my $navmap = Apache::lonnavmaps::navmap->new(); + if (ref($navmap)) { + $deeplink = $navmap->get_mapparam(undef,$mapname,'0.deeplink'); + } + } else { + $deeplink = &Apache::lonnet::EXT('resource.0.deeplink',$deeplink_symb); + } + if ($deeplink ne '') { + my ($state,$others,$listed,$scope,$protect,$display,$target,$exit) = split(/,/,$deeplink); + my %lt = &Apache::lonlocal::texthash( + title => 'Exit Tool', + okdone => 'Click "OK" to exit embedded tool', + cancel => 'Click "Cancel" to continue working.', + ok => 'OK', + exit => 'Cancel', + ); + if ($exit) { + my $height = 250; + my $width = 300; + my $exitbuttontext = &mt('Exit Tool'); + return < + + + + +
+

$lt{'okdone'} $lt{'cancel'}

+
+ + + +END + } + } + } + } + } + return; +} + # ================================================================ Main Program BEGIN {