--- loncom/interface/lonnavmaps.pm 2016/08/05 22:13:46 1.509.2.1 +++ loncom/interface/lonnavmaps.pm 2015/10/05 16:23:49 1.511 @@ -1,8 +1,7 @@ # The LearningOnline Network with CAPA # Navigate Maps Handler # -# $Id: lonnavmaps.pm,v 1.509.2.1 2016/08/05 22:13:46 raeburn Exp $ - +# $Id: lonnavmaps.pm,v 1.511 2015/10/05 16:23:49 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -915,9 +914,6 @@ sub render_resource { my $nonLinkedText = ''; # stuff after resource title not in link my $link = $params->{"resourceLink"}; - if ($resource->ext()) { - $link =~ s/\#.+(\?)/$1/g; - } # The URL part is not escaped at this point, but the symb is... @@ -2882,7 +2878,7 @@ sub getcourseparam { # # We want the course level stuff from the way # parmval_real operates - # TODO: Factor some of this stuff out of + # TODO: Fator some of this stuff out of # both parmval_real and here # my $courselevel = $cid . '.' . $what; @@ -2899,7 +2895,7 @@ sub getcourseparam { } # Try for the group's course level option: - if ($cgroup ne '' and defined($courseopt)) { + if ($uname ne '' and defined($courseopt)) { if (defined($$courseopt{$grplevel})) { return $$courseopt{$grplevel}; } @@ -2907,12 +2903,12 @@ sub getcourseparam { # Try for section level parameters: - if ($csec ne '' and defined($courseopt)) { + if ($csec and defined($courseopt)) { if (defined($$courseopt{$seclevel})) { return $$courseopt{$seclevel}; } } - # Try for 'additional' course parameters: + # Try for 'additional' course parameterse: if (defined($courseopt)) { if (defined($$courseopt{$courselevel})) { @@ -4533,7 +4529,7 @@ sub duedate { my $due_date=$self->parmval("duedate", $part); if ($interval[0] =~ /\d+/) { my $first_access=&Apache::lonnet::get_first_access($interval[1], - $self->{SYMB}); + $self->symb); if (defined($first_access)) { my $interval = $first_access+$interval[0]; $date = (!$due_date || $interval < $due_date) ? $interval @@ -4615,7 +4611,7 @@ sub part_display { my $self= shift(); my $partID = shift(); if (! defined($partID)) { $partID = '0'; } my $display=&Apache::lonnet::EXT('resource.'.$partID.'.display', - $self->{SYMB}); + $self->symb); if (! defined($display) || $display eq '') { $display = $partID; } @@ -5476,18 +5472,61 @@ sub check_for_slot { my $reservable = &Apache::lonnet::get_reservable_slots($cnum,$cdom,$env{'user.name'}, $env{'user.domain'}); if (ref($reservable) eq 'HASH') { + my ($map) = &Apache::lonnet::decode_symb($symb); if ((ref($reservable->{'now_order'}) eq 'ARRAY') && (ref($reservable->{'now'}) eq 'HASH')) { foreach my $slot (reverse (@{$reservable->{'now_order'}})) { - if (($reservable->{'now'}{$slot}{'symb'} eq '') || - ($reservable->{'now'}{$slot}{'symb'} eq $symb)) { + my $canuse; + if ($reservable->{'now'}{$slot}{'symb'} eq '') { + $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) { return(RESERVABLE,$reservable->{'now'}{$slot}{'endreserve'}); } } } if ((ref($reservable->{'future_order'}) eq 'ARRAY') && (ref($reservable->{'future'}) eq 'HASH')) { foreach my $slot (@{$reservable->{'future_order'}}) { - if (($reservable->{'future'}{$slot}{'symb'} eq '') || - ($reservable->{'future'}{$slot}{'symb'} eq $symb)) { + my $canuse; + if ($reservable->{'future'}{$slot}{'symb'} eq '') { + $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; + } + if ($canuse) { return(RESERVABLE_LATER,$reservable->{'future'}{$slot}{'startreserve'}); } }