# The LearningOnline Network with CAPA
# Handler to retrieve an old version of a file
#
# $Id: lonretrieve.pm,v 1.52 2013/06/07 16:07:49 bisitz Exp $
#
# Copyright Michigan State University Board of Trustees
#
# This file is part of the LearningOnline Network with CAPA (LON-CAPA).
#
# LON-CAPA is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# LON-CAPA is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LON-CAPA; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# /home/httpd/html/adm/gpl.txt
#
# http://www.lon-capa.org/
#
#
###
=head1 NAME
Apache::lonretrieve - retrieves an old version of a file
=head1 SYNOPSIS
Invoked by /etc/httpd/conf/srm.conf:
'.&mt('No previous versions published.').'
'); } } # ---------------------------------- Interface for presenting specified version sub phasetwo { my ($r,$fn,$uname,$udom)=@_; if ($env{'form.version'}) { my $version=$env{'form.version'}; if ($version eq 'new') { $r->print(''.&mt('Copying file').': '); if (copy($csource,$ctarget)) { $r->print('' .&mt('ok') .''); print $logfile "Copied sucessfully.\n\n"; $r->print(&Apache::lonhtmlcommon::scripttag('parent.location.reload();')); } else { my $error=$!; $r->print('' .&mt('Copy failed: [_1]',$error) .''); print $logfile "Copy failed: $error\n\n"; } } else { $r->print('
'.&mt('Please pick a version to retrieve:').'
'); &phaseone($r,$fn,$uname,$udom); } } sub get_file_info { my ($fn) = @_; my ($main,$suffix) = ($fn=~/\/([^\/]+)\.(\w+)$/); my $is_meta=0; if ($suffix eq 'meta') { $is_meta = 1; ($main,$suffix) = ($main=~/(.+)\.(\w+)$/); $suffix .= '.meta'; } return ($main,$suffix,$is_meta); } # ---------------------------------------------------------------- Main Handler sub handler { my $r=shift; my $fn; # Get query string for limited number of parameters &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['filename']); if ($env{'form.filename'}) { $fn=$env{'form.filename'}; $fn =~ s{^https?\://[^/]+}{}; } else { $r->log_reason($env{'user.name'}.' at '.$env{'user.domain'}. ' unspecified filename for retrieval', $r->filename); return HTTP_NOT_FOUND; } unless ($fn) { $r->log_reason($env{'user.name'}.' at '.$env{'user.domain'}. ' trying to retrieve non-existing file', $r->filename); return HTTP_NOT_FOUND; } # ----------------------------------------------------------- Start page output my $uname; my $udom; ($uname,$udom) = &Apache::lonnet::constructaccess($fn); unless (($uname ne '') && ($udom ne '')) { $r->log_reason($uname.' at '.$udom. ' trying to publish file '.$env{'form.filename'}. ' ('.$fn.') - not authorized', $r->filename); return HTTP_NOT_ACCEPTABLE; } &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; # Breadcrumbs &Apache::lonhtmlcommon::clear_breadcrumbs(); &Apache::lonhtmlcommon::add_breadcrumb({ 'text' => 'Authoring Space', 'href' => &Apache::loncommon::authorspace($fn), }); &Apache::lonhtmlcommon::add_breadcrumb({ 'text' => 'Retrieve previous version', 'href' => '', }); my $londocroot = $r->dir_config('lonDocRoot'); my $trailfile = $fn; $trailfile =~ s{^/(priv/)}{$londocroot/$1}; $r->print(&Apache::loncommon::start_page('Retrieve Published Resources') .&Apache::lonhtmlcommon::breadcrumbs() .&Apache::loncommon::head_subbox( &Apache::loncommon::CSTR_pageheader($trailfile)) ); $fn=~s{/priv/$LONCAPA::domain_re/$LONCAPA::username_re}{}; $r->print('' .&mt('Retrieve previous versions of [_1]' ,''.$fn.'') .'
'); if (($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) { $r->print('' .&mt('Co-Author [_1]' ,&Apache::loncommon::plainname($uname,$udom) .' ('.$uname.':'.$udom.')') .'
'); } if ($env{'form.phase'} eq 'two') { &phasetwo($r,$fn,$uname,$udom); } else { &phaseone($r,$fn,$uname,$udom); } $r->print(&Apache::loncommon::end_page()); return OK; } 1; __END__