Diff for /loncom/xml/londefdef.pm between versions 1.442 and 1.447

version 1.442, 2013/01/04 05:30:52 version 1.447, 2013/09/26 22:03:36
Line 572  sub start_body { Line 572  sub start_body {
     if ($env{'request.state'} eq 'construct') {      if ($env{'request.state'} eq 'construct') {
         my $url=&Apache::lonnet::hreflocation('',$env{'request.filename'});          my $url=&Apache::lonnet::hreflocation('',$env{'request.filename'});
         &Apache::lonhtmlcommon::add_breadcrumb({          &Apache::lonhtmlcommon::add_breadcrumb({
             'text'  => 'Construction Space',              'text'  => 'Authoring Space',
             'href'  => &Apache::loncommon::authorspace($url),              'href'  => &Apache::loncommon::authorspace($url),
         });          });
         &Apache::lonhtmlcommon::add_breadcrumb({          &Apache::lonhtmlcommon::add_breadcrumb({
Line 599  sub start_body { Line 599  sub start_body {
             $header=&Apache::lonmenu::constspaceform();              $header=&Apache::lonmenu::constspaceform();
         }          }
         if ($env{'request.state'} ne 'published') {          if ($env{'request.state'} ne 'published') {
             $header.=&edit_controls();              unless ($env{'form.inhibitmenu'} eq 'yes') {
                   $header.=&edit_controls();
               }
         }          }
         if ($env{'request.state'} eq 'construct') {          if ($env{'request.state'} eq 'construct') {
             $currentstring.=&Apache::loncommon::head_subbox(              unless ($env{'form.inhibitmenu'} eq 'yes') {
                                 &Apache::loncommon::CSTR_pageheader()                  $currentstring.=&Apache::loncommon::head_subbox(
                                .$header);                                      &Apache::loncommon::CSTR_pageheader()
                                      .$header);
               }
         } elsif ($env{'request.state'} eq 'edit') {          } elsif ($env{'request.state'} eq 'edit') {
             $currentstring.=&Apache::loncommon::head_subbox($header);              $currentstring.=&Apache::loncommon::head_subbox($header);
         }          }
Line 633  sub edit_controls { Line 637  sub edit_controls {
     if (($env{'request.course.id'}) && ($env{'form.forceedit'})) {      if (($env{'request.course.id'}) && ($env{'form.forceedit'})) {
         my $url=&Apache::lonnet::hreflocation('',$env{'request.filename'});          my $url=&Apache::lonnet::hreflocation('',$env{'request.filename'});
         if ($url =~ /\.html?$/i) {          if ($url =~ /\.html?$/i) {
               my ($cdom,$cnum);
             if ($env{'request.course.id'}) {              if ($env{'request.course.id'}) {
                   $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
                   $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
                 if ($env{'request.filename'} =~ m{/userfiles/supplemental/default|\d+/}) {                  if ($env{'request.filename'} =~ m{/userfiles/supplemental/default|\d+/}) {
                     if (&Apache::lonnet::is_course_upload($env{'request.filename'},                      if (&Apache::lonnet::is_course_upload($env{'request.filename'},
                         $env{'course.'.$env{'request.course.id'}.'.num'},                                                            $cnum,$cdom)) {
                         $env{'course.'.$env{'request.course.id'}.'.domain'})) {  
                         &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},                          &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
                                                                 ['folderpath','title']);                                                                  ['folderpath','title']);
                     }                      }
                 }                  }
             }              }
             my ($symb,$itemtitle,$displayfile) =               my ($symb,$itemtitle,$displayfile,$caller);
                 &Apache::lonxml::get_courseupload_hierarchy($url,              if ($url =~ m{^/uploaded/$cdom/$cnum/portfolio/syllabus/}) {
                                                             $env{'form.folderpath'},                  $itemtitle = &mt('Syllabus');
                                                             $env{'form.title'});                  $caller = "/public/$cdom/$cnum/syllabus";
             if (($symb ne '') || ($env{'httpref.'.$url} ne '')) {              } else {
                   $caller = $url;
                   ($symb,$itemtitle,$displayfile) =
                       &Apache::lonxml::get_courseupload_hierarchy($url,
                                                                   $env{'form.folderpath'},
                                                                   $env{'form.title'});
               }
               if (($symb ne '') || ($env{'httpref.'.$url} ne '') ||
                   ($url =~ m{^/uploaded/$cdom/$cnum/portfolio/syllabus/})) {
                   $result .= (' ' x 3).                    $result .= (' ' x 3).
                              &Apache::lonhtmlcommon::dependencies_button()."\n".                               &Apache::lonhtmlcommon::dependencies_button()."\n".
                              &Apache::lonhtmlcommon::dependencycheck_js($symb,                               &Apache::lonhtmlcommon::dependencycheck_js($symb,
                                  $itemtitle,$url,$env{'form.folderpath'},$url)."\n";                                   $itemtitle,$url,$env{'form.folderpath'},$caller)."\n";
             }              }
         }          }
     }      }
Line 1714  sub start_a { Line 1728  sub start_a {
                     if (!&Apache::lonnet::allowed('bre',$linkurl)) {                      if (!&Apache::lonnet::allowed('bre',$linkurl)) {
                         if (&Apache::lonnet::is_on_map($url)) {                          if (&Apache::lonnet::is_on_map($url)) {
                             &Apache::lonxml::extlink($linkurl);                              &Apache::lonxml::extlink($linkurl);
                           } elsif ($env{'request.course.id'}) {
                               my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
                               my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
                               if ($linkurl =~ m{^([^/]|/uploaded/$cdom/$cnum/docs/)}) {
                                   my $cleanhref = &Apache::londefdef::clean_docs_httpref($linkurl,$url,$cdom,$cnum);
                                   if ($cleanhref) {
                                       &Apache::lonxml::extlink($cleanhref);
                                   }
                               }
                         }                          }
                     }                      }
                 }                  }
Line 3560  sub start_iframe { Line 3583  sub start_iframe {
     my ($target,$token) = @_;      my ($target,$token) = @_;
     my $currentstring = '';      my $currentstring = '';
     if ($target eq 'web' || $target eq 'webgrade') {      if ($target eq 'web' || $target eq 'webgrade') {
  $currentstring = $token->[4];               my ($src,$url,$query);
     }           if ($token->[2]->{'src'}) {
               $src = $token->[2]->{'src'};
           } elsif ($token->[2]->{'SRC'}) {
               $src = $token->[2]->{'SRC'};
           }
           if ($src) {
               ($url,$query) = ($src =~ /^([^?]+)\??([^?]*)$/);
               if ($query =~ /inhibitmenu=yes/) {
                   $currentstring = $token->[4];
               } else {
                   my $inhibit;
                   if ($url =~ m{^[^/.].*\.x?html?$}) {
                       $inhibit = 1;
                   } elsif ($url =~ m{^/(uploaded|res)/.*\.x?html?$}) {
                       $inhibit = 1;
                   }
                   if ($inhibit) {
                       $currentstring = '<iframe ';
                       foreach my $attrib (@{$token->[3]}) {
                           if (lc($attrib) eq 'src') {
                               if ($query) {
                                   $query.='&amp;inhibitmenu=yes';
                               } else {
                                   $query = 'inhibitmenu=yes';
                               } 
                               $currentstring .= 'src="'.$url.'?'.$query.'" ';
                           } else {
                               $currentstring .= lc($attrib).'="'.$token->[2]->{$attrib}.'" ';
                           }
                       }
                       $currentstring =~ s/\s+$//;
                       $currentstring .= '>';
                   } else {
                       $currentstring = $token->[4];
                   }
                   if (($url !~ m{^https?://}) && ($env{'request.course.id'})) {
                       my $docuri = &Apache::lonnet::hreflocation('',$env{'request.filename'});
                       my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
                       my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
                       if ($url =~ m{^([^/]|/uploaded/)}) {
                           my $cleanhref = &Apache::londefdef::clean_docs_httpref($url,$docuri,$cdom,$cnum);
                           if ($cleanhref) {
                               &Apache::lonxml::extlink($cleanhref);
                           }
                       } elsif (($url =~ m{/res/$LONCAPA::domain_re/}) && ($docuri =~ m{^\Q/uploaded/$cdom/$cnum/docs/\E})) {
                           if (!&Apache::lonnet::allowed('bre',$url)) {
                               if (&Apache::lonnet::is_on_map($url)) {
                                   &Apache::lonxml::extlink($url);
                               }
                           }
                       }
                   }
               }
           } else {
               $currentstring = $token->[4];
           }
       }
     return $currentstring;      return $currentstring;
 }  }
   
Line 4509  sub latex_header { Line 4588  sub latex_header {
   
 }  }
   
   sub clean_docs_httpref {
       my ($href,$docuri,$cdom,$cnum) = @_;
       if ($docuri eq '') {
           &Apache::lonnet::hreflocation('',$env{'request.filename'});
       }
       if ($cdom eq '') {
           $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
       }
       if ($cnum eq '') {
           $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
       }
       my $cleanhref;
       if ($docuri =~ m{^(\Q/uploaded/$cdom/$cnum/docs/\E)(.+/)[^/]+$}) {
           my $prefix = $1;
           my $relpath = $2;
           my ($hrefpath,$fname);
           if ($href =~ m{^/}) {
               if ($href =~ m{^\Q$prefix\E(.+/)([^/]+)$}) {
                   $hrefpath = $1;
                   $fname = $2;
               } else {
                   return $cleanhref;
               }
           } else {
               (my $path,$fname) = ($href =~ m{^(.+)/([^/]*)$});
               $hrefpath = $relpath.$path;
           }
           if ($fname ne '') {
               my $cleanrelpath;
               foreach my $dir (split(/\//,$hrefpath)) {
                   next if ($dir eq '.');
                   if ($dir eq '..') {
                       $cleanrelpath =~ s{([^/]+/)$}{};
                   } else {
                       $cleanrelpath .= $dir.'/';
                   }
               }
               $cleanrelpath =~ s{/$}{};
               if ($cleanrelpath ne '') {
                   $cleanhref = $prefix.'/'.$cleanrelpath.'/'.$fname;
               } else {
                   $cleanhref = $prefix.'/'.$fname;
               }
           }
       }
       return $cleanhref;
   }
   
 =pod  =pod
   
 =head1 NAME  =head1 NAME
Line 4603  described at http://www.lon-capa.org. Line 4730  described at http://www.lon-capa.org.
         I'm in a table....          I'm in a table....
       }        }
   
   =item clean_docs_httpref($href,$docuri,$cdom,$cnum)
           HTML pages uploaded to a course which contain dependencies either from iframes,
           javascript files or objects (FlashPlayerSwf, MediaSrc, XMPSrc, ConfigurationSrc,
           and PosterImageSrc) for which dependency is another file uploaded to the same
           course.
   
           Required input: 
           href - dependency (either a relative URL, or an absolute URL)
           Optional inputs:
           docuri - URL of HTML page containing the dependency
           cdom - Course domain
           cnum - CourseID
   
           Output:
           returns an absolute URL constructed from the href provided, and the calling context.
           (this will be null, if the URL does not begin: /uploaded/$cdom/$cnum/docs/).
   
 =back  =back
   

Removed from v.1.442  
changed lines
  Added in v.1.447


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