version 1.509.2.5.2.1, 2017/06/13 16:20:43
|
version 1.523, 2016/09/01 19:31:05
|
Line 2
|
Line 2
|
# Navigate Maps Handler |
# Navigate Maps Handler |
# |
# |
# $Id$ |
# $Id$ |
|
|
# |
# |
# Copyright Michigan State University Board of Trustees |
# Copyright Michigan State University Board of Trustees |
# |
# |
Line 996 sub render_resource {
|
Line 995 sub render_resource {
|
$linkopen = ""; |
$linkopen = ""; |
$linkclose = ""; |
$linkclose = ""; |
} |
} |
if (((&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) || |
if ((&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) && |
(&Apache::lonnet::allowed('cev',$env{'request.course.id'}))) && |
|
($resource->symb=~/\_\_\_[^\_]+\_\_\_uploaded/)) { |
($resource->symb=~/\_\_\_[^\_]+\_\_\_uploaded/)) { |
if (!$params->{'map_no_edit_link'}) { |
if (!$params->{'map_no_edit_link'}) { |
my $icon = &Apache::loncommon::lonhttpdurl('/res/adm/pages').'/editmap.png'; |
my $icon = &Apache::loncommon::lonhttpdurl('/res/adm/pages').'/editmap.png'; |
Line 1542 END
|
Line 1540 END
|
$result.='</form>'; |
$result.='</form>'; |
} |
} |
if (($args->{'caller'} eq 'navmapsdisplay') && |
if (($args->{'caller'} eq 'navmapsdisplay') && |
((&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) || |
(&Apache::lonnet::allowed('mdc',$env{'request.course.id'}))) { |
(&Apache::lonnet::allowed('cev',$env{'request.course.id'})))) { |
|
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
if ($env{'course.'.$env{'request.course.id'}.'.url'} eq |
if ($env{'course.'.$env{'request.course.id'}.'.url'} eq |
Line 1593 END
|
Line 1590 END
|
# We also do this even if $args->{'suppressEmptySequences'} |
# We also do this even if $args->{'suppressEmptySequences'} |
# is not true, so we can hide empty sequences for which the |
# is not true, so we can hide empty sequences for which the |
# hiddenresource parameter is set to yes (at map level), or |
# hiddenresource parameter is set to yes (at map level), or |
# mark as hidden for users who have $userCanSeeHidden. |
# mark as hidden for users who have $userCanSeeHidden. |
# Use DFS for speed, since structure actually doesn't matter, |
# Use DFS for speed, since structure actually doesn't matter, |
# except what map has what resources. |
# except what map has what resources. |
|
|
Line 1601 END
|
Line 1598 END
|
$it->{FIRST_RESOURCE}, |
$it->{FIRST_RESOURCE}, |
$it->{FINISH_RESOURCE}, |
$it->{FINISH_RESOURCE}, |
{}, undef, 1); |
{}, undef, 1); |
|
|
my $depth = 0; |
my $depth = 0; |
$dfsit->next(); |
$dfsit->next(); |
my $curRes = $dfsit->next(); |
my $curRes = $dfsit->next(); |
Line 1609 END
|
Line 1605 END
|
if ($curRes == $dfsit->BEGIN_MAP()) { $depth++; } |
if ($curRes == $dfsit->BEGIN_MAP()) { $depth++; } |
if ($curRes == $dfsit->END_MAP()) { $depth--; } |
if ($curRes == $dfsit->END_MAP()) { $depth--; } |
|
|
if (ref($curRes)) { |
if (ref($curRes)) { |
# Parallel pre-processing: Do sequences have non-filtered-out children? |
# Parallel pre-processing: Do sequences have non-filtered-out children? |
if ($curRes->is_map()) { |
if ($curRes->is_map()) { |
$curRes->{DATA}->{HAS_VISIBLE_CHILDREN} = 0; |
$curRes->{DATA}->{HAS_VISIBLE_CHILDREN} = 0; |
Line 1727 END
|
Line 1723 END
|
next; |
next; |
} else { |
} else { |
my $mapname = &Apache::lonnet::declutter($curRes->src()); |
my $mapname = &Apache::lonnet::declutter($curRes->src()); |
$mapname = &Apache::lonnet::deversion($mapname); |
$mapname = &Apache::lonnet::deversion($mapname); |
if (lc($navmap->get_mapparam(undef,$mapname,"0.hiddenresource")) eq 'yes') { |
if (lc($navmap->get_mapparam(undef,$mapname,"0.hiddenresource")) eq 'yes') { |
if ($userCanSeeHidden) { |
if ($userCanSeeHidden) { |
$args->{'mapHidden'} = 1; |
$args->{'mapHidden'} = 1; |
Line 2144 sub change_user {
|
Line 2140 sub change_user {
|
|
|
|
|
|
|
# Now clear the parm cache and reconstruct the parm hash fromt he big_hash |
# Now clear the parm cache and reconstruct the parm hash from the big_hash |
# param.xxxx keys. |
# param.xxxx keys. |
|
|
$self->{PARM_CACHE} = {}; |
$self->{PARM_CACHE} = {}; |
Line 2609 sub parmval {
|
Line 2605 sub parmval {
|
return $self->{PARM_CACHE}->{$hashkey}; |
return $self->{PARM_CACHE}->{$hashkey}; |
} |
} |
} |
} |
|
|
my $result = $self->parmval_real($what, $symb, $recurse); |
my $result = $self->parmval_real($what, $symb, $recurse); |
$self->{PARM_CACHE}->{$hashkey} = $result; |
$self->{PARM_CACHE}->{$hashkey} = $result; |
if (wantarray) { |
if (wantarray) { |
Line 2642 sub parmval_real {
|
Line 2639 sub parmval_real {
|
|
|
my ($mapname,$id,$fn)=&Apache::lonnet::decode_symb($symb); |
my ($mapname,$id,$fn)=&Apache::lonnet::decode_symb($symb); |
$mapname = &Apache::lonnet::deversion($mapname); |
$mapname = &Apache::lonnet::deversion($mapname); |
|
my ($recursed,@recurseup); |
|
|
# ----------------------------------------------------- Cascading lookup scheme |
# ----------------------------------------------------- Cascading lookup scheme |
my $rwhat=$what; |
my $rwhat=$what; |
$what=~s/^parameter\_//; |
$what=~s/^parameter\_//; |
$what=~s/\_/\./; |
$what=~s/\_/\./; |
|
|
my $symbparm=$symb.'.'.$what; |
my $symbparm=$symb.'.'.$what; |
|
my $recurseparm=$mapname.'___(rec).'.$what; |
my $mapparm=$mapname.'___(all).'.$what; |
my $mapparm=$mapname.'___(all).'.$what; |
my $usercourseprefix=$cid; |
my $usercourseprefix=$cid; |
|
|
|
|
|
|
my $grplevel=$usercourseprefix.'.['.$cgroup.'].'.$what; |
my $grplevel=$usercourseprefix.'.['.$cgroup.'].'.$what; |
my $grplevelr=$usercourseprefix.'.['.$cgroup.'].'.$symbparm; |
my $grplevelr=$usercourseprefix.'.['.$cgroup.'].'.$symbparm; |
|
my $grpleveli=$usercourseprefix.'.['.$cgroup.'].'.$recurseparm; |
my $grplevelm=$usercourseprefix.'.['.$cgroup.'].'.$mapparm; |
my $grplevelm=$usercourseprefix.'.['.$cgroup.'].'.$mapparm; |
|
|
|
|
my $seclevel= $usercourseprefix.'.['.$csec.'].'.$what; |
my $seclevel= $usercourseprefix.'.['.$csec.'].'.$what; |
my $seclevelr=$usercourseprefix.'.['.$csec.'].'.$symbparm; |
my $seclevelr=$usercourseprefix.'.['.$csec.'].'.$symbparm; |
|
my $secleveli=$usercourseprefix.'.['.$csec.'].'.$recurseparm; |
my $seclevelm=$usercourseprefix.'.['.$csec.'].'.$mapparm; |
my $seclevelm=$usercourseprefix.'.['.$csec.'].'.$mapparm; |
|
|
|
|
my $courselevel= $usercourseprefix.'.'.$what; |
my $courselevel= $usercourseprefix.'.'.$what; |
my $courselevelr=$usercourseprefix.'.'.$symbparm; |
my $courselevelr=$usercourseprefix.'.'.$symbparm; |
|
my $courseleveli=$usercourseprefix.'.'.$recurseparm; |
my $courselevelm=$usercourseprefix.'.'.$mapparm; |
my $courselevelm=$usercourseprefix.'.'.$mapparm; |
|
|
|
|
Line 2676 sub parmval_real {
|
Line 2679 sub parmval_real {
|
if ($uname and defined($useropt)) { |
if ($uname and defined($useropt)) { |
if (defined($$useropt{$courselevelr})) { return [$$useropt{$courselevelr},'resource']; } |
if (defined($$useropt{$courselevelr})) { return [$$useropt{$courselevelr},'resource']; } |
if (defined($$useropt{$courselevelm})) { return [$$useropt{$courselevelm},'map']; } |
if (defined($$useropt{$courselevelm})) { return [$$useropt{$courselevelm},'map']; } |
|
if (defined($$useropt{$courseleveli})) { return [$$useropt{$courseleveli},'map']; } |
|
unless ($recursed) { |
|
@recurseup = $self->recurseup_maps($mapname); |
|
$recursed = 1; |
|
} |
|
foreach my $item (@recurseup) { |
|
my $norecursechk=$usercourseprefix.'.'.$item.'___(all).'.$what; |
|
last if (defined($$useropt{$norecursechk})); |
|
my $recursechk=$usercourseprefix.'.'.$item.'___(rec).'.$what; |
|
if (defined($$useropt{$recursechk})) { return [$$useropt{$recursechk},'map']; } |
|
} |
if (defined($$useropt{$courselevel})) { return [$$useropt{$courselevel},'course']; } |
if (defined($$useropt{$courselevel})) { return [$$useropt{$courselevel},'course']; } |
} |
} |
|
|
Line 2683 sub parmval_real {
|
Line 2697 sub parmval_real {
|
if ($cgroup ne '' and defined($courseopt)) { |
if ($cgroup ne '' and defined($courseopt)) { |
if (defined($$courseopt{$grplevelr})) { return [$$courseopt{$grplevelr},'resource']; } |
if (defined($$courseopt{$grplevelr})) { return [$$courseopt{$grplevelr},'resource']; } |
if (defined($$courseopt{$grplevelm})) { return [$$courseopt{$grplevelm},'map']; } |
if (defined($$courseopt{$grplevelm})) { return [$$courseopt{$grplevelm},'map']; } |
|
if (defined($$courseopt{$grpleveli})) { return [$$courseopt{$grpleveli},'map']; } |
|
unless ($recursed) { |
|
@recurseup = $self->recurseup_maps($mapname); |
|
$recursed = 1; |
|
} |
|
foreach my $item (@recurseup) { |
|
my $norecursechk=$usercourseprefix.'.['.$cgroup.'].'.$item.'___(all).'.$what; |
|
last if (defined($$courseopt{$norecursechk})); |
|
my $recursechk=$usercourseprefix.'.['.$cgroup.'].'.$item.'___(rec).'.$what; |
|
if (defined($$courseopt{$recursechk})) { return [$$courseopt{$recursechk},'map']; } |
|
} |
if (defined($$courseopt{$grplevel})) { return [$$courseopt{$grplevel},'course']; } |
if (defined($$courseopt{$grplevel})) { return [$$courseopt{$grplevel},'course']; } |
} |
} |
|
|
if ($csec and defined($courseopt)) { |
if ($csec ne '' and defined($courseopt)) { |
if (defined($$courseopt{$seclevelr})) { return [$$courseopt{$seclevelr},'resource']; } |
if (defined($$courseopt{$seclevelr})) { return [$$courseopt{$seclevelr},'resource']; } |
if (defined($$courseopt{$seclevelm})) { return [$$courseopt{$seclevelm},'map']; } |
if (defined($$courseopt{$seclevelm})) { return [$$courseopt{$seclevelm},'map']; } |
|
if (defined($$courseopt{$secleveli})) { return [$$courseopt{$secleveli},'map']; } |
|
unless ($recursed) { |
|
@recurseup = $self->recurseup_maps($mapname); |
|
$recursed = 1; |
|
} |
|
foreach my $item (@recurseup) { |
|
my $norecursechk=$usercourseprefix.'.['.$csec.'].'.$item.'___(all).'.$what; |
|
last if (defined($$courseopt{$norecursechk})); |
|
my $recursechk=$usercourseprefix.'.['.$csec.'].'.$item.'___(rec).'.$what; |
|
if (defined($$courseopt{$recursechk})) { return [$$courseopt{$recursechk},'map']; } |
|
} |
if (defined($$courseopt{$seclevel})) { return [$$courseopt{$seclevel},'course']; } |
if (defined($$courseopt{$seclevel})) { return [$$courseopt{$seclevel},'course']; } |
} |
} |
|
|
Line 2712 sub parmval_real {
|
Line 2748 sub parmval_real {
|
# --------------------------------------------------- fifth, check more course |
# --------------------------------------------------- fifth, check more course |
if (defined($courseopt)) { |
if (defined($courseopt)) { |
if (defined($$courseopt{$courselevelm})) { return [$$courseopt{$courselevelm},'map']; } |
if (defined($$courseopt{$courselevelm})) { return [$$courseopt{$courselevelm},'map']; } |
|
if (defined($$courseopt{$courseleveli})) { return [$$courseopt{$courseleveli},'map']; } |
|
unless ($recursed) { |
|
@recurseup = $self->recurseup_maps($mapname); |
|
$recursed = 1; |
|
} |
|
foreach my $item (@recurseup) { |
|
my $norecursechk=$usercourseprefix.'.'.$item.'___(all).'.$what; |
|
last if (defined($$courseopt{$norecursechk})); |
|
my $recursechk=$usercourseprefix.'.'.$item.'___(rec).'.$what; |
|
if (defined($$courseopt{$recursechk})) { |
|
return [$$courseopt{$recursechk},'map']; |
|
} |
|
} |
if (defined($$courseopt{$courselevel})) { |
if (defined($$courseopt{$courselevel})) { |
my $ret = [$$courseopt{$courselevel},'course']; |
my $ret = [$$courseopt{$courselevel},'course']; |
return $ret; |
return $ret; |
Line 2763 sub map_printdates {
|
Line 2812 sub map_printdates {
|
|
|
|
|
my $opendate = $self->get_mapparam($res->symb(),'',"$part.printstartdate"); |
my $opendate = $self->get_mapparam($res->symb(),'',"$part.printstartdate"); |
my $closedate= $self->get_mapparam($res->symb(),'', "$part.printenddate"); |
my $closedate= $self->get_mapparam($res->symb(),'',"$part.printenddate"); |
|
|
|
|
return ($opendate, $closedate); |
return ($opendate, $closedate); |
Line 2793 sub get_mapparam {
|
Line 2842 sub get_mapparam {
|
my $result=''; |
my $result=''; |
my ($recursed,@recurseup); |
my ($recursed,@recurseup); |
|
|
|
|
# Figure out which map we are in. |
# Figure out which map we are in. |
|
|
if ($symb && !$mapname) { |
if ($symb && !$mapname) { |
Line 2801 sub get_mapparam {
|
Line 2851 sub get_mapparam {
|
$mapname = &Apache::lonnet::deversion($mapname); |
$mapname = &Apache::lonnet::deversion($mapname); |
} |
} |
|
|
|
|
my $rwhat=$what; |
my $rwhat=$what; |
$what=~s/^parameter\_//; |
$what=~s/^parameter\_//; |
$what=~s/\_/\./; |
$what=~s/\_/\./; |
|
|
# Build the hash keys for the lookup: |
# Build the hash keys for the lookup: |
|
|
my $symbparm=$symb.'.'.$what; |
|
my $mapparm=$mapname.'___(all).'.$what; |
my $mapparm=$mapname.'___(all).'.$what; |
|
my $recurseparm=$mapname.'___(rec).'.$what; |
my $usercourseprefix=$cid; |
my $usercourseprefix=$cid; |
|
|
|
|
my $grplevel = "$usercourseprefix.[$cgroup].$mapparm"; |
my $grplevelm = "$usercourseprefix.[$cgroup].$mapparm"; |
my $seclevel = "$usercourseprefix.[$csec].$mapparm"; |
my $seclevelm = "$usercourseprefix.[$csec].$mapparm"; |
my $courselevel = "$usercourseprefix.$mapparm"; |
my $courselevelm = "$usercourseprefix.$mapparm"; |
|
|
|
my $grpleveli = "$usercourseprefix.[$cgroup].$recurseparm"; |
|
my $secleveli = "$usercourseprefix.[$csec].$recurseparm"; |
|
my $courseleveli = "$usercourseprefix.$recurseparm"; |
|
|
# Get handy references to the hashes we need in $self: |
# Get handy references to the hashes we need in $self: |
|
|
Line 2828 sub get_mapparam {
|
Line 2882 sub get_mapparam {
|
|
|
|
|
if ($uname and defined($useropt)) { |
if ($uname and defined($useropt)) { |
if (defined($$useropt{$courselevel})) { |
if (defined($$useropt{$courselevelm})) { |
return $$useropt{$courselevel}; |
return $$useropt{$courselevelm}; |
} |
} |
if ($what =~ /\.(encrypturl|hiddenresource)$/) { |
if (defined($$useropt{$courseleveli})) { |
unless ($recursed) { |
return $$useropt{$courseleveli}; |
@recurseup = $self->recurseup_maps($mapname); |
} |
$recursed = 1; |
unless ($recursed) { |
} |
@recurseup = $self->recurseup_maps($mapname); |
foreach my $item (@recurseup) { |
$recursed = 1; |
my $norecursechk=$usercourseprefix.'.'.$item.'___(all).'.$what; |
} |
if (defined($$useropt{$norecursechk})) { |
foreach my $item (@recurseup) { |
if ($what =~ /\.(encrypturl|hiddenresource)$/) { |
my $norecursechk=$usercourseprefix.'.'.$item.'___(all).'.$what; |
return $$useropt{$norecursechk}; |
last if (defined($$useropt{$norecursechk})); |
} |
my $recursechk=$usercourseprefix.'.'.$item.'___(rec).'.$what; |
} |
if (defined($$useropt{$recursechk})) { |
|
return $$useropt{$recursechk}; |
} |
} |
} |
} |
} |
} |
Line 2852 sub get_mapparam {
|
Line 2907 sub get_mapparam {
|
|
|
|
|
if ($cgroup ne '' and defined ($courseopt)) { |
if ($cgroup ne '' and defined ($courseopt)) { |
if (defined($$courseopt{$grplevel})) { |
if (defined($$courseopt{$grplevelm})) { |
return $$courseopt{$grplevel}; |
return $$courseopt{$grplevelm}; |
} |
} |
if ($what =~ /\.(encrypturl|hiddenresource)$/) { |
if (defined($$courseopt{$grpleveli})) { |
unless ($recursed) { |
return $$courseopt{$grpleveli}; |
@recurseup = $self->recurseup_maps($mapname); |
} |
$recursed = 1; |
unless ($recursed) { |
} |
@recurseup = $self->recurseup_maps($mapname); |
foreach my $item (@recurseup) { |
$recursed = 1; |
my $norecursechk=$usercourseprefix.'.['.$cgroup.'].'.$item.'___(all).'.$what; |
} |
if (defined($$courseopt{$norecursechk})) { |
foreach my $item (@recurseup) { |
if ($what =~ /\.(encrypturl|hiddenresource)$/) { |
my $norecursechk=$usercourseprefix.'.['.$cgroup.'].'.$item.'___(all).'.$what; |
return $$courseopt{$norecursechk}; |
last if (defined($$courseopt{$norecursechk})); |
} |
my $recursechk=$usercourseprefix.'.['.$cgroup.'].'.$item.'___(rec).'.$what; |
} |
if (defined($$courseopt{$recursechk})) { |
|
return $$courseopt{$recursechk}; |
} |
} |
} |
} |
} |
} |
Line 2874 sub get_mapparam {
|
Line 2930 sub get_mapparam {
|
# Check course -- section |
# Check course -- section |
|
|
|
|
|
if ($csec ne '' and defined($courseopt)) { |
|
if (defined($$courseopt{$seclevelm})) { |
|
return $$courseopt{$seclevelm}; |
if ($csec and defined($courseopt)) { |
|
if (defined($$courseopt{$seclevel})) { |
|
return $$courseopt{$seclevel}; |
|
} |
} |
if ($what =~ /\.(encrypturl|hiddenresource)$/) { |
if (defined($$courseopt{$secleveli})) { |
unless ($recursed) { |
return $$courseopt{$secleveli}; |
@recurseup = $self->recurseup_maps($mapname); |
} |
$recursed = 1; |
unless ($recursed) { |
} |
@recurseup = $self->recurseup_maps($mapname); |
foreach my $item (@recurseup) { |
$recursed = 1; |
my $norecursechk=$usercourseprefix.'.['.$csec.'].'.$item.'___(all).'.$what; |
} |
if (defined($$courseopt{$norecursechk})) { |
foreach my $item (@recurseup) { |
if ($what =~ /\.(encrypturl|hiddenresource)$/) { |
my $norecursechk=$usercourseprefix.'.['.$csec.'].'.$item.'___(all).'.$what; |
return $$courseopt{$norecursechk}; |
last if (defined($$courseopt{$norecursechk})); |
} |
my $recursechk=$usercourseprefix.'.['.$csec.'].'.$item.'___(rec).'.$what; |
} |
if (defined($$courseopt{$recursechk})) { |
|
return $$courseopt{$recursechk}; |
} |
} |
} |
} |
} |
} |
Line 2902 sub get_mapparam {
|
Line 2956 sub get_mapparam {
|
my $symbparm=$symb.'.'.$what; |
my $symbparm=$symb.'.'.$what; |
my $thisparm = $$parmhash{$symbparm}; |
my $thisparm = $$parmhash{$symbparm}; |
if (defined($thisparm)) { |
if (defined($thisparm)) { |
return $thisparm; |
return $thisparm; |
} |
} |
} |
} |
|
|
Line 2910 sub get_mapparam {
|
Line 2964 sub get_mapparam {
|
# Additional course parameters: |
# Additional course parameters: |
|
|
if (defined($courseopt)) { |
if (defined($courseopt)) { |
if (defined($$courseopt{$courselevel})) { |
if (defined($$courseopt{$courselevelm})) { |
return $$courseopt{$courselevel}; |
return $$courseopt{$courselevelm}; |
} |
} |
if ($what =~ /\.(encrypturl|hiddenresource)$/) { |
unless ($recursed) { |
unless ($recursed) { |
@recurseup = $self->recurseup_maps($mapname); |
@recurseup = $self->recurseup_maps($mapname); |
$recursed = 1; |
$recursed = 1; |
} |
} |
if (@recurseup) { |
foreach my $item (@recurseup) { |
foreach my $item (@recurseup) { |
my $norecursechk=$usercourseprefix.'.'.$item.'___(all).'.$what; |
my $norecursechk=$usercourseprefix.'.'.$item.'___(all).'.$what; |
if (defined($$courseopt{$norecursechk})) { |
last if (defined($$courseopt{$norecursechk})); |
if ($what =~ /\.(encrypturl|hiddenresource)$/) { |
my $recursechk=$usercourseprefix.'.'.$item.'___(rec).'.$what; |
return $$courseopt{$norecursechk}; |
if (defined($$courseopt{$recursechk})) { |
} |
return $$courseopt{$recursechk}; |
} |
} |
} |
} |
} |
} |
} |
} |
return undef; # Unefined if we got here. |
return undef; # Undefined if we got here. |
} |
} |
|
|
sub course_printdates { |
sub course_printdates { |
Line 2970 sub getcourseparam {
|
Line 3024 sub getcourseparam {
|
$what=~s/^parameter\_//; |
$what=~s/^parameter\_//; |
$what=~s/\_/\./; |
$what=~s/\_/\./; |
|
|
|
|
my $symbparm = $symb . '.' . $what; |
|
my $mapparm=$mapname.'___(all).'.$what; |
|
|
|
# Local refs to the hashes we're going to look at: |
# Local refs to the hashes we're going to look at: |
|
|
my $useropt = $self->{USER_OPT}; |
my $useropt = $self->{USER_OPT}; |
Line 3976 sub new {
|
Line 4026 sub new {
|
|
|
# This is a speed optimization, to avoid calling symb() too often. |
# This is a speed optimization, to avoid calling symb() too often. |
$self->{SYMB} = $self->symb(); |
$self->{SYMB} = $self->symb(); |
|
|
return $self; |
return $self; |
} |
} |
|
|
Line 4102 sub enclosing_map_src {
|
Line 4152 sub enclosing_map_src {
|
} |
} |
sub symb { |
sub symb { |
my $self=shift; |
my $self=shift; |
if (defined($self->{SYMB})) { return $self->{SYMB}; } |
if (defined $self->{SYMB}) { return $self->{SYMB}; } |
(my $first, my $second) = $self->{ID} =~ /(\d+).(\d+)/; |
(my $first, my $second) = $self->{ID} =~ /(\d+).(\d+)/; |
my $symbSrc = &Apache::lonnet::declutter($self->src()); |
my $symbSrc = &Apache::lonnet::declutter($self->src()); |
my $symb = &Apache::lonnet::declutter($self->navHash('map_id_'.$first)) |
my $symb = &Apache::lonnet::declutter($self->navHash('map_id_'.$first)) |
Line 4635 sub duedate {
|
Line 4685 sub duedate {
|
if ($interval[0] =~ /^(\d+)/) { |
if ($interval[0] =~ /^(\d+)/) { |
my $timelimit = $1; |
my $timelimit = $1; |
my $first_access=&Apache::lonnet::get_first_access($interval[1], |
my $first_access=&Apache::lonnet::get_first_access($interval[1], |
$self->{SYMB}); |
$self->{SYMB}); |
if (defined($first_access)) { |
if (defined($first_access)) { |
my $interval = $first_access+$timelimit; |
my $interval = $first_access+$timelimit; |
$date = (!$due_date || $interval < $due_date) ? $interval |
$date = (!$due_date || $interval < $due_date) ? $interval |
Line 5589 sub check_for_slot {
|
Line 5639 sub check_for_slot {
|
my $reservable = &Apache::lonnet::get_reservable_slots($cnum,$cdom,$env{'user.name'}, |
my $reservable = &Apache::lonnet::get_reservable_slots($cnum,$cdom,$env{'user.name'}, |
$env{'user.domain'}); |
$env{'user.domain'}); |
if (ref($reservable) eq 'HASH') { |
if (ref($reservable) eq 'HASH') { |
|
my ($map) = &Apache::lonnet::decode_symb($symb); |
if ((ref($reservable->{'now_order'}) eq 'ARRAY') && (ref($reservable->{'now'}) eq 'HASH')) { |
if ((ref($reservable->{'now_order'}) eq 'ARRAY') && (ref($reservable->{'now'}) eq 'HASH')) { |
foreach my $slot (reverse (@{$reservable->{'now_order'}})) { |
foreach my $slot (reverse (@{$reservable->{'now_order'}})) { |
my $canuse; |
my $canuse; |
if (($reservable->{'now'}{$slot}{'symb'} eq '') || |
if ($reservable->{'now'}{$slot}{'symb'} eq '') { |
($reservable->{'now'}{$slot}{'symb'} eq $symb)) { |
|
$canuse = 1; |
$canuse = 1; |
|
} else { |
|
my %oksymbs; |
|
my @slotsymbs = split(/\s*,\s*/,$reservable->{'now'}{$slot}{'symb'}); |
|
map { $oksymbs{$_} = 1; } @slotsymbs; |
|
if ($oksymbs{$symb}) { |
|
$canuse = 1; |
|
} else { |
|
foreach my $item (@slotsymbs) { |
|
if ($item =~ /\.(page|sequence)$/) { |
|
(undef,undef, my $sloturl) = &Apache::lonnet::decode_symb($item); |
|
if (($map ne '') && ($map eq $sloturl)) { |
|
$canuse = 1; |
|
last; |
|
} |
|
} |
|
} |
|
} |
} |
} |
if ($canuse) { |
if ($canuse) { |
if ($checkedin) { |
if ($checkedin) { |
Line 5615 sub check_for_slot {
|
Line 5682 sub check_for_slot {
|
if ((ref($reservable->{'future_order'}) eq 'ARRAY') && (ref($reservable->{'future'}) eq 'HASH')) { |
if ((ref($reservable->{'future_order'}) eq 'ARRAY') && (ref($reservable->{'future'}) eq 'HASH')) { |
foreach my $slot (@{$reservable->{'future_order'}}) { |
foreach my $slot (@{$reservable->{'future_order'}}) { |
my $canuse; |
my $canuse; |
if (($reservable->{'future'}{$slot}{'symb'} eq '') || |
if ($reservable->{'future'}{$slot}{'symb'} eq '') { |
($reservable->{'future'}{$slot}{'symb'} eq $symb)) { |
$canuse = 1; |
|
} elsif ($reservable->{'future'}{$slot}{'symb'} =~ /,/) { |
|
my %oksymbs; |
|
my @slotsymbs = split(/\s*,\s*/,$reservable->{'future'}{$slot}{'symb'}); |
|
map { $oksymbs{$_} = 1; } @slotsymbs; |
|
if ($oksymbs{$symb}) { |
|
$canuse = 1; |
|
} else { |
|
foreach my $item (@slotsymbs) { |
|
if ($item =~ /\.(page|sequence)$/) { |
|
(undef,undef, my $sloturl) = &Apache::lonnet::decode_symb($item); |
|
if (($map ne '') && ($map eq $sloturl)) { |
|
$canuse = 1; |
|
last; |
|
} |
|
} |
|
} |
|
} |
|
} elsif ($reservable->{'future'}{$slot}{'symb'} eq $symb) { |
$canuse = 1; |
$canuse = 1; |
} |
} |
if ($canuse) { |
if ($canuse) { |