--- loncom/interface/londocs.pm 2005/06/11 13:38:47 1.188 +++ 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.188 2005/06/11 13:38:47 raeburn Exp $ +# $Id: londocs.pm,v 1.196 2005/07/25 02:35:29 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -840,8 +840,7 @@ sub group_import { ''."\n". ''; $env{'form.output'}=$newmapstr; - my $home=&Apache::lonnet::homeserver($coursenum,$coursedom); - my $result=&Apache::lonnet::finishuserfileupload($coursenum,$coursedom,$home, + my $result=&Apache::lonnet::finishuserfileupload($coursenum,$coursedom, 'output',$1.$2); if ($result != m|^/uploaded/|) { $errtext.='Map not saved: A network error occured when trying to save the new map. '; @@ -1176,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'; @@ -1204,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; @@ -1228,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.
@@ -1248,10 +1252,10 @@ sub process_file_upload { '; $$upload_output .= 'Upload embedded files:
'; - foreach my $embed_file (keys %{$allfiles}) { + foreach my $embed_file (keys(%{$allfiles})) { $$upload_output .= '
'.$embed_file. - ' - '; + ' + '; my $attrib; if (@{$$allfiles{$embed_file}} > 1) { $attrib = join(':',@{$$allfiles{$embed_file}}); @@ -1284,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; @@ -1666,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(); @@ -1694,6 +1708,7 @@ sub checkversions { foreach (keys %hash) { if ($_=~/^ids\_(\/res\/.+)$/) { $newsetversions{$1}='mostrecent'; + &devalidateversioncache($1); } } } elsif ($env{'form.setcurrent'}) { @@ -1703,6 +1718,7 @@ sub checkversions { my $getvers=&Apache::lonnet::getversion($1); if ($getvers>0) { $newsetversions{$1}=$getvers; + &devalidateversioncache($1); } } } @@ -1713,6 +1729,7 @@ sub checkversions { my $src=$1; if (($env{$_}) && ($env{$_} ne $setversions{$src})) { $newsetversions{$src}=$env{$_}; + &devalidateversioncache($src); } } } @@ -1942,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; } @@ -2243,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); } @@ -2309,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); } @@ -2446,8 +2464,9 @@ $uploadtag
-$lt{'parse'}? +

@@ -2644,7 +2663,15 @@ ENDBLOCK
-
$lt{'comment'}:
+
+
+ + + +

+$lt{'comment'}: