Diff for /loncom/interface/lonnavmaps.pm between versions 1.375 and 1.379

version 1.375, 2006/04/10 19:59:53 version 1.379, 2006/04/29 17:57:29
Line 207  ENDSUBM Line 207  ENDSUBM
  {'only_body' => 1,   {'only_body' => 1,
   'bgcolor'   => '#FFFFFF',    'bgcolor'   => '#FFFFFF',
   'add_entries' =>     'add_entries' => 
       'onLoad="submitthis()"',}).        {'onload' =>
      "submitthis()"}}).
   &Apache::loncommon::end_page());    &Apache::loncommon::end_page());
   
         return OK;          return OK;
Line 317  MENU Line 318  MENU
       "Close navigation window");        "Close navigation window");
     }       } 
   
     my $jumpToFirstHomework = 0;  
     # Check to see if the student is jumping to next open, do-able problem      # Check to see if the student is jumping to next open, do-able problem
     if ($ENV{QUERY_STRING} =~ /^jumpToFirstHomework/) {      if ($ENV{QUERY_STRING} =~ /^jumpToFirstHomework/) {
         $jumpToFirstHomework = 1;  
         # Find the next homework problem that they can do.          # Find the next homework problem that they can do.
         my $iterator = $navmap->getIterator(undef, undef, undef, 1);          my $iterator = $navmap->getIterator(undef, undef, undef, 1);
         my $curRes;          my $curRes;
         my $foundDoableProblem = 0;          my $foundDoableProblem = 0;
         my $problemRes;          my $minimumduedate;
                   
         while (($curRes = $iterator->next()) && !$foundDoableProblem) {          while ($curRes = $iterator->next()) {
             if (ref($curRes) && $curRes->is_problem()) {              if (ref($curRes) && $curRes->is_problem()) {
                 my $status = $curRes->status();                  my $status = $curRes->status();
                 if ($curRes->completable()) {                  if ($curRes->completable()) {
                     $problemRes = $curRes;                      my $thisduedate=$curRes->duedate();
                       unless ($foundDoableProblem) {
                           $minimumduedate=$thisduedate;
       }
                           
                     $foundDoableProblem = 1;                      $foundDoableProblem = 1;
   
                     # Pop open all previous maps                      if ($thisduedate<=$minimumduedate) {
                     my $stack = $iterator->getStack();   # Pop open all previous maps
                     pop @$stack; # last resource in the stack is the problem   my $stack = $iterator->getStack();
                                  # itself, which we don't need in the map stack   pop @$stack; # last resource in the stack is the problem
                     my @mapPcs = map {$_->map_pc()} @$stack;   # itself, which we don't need in the map stack
                     $env{'form.filter'} = join(',', @mapPcs);   my @mapPcs = map {$_->map_pc()} @$stack;
    $env{'form.filter'} = join(',', @mapPcs);
                     # Mark as both "here" and "jump"  
                     $env{'form.postsymb'} = $curRes->symb();   # Mark as both "here" and "jump"
    $env{'form.postsymb'} = $curRes->symb();
                           $minimumduedate=$thisduedate;
       }
                 }                  }
             }              }
         }          }
Line 354  MENU Line 361  MENU
     } else {      } else {
  &add_linkitem(\%toplinkitems,'firsthomework',   &add_linkitem(\%toplinkitems,'firsthomework',
       'location.href="navmaps?jumpToFirstHomework"',        'location.href="navmaps?jumpToFirstHomework"',
       "Show Me My First Homework Problem");        "Show my first due problem");
     }      }
   
     my $suppressEmptySequences = 0;      my $suppressEmptySequences = 0;
Line 371  MENU Line 378  MENU
                         };                          };
  &add_linkitem(\%toplinkitems,'everything',   &add_linkitem(\%toplinkitems,'everything',
      'location.href="navmaps?sort='.$env{'form.sort'}.'"',       'location.href="navmaps?sort='.$env{'form.sort'}.'"',
       "Show Everything");        "Show everything");
         $r->print("<p><font size='+2'>".&mt("Uncompleted Homework")."</font></p>");          $r->print("<p><font size='+2'>".&mt("Uncompleted Problems")."</font></p>");
         $env{'form.filter'} = '';          $env{'form.filter'} = '';
         $env{'form.condition'} = 1;          $env{'form.condition'} = 1;
  $resource_no_folder_link = 1;   $resource_no_folder_link = 1;
Line 380  MENU Line 387  MENU
  &add_linkitem(\%toplinkitems,'uncompleted',   &add_linkitem(\%toplinkitems,'uncompleted',
       'location.href="navmaps?sort='.$env{'form.sort'}.        'location.href="navmaps?sort='.$env{'form.sort'}.
           '&showOnlyHomework=1"',            '&showOnlyHomework=1"',
       "Show Only Uncompleted Homework");        "Show only uncompleted problems");
     }      }
   
     my %selected=($env{'form.sort'} => 'selected=on');      my %selected=($env{'form.sort'} => 'selected=on');
Line 672  sub timeToHumanString { Line 679  sub timeToHumanString {
   
  if($format ne '') {   if($format ne '') {
     my $timeStr = strftime($format, localtime($time));      my $timeStr = strftime($format, localtime($time));
     return $timeStr.&Apache::lonlocal::gettimezone();      return $timeStr.&Apache::lonlocal::gettimezone($time);
  }   }
   
         # Less then 5 days away, display day of the week and          # Less then 5 days away, display day of the week and
Line 683  sub timeToHumanString { Line 690  sub timeToHumanString {
             $timeStr =~ s/12:00 am/00:00/;              $timeStr =~ s/12:00 am/00:00/;
             $timeStr =~ s/12:00 pm/noon/;              $timeStr =~ s/12:00 pm/noon/;
             return ($inPast ? "last " : "this ") .              return ($inPast ? "last " : "this ") .
                 $timeStr.&Apache::lonlocal::gettimezone();                  $timeStr.&Apache::lonlocal::gettimezone($time);
         }          }
                   
  my $conjunction='on';   my $conjunction='on';
Line 698  sub timeToHumanString { Line 705  sub timeToHumanString {
             my $timeStr = strftime("$conjunction %A, %b %e at %I:%M %P", localtime($time));              my $timeStr = strftime("$conjunction %A, %b %e at %I:%M %P", localtime($time));
             $timeStr =~ s/12:00 am/00:00/;              $timeStr =~ s/12:00 am/00:00/;
             $timeStr =~ s/12:00 pm/noon/;              $timeStr =~ s/12:00 pm/noon/;
             return $timeStr.&Apache::lonlocal::gettimezone();              return $timeStr.&Apache::lonlocal::gettimezone($time);
         }          }
   
         # Not this year, so show the year          # Not this year, so show the year
         my $timeStr = strftime("$conjunction %A, %b %e %Y at %I:%M %P", localtime($time));          my $timeStr = strftime("$conjunction %A, %b %e %Y at %I:%M %P", localtime($time));
         $timeStr =~ s/12:00 am/00:00/;          $timeStr =~ s/12:00 am/00:00/;
         $timeStr =~ s/12:00 pm/noon/;          $timeStr =~ s/12:00 pm/noon/;
         return $timeStr.&Apache::lonlocal::gettimezone();          return $timeStr.&Apache::lonlocal::gettimezone($time);
     }      }
 }  }
   
Line 1602  sub render { Line 1609  sub render {
         if ($condition) {          if ($condition) {
     $link='"navmaps?condition=0&filter=&'.$queryString.      $link='"navmaps?condition=0&filter=&'.$queryString.
  '&here='.&Apache::lonnet::escape($here).'"';   '&here='.&Apache::lonnet::escape($here).'"';
     $text='Close All Folders';      $text='Close all folders';
         } else {          } else {
     $link='"navmaps?condition=1&filter=&'.$queryString.      $link='"navmaps?condition=1&filter=&'.$queryString.
  '&here='.&Apache::lonnet::escape($here).'"';   '&here='.&Apache::lonnet::escape($here).'"';
     $text='Open All Folders';      $text='Open all folders';
         }          }
  if ($args->{'caller'} eq 'navmapsdisplay') {   if ($args->{'caller'} eq 'navmapsdisplay') {
     &add_linkitem($args->{'linkitems'},'changefolder',      &add_linkitem($args->{'linkitems'},'changefolder',
Line 4378  sub extractParts { Line 4385  sub extractParts {
         # So we have to use our knowlege of part names to figure out           # So we have to use our knowlege of part names to figure out 
         # where the part names begin and end, and even then, it is possible          # where the part names begin and end, and even then, it is possible
         # to construct ambiguous situations.          # to construct ambiguous situations.
         foreach (split /,/, $metadata) {          foreach my $data (split /,/, $metadata) {
             if ($_ =~ /^([a-zA-Z]+)response_(.*)/              if ($data =~ /^([a-zA-Z]+)response_(.*)/
  || $_ =~ /^(Task)_(.*)/) {   || $data =~ /^(Task)_(.*)/) {
                 my $responseType = $1;                  my $responseType = $1;
                 my $partStuff = $2;                  my $partStuff = $2;
                 my $partIdSoFar = '';                  my $partIdSoFar = '';
Line 4392  sub extractParts { Line 4399  sub extractParts {
                     if ($parts{$partIdSoFar}) {                      if ($parts{$partIdSoFar}) {
                         my @otherChunks = @partChunks[$i+1..$#partChunks];                          my @otherChunks = @partChunks[$i+1..$#partChunks];
                         my $responseId = join('_', @otherChunks);                          my $responseId = join('_', @otherChunks);
                         push @{$responseIdHash{$partIdSoFar}}, $responseId;   if ($self->is_task()) {
                         push @{$responseTypeHash{$partIdSoFar}}, $responseType;      push(@{$responseIdHash{$partIdSoFar}},
    $partIdSoFar);
    } else {
       push(@{$responseIdHash{$partIdSoFar}},
    $responseId);
    }
                           push(@{$responseTypeHash{$partIdSoFar}},
        $responseType);
                     }                      }
                 }                  }
             }              }

Removed from v.1.375  
changed lines
  Added in v.1.379


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>