90 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			90 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| 
								 | 
							
								#!/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" );
							 | 
						||
| 
								 | 
							
								}
							 |