df2daf524d
Signed-off-by: Nico Schottelius <nico@manager.schottelius.org>
90 lines
2.9 KiB
Perl
Executable file
90 lines
2.9 KiB
Perl
Executable file
#!/usr/bin/perl -wT
|
|
#
|
|
# TWiki Collaboration Platform, http://TWiki.org/
|
|
#
|
|
# Copyright (C) 1999-2003 Peter Thoeny, peter@thoeny.com
|
|
#
|
|
# For licensing info read license.txt file in the TWiki root.
|
|
# This program 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.
|
|
#
|
|
# This program 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, published at
|
|
# http://www.gnu.org/copyleft/gpl.html
|
|
|
|
# Set library paths in @INC, at compile time
|
|
BEGIN { unshift @INC, '.'; require 'setlib.cfg'; }
|
|
|
|
use CGI::Carp qw(fatalsToBrowser);
|
|
use CGI;
|
|
use TWiki;
|
|
|
|
&main();
|
|
|
|
sub suffixToMimeType
|
|
{
|
|
my( $theFilename ) = @_;
|
|
|
|
my $mimeType = 'text/plain';
|
|
if( $theFilename =~ /\.(.+)$/ ) {
|
|
my $suffix = $1;
|
|
my @types = grep{ s/^\s*([^\s]+).*?\s$suffix\s.*$/$1/i }
|
|
map{ "$_ " }
|
|
split( /[\n\r]/, &TWiki::Store::readFile( $TWiki::mimeTypesFilename ) );
|
|
$mimeType = $types[0] if( @types );
|
|
}
|
|
return $mimeType;
|
|
}
|
|
|
|
sub main
|
|
{
|
|
my $query = new CGI;
|
|
|
|
my $thePathInfo = $query->path_info();
|
|
my $theRemoteUser = $query->remote_user();
|
|
my $theTopic = $query->param( 'topic' );
|
|
my $theUrl = $query->url;
|
|
|
|
( $topic, $webName ) =
|
|
&TWiki::initialize( $thePathInfo, $theRemoteUser, $theTopic, $theUrl, $query );
|
|
|
|
my $tmpl= "";
|
|
|
|
if( ! &TWiki::Store::webExists( $webName ) ) {
|
|
my $url = &TWiki::getOopsUrl( $webName, $topic, "oopsnoweb" );
|
|
TWiki::redirect( $query, $url );
|
|
return;
|
|
}
|
|
|
|
my $fileName = $query->param( 'filename' );
|
|
|
|
my $rev = $query->param( 'rev' ) || "";
|
|
my $topRev = &TWiki::Store::getRevisionNumber( $webName, $topic, $fileName );
|
|
|
|
if( ( $rev ) && ( $rev ne $topRev ) ) {
|
|
my $fileContent = &TWiki::Store::readAttachmentVersion( $webName, $topic, $fileName, $rev );
|
|
if( $fileContent ) {
|
|
my $mimeType = suffixToMimeType( $fileName );
|
|
print $query->header( -type => $mimeType,
|
|
-Content_Disposition => "inline;filename=$fileName");
|
|
print "$fileContent";
|
|
return;
|
|
} else {
|
|
# If no file content we'll try and show pub content, should there be a warning FIXME
|
|
}
|
|
}
|
|
|
|
# this should actually kick off a document conversion
|
|
# (.doc, .xls... to .html) and show the html file.
|
|
# Convert only if html file does not yet exist
|
|
# for now, show the original document:
|
|
|
|
# PTh 20 Jun 2000: Added host
|
|
my $pubUrlPath = &TWiki::getPubUrlPath();
|
|
my $host = $TWiki::urlHost;
|
|
TWiki::redirect( $query, "$host$pubUrlPath/$webName/$topic/$fileName" );
|
|
}
|