--- loncom/interface/londocs.pm 2005/06/13 20:23:53 1.189 +++ loncom/interface/londocs.pm 2005/07/25 02:35:29 1.196 @@ -1,7 +1,7 @@ # The LearningOnline Network # Documents # -# $Id: londocs.pm,v 1.189 2005/06/13 20:23:53 albertel Exp $ +# $Id: londocs.pm,v 1.196 2005/07/25 02:35:29 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1175,18 +1175,18 @@ FOLDERINFO } sub process_file_upload { - my ($upload_output,$coursenum,$coursedom,$allfiles,$codebase) = @_; + my ($upload_output,$coursenum,$coursedom,$allfiles,$codebase,$uploadcmd) = @_; # upload a file, if present my $parseaction; - if ($env{'form.parserflag'}) { + if ($env{'form.parserflag'}) { $parseaction = 'parse'; } my $phase_status; my $folder=$env{'form.folder'}; - if ($folder eq '' || $folder eq 'supplemental') { + if ($folder eq '') { $folder='default'; } - if ( ($folder=~/^$1/) || ($1 eq 'default') ) { + if ( ($folder=~/^$uploadcmd/) || ($uploadcmd eq 'default') ) { my $errtext=''; my $fatal=0; my $container='sequence'; @@ -1203,16 +1203,21 @@ sub process_file_upload { return 'failed'; } my $destination = 'docs/'; - if ($folder eq 'default') { + if ($folder =~ /^supplemental/) { + $destination = 'supplemental/'; + } + if (($folder eq 'default') || ($folder eq 'supplemental')) { $destination .= 'default/'; - } elsif ($folder =~ /^default_(\d+)$/) { - $destination .= $1.'/'; + } elsif ($folder =~ /^(default|supplemental)_(\d+)$/) { + $destination .= $2.'/'; } # this is for a course, not a user, so set coursedoc flag # probably the only place in the system where this should be "1" my $newidx=&Apache::lonratedt::getresidx(); $destination .= $newidx; - my $url=&Apache::lonnet::userfileupload('uploaddoc',1,$destination,$parseaction,$allfiles,$codebase); + my $url=&Apache::lonnet::userfileupload('uploaddoc',1,$destination, + $parseaction,$allfiles, + $codebase); my $ext='false'; if ($url=~/^http\:\/\//) { $ext='true'; } $url=~s/\:/\:/g; @@ -1227,15 +1232,15 @@ sub process_file_upload { $Apache::lonratedt::resources[$newidx]= $comment.':'.$url.':'.$ext.':normal:res'; - $Apache::lonratedt::order[$#Apache::lonratedt::order+1]= - $newidx; - ($errtext,$fatal)=&storemap($coursenum,$coursedom,$folder.'.'.$container); + $Apache::lonratedt::order[$#Apache::lonratedt::order+1]= $newidx; + ($errtext,$fatal)=&storemap($coursenum,$coursedom, + $folder.'.'.$container); if ($fatal) { $$upload_output .= '
'.$errtext.'
'; return 'failed'; } else { if ($parseaction eq 'parse') { - my $total_embedded = keys %{$allfiles}; + my $total_embedded = keys(%{$allfiles}); if ($total_embedded > 0) { my $num = 0; $$upload_output .= 'This file contains embedded multimedia objects, which need to be uploaded to LON-CAPA.'.$embed_file.
- '
- ';
+ '
+ ';
my $attrib;
if (@{$$allfiles{$embed_file}} > 1) {
$attrib = join(':',@{$$allfiles{$embed_file}});
@@ -1283,9 +1288,12 @@ sub process_secondary_uploads {
my ($upload_output,$coursedom,$coursenum,$formname,$num,$newidx) = @_;
my $folder=$env{'form.folder'};
my $destination = 'docs/';
- if ($folder eq 'default') {
+ if ($folder =~ /^supplemental/) {
+ $destination = 'supplemental/';
+ }
+ if (($folder eq 'default') || ($folder eq 'supplemental')) {
$destination .= 'default/';
- } elsif ($folder =~ /^default_(\d+)$/) {
+ } elsif ($folder =~ /^(default|supplemental)_(\d+)$/) {
$destination .= $1.'/';
}
$destination .= $newidx;
@@ -1665,8 +1673,15 @@ sub verifycontent {
&mt('Return to DOCS').'');
}
+
# -------------------------------------------------------------- Check Versions
+sub devalidateversioncache {
+ my $src=shift;
+ &Apache::lonnet::devalidate_cache_new('courseresversion',$env{'request.course.id'}.'_'.
+ &Apache::lonnet::clutter($src));
+}
+
sub checkversions {
my $r=shift;
my $html=&Apache::lonxml::xmlbegin();
@@ -1693,6 +1708,7 @@ sub checkversions {
foreach (keys %hash) {
if ($_=~/^ids\_(\/res\/.+)$/) {
$newsetversions{$1}='mostrecent';
+ &devalidateversioncache($1);
}
}
} elsif ($env{'form.setcurrent'}) {
@@ -1702,6 +1718,7 @@ sub checkversions {
my $getvers=&Apache::lonnet::getversion($1);
if ($getvers>0) {
$newsetversions{$1}=$getvers;
+ &devalidateversioncache($1);
}
}
}
@@ -1712,6 +1729,7 @@ sub checkversions {
my $src=$1;
if (($env{$_}) && ($env{$_} ne $setversions{$src})) {
$newsetversions{$src}=$env{$_};
+ &devalidateversioncache($src);
}
}
}
@@ -1941,7 +1959,7 @@ sub changewarning {
if (defined($env{'form.pagepath'})) {
$pathvar='pagepath';
$path=&Apache::lonnet::escape($env{'form.pagepath'});
- $path.='&symb='.&Apache::lonnet::escape($env{'form.pagesymb'});
+ $path.='&pagesymb='.&Apache::lonnet::escape($env{'form.pagesymb'});
}
$url='/adm/coursedocs?'.$pathvar.'='.$path;
}
@@ -2242,7 +2260,9 @@ ENDNEWSCRIPT
if ($allowed) {
if (($env{'form.uploaddoc.filename'}) && ($env{'form.cmd'}=~/^upload_(\w+)/)) {
# Process file upload - phase one - upload and parse primary file.
- $upload_result = &process_file_upload(\$upload_output,$coursenum,$coursedom,\%allfiles,\%codebase);
+ $upload_result = &process_file_upload(\$upload_output,$coursenum,
+ $coursedom,\%allfiles,
+ \%codebase,$1);
if ($upload_result eq 'phasetwo') {
$r->print($upload_output);
}
@@ -2308,8 +2328,7 @@ ENDNEWSCRIPT
my $saveresult;
my $docuname=$env{'course.'.$env{'request.course.id'}.'.num'};
my $docudom=$env{'course.'.$env{'request.course.id'}.'.domain'};
- my $docuhome=$env{'course.'.$env{'request.course.id'}.'.home'};
- my $url = &Apache::lonnet::store_edited_file($primary_url,$content,$docudom,$docuname,$docuhome,\$saveresult);
+ my $url = &Apache::lonnet::store_edited_file($primary_url,$content,$docudom,$docuname,\$saveresult);
} else {
&Apache::lonnet::logthis('retrieval of uploaded file - '.$primary_url.' - for editing, failed: '.$getstatus);
}
@@ -2445,8 +2464,9 @@ $uploadtag
@@ -2643,7 +2663,15 @@ ENDBLOCK |