--- loncom/interface/lonsource.pm 2014/02/11 15:49:15 1.32 +++ loncom/interface/lonsource.pm 2015/05/25 15:36:11 1.35 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Source Code handler # -# $Id: lonsource.pm,v 1.32 2014/02/11 15:49:15 bisitz Exp $ +# $Id: lonsource.pm,v 1.35 2015/05/25 15:36:11 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -52,7 +52,8 @@ sub make_link { sub stage_2 { my ($r, $filename, $listname) = @_; my ($author)=($filename=~/\/res\/[^\/]+\/([^\/]+)\//); - $r->print(&Apache::loncommon::start_page('Copy Problem Source Code to Authoring Space') + $r->print(&Apache::loncommon::start_page('Copy Problem Source Code to Authoring Space',undef, + {'only_body' => 1,}) .&mt('Please enter the directory that you would like the source code to go into.') .'
'
.&mt('Note: the path is in reference to the root of your Authoring Space,'
@@ -64,7 +65,8 @@ sub stage_2 {
- ');
+ '.
+ &Apache::loncommon::end_page());
return OK;
}
@@ -86,77 +88,65 @@ sub copy_author {
sub copy_stage {
my ($r, $filename, $listname, $newpath) = @_;
-#Figure out if we are author or co-author
- my ($role,$author_name,$domain)=©_author();
-
-# Construct path to copy and filter out any possibly nasty stuff
- my $path_to_new_file = $r->dir_config('lonDocRoot').
- "/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
-
- my ($uname,$udom)= &Apache::lonnet::constructaccess($path_to_new_file);
-
- if (!$uname || !$udom) {
- $r->print(&Apache::loncommon::start_page('Not Allowed'));
- $r->print(&mt('Not allowed to create file [_1]', $path_to_new_file));
- $r->print(&Apache::loncommon::end_page());
- return;
- }
+ my ($path_to_new_file,$uname,$udom) = &get_path_to_newfile($r,$newpath,$listname);
#allowed
- $r->print(&Apache::loncommon::start_page('Copying Source'));
- my $result = &Apache::loncfile::exists($uname, $udom, $path_to_new_file);
- $r->print($result);
- if(($result) && ($result =~ m|published|) ) {
- &delete_copy_file($r, $newpath, $filename, $path_to_new_file, '1');
- } elsif(($result) && ($result =~ m|exists!|)) {
- &confirm($r, $newpath, $filename, $path_to_new_file);
- } else {
- ©_file($r, $newpath, $filename, $path_to_new_file);
+ if ($path_to_new_file) {
+ $r->print(&Apache::loncommon::start_page('Copying Source',undef,{'only_body' => 1}));
+ my $result = &Apache::loncfile::exists($uname, $udom, $path_to_new_file);
+ $r->print($result);
+ if (($result) && ($result =~ /published/)) {
+ &delete_copy_file($r, $newpath, $filename, $path_to_new_file, '1');
+ } elsif (($result) && ($result =~ /exists\!/)) {
+ &confirm($r, $newpath, $filename, $listname);
+ } else {
+ ©_file($r, $newpath, $filename, $path_to_new_file);
+ }
+ $r->print(&Apache::loncommon::end_page());
}
-
- $r->print(&Apache::loncommon::end_page());
+ return;
}
sub confirm {
- my ($r, $newpath, $filename, $path_to_new_file) = @_;
+ my ($r, $newpath, $filename, $listname) = @_;
$r->print(''.&mt('Press delete to remove file and replace it with a copy of the source you are viewing.').'
');
$r->print('
'
.&mt('Cannot delete non-obsolete published file.')
.'
'
.&mt('Please use the code view in previous window to use shared code.')
.'
');
- $r->print('print('
'.&mt('Error:').' '.$!.'
'); return 0; } } else { - $r->print(''.&mt('No such file').'
'); + $r->print(''.&mt('No such file').'
'); return 0; } ©_file($r, $newpath, $filename, $path_to_new_file); + $r->print(&Apache::loncommon::end_page()); + return; } } @@ -196,8 +186,12 @@ sub copy_file { print $fs $file_output; } $r->print("