Diff for /loncom/interface/lonnavmaps.pm between versions 1.133 and 1.138

version 1.133, 2003/01/31 22:46:50 version 1.138, 2003/02/06 21:26:21
Line 56  sub NOTHING { return 3; } Line 56  sub NOTHING { return 3; }
   
 # Some data  # Some data
   
   # Keep these mappings in sync with lonquickgrades, which uses the colors
   # instead of the icons.
   my %statusIconMap = 
       ( Apache::lonnavmaps::resource->NETWORK_FAILURE    => '',
         Apache::lonnavmaps::resource->NOTHING_SET        => '',
         Apache::lonnavmaps::resource->CORRECT            => 'navmap.correct.gif',
         Apache::lonnavmaps::resource->EXCUSED            => 'navmap.correct.gif',
         Apache::lonnavmaps::resource->PAST_DUE_NO_ANSWER => 'navmap.wrong.gif',
         Apache::lonnavmaps::resource->PAST_DUE_ANSWER_LATER => 'navmap.wrong.gif',
         Apache::lonnavmaps::resource->ANSWER_OPEN        => 'navmap.wrong.gif',
         Apache::lonnavmaps::resource->OPEN_LATER         => '',
         Apache::lonnavmaps::resource->TRIES_LEFT         => 'navmap.open.gif',
         Apache::lonnavmaps::resource->INCORRECT          => 'navmap.wrong.gif',
         Apache::lonnavmaps::resource->OPEN               => 'navmap.open.gif',
         Apache::lonnavmaps::resource->ATTEMPTED          => 'navmap.open.gif' );
   
   my %iconAltTags = 
       ( 'navmap.correct.gif' => 'Correct',
         'navmap.wrong.gif'   => 'Incorrect',
         'navmap.open.gif'    => 'Open' );
   
   # Defines a status->color mapping, null string means don't color
   my %colormap = 
       ( Apache::lonnavmaps::resource->NETWORK_FAILURE        => '',
         Apache::lonnavmaps::resource->CORRECT                => '',
         Apache::lonnavmaps::resource->EXCUSED                => '#3333FF',
         Apache::lonnavmaps::resource->PAST_DUE_ANSWER_LATER  => '',
         Apache::lonnavmaps::resource->PAST_DUE_NO_ANSWER     => '',
         Apache::lonnavmaps::resource->ANSWER_OPEN            => '#006600',
         Apache::lonnavmaps::resource->OPEN_LATER             => '',
         Apache::lonnavmaps::resource->TRIES_LEFT             => '',
         Apache::lonnavmaps::resource->INCORRECT              => '',
         Apache::lonnavmaps::resource->OPEN                   => '',
         Apache::lonnavmaps::resource->NOTHING_SET            => ''        );
   # And a special case in the nav map; what to do when the assignment
   # is not yet done and due in less then 24 hours
   my $hurryUpColor = "#FF0000";
   
 sub cleanup {  sub cleanup {
     if (tied(%navmaphash)){      if (tied(%navmaphash)){
Line 222  sub real_handler { Line 259  sub real_handler {
     # These are some data tables, which make it easy to change some of      # These are some data tables, which make it easy to change some of
     # of the specific visualization parameters if desired.      # of the specific visualization parameters if desired.
   
     # Defines a status->color mapping, null string means don't color  
     my %colormap =   
     ( $res->NETWORK_FAILURE        => '',  
       $res->CORRECT                => '',  
       $res->EXCUSED                => '#3333FF',  
       $res->PAST_DUE_ANSWER_LATER  => '',  
       $res->PAST_DUE_NO_ANSWER     => '',  
       $res->ANSWER_OPEN            => '#006600',  
       $res->OPEN_LATER             => '',  
       $res->TRIES_LEFT             => '',  
       $res->INCORRECT              => '',  
       $res->OPEN                   => '',  
       $res->NOTHING_SET            => ''        );  
     # And a special case in the nav map; what to do when the assignment  
     # is not yet done and due in less then 24 hours  
     my $hurryUpColor = "#FF0000";  
   
     # Keep these mappings in sync with lonquickgrades, which uses the colors  
     # instead of the icons.  
     my %statusIconMap =   
         ( $res->NETWORK_FAILURE    => '',  
           $res->NOTHING_SET        => '',  
           $res->CORRECT            => 'navmap.correct.gif',  
           $res->EXCUSED            => 'navmap.correct.gif',  
           $res->PAST_DUE_NO_ANSWER => 'navmap.wrong.gif',  
           $res->PAST_DUE_ANSWER_LATER => 'navmap.wrong.gif',  
           $res->ANSWER_OPEN        => 'navmap.wrong.gif',  
           $res->OPEN_LATER         => '',  
           $res->TRIES_LEFT         => 'navmap.open.gif',  
           $res->INCORRECT          => 'navmap.wrong.gif',  
           $res->OPEN               => 'navmap.open.gif',  
           $res->ATTEMPTED          => 'navmap.open.gif' );  
   
     my %iconAltTags =   
         ( 'navmap.correct.gif' => 'Correct',  
           'navmap.wrong.gif'   => 'Incorrect',  
           'navmap.open.gif'    => 'Open' );  
   
     my %condenseStatuses =      my %condenseStatuses =
         ( $res->NETWORK_FAILURE    => 1,          ( $res->NETWORK_FAILURE    => 1,
           $res->NOTHING_SET        => 1,            $res->NOTHING_SET        => 1,
Line 555  sub real_handler { Line 554  sub real_handler {
   
                 }                  }
                                   
                 my $colorizer = "";  
                 my $color;                  my $color;
                 if ($curRes->is_problem()) {                  if ($curRes->is_problem()) {
                     $color = $colormap{$curRes->status};                      $color = $colormap{$curRes->status};
Line 564  sub real_handler { Line 562  sub real_handler {
                         lastTry($curRes, $part)) {                          lastTry($curRes, $part)) {
                         $color = $hurryUpColor;                          $color = $hurryUpColor;
                     }                      }
   
                     if ($color ne "") {  
                         $colorizer = "bgcolor=\"$color\"";  
                     }  
                 }                  }
   
                 if ($curRes->randomout()) {                  if ($curRes->randomout()) {
Line 717  sub real_handler { Line 711  sub real_handler {
     $navmap->untieHashes();      $navmap->untieHashes();
   
     $r->print("</body></html>");      $r->print("</body></html>");
       $r->rflush();
   
     return OK;      return OK;
 }  }
Line 1060  sub long_status { return 3; } Line 1055  sub long_status { return 3; }
   
 # Data for render_resource  # Data for render_resource
   
 my $resObj = 'Apache::lonnavmaps::resource';  
 # Defines a status->color mapping, null string means don't color  
 my %colormap =   
     ( $resObj->NETWORK_FAILURE        => '',  
       $resObj->CORRECT                => '',  
       $resObj->EXCUSED                => '#3333FF',  
       $resObj->PAST_DUE_ANSWER_LATER  => '',  
       $resObj->PAST_DUE_NO_ANSWER     => '',  
       $resObj->ANSWER_OPEN            => '#006600',  
       $resObj->OPEN_LATER             => '',  
       $resObj->TRIES_LEFT             => '',  
       $resObj->INCORRECT              => '',  
       $resObj->OPEN                   => '',  
       $resObj->NOTHING_SET            => ''        );  
 # And a special case in the nav map; what to do when the assignment  
 # is not yet done and due in less then 24 hours  
 my $hurryUpColor = "#FF0000";  
   
 sub render_resource {  sub render_resource {
     my ($resource, $part, $params) = @_;      my ($resource, $part, $params) = @_;
   
     my $nonLinkedText = ''; # stuff after resource title not in link      my $nonLinkedText = ''; # stuff after resource title not in link
   
     my $it = $params->{'iterator'};      my $link = $params->{"resourceLink"};
       my $src = $resource->src();
       my $it = $params->{"iterator"};
     my $filter = $it->{FILTER};      my $filter = $it->{FILTER};
     my $stack = $it->getStack();  
     my $src = getLinkForResource($stack);  
   
     my $srcHasQuestion = $src =~ /\?/;  
     my $link = $src.  
         ($srcHasQuestion?'&':'?') .  
         'symb=' . &Apache::lonnet::escape($resource->symb()).  
         '"';  
   
     my $title = $resource->compTitle();      my $title = $resource->compTitle();
     if ($src =~ /^\/uploaded\//) {      if ($src =~ /^\/uploaded\//) {
Line 1184  sub render_resource { Line 1155  sub render_resource {
         $nonLinkedText .= ' (' . $resource->countParts() . ' parts)';          $nonLinkedText .= ' (' . $resource->countParts() . ' parts)';
     }      }
   
     $result .= "  $curMarkerBegin<a href='$link'>$title$partLabel</a>$curMarkerEnd $nonLinkedText";      $result .= "  $curMarkerBegin<a href='$link'>$title$partLabel</a>$curMarkerEnd $nonLinkedText</td>";
   
     return $result;      return $result;
 }  }
   
 sub render_communication_status {  sub render_communication_status {
     my ($resource, $part, $params) = @_;      my ($resource, $part, $params) = @_;
     return "<td align='center'>comm_status</td>";      my $discussionHTML = ""; my $feedbackHTML = ""; my $errorHTML = "";
   
       my $link = $params->{"resourceLink"};
       my $linkopen = "<a href='$link'>";
       my $linkclose = "</a>";
   
       if ($resource->hasDiscussion()) {
           $discussionHTML = $linkopen .
               '<img border="0" src="/adm/lonMisc/chat.gif" />' .
               $linkclose;
       }
       
       if ($resource->getFeedback()) {
           my $feedback = $resource->getFeedback();
           foreach (split(/\,/, $feedback)) {
               if ($_) {
                   $feedbackHTML .= '&nbsp;<a href="/adm/email?display='
                       . &Apache::lonnet::escape($_) . '">'
                       . '<img src="/adm/lonMisc/feedback.gif" '
                       . 'border="0" /></a>';
               }
           }
       }
       
       if ($resource->getErrors()) {
           my $errors = $resource->getErrors();
           foreach (split(/,/, $errors)) {
               if ($_) {
                   $errorHTML .= '&nbsp;<a href="/adm/email?display='
                       . &Apache::lonnet::escape($_) . '">'
                       . '<img src="/adm/lonMisc/bomb.gif" '
                       . 'border="0" /></a>';
               }
           }
       }
   
       return "<td width=\"75\" align=\"left\" valign=\"center\">$discussionHTML$feedbackHTML$errorHTML&nbsp;</td>";
   
 }  }
 sub render_quick_status {  sub render_quick_status {
     my ($resource, $part, $params) = @_;      my ($resource, $part, $params) = @_;
     return "<td align='center'>quick_status</td>";      my $result = "";
       my $firstDisplayed = !$params->{'condensed'} && 
           $params->{'multipart'} && $part eq "0";
   
       my $link = $params->{"resourceLink"};
       my $linkopen = "<a href='$link'>";
       my $linkclose = "</a>";
   
       if ($resource->is_problem() &&
           !$firstDisplayed) {
           my $icon = $statusIconMap{$resource->status($part)};
           my $alt = $iconAltTags{$icon};
           if ($icon) {
               $result .= "<td width='30' valign='center' width='50' align='right'>$linkopen<img width='25' height='25' src='/adm/lonIcons/$icon' border='0' alt='$alt' />$linkclose</td>\n";
           } else {
               $result .= "<td width='30'>&nbsp;</td>\n";
           }
       } else { # not problem, no icon
           $result .= "<td width='30'>&nbsp;</td>\n";
       }
   
       return $result;
 }  }
 sub render_long_status {  sub render_long_status {
     my ($resource, $part, $params) = @_;      my ($resource, $part, $params) = @_;
     return "<td align='center'>long_status</td>";      my $result = "<td align='right' valign='center'>\n";
       my $firstDisplayed = !$params->{'condensed'} && 
           $params->{'multipart'} && $part eq "0";
                   
       my $color;
       if ($resource->is_problem()) {
           $color = $colormap{$resource->status};
           
           if (dueInLessThen24Hours($resource, $part) ||
               lastTry($resource, $part)) {
               $color = $hurryUpColor;
           }
       }
       
       if ($resource->kind() eq "res" &&
           $resource->is_problem() &&
           !$firstDisplayed) {
           if ($color) {$result .= "<font color=\"$color\"><b>"; }
           $result .= getDescription($resource, $part);
           if ($color) {$result .= "</b></font>"; }
       }
       if ($resource->is_map() && advancedUser() && $resource->randompick()) {
           $result .= '(randomly select ' . $resource->randompick() .')';
       }
       
       $result .= "&nbsp;</td>\n";
       
       return $result;
 }  }
   
 my @preparedColumns = (\&render_resource, \&render_communication_status,  my @preparedColumns = (\&render_resource, \&render_communication_status,
Line 1380  sub render { Line 1436  sub render {
             my $backgroundColor = $backgroundColors[$rownum % scalar(@backgroundColors)];              my $backgroundColor = $backgroundColors[$rownum % scalar(@backgroundColors)];
                           
             $result .= "  <tr bgcolor='$backgroundColor'>\n";              $result .= "  <tr bgcolor='$backgroundColor'>\n";
   
               # Set up some data about the parts that the cols might want
               my $filter = $it->{FILTER};
               my $stack = $it->getStack();
               my $src = getLinkForResource($stack);
               
               my $srcHasQuestion = $src =~ /\?/;
               $args->{"resourceLink"} = $src.
                   ($srcHasQuestion?'&':'?') .
                   'symb=' . &Apache::lonnet::escape($curRes->symb());
                           
             # Now, display each column.              # Now, display each column.
             foreach my $col (@$cols) {              foreach my $col (@$cols) {
                 $result .= "    <td>";  
   
                 # If this is the first column and it's time to print                  # If this is the first column and it's time to print
                 # the anchor, do so                  # the anchor, do so
Line 1401  sub render { Line 1466  sub render {
                     $result .= &{$preparedColumns[$col]}($curRes, $part, $args);                      $result .= &{$preparedColumns[$col]}($curRes, $part, $args);
                 }                  }
   
                 $result .= "</td>\n";  
             }              }
   
             $result .= "  </tr>\n";              $result .= "  </tr>\n";
Line 1411  sub render { Line 1475  sub render {
         $curRes = $it->next();          $curRes = $it->next();
     }      }
           
       # Print out the part that jumps to #curloc if it exists
       if ($args->{"displayedJumpMarker"}) {
           $result .= "<script>location += "#curloc";</script>\n";
       }
   
     $result .= "</table>";      $result .= "</table>";
   
     return $result;      return $result;
Line 2159  sub next { Line 2228  sub next {
     # If this is a blank resource, don't actually return it.      # If this is a blank resource, don't actually return it.
     # Should you ever find you need it, make sure to add an option to the code      # Should you ever find you need it, make sure to add an option to the code
     #  that you can use; other things depend on this behavior.      #  that you can use; other things depend on this behavior.
     if (!$self->{HERE}->src() || !$self->{HERE}->browsePriv()) {      my $browsePriv = $self->{HERE}->browsePriv();
       if (!$self->{HERE}->src() || 
           (!($browsePriv eq 'F') && !($browsePriv eq '2')) ) {
         return $self->next();          return $self->next();
     }      }
   

Removed from v.1.133  
changed lines
  Added in v.1.138


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