version 1.230, 2010/11/11 23:58:05
|
version 1.233, 2011/10/17 12:41:30
|
Line 379 sub display_directory {
|
Line 379 sub display_directory {
|
my $href_edit_location="/editupload/$udom/$uname/$port_path".$current_path; |
my $href_edit_location="/editupload/$udom/$uname/$port_path".$current_path; |
my @dir_lines; |
my @dir_lines; |
my %versioned; |
my %versioned; |
foreach my $dir_line (sort |
if (ref($dir_list) eq 'ARRAY') { |
{ |
foreach my $dir_line (sort |
my ($afile)=split('&',$a,2); |
{ |
my ($bfile)=split('&',$b,2); |
my ($afile)=split('&',$a,2); |
return (lc($afile) cmp lc($bfile)); |
my ($bfile)=split('&',$b,2); |
} (@$dir_list)) { |
return (lc($afile) cmp lc($bfile)); |
my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$dir_line,16); |
} (@{$dir_list})) { |
$filename =~ s/\s+$//; |
my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$dir_line,16); |
my ($fname,$version,$extension) = &Apache::grades::file_name_version_ext($filename); |
$filename =~ s/\s+$//; |
if ($version) { |
my ($fname,$version,$extension) = &Apache::grades::file_name_version_ext($filename); |
my $fullpath = &prepend_group($current_path.$fname.'.'.$extension); |
if ($version) { |
push(@{ $versioned{$fullpath} }, |
my $fullpath = &prepend_group($current_path.$fname.'.'.$extension); |
[$filename,$dom,$testdir,$size,$mtime,$obs,]); |
push(@{ $versioned{$fullpath} }, |
} else { |
[$filename,$dom,$testdir,$size,$mtime,$obs,]); |
push(@dir_lines, [$filename,$dom,$testdir,$size,$mtime,$obs]); |
} else { |
} |
push(@dir_lines, [$filename,$dom,$testdir,$size,$mtime,$obs]); |
|
} |
|
} |
} |
} |
my $zerobyte; |
my $zerobyte; |
foreach my $dir_line (@dir_lines) { |
foreach my $dir_line (@dir_lines) { |
Line 1964 sub upload {
|
Line 1966 sub upload {
|
return; |
return; |
} |
} |
|
|
my (%allfiles,%codebase,$mode); |
my (%allfiles,%codebase,$mode,$mimetype); |
if ($env{'form.'.$formname.'.filename'} =~ m/(\.htm|\.html|\.shtml)$/i) { |
if ($env{'form.'.$formname.'.filename'} =~ m/(\.htm|\.html|\.shtml)$/i) { |
if ($env{'form.parserflag'}) { |
if ($env{'form.parserflag'}) { |
$mode = 'parse'; |
$mode = 'parse'; |
Line 1974 sub upload {
|
Line 1976 sub upload {
|
if ($state eq 'existingfile') { |
if ($state eq 'existingfile') { |
$context = $state; |
$context = $state; |
} |
} |
|
my $subdir = $port_path.$env{'form.currentpath'}; |
|
$subdir =~ s{(/)$}{}; |
my ($result,$timestamp) = |
my ($result,$timestamp) = |
&Apache::lonnet::userfileupload($formname,$context, |
&Apache::lonnet::userfileupload($formname,$context,$subdir, |
$port_path.$env{'form.currentpath'}, |
$mode,\%allfiles,\%codebase,undef,undef, |
$mode,\%allfiles,\%codebase); |
undef,undef,undef,undef,\$mimetype); |
if ($state eq 'existingfile') { |
if ($state eq 'existingfile') { |
my $group_elem; |
my $group_elem; |
my $rootdir = $r->dir_config('lonDaemons').'/tmp/overwrites'; |
my $rootdir = $r->dir_config('lonDaemons').'/tmp/overwrites'; |
Line 2063 END
|
Line 2067 END
|
,$result,&display_file(undef,$fname)).'</span><br />'); |
,$result,&display_file(undef,$fname)).'</span><br />'); |
$r->print(&done('Back',$url)); |
$r->print(&done('Back',$url)); |
} else { |
} else { |
if (%allfiles) { |
if (!&suppress_embed_prompt()) { |
if (!&suppress_embed_prompt()) { |
if ($mimetype eq 'text/html') { |
&print_dependency_form($r,$url,\%allfiles,\%codebase); |
if (keys(%allfiles) > 0) { |
|
&print_dependency_form($r,$url,\%allfiles,\%codebase,$result); |
|
return; |
|
} else { |
|
$r->print('<p>'.&mt('Completed upload of the file.').'<br />'. |
|
&mt('No embedded items identified.').'</p>'); |
|
} |
} |
} |
} else { |
} |
$r->print(&done(undef,$url)); |
$r->print(&done(undef,$url)); |
} |
|
} |
} |
|
return; |
} |
} |
|
|
sub hidden_elems { |
sub hidden_elems { |
Line 2088 END
|
Line 2098 END
|
} |
} |
|
|
sub print_dependency_form { |
sub print_dependency_form { |
my ($r,$url,$allfiles,$codebase) = @_; |
my ($r,$url,$allfiles,$codebase,$result) = @_; |
my $state = <<STATE; |
my $container = &HTML::Entities::encode($result,'<>"&'); |
<input type="hidden" name="action" value="upload_embedded" /> |
my $state = &embedded_form_elems($container); |
<input type="hidden" name="currentpath" value="$env{'form.currentpath'}" /> |
my ($embedded,$num,$pathchg) = &Apache::loncommon::ask_for_embedded_content($url,$state,$allfiles,$codebase, |
<input type="hidden" name="fieldname" value="$env{'form.fieldname'}" /> |
|
<input type="hidden" name="mode" value="$env{'form.mode'}" /> |
|
STATE |
|
if ($env{'form.group'} ne '') { |
|
$state .= '<input type="hidden" name="group" value="'.$env{'form.group'}.'" />'."\n"; |
|
} |
|
my $embedded = &Apache::loncommon::ask_for_embedded_content($url,$state,$allfiles,$codebase, |
|
{'error_on_invalid_names' => 1, |
{'error_on_invalid_names' => 1, |
'ignore_remote_references' => 1,}); |
'ignore_remote_references' => 1,}); |
if ($embedded) { |
if ($embedded) { |
$r->print('<h2>'.&mt("Reference Warning").'</h2>'. |
if ($num || $pathchg) { |
'<p>'.&mt("Completed upload of the file. This file contained references to other files. You must upload the referenced files or else the uploaded file may not work properly.").'</p>'. |
$r->print('<h3>'.&mt("Reference Warning").'</h3>'); |
'<p>'.&mt("Please select the locations from which the referenced files are to be uploaded.").'</p>'. |
} else { |
$embedded. |
$r->print('<h3>'.&mt("Reference Information").'</h3>'); |
'<p>Or '.&done('Return to directory',$url).'</p>'); |
} |
|
if ($num) { |
|
$r->print('<p>'.&mt("Completed upload of the file. This file contained references to other files. You must upload the referenced files or else the uploaded file may not work properly.").'</p>'. |
|
'<p>'.&mt("Please select the locations from which the referenced files are to be uploaded.").'</p>'. |
|
$embedded. |
|
'<p>'.&mt('or').'</p>'.&done('Return to directory',$url)); |
|
} else { |
|
$r->print('<p>'.&mt("Completed upload of the file. This file contained references to other files.").'</p>'. |
|
$embedded. |
|
'<p>'.&done('Return to directory',$url).'</p>'); |
|
} |
} else { |
} else { |
$r->print(&done(undef,$url)); |
$r->print(&done(undef,$url)); |
} |
} |
Line 2118 sub overwrite {
|
Line 2131 sub overwrite {
|
my $formname = 'existingfile'; |
my $formname = 'existingfile'; |
my $port_path = &get_port_path(); |
my $port_path = &get_port_path(); |
my $fname = &Apache::lonnet::clean_filename($env{'form.filename'}); |
my $fname = &Apache::lonnet::clean_filename($env{'form.filename'}); |
my (%allfiles,%codebase,$mode); |
my (%allfiles,%codebase,$mode,$mimetype); |
unless (&suppress_embed_prompt()) { |
unless (&suppress_embed_prompt()) { |
if ($env{'form.parserflag'}) { |
if ($env{'form.parserflag'}) { |
if ($fname =~ /\.s?html?$/i) { |
if ($fname =~ /\.s?html?$/i) { |
Line 2134 sub overwrite {
|
Line 2147 sub overwrite {
|
return; |
return; |
} |
} |
$env{'form.'.$formname.'.filename'} = $fname; |
$env{'form.'.$formname.'.filename'} = $fname; |
|
my $subdir = $port_path.$env{'form.currentpath'}; |
|
$subdir =~ s{(/)$}{}; |
my $result= |
my $result= |
&Apache::lonnet::userfileupload($formname,'overwrite', |
&Apache::lonnet::userfileupload($formname,'overwrite',$subdir,$mode, |
$port_path.$env{'form.currentpath'}, |
\%allfiles,\%codebase,undef,undef,undef, |
$mode,\%allfiles,\%codebase); |
undef,undef,undef,\$mimetype); |
if ($result !~ m|^/uploaded/|) { |
if ($result !~ m|^/uploaded/|) { |
$r->print('<span class="LC_error">'.&mt('An error occurred ([_1]) while trying to overwrite [_2].' |
$r->print('<span class="LC_error">'.&mt('An error occurred ([_1]) while trying to overwrite [_2].' |
,$result,&display_file(undef,$fname)).'</span><br />'); |
,$result,&display_file(undef,$fname)).'</span><br />'); |
$r->print(&after_overwrite(&mt('Back'),$url)); |
$r->print(&after_overwrite(&mt('Back'),$url)); |
} else { |
} else { |
if (%allfiles) { |
if ($mode eq 'parse') { |
if (!&suppress_embed_prompt()) { |
if ($mimetype eq 'text/html') { |
&print_dependency_form($r,$url,\%allfiles,\%codebase); |
if (keys(%allfiles) > 0) { |
} else { |
&print_dependency_form($r,$url,\%allfiles,\%codebase,$result); |
$r->print(&after_overwrite(undef,$url)); |
return; |
|
} else { |
|
$r->print('<p>'.&mt('Overwriting completed.').'<br />'. |
|
&mt('No embedded items identified.').'</p>'); |
|
} |
} |
} |
} else { |
|
$r->print(&after_overwrite(undef,$url)); |
|
} |
} |
|
$r->print(&after_overwrite(undef,$url)); |
} |
} |
return; |
return; |
} |
} |
Line 2233 sub createdir {
|
Line 2251 sub createdir {
|
return; |
return; |
} |
} |
my $portfolio_root = &get_portfolio_root(); |
my $portfolio_root = &get_portfolio_root(); |
my @dir_list=&get_dir_list($portfolio_root,undef,$group); |
my ($dirlistref,$listerror) = &get_dir_list($portfolio_root,undef,$group); |
my $found_file = 0; |
my $found_file = 0; |
foreach my $line (@dir_list) { |
if (ref($dirlistref) eq 'ARRAY') { |
my ($filename)=split(/\&/,$line,2); |
foreach my $line (@{$dirlistref}) { |
if ($filename eq $newdir){ |
my ($filename)=split(/\&/,$line,2); |
$found_file = 1; |
if ($filename eq $newdir){ |
|
$found_file = 1; |
|
} |
} |
} |
} |
} |
if ($found_file){ |
if ($found_file){ |
Line 2427 sub suppress_embed_prompt {
|
Line 2447 sub suppress_embed_prompt {
|
return $suppress_prompt; |
return $suppress_prompt; |
} |
} |
|
|
|
sub embedded_form_elems { |
|
my ($container) = @_; |
|
my $state = <<STATE; |
|
<input type="hidden" name="currentpath" value="$env{'form.currentpath'}" /> |
|
<input type="hidden" name="fieldname" value="$env{'form.fieldname'}" /> |
|
<input type="hidden" name="mode" value="$env{'form.mode'}" /> |
|
<input type="hidden" name="container" value="$container" /> |
|
STATE |
|
if ($env{'form.group'} ne '') { |
|
$state .= '<input type="hidden" name="group" value="'.$env{'form.group'}.'" />'."\n"; |
|
} |
|
return $state; |
|
} |
|
|
sub handler { |
sub handler { |
# this handles file management |
# this handles file management |
Line 2573 sub handler {
|
Line 2606 sub handler {
|
my $getpropath = 1; |
my $getpropath = 1; |
my $current_disk_usage = |
my $current_disk_usage = |
&Apache::lonnet::diskusage($udom,$uname,$portfolio_root,$getpropath); |
&Apache::lonnet::diskusage($udom,$uname,$portfolio_root,$getpropath); |
$r->print( |
my $container = &HTML::Entities::encode($env{'form.container'},'<>&"'); |
|
my $state = &embedded_form_elems($container). |
|
'<input type="hidden" name="action" value="modify_orightml" />'; |
|
my ($result,$flag) = |
&Apache::loncommon::upload_embedded('portfolio',$port_path,$uname,$udom, |
&Apache::loncommon::upload_embedded('portfolio',$port_path,$uname,$udom, |
$group,$portfolio_root,$group,$disk_quota,$current_disk_usage)); |
$group,$portfolio_root,$group,$disk_quota,$current_disk_usage,$state,$url); |
$r->print(&done(undef,$url)); |
$r->print($result.&done('Return to directory',$url)); |
|
} else { |
|
&missing_priv($r,$url,'upload'); |
|
} |
|
} elsif ($env{'form.action'} eq 'modify_orightml') { |
|
if ($can_upload) { |
|
$r->print(&Apache::loncommon::modify_html_refs('portfolio',$port_path,$uname,$udom,$group,$portfolio_root,$group)); |
|
$r->print(&done('Return to directory',$url)); |
} else { |
} else { |
&missing_priv($r,$url,'upload'); |
&missing_priv($r,$url,'upload'); |
} |
} |
Line 2651 sub handler {
|
Line 2694 sub handler {
|
my $formname = 'existingfile'; |
my $formname = 'existingfile'; |
my $fname = &Apache::lonnet::clean_filename($env{'form.filename'}); |
my $fname = &Apache::lonnet::clean_filename($env{'form.filename'}); |
$env{'form.'.$formname.'.filename'} = $fname; |
$env{'form.'.$formname.'.filename'} = $fname; |
&Apache::lonnet::userfileupload($formname,'canceloverwrite', |
my $subdir = $port_path.$env{'form.currentpath'}; |
$port_path.$env{'form.currentpath'}); |
$subdir =~ s{(/)$}{}; |
|
&Apache::lonnet::userfileupload($formname,'canceloverwrite',$subdir); |
} |
} |
} |
} |
my $current_path='/'; |
my $current_path='/'; |
Line 2663 sub handler {
|
Line 2707 sub handler {
|
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
$r->print(&coursegrp_portfolio_header($udom,$uname,$grp_desc)); |
$r->print(&coursegrp_portfolio_header($udom,$uname,$grp_desc)); |
} |
} |
my @dir_list=&get_dir_list($portfolio_root,$current_path,$group); |
my ($dirlistref,$listerror) = |
if ($dir_list[0] eq 'no_such_dir'){ |
&get_dir_list($portfolio_root,$current_path,$group); |
|
if ($listerror eq 'no_such_dir'){ |
# two main reasons for this: |
# two main reasons for this: |
# 1) never been here, so directory structure not created |
# 1) never been here, so directory structure not created |
# 2) back-button navigation after deleting a directory |
# 2) back-button navigation after deleting a directory |
Line 2679 sub handler {
|
Line 2724 sub handler {
|
$current_path = '/'; # force it back to the root |
$current_path = '/'; # force it back to the root |
} |
} |
# now grab the directory list again, for the first time |
# now grab the directory list again, for the first time |
@dir_list=&get_dir_list($portfolio_root,$current_path,$group); |
($dirlistref,$listerror) = |
|
&get_dir_list($portfolio_root,$current_path,$group); |
} |
} |
# need to know if directory is empty so it can be removed if desired |
# need to know if directory is empty so it can be removed if desired |
my $is_empty=(@dir_list == 2); |
my $is_empty; |
&display_common($r,$url,$current_path,$is_empty,\@dir_list, |
if ($listerror eq 'empty') { |
|
$is_empty = 1; |
|
} elsif (ref($dirlistref) eq 'ARRAY') { |
|
if ((scalar(@{$dirlistref}) == 2) && ($dirlistref->[0] =~ /^\.+\&/) |
|
&& ($dirlistref->[1] =~ /^\.+\&/)) { |
|
$is_empty = 1; |
|
} |
|
} |
|
&display_common($r,$url,$current_path,$is_empty,$dirlistref, |
$can_upload,$group); |
$can_upload,$group); |
&display_directory($r,$url,$current_path,$is_empty,\@dir_list,$group, |
&display_directory($r,$url,$current_path,$is_empty,$dirlistref,$group, |
$can_upload,$can_modify,$can_delete,$can_setacl); |
$can_upload,$can_modify,$can_delete,$can_setacl); |
} |
} |
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |