--- loncom/interface/lonnavmaps.pm 2018/04/29 16:16:05 1.509.2.5.4.3 +++ loncom/interface/lonnavmaps.pm 2018/04/29 15:52:08 1.509.2.6 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Navigate Maps Handler # -# $Id: lonnavmaps.pm,v 1.509.2.5.4.3 2018/04/29 16:16:05 raeburn Exp $ +# $Id: lonnavmaps.pm,v 1.509.2.6 2018/04/29 15:52:08 raeburn Exp $ # # Copyright Michigan State University Board of Trustees @@ -486,7 +486,7 @@ use Apache::lonlocal; use Apache::lonnet; use Apache::lonmap; -use POSIX qw (ceil floor strftime); +use POSIX qw (floor strftime); use Time::HiRes qw( gettimeofday tv_interval ); use LONCAPA; use DateTime(); @@ -995,12 +995,9 @@ sub render_resource { # Don't allow users to manipulate folder $icon = "navmap.$folderType." . ($nowOpen ? 'closed' : 'open') . '.gif'; $icon = ""."\"".($nowOpen"; - if ($params->{'caller'} eq 'sequence') { - $linkopen = ""; - } else { - $linkopen = ""; - $linkclose = ""; - } + + $linkopen = ""; + $linkclose = ""; } if (((&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) || (&Apache::lonnet::allowed('cev',$env{'request.course.id'}))) && @@ -1363,11 +1360,10 @@ sub render { my $currenturl = $env{'form.postdata'}; #$currenturl=~s/^http\:\/\///; #$currenturl=~s/^[^\/]+//; - unless ($args->{'caller'} eq 'sequence') { - $here = $jump = &Apache::lonnet::symbread($currenturl); - } + + $here = $jump = &Apache::lonnet::symbread($currenturl); } - if (($here eq '') && ($args->{'caller'} ne 'sequence')) { + if ($here eq '') { my $last; if (tie(my %hash,'GDBM_File',$env{'request.course.fn'}.'_symb.db', &GDBM_READER(),0640)) { @@ -1826,15 +1822,11 @@ END $stack=$it->getStack(); } ($src,$symb,$anchor)=getLinkForResource($stack); - my $srcHasQuestion = $src =~ /\?/; if (defined($anchor)) { $anchor='#'.$anchor; } - if (($args->{'caller'} eq 'sequence') && ($curRes->is_map())) { - $args->{"resourceLink"} = $src.($srcHasQuestion?'&':'?') .'navmap=1'; - } else { - $args->{"resourceLink"} = $src. - ($srcHasQuestion?'&':'?') . - 'symb=' . &escape($symb).$anchor; - } + my $srcHasQuestion = $src =~ /\?/; + $args->{"resourceLink"} = $src. + ($srcHasQuestion?'&':'?') . + 'symb=' . &escape($symb).$anchor; } # Now, we've decided what parts to show. Loop through them and # show them. @@ -2248,7 +2240,7 @@ sub generate_email_discuss_status { foreach my $msgid (@keys) { if ((!$emailstatus{$msgid}) || ($emailstatus{$msgid} eq 'new')) { my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$fromcid, - $symb,$error) = &Apache::lonmsg::unpackmsgid(&LONCAPA::escape($msgid)); + $symb,$error) = &Apache::lonmsg::unpackmsgid($msgid); &Apache::lonenc::check_decrypt(\$symb); if (($fromcid ne '') && ($fromcid ne $cid)) { next; @@ -2762,91 +2754,6 @@ sub recurseup_maps { return @recurseup; } -sub recursed_crumbs { - my ($self,$mapurl,$restitle) = @_; - my (@revmapinfo,@revmapres); - my $mapres = $self->getResourceByUrl($mapurl); - if (ref($mapres)) { - @revmapres = map { $self->getByMapPc($_); } split(/,/,$mapres->map_breadcrumbs()); - shift(@revmapres); - } - my $allowedlength = 60; - my $minlength = 5; - my $allowedtitle = 30; - if (($env{'environment.icons'} eq 'iconsonly') && (!$env{'browser.mobile'})) { - $allowedlength = 100; - $allowedtitle = 70; - } - if (length($restitle) > $allowedtitle) { - $restitle = &truncate_crumb_text($restitle,$allowedtitle); - } - my $totallength = length($restitle); - my @links; - - foreach my $map (@revmapres) { - my $pc = $map->map_pc(); - next if ((!$pc) || ($pc == 1)); - push(@links,$map); - push(@revmapinfo,{'href' => $map->link().'?navmap=1','text' => $map->title(),'no_mt' => 1,}); - $totallength += length($map->title()); - } - my $numlinks = scalar(@links); - if ($numlinks) { - if ($totallength - $allowedlength > 0) { - my $available = $allowedlength - length($restitle); - my $avg = POSIX::ceil($available/$numlinks); - if ($avg < $minlength) { - $avg = $minlength; - } - @revmapinfo = (); - foreach my $map (@links) { - my $showntitle = &truncate_crumb_text($map->title(),$avg); - if ($showntitle ne '') { - push(@revmapinfo,{'href' => $map->link().'?navmap=1','text' => $showntitle,'no_mt' => 1,}); - } - } - } - } - if ($restitle ne '') { - push(@revmapinfo,{'text' => $restitle, 'no_mt' => 1}); - } - return @revmapinfo; -} - -sub truncate_crumb_text { - my ($title,$limit) = @_; - my $showntitle = ''; - if (length($title) > $limit) { - my @words = split(/\b\s*/,$title); - if (@words == 1) { - $showntitle = substr($title,0,$limit).' ...'; - } else { - my $linklength = 0; - my $num = 0; - foreach my $word (@words) { - $linklength += 1+length($word); - if ($word eq '-') { - $showntitle =~ s/ $//; - $showntitle .= $word; - } elsif ($linklength > $limit) { - if ($num < @words) { - $showntitle .= $word.' ...'; - last; - } else { - $showntitle .= $word; - } - } else { - $showntitle .= $word.' '; - } - } - $showntitle =~ s/ $//; - } - return $showntitle; - } else { - return $title; - } -} - # # Determines the open/close dates for printing a map that # encloses a resource. @@ -4469,12 +4376,6 @@ Returns a string with a comma-separated for the hierarchy of maps containing a map, with the top level map first, then descending to deeper levels, with the enclosing map last. -=item * B: - -Same as map_hierarchy, except maps containing only a single itemm if -it's a map, or containing no items are omitted, unless it's the top -level map (map_pc = 1), which is always included. - =back =cut @@ -4510,11 +4411,6 @@ sub map_hierarchy { my $pc = $self->map_pc(); return $self->navHash("map_hierarchy_$pc", 0); } -sub map_breadcrumbs { - my $self = shift; - my $pc = $self->map_pc(); - return $self->navHash("map_breadcrumbs_$pc", 0); -} ##### # Property queries @@ -4739,12 +4635,11 @@ sub duedate { my $date; my @interval=$self->parmval("interval", $part); my $due_date=$self->parmval("duedate", $part); - if ($interval[0] =~ /^(\d+)/) { - my $timelimit = $1; - my $first_access=&Apache::lonnet::get_first_access($interval[1], + if ($interval[0] =~ /\d+/) { + my $first_access=&Apache::lonnet::get_first_access($interval[1], $self->{SYMB}); if (defined($first_access)) { - my $interval = $first_access+$timelimit; + my $interval = $first_access+$interval[0]; $date = (!$due_date || $interval < $due_date) ? $interval : $due_date; } else {