Diff for /loncom/interface/loncommon.pm between versions 1.1083 and 1.1087

version 1.1083, 2012/06/30 23:02:20 version 1.1087, 2012/07/21 22:10:23
Line 9316  sub get_env_multiple { Line 9316  sub get_env_multiple {
 sub ask_for_embedded_content {  sub ask_for_embedded_content {
     my ($actionurl,$state,$allfiles,$codebase,$args)=@_;      my ($actionurl,$state,$allfiles,$codebase,$args)=@_;
     my (%subdependencies,%dependencies,%mapping,%existing,%newfiles,%pathchanges,      my (%subdependencies,%dependencies,%mapping,%existing,%newfiles,%pathchanges,
         %currsubfile,%unused);          %currsubfile,%unused,$rem);
     my $counter = 0;      my $counter = 0;
     my $numnew = 0;      my $numnew = 0;
     my $numremref = 0;      my $numremref = 0;
Line 9329  sub ask_for_embedded_content { Line 9329  sub ask_for_embedded_content {
     my $heading = &mt('Upload embedded files');      my $heading = &mt('Upload embedded files');
     my $buttontext = &mt('Upload');      my $buttontext = &mt('Upload');
   
       my $navmap;
       if ($env{'request.course.id'}) {
           $navmap = Apache::lonnavmaps::navmap->new();
       }
     if (($actionurl eq '/adm/portfolio') || ($actionurl eq '/adm/coursegrp_portfolio')) {      if (($actionurl eq '/adm/portfolio') || ($actionurl eq '/adm/coursegrp_portfolio')) {
         my $current_path='/';          my $current_path='/';
         if ($env{'form.currentpath'}) {          if ($env{'form.currentpath'}) {
Line 9358  sub ask_for_embedded_content { Line 9362  sub ask_for_embedded_content {
         if (ref($args) eq 'HASH') {          if (ref($args) eq 'HASH') {
             $url = $args->{'docs_url'};              $url = $args->{'docs_url'};
             $toplevel = $url;              $toplevel = $url;
               if ($args->{'context'} eq 'paste') {
                   ($cdom,$cnum) = ($url =~ m{^\Q/uploaded/\E($match_domain)/($match_courseid)/});
                   ($path) = 
                       ($toplevel =~ m{^(\Q/uploaded/$cdom/$cnum/\E(?:docs|supplemental)/(?:default|\d+)/\d+)/});
                   $fileloc = &Apache::lonnet::filelocation('',$toplevel);
                   $fileloc =~ s{^/}{};
               }
         }          }
     } elsif ($actionurl eq '/adm/dependencies') {      } elsif ($actionurl eq '/adm/dependencies')  {
         if ($env{'request.course.id'} ne '') {          if ($env{'request.course.id'} ne '') {
             $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};              $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
             $cnum =  $env{'course.'.$env{'request.course.id'}.'.num'};              $cnum =  $env{'course.'.$env{'request.course.id'}.'.num'};
Line 9367  sub ask_for_embedded_content { Line 9378  sub ask_for_embedded_content {
                 $url = $args->{'docs_url'};                  $url = $args->{'docs_url'};
                 $title = $args->{'docs_title'};                  $title = $args->{'docs_title'};
                 $toplevel = "/$url";                  $toplevel = "/$url";
                   ($rem) = ($toplevel =~ m{^(.+/)[^/]+$});
                 ($path) =                    ($path) =  
                     ($toplevel =~ m{^(\Q/uploaded/$cdom/$cnum/\E(?:docs|supplemental)/(?:default|\d+)/\d+)/});                      ($toplevel =~ m{^(\Q/uploaded/$cdom/$cnum/\E(?:docs|supplemental)/(?:default|\d+)/\d+)/});
                 $fileloc = &Apache::lonnet::filelocation('',$toplevel);                  $fileloc = &Apache::lonnet::filelocation('',$toplevel);
Line 9429  sub ask_for_embedded_content { Line 9441  sub ask_for_embedded_content {
                 my @subdir_list = grep(!/^\./,readdir($dir));                  my @subdir_list = grep(!/^\./,readdir($dir));
                 map {$currsubfile{$path}{$_} = 1;} @subdir_list;                  map {$currsubfile{$path}{$_} = 1;} @subdir_list;
             }              }
         } elsif ($actionurl eq '/adm/dependencies') {          } elsif (($actionurl eq '/adm/dependencies') ||
                    (($actionurl eq '/adm/coursedocs') && (ref($args) eq 'HASH') &&
                     ($args->{'context'} eq 'paste'))) {
             if ($env{'request.course.id'} ne '') {              if ($env{'request.course.id'} ne '') {
                 my ($dir) = ($fileloc =~ m{^(.+/)[^/]+$});                  my ($dir) = ($fileloc =~ m{^(.+/)[^/]+$});
                 if ($dir ne '') {                  if ($dir ne '') {
Line 9465  sub ask_for_embedded_content { Line 9479  sub ask_for_embedded_content {
                 if (ref($currsubfile{$path}) eq 'HASH') {                  if (ref($currsubfile{$path}) eq 'HASH') {
                     foreach my $file (keys(%{$currsubfile{$path}})) {                      foreach my $file (keys(%{$currsubfile{$path}})) {
                          unless ($subdependencies{$path}{$file}) {                           unless ($subdependencies{$path}{$file}) {
                                next if (($rem ne '') &&
                                         (($env{"httpref.$rem"."$path/$file"} ne '') ||
                                          (ref($navmap) &&
                                          (($navmap->getResourceByUrl($rem."$path/$file") ne '') ||
                                           (($file =~ /^(.*\.s?html?)\.bak$/i) &&
                                            ($navmap->getResourceByUrl($rem."$path/$1")))))));
                              $unused{$path.'/'.$file} = 1;                                $unused{$path.'/'.$file} = 1; 
                          }                           }
                     }                      }
Line 9487  sub ask_for_embedded_content { Line 9507  sub ask_for_embedded_content {
             my @dir_list = grep(!/^\./,readdir($dir));              my @dir_list = grep(!/^\./,readdir($dir));
             map {$currfile{$_} = 1;} @dir_list;              map {$currfile{$_} = 1;} @dir_list;
         }          }
     } elsif ($actionurl eq '/adm/dependencies') {      } elsif (($actionurl eq '/adm/dependencies') ||
                (($actionurl eq '/adm/coursedocs') && (ref($args) eq 'HASH') &&
                 ($args->{'context'} eq 'paste'))) {
         if ($env{'request.course.id'} ne '') {          if ($env{'request.course.id'} ne '') {
             my ($dir) = ($fileloc =~ m{^(.+/)[^/]+$});              my ($dir) = ($fileloc =~ m{^(.+/)[^/]+$});
             if ($dir ne '') {              if ($dir ne '') {
Line 9521  sub ask_for_embedded_content { Line 9543  sub ask_for_embedded_content {
         unless (($file eq $filename) ||          unless (($file eq $filename) ||
                 ($file eq $filename.'.bak') ||                  ($file eq $filename.'.bak') ||
                 ($dependencies{$file})) {                  ($dependencies{$file})) {
               if ($actionurl eq '/adm/dependencies') {
                   next if (($rem ne '') &&
                            (($env{"httpref.$rem".$file} ne '') ||
                             (ref($navmap) &&
                             (($navmap->getResourceByUrl($rem.$file) ne '') ||
                              (($file =~ /^(.*\.s?html?)\.bak$/i) &&
                               ($navmap->getResourceByUrl($rem.$1)))))));
               }
             $unused{$file} = 1;              $unused{$file} = 1;
         }          }
     }      }
       if (($actionurl eq '/adm/coursedocs') && (ref($args) eq 'HASH') &&
           ($args->{'context'} eq 'paste')) {
           $counter = scalar(keys(%existing));
           $numpathchg = scalar(keys(%pathchanges));
           return ($output,$counter,$numpathchg,\%existing); 
       }
     foreach my $embed_file (sort {lc($a) cmp lc($b)} keys(%newfiles)) {      foreach my $embed_file (sort {lc($a) cmp lc($b)} keys(%newfiles)) {
         if ($actionurl eq '/adm/dependencies') {          if ($actionurl eq '/adm/dependencies') {
             next if ($embed_file =~ m{^\w+://});              next if ($embed_file =~ m{^\w+://});
Line 9540  sub ask_for_embedded_content { Line 9576  sub ask_for_embedded_content {
             $numremref++;              $numremref++;
         } elsif ($args->{'error_on_invalid_names'}          } elsif ($args->{'error_on_invalid_names'}
             && $embed_file ne &Apache::lonnet::clean_filename($embed_file,{'keep_path' => 1,})) {              && $embed_file ne &Apache::lonnet::clean_filename($embed_file,{'keep_path' => 1,})) {
   
             $upload_output.='<span class="LC_warning">'.&mt('Invalid characters').'</span>';              $upload_output.='<span class="LC_warning">'.&mt('Invalid characters').'</span>';
             $numinvalid++;              $numinvalid++;
         } else {          } else {
Line 11028  function dependencyCheck(form,count,offs Line 11063  function dependencyCheck(form,count,offs
             document.getElementById('arc_depon_'+count).style.display='block';               document.getElementById('arc_depon_'+count).style.display='block'; 
             form.elements[depitem].options.length = 0;              form.elements[depitem].options.length = 0;
             form.elements[depitem].options[0] = new Option('Select','',true,true);              form.elements[depitem].options[0] = new Option('Select','',true,true);
             for (var i=1; i<count; i++) {              for (var i=1; i<=numitems; i++) {
                   if (i == count) {
                       continue;
                   }
                 var startelement = $startcount + (i-1) * 7;                  var startelement = $startcount + (i-1) * 7;
                 for (var j=1; j<6; j++) {                  for (var j=1; j<6; j++) {
                     if ((j != 2) && (j!= 4)) {                      if ((j != 2) && (j!= 4)) {
Line 11169  sub process_extracted_files { Line 11207  sub process_extracted_files {
     my (%referrer,%orphaned,%todelete,%todeletedir,%newdest,%newseqid);      my (%referrer,%orphaned,%todelete,%todeletedir,%newdest,%newseqid);
     if ($numitems) {      if ($numitems) {
         for (my $i=1; $i<=$numitems; $i++) {          for (my $i=1; $i<=$numitems; $i++) {
               next if ($env{'form.archive_'.$i} eq 'dependency');
             my $path = $env{'form.archive_content_'.$i};              my $path = $env{'form.archive_content_'.$i};
             if ($path =~ /^\Q$pathtocheck\E/) {              if ($path =~ /^\Q$pathtocheck\E/) {
                 if ($env{'form.archive_'.$i} eq 'discard') {                  if ($env{'form.archive_'.$i} eq 'discard') {
Line 11219  sub process_extracted_files { Line 11258  sub process_extracted_files {
                             my ($outtext,$errtext) =                              my ($outtext,$errtext) =
                                 &LONCAPA::map::storemap('/uploaded/'.$docudom.'/'.                                  &LONCAPA::map::storemap('/uploaded/'.$docudom.'/'.
                                                         $docuname.'/'.$folders{$outer}.                                                          $docuname.'/'.$folders{$outer}.
                                                         '.'.$containers{$outer},1);                                                          '.'.$containers{$outer},1,1);
                             $newseqid{$i} = $newidx;                              $newseqid{$i} = $newidx;
                             unless ($errtext) {                              unless ($errtext) {
                                 $result .=  '<li>'.&mt('Folder: [_1] added to course',$docstitle).'</li>'."\n";                                  $result .=  '<li>'.&mt('Folder: [_1] added to course',$docstitle).'</li>'."\n";
Line 11252  sub process_extracted_files { Line 11291  sub process_extracted_files {
                             my ($outtext,$errtext)=                              my ($outtext,$errtext)=
                                 &LONCAPA::map::storemap('/uploaded/'.$docudom.'/'.                                  &LONCAPA::map::storemap('/uploaded/'.$docudom.'/'.
                                                         $docuname.'/'.$folders{$outer}.                                                          $docuname.'/'.$folders{$outer}.
                                                         '.'.$containers{$outer},1);                                                          '.'.$containers{$outer},1,1);
                             unless ($errtext) {                              unless ($errtext) {
                                 if (-e "$prefix$dir/$docstype/$mapinner{$outer}/$newidx/$title") {                                  if (-e "$prefix$dir/$docstype/$mapinner{$outer}/$newidx/$title") {
                                     $result .= '<li>'.&mt('File: [_1] added to course',$docstitle).'</li>'."\n";                                      $result .= '<li>'.&mt('File: [_1] added to course',$docstitle).'</li>'."\n";
Line 11260  sub process_extracted_files { Line 11299  sub process_extracted_files {
                             }                              }
                         }                          }
                     }                      }
                 } elsif ($env{'form.archive_'.$i} eq 'dependency') {                  }
                     my ($title) = ($path =~ m{/([^/]+)$});              } else {
                     $referrer{$i} = $env{'form.archive_dependent_on_'.$i};                  $warning .= &mt('Item extracted from archive: [_1] has unexpected path.',$path).'<br />'; 
                     if ($env{'form.archive_'.$referrer{$i}} eq 'display') {              }
                         if (ref($dirorder{$i}) eq 'ARRAY') {          }
                             my ($itemidx,$fullpath,$relpath);          for (my $i=1; $i<=$numitems; $i++) {
               next unless ($env{'form.archive_'.$i} eq 'dependency');
               my $path = $env{'form.archive_content_'.$i};
               if ($path =~ /^\Q$pathtocheck\E/) {
                   my ($title) = ($path =~ m{/([^/]+)$});
                   $referrer{$i} = $env{'form.archive_dependent_on_'.$i};
                   if ($env{'form.archive_'.$referrer{$i}} eq 'display') {
                       if (ref($dirorder{$i}) eq 'ARRAY') {
                           my ($itemidx,$fullpath,$relpath);
                           if (ref($dirorder{$referrer{$i}}) eq 'ARRAY') {
                               my $container = $dirorder{$referrer{$i}}->[-1];
                             for (my $j=0; $j<@{$dirorder{$i}}; $j++) {                              for (my $j=0; $j<@{$dirorder{$i}}; $j++) {
                                 if (ref($dirorder{$referrer{$i}}) eq 'ARRAY') {                                  if ($dirorder{$i}->[$j] eq $container) {
                                     my $container = $dirorder{$referrer{$i}}->[-1];                                      $itemidx = $j;
                                     for (my $j=0; $j<@{$dirorder{$i}}; $j++) {  
                                         if ($dirorder{$i}->[$j] eq $container) {  
                                             $itemidx = $j;  
                                         }  
                                     }  
                                 }                                  }
                             }                              }
                             if ($itemidx ne '') {                          }
                                 if (grep(/^\Q$referrer{$i}\E$/,@archdirs)) {                          if ($itemidx eq '') {
                                     if ($mapinner{$referrer{$i}}) {                              $itemidx =  0;
                                         $fullpath = "$prefix$dir/$docstype/$mapinner{$referrer{$i}}";                          } 
                                         for (my $j=$itemidx; $j<@{$dirorder{$i}}; $j++) {                          if (grep(/^\Q$referrer{$i}\E$/,@archdirs)) {
                                             if (grep(/^\Q$dirorder{$i}->[$j]\E$/,@archdirs)) {                              if ($mapinner{$referrer{$i}}) {
                                                 unless (defined($newseqid{$dirorder{$i}->[$j]})) {                                  $fullpath = "$prefix$dir/$docstype/$mapinner{$referrer{$i}}";
                                                     $fullpath .= '/'.$titles{$dirorder{$i}->[$j]};                                  for (my $j=$itemidx; $j<@{$dirorder{$i}}; $j++) {
                                                     $relpath .= '/'.$titles{$dirorder{$i}->[$j]};                                      if (grep(/^\Q$dirorder{$i}->[$j]\E$/,@archdirs)) {
                                                     if (!-e $fullpath) {                                          unless (defined($newseqid{$dirorder{$i}->[$j]})) {
                                                         mkdir($fullpath,0755);                                              $fullpath .= '/'.$titles{$dirorder{$i}->[$j]};
                                                     }                                              $relpath .= '/'.$titles{$dirorder{$i}->[$j]};
                                                 }                                              if (!-e $fullpath) {
                                             } else {                                                  mkdir($fullpath,0755);
                                                 last;  
                                             }  
                                         }  
                                     }  
                                 } elsif ($newdest{$referrer{$i}}) {  
                                     $fullpath = $newdest{$referrer{$i}};  
                                     for (my $j=$itemidx; $j<@{$dirorder{$i}}; $j++) {  
                                         if ($env{'form.archive_'.$dirorder{$i}->[$j]} eq 'discard') {  
                                             $orphaned{$i} = $env{'form.archive_'.$dirorder{$i}->[$j]};  
                                             last;  
                                         } elsif (grep(/^\Q$dirorder{$i}->[$j]\E$/,@archdirs)) {  
                                             unless (defined($newseqid{$dirorder{$i}->[$j]})) {  
                                                 $fullpath .= '/'.$titles{$dirorder{$i}->[$j]};  
                                                 $relpath .= '/'.$titles{$dirorder{$i}->[$j]};  
                                                 if (!-e $fullpath) {  
                                                     mkdir($fullpath,0755);  
                                                 }  
                                             }                                              }
                                         } else {  
                                             last;  
                                         }                                          }
                                       } else {
                                           last;
                                     }                                      }
                                 }                                  }
                                 if ($fullpath ne '') {                              }
                                     if (-e "$prefix$path") {                          } elsif ($newdest{$referrer{$i}}) {
                                         system("mv $prefix$path $fullpath/$title");                              $fullpath = $newdest{$referrer{$i}};
                                     }                              for (my $j=$itemidx; $j<@{$dirorder{$i}}; $j++) {
                                     if (-e "$fullpath/$title") {                                  if ($env{'form.archive_'.$dirorder{$i}->[$j]} eq 'discard') {
                                         my $showpath;                                      $orphaned{$i} = $env{'form.archive_'.$dirorder{$i}->[$j]};
                                         if ($relpath ne '') {                                      last;
                                             $showpath = "$relpath/$title";                                  } elsif (grep(/^\Q$dirorder{$i}->[$j]\E$/,@archdirs)) {
                                         } else {                                      unless (defined($newseqid{$dirorder{$i}->[$j]})) {
                                             $showpath = "/$title";                                          $fullpath .= '/'.$titles{$dirorder{$i}->[$j]};
                                         }                                           $relpath .= '/'.$titles{$dirorder{$i}->[$j]};
                                         $result .= '<li>'.&mt('[_1] included as a dependency',$showpath).'</li>'."\n";                                          if (!-e $fullpath) {
                                     }                                               mkdir($fullpath,0755);
                                     unless ($ishome) {                                          }
                                         my $fetch = "$fullpath/$title";  
                                         $fetch =~ s/^\Q$prefix$dir\E//;   
                                         $prompttofetch{$fetch} = 1;  
                                     }                                      }
                                   } else {
                                       last;
                                 }                                  }
                             }                              }
                         }                          }
                     } elsif ($env{'form.archive_'.$referrer{$i}} eq 'discard') {                          if ($fullpath ne '') {
                         $warning .= &mt('[_1] is a dependency of [_2], which was discarded.',                              if (-e "$prefix$path") {
                                         $path,$env{'form.archive_content_'.$referrer{$i}}).'<br />';                                  system("mv $prefix$path $fullpath/$title");
                               }
                               if (-e "$fullpath/$title") {
                                   my $showpath;
                                   if ($relpath ne '') {
                                       $showpath = "$relpath/$title";
                                   } else {
                                       $showpath = "/$title";
                                   } 
                                   $result .= '<li>'.&mt('[_1] included as a dependency',$showpath).'</li>'."\n";
                               } 
                               unless ($ishome) {
                                   my $fetch = "$fullpath/$title";
                                   $fetch =~ s/^\Q$prefix$dir\E//; 
                                   $prompttofetch{$fetch} = 1;
                               }
                           }
                     }                      }
                   } elsif ($env{'form.archive_'.$referrer{$i}} eq 'discard') {
                       $warning .= &mt('[_1] is a dependency of [_2], which was discarded.',
                                       $path,$env{'form.archive_content_'.$referrer{$i}}).'<br />';
                 }                  }
             } else {              } else {
                 $warning .= &mt('Item extracted from archive: [_1] has unexpected path.',$path).'<br />';                   $warning .= &mt('Item extracted from archive: [_1] has unexpected path.',$path).'<br />'; 

Removed from v.1.1083  
changed lines
  Added in v.1.1087


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