--- loncom/interface/londocs.pm 2012/03/28 12:58:42 1.479 +++ loncom/interface/londocs.pm 2012/05/06 22:09:14 1.483 @@ -1,7 +1,7 @@ # The LearningOnline Network # Documents # -# $Id: londocs.pm,v 1.479 2012/03/28 12:58:42 goltermann Exp $ +# $Id: londocs.pm,v 1.483 2012/05/06 22:09:14 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -437,7 +437,13 @@ sub log_docs { sub docs_change_log { my ($r)=@_; my $folder=$env{'form.folder'}; - $r->print(&Apache::loncommon::start_page('Course Document Change Log')); + my $js = ''."\n"; + $r->print(&Apache::loncommon::start_page('Course Document Change Log',$js)); $r->print(&Apache::lonhtmlcommon::breadcrumbs('Course Document Change Log')); my %docslog=&Apache::lonnet::dump('nohist_docslog', $env{'course.'.$env{'request.course.id'}.'.domain'}, @@ -461,7 +467,7 @@ sub docs_change_log { 'randomorder' => 'Randomly ordered', 'set' => 'set to', 'del' => 'deleted'); - $r->print(&Apache::loncommon::display_filter(). + $r->print(&Apache::loncommon::display_filter('docslog'). ''. ''); $r->print(&Apache::loncommon::start_data_table().&Apache::loncommon::start_data_table_header_row(). @@ -1120,17 +1126,46 @@ sub process_file_upload { position => $position, phase => $nextphase, comment => $comment, - ); + ); + my ($destination,$dir_root) = &embedded_destination($coursenum,$coursedom); + my @current = &get_dir_list($url,$coursenum,$coursedom,$newidx); $$upload_output = $showupload. &Apache::loncommon::decompress_form($mimetype, $archiveurl,'/adm/coursedocs',$noextract, - \%archiveitems); + \%archiveitems,\@current); } } } return $nextphase; } +sub get_dir_list { + my ($url,$coursenum,$coursedom,$newidx) = @_; + my ($destination,$dir_root) = &embedded_destination(); + my ($dirlistref,$listerror) = + &Apache::lonnet::dirlist("$dir_root/$destination/$newidx",$coursedom,$coursenum,1); + my @dir_lines; + my $dirptr=16384; + if (ref($dirlistref) eq 'ARRAY') { + foreach my $dir_line (sort + { + my ($afile)=split('&',$a,2); + my ($bfile)=split('&',$b,2); + return (lc($afile) cmp lc($bfile)); + } (@{$dirlistref})) { + my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$dir_line,16); + $filename =~ s/\s+$//; + next if ($filename =~ /^\.\.?$/); + my $isdir = 0; + if ($dirptr&$testdir) { + $isdir = 1; + } + push(@dir_lines, [$filename,$dom,$isdir,$size,$mtime,$obs]); + } + } + return @dir_lines; +} + sub is_supplemental_title { my ($title) = @_; return scalar($title =~ m/^(\d+)___&&&___($match_username)___&&&___($match_domain)___&&&___(.*)$/); @@ -2403,10 +2438,11 @@ sub handler { my $docuname=$env{'course.'.$env{'request.course.id'}.'.num'}; my $docudom=$env{'course.'.$env{'request.course.id'}.'.domain'}; my ($destination,$dir_root) = &embedded_destination(); - $r->print(&Apache::loncommon::modify_html_refs('coursedoc',$destination, - $docuname,$docudom,undef, - $dir_root). - &return_to_editor()); + my $result = + &Apache::loncommon::modify_html_refs('coursedoc',$destination, + $docuname,$docudom,undef, + $dir_root); + $r->print($result.&return_to_editor()); } elsif ($env{'form.phase'} eq 'decompress_uploaded') { $uploadphase = 'decompress_phase_one'; $r->print(&decompression_phase_one(). @@ -2991,18 +3027,20 @@ sub decompression_info { my $docudom=$env{'course.'.$env{'request.course.id'}.'.domain'}; my $docuname=$env{'course.'.$env{'request.course.id'}.'.num'}; my $container='sequence'; - my $hiddenelem; + my ($pathitem,$hiddenelem); + my @hiddens = ('newidx','comment','position'); if ($env{'form.pagepath'}) { $container='page'; - $hiddenelem = ''."\n"; + $pathitem = 'pagepath'; } else { - $hiddenelem = ''."\n"; - } - if ($env{'form.newidx'}) { - $hiddenelem .= ''."\n"; + $pathitem = 'folderpath'; } - if ($env{'form.comment'}) { - $hiddenelem .= ''."\n"; + unshift(@hiddens,$pathitem); + foreach my $item (@hiddens) { + if ($env{'form.'.$item}) { + $hiddenelem .= ''."\n"; + } } return ($destination,$dir_root,$londocroot,$docudom,$docuname,$container, $hiddenelem); @@ -3016,44 +3054,12 @@ sub decompression_phase_one { $error = &mt('Archive file "[_1]" not in the expected location.',$env{'form.archiveurl'}); } else { my $file = $1; - $output = &Apache::loncommon::process_decompression($docudom,$docuname,$file,$destination,$dir_root,$hiddenelem); - if ($env{'form.archivedelete'}) { - my $map = $env{'form.folder'}.'.'.$container; - my ($delwarning,$delresult); - my ($errtext,$fatal) = &mapread($docuname,$docudom,$map); - if ($fatal) { - if ($container eq 'page') { - $delwarning = &mt('An error occurred retrieving the contents of the current page.'); - } else { - $delwarning = &mt('An error occurred retrieving the contents of the current folder.'); - } - $delwarning .= &mt('As a result the archive file has not been removed.'); - } else { - my $currcmd = $env{'form.cmd'}; - $env{'form.cmd'} = 'del_'.$env{'form.position'}; - if (&handle_edit_cmd($docuname,$docudom)) { - ($errtext,$fatal) = &storemap($docuname,$docudom,$map); - if ($fatal) { - if ($container eq 'page') { - $delwarning = &mt('An error occurred updating the contents of the current page.'); - } else { - $delwarning = &mt('An error occurred updating the contents of the current folder.'); - } - } - } - $env{'form.cmd'} = $currcmd; - $delresult = &mt('Archive file removed after extracting files.'); - } - if ($delwarning) { - $output .= '

'. - $delwarning. - '

'; - } - if ($delresult) { - $output .= '

'. - $delresult. - '

'; - } + $output = + &Apache::loncommon::process_decompression($docudom,$docuname,$file, + $destination,$dir_root, + $hiddenelem); + if ($env{'form.autoextract_camtasia'}) { + $output .= &remove_archive($docudom,$docuname,$container); } } if ($error) { @@ -3069,12 +3075,63 @@ sub decompression_phase_one { sub decompression_phase_two { my ($destination,$dir_root,$londocroot,$docudom,$docuname,$container,$hiddenelem)= &decompression_info(); - my $output = + my $output; + if ($env{'form.archivedelete'}) { + $output = &remove_archive($docudom,$docuname,$container); + } + $output .= &Apache::loncommon::process_extracted_files('coursedocs',$docudom,$docuname, $destination,$dir_root,$hiddenelem); return $output; } +sub remove_archive { + my ($docudom,$docuname,$container) = @_; + my $map = $env{'form.folder'}.'.'.$container; + my ($output,$delwarning,$delresult,$url); + my ($errtext,$fatal) = &mapread($docuname,$docudom,$map); + if ($fatal) { + if ($container eq 'page') { + $delwarning = &mt('An error occurred retrieving the contents of the current page.'); + } else { + $delwarning = &mt('An error occurred retrieving the contents of the current folder.'); + } + $delwarning .= &mt('As a result the archive file has not been removed.'); + } else { + my $currcmd = $env{'form.cmd'}; + my $position = $env{'form.position'}; + if ($position > 0) { + $env{'form.cmd'} = 'del_'.$position; + my ($title,$url,@rrest) = + split(/:/,$LONCAPA::map::resources[$LONCAPA::map::order[$position]]); + if (&handle_edit_cmd($docuname,$docudom)) { + ($errtext,$fatal) = &storemap($docuname,$docudom,$map); + if ($fatal) { + if ($container eq 'page') { + $delwarning = &mt('An error occurred updating the contents of the current page.'); + } else { + $delwarning = &mt('An error occurred updating the contents of the current folder.'); + } + } else { + $delresult = &mt('Archive file removed.'); + } + } + } + $env{'form.cmd'} = $currcmd; + } + if ($delwarning) { + $output = '

'. + $delwarning. + '

'; + } + if ($delresult) { + $output .= '

'. + $delresult. + '

'; + } + return $output; +} + sub generate_admin_options { my ($help_ref,$env_ref) = @_; my %lt=&Apache::lonlocal::texthash( @@ -3121,7 +3178,7 @@ sub generate_edit_table { $activetab = $env{'form.active'}; } my $backicon = $iconpath.'clickhere.gif'; - my $backtext = &mt('Back to Overview'); + my $backtext = &mt('To Overview'); $form = '
'. '