Diff for /loncom/interface/lonnavmaps.pm between versions 1.349.2.9 and 1.350

version 1.349.2.9, 2006/05/15 23:51:34 version 1.350, 2005/11/22 02:24:50
Line 57  my %statusIconMap = Line 57  my %statusIconMap =
      $resObj->CLOSED       => '',       $resObj->CLOSED       => '',
      $resObj->OPEN         => 'navmap.open.gif',       $resObj->OPEN         => 'navmap.open.gif',
      $resObj->CORRECT      => 'navmap.correct.gif',       $resObj->CORRECT      => 'navmap.correct.gif',
      $resObj->PARTIALLY_CORRECT      => 'navmap.partial.gif',       $resObj->PARTIALLY_CORRECT      => 'navmap.ellipsis.gif',
      $resObj->INCORRECT    => 'navmap.wrong.gif',       $resObj->INCORRECT    => 'navmap.wrong.gif',
      $resObj->ATTEMPTED    => 'navmap.ellipsis.gif',       $resObj->ATTEMPTED    => 'navmap.ellipsis.gif',
      $resObj->ERROR        => ''       $resObj->ERROR        => ''
Line 530  sub getDescription { Line 530  sub getDescription {
     if ($status == $res->PAST_DUE_NO_ANSWER) {      if ($status == $res->PAST_DUE_NO_ANSWER) {
         return &mt("Was due")." " . timeToHumanString($res->duedate($part),'end');          return &mt("Was due")." " . timeToHumanString($res->duedate($part),'end');
     }      }
     if (($status == $res->ANSWER_OPEN || $status == $res->PARTIALLY_CORRECT)      if ($status == $res->ANSWER_OPEN || $status == $res->PARTIALLY_CORRECT) {
  && $res->handgrade($part) ne 'yes') {  
         return &mt("Answer available");          return &mt("Answer available");
     }      }
     if ($status == $res->EXCUSED) {      if ($status == $res->EXCUSED) {
Line 2231  sub generate_email_discuss_status { Line 2230  sub generate_email_discuss_status {
  if ((!$emailstatus{$msgid}) || ($emailstatus{$msgid} eq 'new')) {   if ((!$emailstatus{$msgid}) || ($emailstatus{$msgid} eq 'new')) {
     my $plain=      my $plain=
  &Apache::lonnet::unescape(&Apache::lonnet::unescape($msgid));   &Apache::lonnet::unescape(&Apache::lonnet::unescape($msgid));
     if ($plain=~/ \[([^\]]+)\]\:/) {      if ($plain=~/(Error|Feedback) \[([^\]]+)\]/) {
  my $url=$1;   my ($what,$url)=($1,$2);
  if ($plain=~/\:Error \[/) {   if ($what eq 'Error') {
     $error{$url}.=','.$msgid;       $error{$url}.=','.$msgid; 
  } else {   } else {
     $feedback{$url}.=','.$msgid;      $feedback{$url}.=','.$msgid;
Line 2266  sub get_user_data { Line 2265  sub get_user_data {
     $self->{RETRIEVED_USER_DATA} = 1;      $self->{RETRIEVED_USER_DATA} = 1;
 }  }
   
 sub get_discussion_data {  
     my $self = shift;  
     if ($self->{RETRIEVED_DISCUSSION_DATA}) {  
          return  $self->{DISCUSSION_DATA};  
     }  
                                                                                   
     my $cid=$env{'request.course.id'};  
     my $cdom=$env{'course.'.$cid.'.domain'};  
     my $cnum=$env{'course.'.$cid.'.num'};  
                                                                                   
     # Retrieve discussion data for resources in course  
     my %discussion_data = &Apache::lonnet::dump($cid,$cdom,$cnum);  
                                                                                   
     $self->{DISCUSSION_DATA} = \%discussion_data;  
     $self->{RETRIEVED_DISCUSSION_DATA} = 1;  
     return $self->{DISCUSSION_DATA};  
 }  
   
   
 # Internal function: Takes a key to look up in the nav hash and implements internal  # Internal function: Takes a key to look up in the nav hash and implements internal
 # memory caching of that key.  # memory caching of that key.
 sub navhash {  sub navhash {
Line 2495  sub parmval_real { Line 2475  sub parmval_real {
   
     my $cid=$env{'request.course.id'};      my $cid=$env{'request.course.id'};
     my $csec=$env{'request.course.sec'};      my $csec=$env{'request.course.sec'};
       my $cgroup='';
       my @cgrps=split(/:/,$env{'request.course.groups'});
       if (@cgrps > 0) {
           @cgrps = sort(@cgrps);
           $cgroup = $cgrps[0];
       } 
     my $uname=$env{'user.name'};      my $uname=$env{'user.name'};
     my $udom=$env{'user.domain'};      my $udom=$env{'user.domain'};
   
Line 2502  sub parmval_real { Line 2488  sub parmval_real {
     my $result='';      my $result='';
   
     my ($mapname,$id,$fn)=&Apache::lonnet::decode_symb($symb);      my ($mapname,$id,$fn)=&Apache::lonnet::decode_symb($symb);
     $mapname = &Apache::lonnet::deversion($mapname);  
 # ----------------------------------------------------- Cascading lookup scheme  # ----------------------------------------------------- Cascading lookup scheme
     my $rwhat=$what;      my $rwhat=$what;
     $what=~s/^parameter\_//;      $what=~s/^parameter\_//;
Line 2512  sub parmval_real { Line 2498  sub parmval_real {
     my $mapparm=$mapname.'___(all).'.$what;      my $mapparm=$mapname.'___(all).'.$what;
     my $usercourseprefix=$cid;      my $usercourseprefix=$cid;
   
       my $grplevel=$usercourseprefix.'.['.$cgroup.'].'.$what;
       my $grplevelr=$usercourseprefix.'.['.$cgroup.'].'.$symbparm;
       my $grplevelm=$usercourseprefix.'.['.$cgroup.'].'.$mapparm;
   
     my $seclevel= $usercourseprefix.'.['.$csec.'].'.$what;      my $seclevel= $usercourseprefix.'.['.$csec.'].'.$what;
     my $seclevelr=$usercourseprefix.'.['.$csec.'].'.$symbparm;      my $seclevelr=$usercourseprefix.'.['.$csec.'].'.$symbparm;
     my $seclevelm=$usercourseprefix.'.['.$csec.'].'.$mapparm;      my $seclevelm=$usercourseprefix.'.['.$csec.'].'.$mapparm;
Line 2532  sub parmval_real { Line 2522  sub parmval_real {
     }      }
   
 # ------------------------------------------------------- second, check course  # ------------------------------------------------------- second, check course
       if ($cgroup ne '' and defined($courseopt)) {
           if (defined($$courseopt{$grplevelr})) { return $$courseopt{$grplevelr}; }
           if (defined($$courseopt{$grplevelm})) { return $$courseopt{$grplevelm}; }
           if (defined($$courseopt{$grplevel})) { return $$courseopt{$grplevel}; }
       }
   
     if ($csec and defined($courseopt)) {      if ($csec and defined($courseopt)) {
         if (defined($$courseopt{$seclevelr})) { return $$courseopt{$seclevelr}; }          if (defined($$courseopt{$seclevelr})) { return $$courseopt{$seclevelr}; }
         if (defined($$courseopt{$seclevelm})) { return $$courseopt{$seclevelm}; }          if (defined($$courseopt{$seclevelm})) { return $$courseopt{$seclevelm}; }
Line 2582  sub parmval_real { Line 2578  sub parmval_real {
   
 =pod  =pod
   
 =item * B<getResourceByUrl>(url,multiple):  =item * B<getResourceByUrl>(url):
   
 Retrieves a resource object by URL of the resource, unless the optional  Retrieves a resource object by URL of the resource. If passed a
 multiple parameter is included in wahich caes an array of resource   resource object, it will simply return it, so it is safe to use this
 objects is returned. If passed a resource object, it will simply return    method in code like "$res = $navmap->getResourceByUrl($res)", if
 it, so it is safe to use this method in code like  you're not sure if $res is already an object, or just a URL. If the
 "$res = $navmap->getResourceByUrl($res)"  resource appears multiple times in the course, only the first instance
 if you're not sure if $res is already an object, or just a URL. If the  will be returned. As a result, this is probably useful only for maps.
 resource appears multiple times in the course, only the first instance   
 will be returned (useful for maps), unless the multiple parameter has  
 been included, in which case all instances are returned in an array.  
   
 =item * B<retrieveResources>(map, filterFunc, recursive, bailout, showall):  =item * B<retrieveResources>(map, filterFunc, recursive, bailout, showall):
   
Line 2627  Convience method for Line 2620  Convience method for
 which will tell whether the map has resources matching the description  which will tell whether the map has resources matching the description
 in the filter function.  in the filter function.
   
 =item * B<usedVersion>(url):  
   
 Retrieves version infomation for a url. Returns the version (a number, or   
 the string "mostrecent") for resources which have version information in    
 the big hash.  
       
 =cut  =cut
   
   
 sub getResourceByUrl {  sub getResourceByUrl {
     my $self = shift;      my $self = shift;
     my $resUrl = shift;      my $resUrl = shift;
     my $multiple = shift;  
   
     if (ref($resUrl)) { return $resUrl; }      if (ref($resUrl)) { return $resUrl; }
   
     $resUrl = &Apache::lonnet::clutter($resUrl);      $resUrl = &Apache::lonnet::clutter($resUrl);
     my $resId = $self->{NAV_HASH}->{'ids_' . $resUrl};      my $resId = $self->{NAV_HASH}->{'ids_' . $resUrl};
     if (!$resId) { return ''; }      if ($resId =~ /,/) {
     if ($multiple) {          $resId = (split (/,/, $resId))[0];
         my @resources = ();  
         my @resIds = split (/,/, $resId);  
         foreach my $id (@resIds) {  
             my $resourceId = $self->getById($id);  
             if ($resourceId) {   
                 push(@resources,$resourceId);  
             }  
         }  
         return @resources;  
     } else {  
         if ($resId =~ /,/) {  
             $resId = (split (/,/, $resId))[0];  
         }  
         return $self->getById($resId);  
     }      }
       if (!$resId) { return ''; }
       return $self->getById($resId);
 }  }
   
 sub retrieveResources {  sub retrieveResources {
Line 2729  sub hasResource { Line 2703  sub hasResource {
     return scalar($self->retrieveResources($map, $filterFunc, $recursive, 1, $showall)) > 0;      return scalar($self->retrieveResources($map, $filterFunc, $recursive, 1, $showall)) > 0;
 }  }
   
 sub usedVersion {  
     my $self = shift;  
     my $linkurl = shift;  
     return $self->navhash("version_$linkurl");  
 }  
   
 1;  1;
   
 package Apache::lonnavmaps::iterator;  package Apache::lonnavmaps::iterator;
Line 3641  sub condition { Line 3609  sub condition {
 }  }
 sub condval {  sub condval {
     my $self=shift;      my $self=shift;
     my ($pathname,$filename) =       my $uri=&Apache::lonnet::deversion(&Apache::lonnet::declutter($self->src()));
  &Apache::lonnet::split_uri_for_cond($self->src());      my ($pathname,$filename)=($uri=~m|(.*)/([^/]*)|);
       $pathname=~s/^adm\/wrapper\///;    
   
     my $match=($env{'acc.res.'.$env{'request.course.id'}.'.'.$pathname}=~      my $match=($env{'acc.res.'.$env{'request.course.id'}.'.'.$pathname}=~
        /\&\Q$filename\E\:([\d\|]+)\&/);         /\&\Q$filename\E\:([\d\|]+)\&/);
Line 3728  sub contains_problem { Line 3697  sub contains_problem {
 }  }
 sub is_sequence {  sub is_sequence {
     my $self=shift;      my $self=shift;
       my $src = $self->src();
     return $self->navHash("is_map_", 1) &&       return $self->navHash("is_map_", 1) && 
  $self->navHash("map_type_" . $self->map_pc()) eq 'sequence';   $self->navHash("map_type_" . $self->map_pc()) eq 'sequence';
 }  }
Line 3797  Returns a string with the type of the ma Line 3767  Returns a string with the type of the ma
 sub map_finish {  sub map_finish {
     my $self = shift;      my $self = shift;
     my $src = $self->src();      my $src = $self->src();
     $src = &Apache::lonnet::clutter($src);      $src = Apache::lonnet::clutter($src);
     my $res = $self->navHash("map_finish_$src", 0);      my $res = $self->navHash("map_finish_$src", 0);
     $res = $self->{NAV_MAP}->getById($res);      $res = $self->{NAV_MAP}->getById($res);
     return $res;      return $res;
Line 3810  sub map_pc { Line 3780  sub map_pc {
 sub map_start {  sub map_start {
     my $self = shift;      my $self = shift;
     my $src = $self->src();      my $src = $self->src();
     $src = &Apache::lonnet::clutter($src);      $src = Apache::lonnet::clutter($src);
     my $res = $self->navHash("map_start_$src", 0);      my $res = $self->navHash("map_start_$src", 0);
     $res = $self->{NAV_MAP}->getById($res);      $res = $self->{NAV_MAP}->getById($res);
     return $res;      return $res;

Removed from v.1.349.2.9  
changed lines
  Added in v.1.350


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