Diff for /loncom/interface/lonnavmaps.pm between versions 1.364 and 1.371

version 1.364, 2006/02/24 23:19:54 version 1.371, 2006/03/16 20:48:30
Line 194  MENU Line 194  MENU
 MENU  MENU
  }   }
         $r->send_http_header;          $r->send_http_header;
  my $html=&Apache::lonxml::xmlbegin();   my $js =<<"ENDSUBM";
  $r->print(<<"ENDSUBM");  
  $html  
         <head>  
   <script type="text/javascript">    <script type="text/javascript">
      function submitthis() {       function submitthis() {
     $menu      $menu
Line 205  MENU Line 202  MENU
     }      }
   
    </script>     </script>
         </head>  
  <body bgcolor="#FFFFFF" onLoad="submitthis()"></body>  
         </html>  
 ENDSUBM  ENDSUBM
           $r->print(&Apache::lonxml::xmlbegin().
     &Apache::loncommon::head(undef,$js).
     '<body bgcolor="#FFFFFF" onLoad="submitthis()">'.
     &Apache::loncommon::end_page(undef,$js));
   
         return OK;          return OK;
     }      }
     if ($ENV{QUERY_STRING} =~ /^launchExternal/) {      if ($ENV{QUERY_STRING} =~ /^launchExternal/) {
Line 239  MENU Line 238  MENU
         return HTTP_NOT_ACCEPTABLE;          return HTTP_NOT_ACCEPTABLE;
     }      }
     $r->send_http_header;      $r->send_http_header;
     my $html=&Apache::lonxml::xmlbegin();  
     $r->print("$html<head>\n");  
     $r->print("<title>".&mt('Navigate Course Contents')."</title>");  
 # ------------------------------------------------------------ Get query string  # ------------------------------------------------------------ Get query string
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['register','sort','showOnlyHomework','postsymb']);      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['register','sort','showOnlyHomework','postsymb']);
           
Line 249  MENU Line 246  MENU
     my $addentries='';      my $addentries='';
     my $more_unload;      my $more_unload;
     my $body_only='';      my $body_only='';
       my $js;
     if ($env{'environment.remotenavmap'} eq 'on') {      if ($env{'environment.remotenavmap'} eq 'on') {
  $r->print('<script type="text/javascript">   $js='<script type="text/javascript">
                       function collapse() {                  function collapse() {
                          this.document.location="/adm/navmaps?collapseExternal";                     this.document.location="/adm/navmaps?collapseExternal";
                       }                  }
                    </script>');               </script>';
 # FIXME need to be smarter to only catch window close events  # FIXME need to be smarter to only catch window close events
 # $more_unload="collapse()"  # $more_unload="collapse()"
  $body_only=1;   $body_only=1;
Line 269  MENU Line 267  MENU
     }      }
   
     # Header      # Header
     $r->print('</head>'.      $r->print(&Apache::lonxml::xmlbegin().
         &Apache::loncommon::head('Navigate Course Contents',$js).
               &Apache::loncommon::bodytag('Navigate Course Contents','',                &Apache::loncommon::bodytag('Navigate Course Contents','',
   $addentries,$body_only,'',    $addentries,$body_only,'',
   $env{'form.register'}));    $env{'form.register'}));
Line 281  MENU Line 280  MENU
     if (!($navmap->courseMapDefined())) {      if (!($navmap->courseMapDefined())) {
  $r->print(&Apache::loncommon::help_open_menu('','Navigation Screen','Navigation_Screen','',undef,'RAT'));   $r->print(&Apache::loncommon::help_open_menu('','Navigation Screen','Navigation_Screen','',undef,'RAT'));
         $r->print('<font size="+2" color="red">Coursemap undefined.</font>' .          $r->print('<font size="+2" color="red">Coursemap undefined.</font>' .
                   '</body></html>');                    &Apache::loncommon::end_page());
         return OK;          return OK;
     }      }
   
Line 434  MENU Line 433  MENU
     #my $td=&tv_interval($t0);      #my $td=&tv_interval($t0);
     #$r->print("<br />$td");      #$r->print("<br />$td");
   
     $r->print("</body></html>");      $r->print(&Apache::loncommon::end_page());
     $r->rflush();      $r->rflush();
   
     return OK;      return OK;
Line 2271  sub get_user_data { Line 2270  sub get_user_data {
 sub get_discussion_data {  sub get_discussion_data {
     my $self = shift;      my $self = shift;
     if ($self->{RETRIEVED_DISCUSSION_DATA}) {      if ($self->{RETRIEVED_DISCUSSION_DATA}) {
          return  $self->{DISCUSSION_DATA};   return $self->{DISCUSSION_DATA};
     }      }
                                                                                   
       $self->generate_email_discuss_status();    
   
     my $cid=$env{'request.course.id'};      my $cid=$env{'request.course.id'};
     my $cdom=$env{'course.'.$cid.'.domain'};      my $cdom=$env{'course.'.$cid.'.domain'};
     my $cnum=$env{'course.'.$cid.'.num'};      my $cnum=$env{'course.'.$cid.'.num'};
                                                                                   
     # Retrieve discussion data for resources in course      # Retrieve discussion data for resources in course
     my %discussion_data = &Apache::lonnet::dump($cid,$cdom,$cnum);      my %discussion_data = &Apache::lonnet::dumpstore($cid,$cdom,$cnum);
                                                                                   
   
     $self->{DISCUSSION_DATA} = \%discussion_data;      $self->{DISCUSSION_DATA} = \%discussion_data;
     $self->{RETRIEVED_DISCUSSION_DATA} = 1;      $self->{RETRIEVED_DISCUSSION_DATA} = 1;
     return $self->{DISCUSSION_DATA};      return $self->{DISCUSSION_DATA};
Line 2342  sub hasDiscussion { Line 2343  sub hasDiscussion {
     }      }
 }  }
   
   sub last_post_time {
       my $self = shift;
       my $symb = shift;
       my $ressymb = $self->wrap_symb($symb);
       return $self->{DISCUSSION_TIME}->{$ressymb};
   }
   
   sub unread_discussion {
       my $self = shift;
       my $symb = shift;
   
       $self->get_discussion_data();
       
       my $ressymb = $self->wrap_symb($symb);
   
       my $version = $self->{DISCUSSION_DATA}{'version:'.$ressymb};
       if (!$version) { return; }
   
       my $prevread = $self->{LAST_READ}{$ressymb};
   
       my $unreadcount = 0;
       my $hiddenflag = 0;
       my $deletedflag = 0;
       my ($hidden,$deleted);
   
       my %subjects;
   
       for (my $id=$version; $id>0; $id--) {
    my $vkeys=$self->{DISCUSSION_DATA}{$id.':keys:'.$ressymb};
    my @keys=split(/:/,$vkeys);
    if (grep(/^hidden$/ ,@keys)) {
       if (!$hiddenflag) {
    $hidden = $self->{DISCUSSION_DATA}{$id.':'.$ressymb.':hidden'};
    $hiddenflag = 1;
       }
    } elsif (grep(/^deleted$/,@keys)) {
       if (!$deletedflag) {
    $deleted = $self->{DISCUSSION_DATA}{$id.':'.$ressymb.':deleted'};
    $deletedflag = 1;
       }
    } else {
       if (($hidden !~/\.$id\./) && ($deleted !~/\.$id\./)
    && $prevread < $self->{DISCUSSION_DATA}{$id.':'.$ressymb.':timestamp'}) {
       $unreadcount++;
       $subjects{$unreadcount}=
    $id.': '.$self->{DISCUSSION_DATA}{$id.':'.$ressymb.':subject'};
    }
    }
       }
       if (wantarray) {
    return ($unreadcount,\%subjects);
       }
       return $unreadcount
   }
   
 sub wrap_symb {  sub wrap_symb {
     my $self = shift;      my $self = shift;
     my $symb = shift;      my $symb = shift;
Line 2756  sub usedVersion { Line 2812  sub usedVersion {
 1;  1;
   
 package Apache::lonnavmaps::iterator;  package Apache::lonnavmaps::iterator;
 use WeakRef;  use Scalar::Util qw(weaken);
 use Apache::lonnet;  use Apache::lonnet;
   
 =pod  =pod
Line 3237  sub populateStack { Line 3293  sub populateStack {
 1;  1;
   
 package Apache::lonnavmaps::DFSiterator;  package Apache::lonnavmaps::DFSiterator;
 use WeakRef;  use Scalar::Util qw(weaken);
 use Apache::lonnet;  use Apache::lonnet;
   
 # Not documented in the perldoc: This is a simple iterator that just walks  # Not documented in the perldoc: This is a simple iterator that just walks
Line 3421  sub populateStack { Line 3477  sub populateStack {
 1;  1;
   
 package Apache::lonnavmaps::resource;  package Apache::lonnavmaps::resource;
 use WeakRef;  use Scalar::Util qw(weaken);
 use Apache::lonnet;  use Apache::lonnet;
   
 =pod  =pod
Line 3600  sub kind { my $self=shift; return $self- Line 3656  sub kind { my $self=shift; return $self-
 sub randomout { my $self=shift; return $self->navHash("randomout_", 1); }  sub randomout { my $self=shift; return $self->navHash("randomout_", 1); }
 sub randompick {   sub randompick { 
     my $self = shift;      my $self = shift;
     return $self->{NAV_MAP}->{PARM_HASH}->{$self->symb .      return $self->parmval('randompick');
                                                '.0.parameter_randompick'};  
 }  }
 sub link {  sub link {
     my $self=shift;      my $self=shift;
Line 3719  sub retrieveResources { Line 3774  sub retrieveResources {
    return $self->{NAV_MAP}->retrieveResources(@_);     return $self->{NAV_MAP}->retrieveResources(@_);
 }  }
   
   sub is_exam {
       my ($self,$part) = @_;
       if ($self->parmval('type',$part) eq 'exam') {
           return 1;
       }
       if ($self->src() =~ /\.(exam)$/) {
           return 1;
       }
       return 0;
   }
 sub is_html {  sub is_html {
     my $self=shift;      my $self=shift;
     my $src = $self->src();      my $src = $self->src();
Line 4061  Returns a false value if there has been Line 4126  Returns a false value if there has been
 logged in, true if there has. Always returns false if the discussion  logged in, true if there has. Always returns false if the discussion
 data was not extracted when the nav map was constructed.  data was not extracted when the nav map was constructed.
   
   =item * B<last_post_time>:
   
   Returns a false value if there hasn't been discussion otherwise returns
   unix timestamp of last time a discussion posting (or edit) was made.
   
   =item * B<unread_discussion>:
   
   returns in scalar context the count of the number of unread discussion
   postings
   
   returns in list context both the count of postings and a hash ref
   containing the subjects of all unread postings
   
 =item * B<getFeedback>:  =item * B<getFeedback>:
   
 Gets the feedback for the resource and returns the raw feedback string  Gets the feedback for the resource and returns the raw feedback string
Line 4081  sub hasDiscussion { Line 4159  sub hasDiscussion {
     return $self->{NAV_MAP}->hasDiscussion($self->symb());      return $self->{NAV_MAP}->hasDiscussion($self->symb());
 }  }
   
   sub last_post_time {
       my $self = shift;
       return $self->{NAV_MAP}->last_post_time($self->symb());
   }
   
   sub unread_discussion {
       my $self = shift;
       return $self->{NAV_MAP}->unread_discussion($self->symb());
   }
   
 sub getFeedback {  sub getFeedback {
     my $self = shift;      my $self = shift;
     my $source = $self->src();      my $source = $self->src();
Line 4178  sub countResponses { Line 4266  sub countResponses {
 sub responseTypes {  sub responseTypes {
     my $self = shift;      my $self = shift;
     my %responses;      my %responses;
     foreach my $part ($self->parts()) {      foreach my $part (@{$self->parts()}) {
         foreach my $responsetype ($self->responseType($part)) {          foreach my $responsetype ($self->responseType($part)) {
             $responses{$responsetype}++ if (defined($responsetype));              $responses{$responsetype}++ if (defined($responsetype));
         }          }

Removed from v.1.364  
changed lines
  Added in v.1.371


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