Diff for /loncom/interface/lonsource.pm between versions 1.25 and 1.26

version 1.25, 2011/10/25 14:28:13 version 1.26, 2011/10/25 19:11:52
Line 50  sub make_link { Line 50  sub make_link {
 }  }
   
 sub stage_2 {  sub stage_2 {
     my ($r, $filename, $author, $listname) = @_;      my ($r, $filename, $listname) = @_;
     my ($uname, $udom) = &Apache::loncacc::constructaccess('/~'.$author.'/',$r->dir_config('lonDefDomain'));      my ($author)=($filename=~/\/res\/[^\/]+\/([^\/]+)\//);
     $r->print(&Apache::loncommon::start_page('Copy Problem Source Code to Construction Space')      $r->print(&Apache::loncommon::start_page('Copy Problem Source Code to Construction Space')
              .&mt('Please enter the directory that you would like the source code to go into.')               .&mt('Please enter the directory that you would like the source code to go into.')
              .'<p>'               .'<p>'
Line 68  sub stage_2 { Line 68  sub stage_2 {
     return OK;      return OK;
 }  }
   
   sub copy_author {
 sub copy_stage {  
     my ($r, $filename, $listname, $newpath) = @_;  
   
 #Figure out if we are author or co-author  
     my $role;      my $role;
     my $domain;      my $domain;
     my $author_name;      my $author_name;
Line 83  sub copy_stage { Line 79  sub copy_stage {
         $domain = $env{'user.domain'};          $domain = $env{'user.domain'};
         $author_name = $env{'user.name'};          $author_name = $env{'user.name'};
     }      }
       return ($role,$author_name,$domain);
   }
   
   
   sub copy_stage {
       my ($r, $filename, $listname, $newpath) = @_;
   
   #Figure out if we are author or co-author
       my ($role,$author_name,$domain)=&copy_author();
   
   # Construct path to copy and filter out any possibly nasty stuff
     my $path_to_new_file = '/home/httpd/html/priv/'.$domain.'/'.$author_name.'/'.$newpath.'/'.$listname;      my $path_to_new_file = '/home/httpd/html/priv/'.$domain.'/'.$author_name.'/'.$newpath.'/'.$listname;
       $path_to_new_file=~s/\.\.//g;
       $path_to_new_file=~s/\~//g;
       $path_to_new_file=~s/\/+/\//g;
   
 #Just checking again for access as we want to make sure that it is really ok now that we have the real path  #Just checking again for access as we want to make sure that it is really ok now that we have the real path
   
     my ($uname,$udom)= &Apache::loncacc::constructaccess($path_to_new_file);      my ($uname,$udom)= &Apache::loncacc::constructaccess($path_to_new_file);
Line 96  sub copy_stage { Line 106  sub copy_stage {
  return;   return;
     }      }
   
   
     #allowed      #allowed
     $r->print(&Apache::loncommon::start_page('Copying Source'));      $r->print(&Apache::loncommon::start_page('Copying Source'));
     my $result = &Apache::loncfile::exists($uname, $udom, $path_to_new_file);      my $result = &Apache::loncfile::exists($uname, $udom, $path_to_new_file);
     $r->print($result);      $r->print($result);
     if(($result) && ($result =~ m|published|) ) {      if(($result) && ($result =~ m|published|) ) {
  &delete_copy_file($r, $author_name, $newpath, $filename, $path_to_new_file, '1');   &delete_copy_file($r, $newpath, $filename, $path_to_new_file, '1');
     } elsif(($result) && ($result =~ m|exists!|)) {      } elsif(($result) && ($result =~ m|exists!|)) {
  &confirm($r, $author_name, $newpath, $filename, $path_to_new_file);   &confirm($r, $newpath, $filename, $path_to_new_file);
     } else {      } else {
  &copy_file($r, $author_name, $newpath, $filename, $path_to_new_file);   &copy_file($r, $newpath, $filename, $path_to_new_file);
     }      }
           
     $r->print(&Apache::loncommon::end_page());      $r->print(&Apache::loncommon::end_page());
 }  }
   
 sub confirm {  sub confirm {
     my ($r, $author_name, $newpath, $filename, $path_to_new_file) = @_;      my ($r, $newpath, $filename, $path_to_new_file) = @_;
     $r->print("<b>Press delete to remove file and replace it with a copy of the source you are viewing</b><br /><br / >");      $r->print("<b>Press delete to remove file and replace it with a copy of the source you are viewing</b><br /><br / >");
     $r->print('<form name="delete_confirm" action="/adm/source" target="_parent" method="post">      $r->print('<form name="delete_confirm" action="/adm/source" target="_parent" method="post">
               <input type="hidden" name="filename" value="'.$filename.'" />                <input type="hidden" name="filename" value="'.$filename.'" />
               <input type="hidden" name="path" value="'.$path_to_new_file.'" />                <input type="hidden" name="path" value="'.$path_to_new_file.'" />
               <input type="hidden" name="author" value="'.$author_name.'" />  
               <input type="hidden" name="newpath" value="'.$newpath.'" />                <input type="hidden" name="newpath" value="'.$newpath.'" />
               <input type="hidden" name="action" value="delete_confirm" />                <input type="hidden" name="action" value="delete_confirm" />
   
Line 127  sub confirm { Line 135  sub confirm {
 }  }
   
 sub delete_copy_file {  sub delete_copy_file {
     my ($r, $author_name, $newpath, $filename, $path_to_new_file, $type) = @_;      my ($r, $newpath, $filename, $path_to_new_file, $type) = @_;
     if($type eq '1') {      if($type eq '1') {
         $r->print('<p><span class="LC_warning">'          $r->print('<p><span class="LC_warning">'
                  .&mt('Cannot delete non-obsolete published file.')                   .&mt('Cannot delete non-obsolete published file.')
Line 147  sub delete_copy_file { Line 155  sub delete_copy_file {
             $r->print('<p class="LC_error">'.&mt('No such file').'</p></form>');              $r->print('<p class="LC_error">'.&mt('No such file').'</p></form>');
             return 0;              return 0;
         }          }
         &copy_file($r, $author_name, $newpath, $filename, $path_to_new_file);          &copy_file($r, $newpath, $filename, $path_to_new_file);
     }      }
 }  }
   
 sub copy_file {  sub copy_file {
     my ($r, $author_name, $newpath, $filename, $path_to_new_file) = @_;      my ($r, $newpath, $filename, $path_to_new_file) = @_;
     $r->print("<b>Creating directories</b>");      $r->print("<b>Creating directories</b>");
     my $path = '/home/'.$author_name.'/public_html/';  
   #Figure out if we are author or co-author
       my ($role,$author_name,$domain)=&copy_author();
   
       my $path = '/home/httpd/html/priv/'.$domain.'/'.$author_name.'/';
     my @directories = split(/\//,$newpath);      my @directories = split(/\//,$newpath);
   
     foreach my $now_checking (@directories) {      foreach my $now_checking (@directories) {
         if($now_checking ne '') {          if($now_checking ne '') {
             $path = $path.'/'.$now_checking;              $path = $path.'/'.$now_checking;
Line 244  sub handler { Line 257  sub handler {
     $r->send_http_header;      $r->send_http_header;
   
     if ($env{'form.action'} eq 'stage2') {      if ($env{'form.action'} eq 'stage2') {
         my $author = &Apache::lonnet::metadata($filename,'authorspace');          &stage_2($r, $filename,$listname);
  #strip the domain of the author name  
  if ($author =~ /:/) {  
     ($author) = split(/:/,$author);  
  } else {  
     ($author) = split(/@/,$author);  
  }  
         &stage_2($r, $env{'form.filename'}, $author, $listname);  
     } elsif($env{'form.action'} eq 'copy_stage') {      } elsif($env{'form.action'} eq 'copy_stage') {
         &copy_stage($r, $filename,$env{'form.listname'},$env{'form.newpath'});          &copy_stage($r, $filename,$env{'form.listname'},$env{'form.newpath'});
     } elsif($env{'form.action'} eq 'delete_confirm') {      } elsif($env{'form.action'} eq 'delete_confirm') {
         &delete_copy_file($r, $env{'form.author'}, $env{'form.newpath'}, $env{'form.filename'}, $env{'form.path'}, '0');          &delete_copy_file($r, $env{'form.newpath'}, $env{'form.filename'}, $env{'form.path'}, '0');
     } else {      } else {
  $r->print('<form name="copy" action="/adm/source" target="_parent" method="post">   $r->print('<form name="copy" action="/adm/source" target="_parent" method="post">
                   <input type="button" value="'.&mt('Close Window').'" name="close" onclick="window.close()" />                    <input type="button" value="'.&mt('Close Window').'" name="close" onclick="window.close()" />

Removed from v.1.25  
changed lines
  Added in v.1.26


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