version 1.369.2.83.2.3, 2022/05/30 15:40:15
|
version 1.369.2.83.2.9, 2023/09/02 15:56:34
|
Line 267 sub prep_menuitem {
|
Line 267 sub prep_menuitem {
|
# entries from mydesk.tab |
# entries from mydesk.tab |
sub primary_menu { |
sub primary_menu { |
my ($crstype,$ltimenu,$menucoll,$menuref,$links_disabled,$links_target) = @_; |
my ($crstype,$ltimenu,$menucoll,$menuref,$links_disabled,$links_target) = @_; |
my (%menu,%menuopts); |
my (%menu,%ltiexc,%menuopts); |
# each element of @primary contains following array: |
# each element of @primary contains following array: |
# (link url, icon path, alt text, link text, condition, position) |
# (link url, icon path, alt text, link text, condition, position) |
my $public; |
my $public; |
Line 275 sub primary_menu {
|
Line 275 sub primary_menu {
|
|| (($env{'user.name'} eq '') && ($env{'user.domain'} eq ''))) { |
|| (($env{'user.name'} eq '') && ($env{'user.domain'} eq ''))) { |
$public = 1; |
$public = 1; |
} |
} |
|
my $lti; |
|
if ($env{'request.lti.login'}) { |
|
$lti = 1; |
|
if (ref($ltimenu) eq 'HASH') { |
|
foreach my $item ('fullname','logout') { |
|
unless ($ltimenu->{$item}) { |
|
$ltiexc{$item} = 1; |
|
} |
|
} |
|
} |
|
} |
my ($listclass,$linkattr,$target); |
my ($listclass,$linkattr,$target); |
if ($links_disabled) { |
if ($links_disabled) { |
$listclass = 'LCisDisabled'; |
$listclass = 'LCisDisabled'; |
Line 283 sub primary_menu {
|
Line 294 sub primary_menu {
|
if ($links_target ne '') { |
if ($links_target ne '') { |
$target = $links_target; |
$target = $links_target; |
} else { |
} else { |
my $deeplinktarget; |
my ($ltitarget,$deeplinktarget); |
|
if ($env{'request.lti.login'}) { |
|
$ltitarget = $env{'request.lti.target'}; |
|
} |
if ($env{'request.deeplink.login'}) { |
if ($env{'request.deeplink.login'}) { |
$deeplinktarget = $env{'request.deeplink.target'}; |
$deeplinktarget = $env{'request.deeplink.target'}; |
} |
} |
if ($deeplinktarget eq '_self') { |
if (($ltitarget eq 'iframe') || ($deeplinktarget eq '_self')) { |
$target = '_self'; |
$target = '_self'; |
} else { |
} else { |
$target = '_top'; |
$target = '_top'; |
Line 310 sub primary_menu {
|
Line 324 sub primary_menu {
|
&& !$public; # only visible to public |
&& !$public; # only visible to public |
# users |
# users |
next if $$menuitem[4] eq 'roles' ##show links depending on |
next if $$menuitem[4] eq 'roles' ##show links depending on |
&& &Apache::loncommon::show_course(); ##term 'Courses' or |
&& (&Apache::loncommon::show_course() ##term 'Courses' or |
next if $$menuitem[4] eq 'courses' ##'Roles' wanted |
|| $lti); ##'Roles' wanted |
&& !&Apache::loncommon::show_course(); ## |
next if $$menuitem[4] eq 'courses' ##and not LTI access |
|
&& (!&Apache::loncommon::show_course() |
|
|| $lti); |
|
next if $$menuitem[4] eq 'notlti' |
|
&& $lti; |
|
next if $$menuitem[4] eq 'ltiexc' |
|
&& exists($ltiexc{lc($menuitem->[3])}); |
my $title = $menuitem->[3]; |
my $title = $menuitem->[3]; |
my $position = $menuitem->[5]; |
my $position = $menuitem->[5]; |
if ($position eq '') { |
if ($position eq '') { |
Line 322 sub primary_menu {
|
Line 341 sub primary_menu {
|
if ($env{'request.course.id'} && $menucoll) { |
if ($env{'request.course.id'} && $menucoll) { |
if (($menuitem->[6]) && (!$menuopts{$menuitem->[6]})) { |
if (($menuitem->[6]) && (!$menuopts{$menuitem->[6]})) { |
if ($menuitem->[6] eq 'pers') { |
if ($menuitem->[6] eq 'pers') { |
if ($menuopts{'name'} && |
if ($menuopts{'name'} && !$ltiexc{'fullname'} && |
$env{'user.name'} && $env{'user.domain'}) { |
$env{'user.name'} && $env{'user.domain'}) { |
$menu{$position} .= '<li><a href="#">'. |
$menu{$position} .= '<li><a href="#">'. |
&Apache::loncommon::plainname($env{'user.name'}, |
&Apache::loncommon::plainname($env{'user.name'}, |
Line 357 sub primary_menu {
|
Line 376 sub primary_menu {
|
push(@primsub,$item); |
push(@primsub,$item); |
} |
} |
if ($title eq 'Personal') { |
if ($title eq 'Personal') { |
if ($env{'user.name'} && $env{'user.domain'}) { |
if ($env{'user.name'} && $env{'user.domain'} && !$ltiexc{'fullname'}) { |
unless (($env{'request.course.id'}) && ($menucoll) && (!$menuopts{'name'})) { |
unless (($env{'request.course.id'}) && ($menucoll) && (!$menuopts{'name'})) { |
$title = &Apache::loncommon::plainname($env{'user.name'},$env{'user.domain'}); |
$title = &Apache::loncommon::plainname($env{'user.name'},$env{'user.domain'}); |
} |
} |
Line 464 sub secondary_menu {
|
Line 483 sub secondary_menu {
|
my $canplc = &Apache::lonnet::allowed('plc', $crs_sec); |
my $canplc = &Apache::lonnet::allowed('plc', $crs_sec); |
my $author = &getauthor(); |
my $author = &getauthor(); |
|
|
my ($cdom,$cnum,$showsyllabus,$showfeeds,$showresv,$grouptools,%menuopts); |
my ($cdom,$cnum,$showsyllabus,$showfeeds,$showresv,$grouptools, |
|
$lti,$ltimapres,%ltiexc,%menuopts); |
$grouptools = 0; |
$grouptools = 0; |
if ($env{'request.course.id'}) { |
if ($env{'request.course.id'}) { |
$cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
$cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
Line 498 sub secondary_menu {
|
Line 518 sub secondary_menu {
|
} |
} |
} |
} |
} |
} |
|
if ($env{'request.lti.login'}) { |
|
$lti = 1; |
|
if (ref($ltimenu) eq 'HASH') { |
|
foreach my $item ('fullname','coursetitle','role','logout','grades') { |
|
unless ($ltimenu->{$item}) { |
|
$ltiexc{$item} = 1; |
|
} |
|
} |
|
} |
|
if (($ltiscope eq 'map') || ($ltiscope eq 'resource')) { |
|
$ltimapres = 1; |
|
} |
|
} |
} |
} |
if (($menucoll) && (ref($menuref) eq 'HASH')) { |
if (($menucoll) && (ref($menuref) eq 'HASH')) { |
%menuopts = %{$menuref}; |
%menuopts = %{$menuref}; |
Line 522 sub secondary_menu {
|
Line 555 sub secondary_menu {
|
if ($links_target ne '') { |
if ($links_target ne '') { |
$target = $links_target; |
$target = $links_target; |
} else { |
} else { |
my $deeplinktarget; |
my ($ltitarget,$deeplinktarget); |
|
if ($env{'request.lti.login'}) { |
|
$ltitarget = $env{'request.lti.target'}; |
|
} |
if ($env{'request.deeplink.login'}) { |
if ($env{'request.deeplink.login'}) { |
$deeplinktarget = $env{'request.deeplink.target'}; |
$deeplinktarget = $env{'request.deeplink.target'}; |
} |
} |
if ($deeplinktarget eq '_self') { |
if (($ltitarget eq 'iframe') || ($deeplinktarget eq '_self')) { |
$target = '_self'; |
$target = '_self'; |
} else { |
} else { |
$target = '_top'; |
$target = '_top'; |
Line 546 sub secondary_menu {
|
Line 582 sub secondary_menu {
|
next if $$menuitem[4] eq 'crseditCommunity' |
next if $$menuitem[4] eq 'crseditCommunity' |
&& ($crstype eq 'Course'); |
&& ($crstype eq 'Course'); |
next if $$menuitem[4] eq 'nvgr' |
next if $$menuitem[4] eq 'nvgr' |
&& $canvgr; |
&& ($canvgr || $ltiexc{'grades'}); |
next if $$menuitem[4] eq 'vgr' |
next if $$menuitem[4] eq 'vgr' |
&& !$canvgr; |
&& !$canvgr; |
next if $$menuitem[4] eq 'viewusers' |
next if $$menuitem[4] eq 'viewusers' |
Line 573 sub secondary_menu {
|
Line 609 sub secondary_menu {
|
&& !$author; |
&& !$author; |
next if $$menuitem[4] eq 'cca' |
next if $$menuitem[4] eq 'cca' |
&& !$canmodifycoauthor; |
&& !$canmodifycoauthor; |
|
next if $$menuitem[4] eq 'notltimapres' |
|
&& $ltimapres; |
|
next if $$menuitem[4] eq 'notlti' |
|
&& $lti; |
|
next if $$menuitem[4] eq 'lti' |
|
&& (!$lti || !$noprimary); |
|
next if $$menuitem[3] eq 'Logout' |
|
&& $ltiexc{'logout'}; |
|
|
my $title = $menuitem->[3]; |
my $title = $menuitem->[3]; |
if ($env{'request.course.id'} && $menucoll) { |
if ($env{'request.course.id'} && $menucoll) { |
Line 603 sub secondary_menu {
|
Line 647 sub secondary_menu {
|
next if ($item->[2] eq 'params' && !$canmodpara && !$canviewpara); |
next if ($item->[2] eq 'params' && !$canmodpara && !$canviewpara); |
next if ($item->[2] eq 'author' && !$author); |
next if ($item->[2] eq 'author' && !$author); |
next if ($item->[2] eq 'cca' && !$canmodifycoauthor); |
next if ($item->[2] eq 'cca' && !$canmodifycoauthor); |
|
next if ($item->[2] eq 'lti' && !$lti); |
|
if ($item->[2] =~ /^lti(portfolio|wishlist|blog)$/) { |
|
my $tool = $1; |
|
next if !$lti; |
|
next if (!&Apache::lonnet::usertools_access('','',$tool, |
|
undef,'tools')); |
|
} |
push(@scndsub,$item); |
push(@scndsub,$item); |
} |
} |
} |
} |
|
if ($title eq 'Personal' && $env{'user.name'} && $env{'user.domain'}) { |
|
unless ($ltiexc{'fullname'}) { |
|
$title = &Apache::loncommon::plainname($env{'user.name'},$env{'user.domain'}); |
|
} |
|
} |
if (@scndsub > 0) { |
if (@scndsub > 0) { |
$menu .= &create_submenu($link,$target,&mt($title),\@scndsub,1,undef, |
$menu .= &create_submenu($link,$target,&mt($title),\@scndsub,1,undef, |
$listclass,$linkattr); |
$listclass,$linkattr); |
Line 822 sub registerurl {
|
Line 878 sub registerurl {
|
} |
} |
|
|
sub innerregister { |
sub innerregister { |
my ($forcereg,$bread_crumbs,$group,$pagebuttonshide,$hostname) = @_; |
my ($forcereg,$bread_crumbs,$group,$pagebuttonshide,$hostname, |
|
$ltiscope,$ltiuri,$showncrumbsref) = @_; |
my $const_space = ($env{'request.state'} eq 'construct'); |
my $const_space = ($env{'request.state'} eq 'construct'); |
my $is_const_dir = 0; |
my $is_const_dir = 0; |
|
|
Line 863 sub innerregister {
|
Line 920 sub innerregister {
|
my $restitle = &Apache::lonnet::gettitle($symb); |
my $restitle = &Apache::lonnet::gettitle($symb); |
|
|
my (@crumbs,@mapcrumbs); |
my (@crumbs,@mapcrumbs); |
if (($env{'request.noversionuri'} ne '/adm/navmaps') && ($mapurl ne '') && |
if (($env{'request.noversionuri'} ne '/adm/navmaps') && ($mapurl ne '')) { |
($mapurl ne $env{'course.'.$env{'request.course.id'}.'.url'})) { |
unless ($ltiscope eq 'resource') { |
$navmap = Apache::lonnavmaps::navmap->new(); |
if (($mapurl ne $env{'course.'.$env{'request.course.id'}.'.url'}) && |
if (ref($navmap)) { |
!(($ltiscope eq 'map') && (&Apache::lonnet::clutter($resurl) eq $ltiuri))) { |
@mapcrumbs = $navmap->recursed_crumbs($mapurl,$restitle); |
$navmap = Apache::lonnavmaps::navmap->new(); |
|
if (ref($navmap)) { |
|
@mapcrumbs = $navmap->recursed_crumbs($mapurl,$restitle); |
|
} |
|
} |
} |
} |
} |
} |
unless (($forcereg) && |
unless (($ltiscope eq 'map') || ($ltiscope eq 'resource')) { |
($env{'request.noversionuri'} eq '/adm/navmaps') && |
|
($mapurl eq $env{'course.'.$env{'request.course.id'}.'.url'})) { |
|
@crumbs = ({text => $crstype.' Contents', |
@crumbs = ({text => $crstype.' Contents', |
href => "Javascript:gopost('/adm/navmaps','')"}); |
href => "Javascript:gopost('/adm/navmaps','')"}); |
} |
} |
if ($mapurl ne $env{'course.'.$env{'request.course.id'}.'.url'}) { |
if ($mapurl ne $env{'course.'.$env{'request.course.id'}.'.url'}) { |
if (@mapcrumbs) { |
if (@mapcrumbs) { |
push(@crumbs,@mapcrumbs); |
push(@crumbs,@mapcrumbs); |
} else { |
} elsif (($ltiscope ne 'map') && ($ltiscope ne 'resource')) { |
push(@crumbs, {text => '...', |
push(@crumbs, {text => '...', |
no_mt => 1}); |
no_mt => 1}); |
} |
} |
} |
} |
|
|
unless ((@mapcrumbs) || (!$maptitle) || ($maptitle eq 'default.sequence') || |
unless ((@mapcrumbs) || (!$maptitle) || ($maptitle eq 'default.sequence') || |
($mapurl eq $env{'course.'.$env{'request.course.id'}.'.url'})) { |
($mapurl eq $env{'course.'.$env{'request.course.id'}.'.url'}) || |
|
($ltiscope eq 'resource')) { |
push @crumbs, {text => $maptitle, no_mt => 1, |
push @crumbs, {text => $maptitle, no_mt => 1, |
href => &Apache::lonnet::clutter($mapurl).'?navmap=1'}; |
href => &Apache::lonnet::clutter($mapurl).'?navmap=1'}; |
} |
} |
Line 915 sub innerregister {
|
Line 975 sub innerregister {
|
if ($env{'form.title'}) { |
if ($env{'form.title'}) { |
$title = $env{'form.title'}; |
$title = $env{'form.title'}; |
} |
} |
my $trail; |
my ($trail,$cnum,$cdom); |
|
if ($env{'form.folderpath'}) { |
|
$cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
|
$cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
|
&Apache::loncommon::validate_folderpath(1,'',$cnum,$cdom); |
|
} |
if ($env{'form.folderpath'}) { |
if ($env{'form.folderpath'}) { |
&prepare_functions($resurl,$forcereg,$group,undef,undef,1,$hostname); |
&prepare_functions($resurl,$forcereg,$group,undef,undef,1,$hostname); |
|
$title = &HTML::Entities::encode($title,'\'"<>&'); |
($trail) = |
($trail) = |
&Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1); |
&Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1,1); |
} else { |
} else { |
&Apache::lonhtmlcommon::add_breadcrumb( |
&Apache::lonhtmlcommon::add_breadcrumb( |
{text => "Supplemental $crstype Content", |
{text => "Supplemental $crstype Content", |
href => "javascript:gopost('/adm/supplemental','')"}); |
href => "javascript:gopost('/adm/supplemental','')"}); |
$title = &mt('View Resource'); |
$title = &HTML::Entities::encode(&mt('View Resource'),'\'"<>&'); |
($trail) = |
($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; |
return $trail; |
} elsif ($resurl =~ m{^\Q/uploaded$courseurl/portfolio/syllabus/}) { |
} elsif ($resurl =~ m{^\Q/uploaded$courseurl/portfolio/syllabus/}) { |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&prepare_functions('/public'.$courseurl."/syllabus", |
&prepare_functions('/public'.$courseurl."/syllabus", |
$forcereg,$group,undef,undef,1,$hostname); |
$forcereg,$group,undef,undef,1,$hostname); |
$title = &mt('Syllabus File'); |
$title = &HTML::Entities::encode(&mt('Syllabus File'),'\'"<>&'); |
my ($trail) = |
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; |
return $trail; |
} |
} |
unless ($env{'request.state'} eq 'construct') { |
unless ($env{'request.state'} eq 'construct') { |
Line 987 sub innerregister {
|
Line 1059 sub innerregister {
|
$perms{'mdc'} = &Apache::lonnet::allowed('mdc',$env{'request.course.id'}); |
$perms{'mdc'} = &Apache::lonnet::allowed('mdc',$env{'request.course.id'}); |
$perms{'cev'} = &Apache::lonnet::allowed('cev',$env{'request.course.id'}); |
$perms{'cev'} = &Apache::lonnet::allowed('cev',$env{'request.course.id'}); |
my @privs; |
my @privs; |
|
my $gradable_exttool; |
if ($env{'request.symb'} ne '') { |
if ($env{'request.symb'} ne '') { |
if ($env{'request.filename'}=~/$LONCAPA::assess_re/) { |
if ($env{'request.noversionuri'} =~ m{^/adm/$cdom/$cnum/(\d+)/ext\.tool$}) { |
|
if (&Apache::lonnet::EXT('resource.0.gradable') =~ /^yes$/i) { |
|
$gradable_exttool = 1; |
|
push(@privs,('mgr','vgr')); |
|
} |
|
} elsif ($env{'request.filename'}=~/$LONCAPA::assess_re/) { |
push(@privs,('mgr','vgr')); |
push(@privs,('mgr','vgr')); |
} |
} |
push(@privs,('opa','vpa')); |
push(@privs,('opa','vpa')); |
Line 1003 sub innerregister {
|
Line 1081 sub innerregister {
|
# |
# |
# Determine whether or not to show Grades and Submissions buttons |
# Determine whether or not to show Grades and Submissions buttons |
# |
# |
if ($env{'request.symb'} ne '' && |
if (($env{'request.symb'} ne '') && |
$env{'request.filename'}=~/$LONCAPA::assess_re/) { |
(($env{'request.filename'}=~/$LONCAPA::assess_re/) || ($gradable_exttool))) { |
if ($perms{'mgr'}) { |
if ($perms{'mgr'}) { |
$hwkadd.= &switch('','',7,2,'pgrd.png','Content Grades', |
$hwkadd.= &switch('','',7,2,'pgrd.png','Content Grades', |
'grades[_4]', |
'grades[_4]', |
Line 1089 ENDMENUITEMS
|
Line 1167 ENDMENUITEMS
|
# We are in a course and looking at a registered URL |
# We are in a course and looking at a registered URL |
# Should probably be in mydesk.tab |
# Should probably be in mydesk.tab |
# |
# |
|
$menuitems = "c&3&1"; |
$menuitems=(<<ENDMENUITEMS); |
if ($ltiscope eq 'resource') { |
c&3&1 |
# Suppress display of backward arrow for LTI Provider if scope is resource. |
s&2&1&back.png&$swtext{'back'}&&gopost('/adm/flip','back:'+currentURL)&Previous content resource&&1 |
# Suppress display of forward arrow for LTI Provider if scope is resource. |
s&2&3&forw.png&$swtext{'forw'}&&gopost('/adm/flip','forward:'+currentURL)&Next content resource&&3 |
} elsif ($ltiscope eq 'map') { |
|
# Suppress display of backward arrow for LTI Provider if scope is map and this is first resource. |
|
# Suppress display of forward arrow for LTI Provider if scope is map and this is the last resource. |
|
my $showforw = 1; |
|
my $showback = 1; |
|
my $navmap = Apache::lonnavmaps::navmap->new(); |
|
if (ref($navmap)) { |
|
my $mapres = $navmap->getResourceByUrl($ltiuri); |
|
if (ref($mapres)) { |
|
if ($navmap->isLastResource($mapres,$env{'request.symb'})) { |
|
$showforw = 0; |
|
} |
|
if ($navmap->isFirstResource($mapres,$env{'request.symb'})) { |
|
$showback = 0; |
|
} |
|
} |
|
} |
|
if ($showback) { |
|
$menuitems.=" |
|
s&2&1&back.png&&&gopost('/adm/flip','back:'+currentURL)&Previous content resource&&1"; |
|
} |
|
if ($showforw) { |
|
$menuitems.=" |
|
s&2&3&forw.png&&&gopost('/adm/flip','forward:'+currentURL)&Next content resource&&3"; |
|
} |
|
} else { |
|
$menuitems.=" |
|
s&2&1&back.png&&&gopost('/adm/flip','back:'+currentURL)&Previous content resource&&1 |
|
s&2&3&forw.png&&&gopost('/adm/flip','forward:'+currentURL)&Next content resource&&3"; |
|
} |
|
$menuitems .= (<<ENDMENUITEMS); |
c&6&3 |
c&6&3 |
c&8&1 |
|
c&8&2 |
c&8&2 |
s&8&3&prt.png&$swtext{'prt'}&printout[_1]&gopost('/adm/printout',currentURL)&Prepare a printable document |
s&8&3&prt.png&$swtext{'prt'}&printout[_1]&gopost('/adm/printout',currentURL)&Prepare a printable document |
ENDMENUITEMS |
ENDMENUITEMS |
Line 1193 ENDMENUITEMS
|
Line 1300 ENDMENUITEMS
|
} |
} |
} |
} |
} |
} |
|
my $linkprotout; |
|
if ($env{'request.deeplink.login'}) { |
|
$linkprotout = &linkprot_exit(); |
|
} |
if ($noremote) { |
if ($noremote) { |
my $addremote=0; |
my $addremote=0; |
foreach (@inlineremote) { if ($_ ne '') { $addremote=1; last;} } |
foreach (@inlineremote) { if ($_ ne '') { $addremote=1; last;} } |
Line 1218 ENDMENUITEMS
|
Line 1329 ENDMENUITEMS
|
if ($countdown) { |
if ($countdown) { |
&Apache::lonhtmlcommon::add_breadcrumb_tool('tools',$countdown); |
&Apache::lonhtmlcommon::add_breadcrumb_tool('tools',$countdown); |
} |
} |
|
if ($linkprotout) { |
|
&Apache::lonhtmlcommon::add_breadcrumb_tool('tools',$linkprotout); |
|
} |
} else { |
} else { |
my @tools = @inlineremote[93,91,81,82,83]; |
my @tools = @inlineremote[93,91,81,82,83]; |
if ($countdown) { |
if ($countdown) { |
unshift(@tools,$countdown); |
unshift(@tools,$countdown); |
} |
} |
|
if ($linkprotout) { |
|
unshift(@tools,$linkprotout); |
|
} |
&Apache::lonhtmlcommon::add_breadcrumb_tool( |
&Apache::lonhtmlcommon::add_breadcrumb_tool( |
'tools',@tools); |
'tools',@tools); |
|
|
Line 1236 ENDMENUITEMS
|
Line 1353 ENDMENUITEMS
|
} |
} |
&advtools_crumbs(@inlineremote); |
&advtools_crumbs(@inlineremote); |
} |
} |
|
} else { |
|
if ($linkprotout) { |
|
&Apache::lonhtmlcommon::add_breadcrumb_tool('tools',$linkprotout); |
|
} |
} |
} |
my ($topic_help,$topic_help_text); |
my ($topic_help,$topic_help_text); |
if ($is_const_dir == 2) { |
if ($is_const_dir == 2) { |
Line 1247 ENDMENUITEMS
|
Line 1368 ENDMENUITEMS
|
$topic_help_text = 'About WebDAV access'; |
$topic_help_text = 'About WebDAV access'; |
} |
} |
} |
} |
|
if (ref($showncrumbsref)) { |
|
$$showncrumbsref = 1; |
|
} |
return &Apache::lonhtmlcommon::scripttag('', 'start') |
return &Apache::lonhtmlcommon::scripttag('', 'start') |
. &Apache::lonhtmlcommon::breadcrumbs(undef,undef,0,'','','','',$topic_help,$topic_help_text) |
. &Apache::lonhtmlcommon::breadcrumbs(undef,undef,0,'','','','',$topic_help,$topic_help_text) |
. &Apache::lonhtmlcommon::scripttag('', 'end'); |
. &Apache::lonhtmlcommon::scripttag('', 'end'); |
Line 1581 sub get_editbutton {
|
Line 1705 sub get_editbutton {
|
if ($env{'form.folderpath'}) { |
if ($env{'form.folderpath'}) { |
$suppanchor = $env{'form.anchor'}; |
$suppanchor = $env{'form.anchor'}; |
} |
} |
|
my $shownsymb; |
|
if ($env{'request.symb'}) { |
|
$shownsymb = &Apache::lonenc::check_encrypt($env{'request.symb'}); |
|
} |
$jscall = &Apache::lonhtmlcommon::jump_to_editres($cfile,$home,$switchserver, |
$jscall = &Apache::lonhtmlcommon::jump_to_editres($cfile,$home,$switchserver, |
$forceedit,$forcereg,$env{'request.symb'}, |
$forceedit,$forcereg,$env{'request.symb'},$shownsymb, |
&escape($env{'form.folderpath'}), |
&escape($env{'form.folderpath'}), |
&escape($env{'form.title'}),$hostname, |
&escape($env{'form.title'}),$hostname, |
$env{'form.idx'},&escape($env{'form.suppurl'}), |
$env{'form.idx'},&escape($env{'form.suppurl'}), |
Line 1943 sub switch {
|
Line 2071 sub switch {
|
unless ($env{'request.state'} eq 'construct') { |
unless ($env{'request.state'} eq 'construct') { |
push(@tools,63); |
push(@tools,63); |
} |
} |
if (($env{'environment.icons'} eq 'iconsonly') && |
if ((($env{'environment.icons'} eq 'iconsonly') || |
|
($env{'environment.icons'} eq '') && ($env{'request.lti.login'})) && |
(grep(/^$idx$/,@tools))) { |
(grep(/^$idx$/,@tools))) { |
$inlineremote[$idx] = |
$inlineremote[$idx] = |
'<a title="'.$desc.'" class="LC_menubuttons_link" href="javascript:'.$act.';">'.$pic.'</a>'; |
'<a title="'.$desc.'" class="LC_menubuttons_link" href="javascript:'.$act.';">'.$pic.'</a>'; |
Line 2563 sub utilityfunctions {
|
Line 2692 sub utilityfunctions {
|
|
|
my $countdown = &countdown_toggle_js(); |
my $countdown = &countdown_toggle_js(); |
|
|
my $deeplinktarget; |
my ($ltitarget,$deeplinktarget); |
|
if ($env{'request.lti.login'}) { |
|
$ltitarget = $env{'request.lti.target'}; |
|
} |
if ($env{'request.deeplink.login'}) { |
if ($env{'request.deeplink.login'}) { |
$deeplinktarget = $env{'request.deeplink.target'}; |
$deeplinktarget = $env{'request.deeplink.target'}; |
} |
} |
Line 2668 function golist(url) {
|
Line 2800 function golist(url) {
|
currentURL = null; |
currentURL = null; |
currentSymb= null; |
currentSymb= null; |
var lcHostname = setLCHost(); |
var lcHostname = setLCHost(); |
|
var ltitarget = '$ltitarget'; |
var deeplinktarget = '$deeplinktarget'; |
var deeplinktarget = '$deeplinktarget'; |
if (deeplinktarget == '_self') { |
if ((ltitarget == 'iframe') || (deeplinktarget == '_self')) { |
document.location.href=lcHostname+url; |
document.location.href=lcHostname+url; |
} else { |
} else { |
top.location.href=lcHostname+url; |
top.location.href=lcHostname+url; |
Line 2731 function open_source() {
|
Line 2864 function open_source() {
|
'height=500,width=600,resizable=yes,location=no,menubar=no,toolbar=no,scrollbars=yes'); |
'height=500,width=600,resizable=yes,location=no,menubar=no,toolbar=no,scrollbars=yes'); |
} |
} |
|
|
|
function open_aboutLC() { |
|
var isMobile = "$env{'browser.mobile'}"; |
|
var url = '/adm/about.html'; |
|
if (isMobile == 1) { |
|
openMyModal(url,600,400,'yes'); |
|
} else { |
|
window.open(url,"aboutLONCAPA","height=400,width=600,scrollbars=1,resizable=1,menubar=0,location=1"); |
|
} |
|
return; |
|
} |
|
|
(function (\$) { |
(function (\$) { |
\$(document).ready(function () { |
\$(document).ready(function () { |
\$.single=function(a){return function(b){a[0]=b;return a}}(\$([1])); |
\$.single=function(a){return function(b){a[0]=b;return a}}(\$([1])); |
Line 2774 sub constspaceform {
|
Line 2918 sub constspaceform {
|
$target = ' target="_parent"'; |
$target = ' target="_parent"'; |
$printtarget = ' target="_parent"'; |
$printtarget = ' target="_parent"'; |
} else { |
} else { |
unless (($env{'request.deeplink.login'}) && ($env{'request.deeplink.target'} eq '_self')) { |
unless ((($env{'request.lti.login'}) && ($env{'request.lti.target'} eq 'iframe')) || |
|
(($env{'request.deeplink.login'}) && ($env{'request.deeplink.target'} eq '_self'))) { |
$target = ' target="_top"'; |
$target = ' target="_top"'; |
$printtarget = ' target="_top"'; |
$printtarget = ' target="_top"'; |
} |
} |
Line 3351 sub required_privs {
|
Line 3496 sub required_privs {
|
|
|
sub countdown_timer { |
sub countdown_timer { |
if (($env{'request.course.id'}) && ($env{'request.symb'} ne '') && |
if (($env{'request.course.id'}) && ($env{'request.symb'} ne '') && |
($env{'request.filename'}=~/$LONCAPA::assess_re/)) { |
(($env{'request.filename'}=~/$LONCAPA::assess_re/) || |
|
(($env{'request.symb'} =~ /ext\.tool$/) && |
|
(&Apache::lonnet::EXT('resource.0.gradable',$env{'request.symb'}) =~ /^yes$/i)))) { |
my ($type,$hastimeleft,$slothastime); |
my ($type,$hastimeleft,$slothastime); |
my $now = time; |
my $now = time; |
if ($env{'request.filename'} =~ /\.task$/) { |
if ($env{'request.filename'} =~ /\.task$/) { |
$type = 'Task'; |
$type = 'Task'; |
|
} elsif ($env{'request.symb'} =~ /ext\.tool$/) { |
|
$type = 'tool'; |
} else { |
} else { |
$type = 'problem'; |
$type = 'problem'; |
} |
} |
my ($status,$accessmsg,$slot_name,$slot) = |
my ($status,$accessmsg,$slot_name,$slot); |
&Apache::lonhomework::check_slot_access('0',$type); |
if ($type eq 'tool') { |
|
($status,$accessmsg,$slot_name,$slot) = |
|
&Apache::lonhomework::check_slot_access('0',$type,$env{'request.symb'},['0']); |
|
} else { |
|
($status,$accessmsg,$slot_name,$slot) = |
|
&Apache::lonhomework::check_slot_access('0',$type); |
|
} |
if ($slot_name ne '') { |
if ($slot_name ne '') { |
if (ref($slot) eq 'HASH') { |
if (ref($slot) eq 'HASH') { |
if (($slot->{'starttime'} < $now) && |
if (($slot->{'starttime'} < $now) && |
Line 3428 END
|
Line 3583 END
|
} |
} |
} |
} |
return; |
return; |
|
} |
|
|
|
sub linkprot_exit { |
|
if (($env{'request.course.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 ($show,$text) = split(/:/,$exit); |
|
unless ($show eq 'no') { |
|
my $height = 250; |
|
my $width = 300; |
|
my $exitbuttontext; |
|
if ($text eq '') { |
|
$exitbuttontext = &mt('Exit Tool'); |
|
} else { |
|
$exitbuttontext = $text; |
|
} |
|
return <<END; |
|
<form method="post" name="LCexitButton" action="/adm/linkexit"> |
|
<input type="hidden" name="LC_deeplink_exit" value="" /> |
|
<button id="LC_exit-confirm-opener" type="button">$exitbuttontext</button> |
|
</form> |
|
|
|
<div id="LC_exit-confirm" title="$lt{'title'}"> |
|
<p>$lt{'okdone'} $lt{'cancel'}</p> |
|
</div> |
|
|
|
<script type="text/javascript"> |
|
// <![CDATA[ |
|
\$( "#LC_exit-confirm" ).dialog({ autoOpen: false }); |
|
\$( "#LC_exit-confirm-opener" ).click(function() { |
|
\$( "#LC_exit-confirm" ).dialog( "open" ); |
|
\$( "#LC_exit-confirm" ).dialog({ |
|
resizable: false, |
|
height: $height, |
|
width: $width, |
|
modal: true, |
|
buttons: [ |
|
{ |
|
text: "$lt{'ok'}", |
|
click: function() { |
|
\$( this ).dialog( "close" ); |
|
\$( '[name="LC_deeplink_exit"]' )[0].value = 'true'; |
|
\$( '[name="LCexitButton"]' )[0].submit(); |
|
}, |
|
}, |
|
{ |
|
text: "$lt{'exit'}", |
|
click: function() { |
|
\$( this ).dialog( "close" ); |
|
}, |
|
}, |
|
], |
|
}); |
|
}); |
|
// ]]> |
|
</script> |
|
|
|
END |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
return; |
} |
} |
|
|
# ================================================================ Main Program |
# ================================================================ Main Program |