Apache-AutoIndex

 view release on metacpan or  search on metacpan

AutoIndex.pm  view on Meta::CPAN

#$Id: AutoIndex.pm,v 1.1 1999/06/29 14:09:25 gozer Exp $
package Apache::AutoIndex;

use strict;
use Apache::Constants qw(:common OPT_INDEXES DECLINE_CMD REDIRECT DIR_MAGIC_TYPE);
use DynaLoader ();
use Apache::Util qw(ht_time size_string);
use Apache::ModuleConfig;
use Apache::Icon;
use Apache::Language;

use vars qw ($VERSION);
$VERSION="0.08";

#Configuration constants
use constant FANCY_INDEXING 	=> 1;
use constant ICONS_ARE_LINKS 	=> 2;
use constant SCAN_HTML_TITLES 	=> 4;
use constant SUPPRESS_LAST_MOD	=> 8;
use constant SUPPRESS_SIZE  	=> 16;
use constant SUPPRESS_DESC 	=> 32;
use constant SUPPRESS_PREAMBLE 	=> 64;
use constant SUPPRESS_COLSORT 	=> 128;
use constant THUMBNAILS 	=> 256;
use constant SHOW_PERMS         => 512;
use constant NO_OPTIONS		=> 1024;

use vars qw(%GenericDirectives);
%GenericDirectives = 
(      
fancyindexing         =>  FANCY_INDEXING,
iconsarelinks         =>  ICONS_ARE_LINKS,
scanhtmltitles        =>  SCAN_HTML_TITLES,
suppresslastmodified  =>  SUPPRESS_LAST_MOD,
suppresssize          =>  SUPPRESS_SIZE,
suppressdescription   =>  SUPPRESS_DESC,
suppresshtmlperamble  =>  SUPPRESS_PREAMBLE,
suppresscolumnsorting =>  SUPPRESS_COLSORT,
thumbnails            =>  THUMBNAILS,
showpermissions       =>  SHOW_PERMS,
);

#Default values
use constant DEFAULT_ICON_WIDTH => 20;
use constant DEFAULT_ICON_HEIGHT=> 22;
use constant DEFAULT_NAME_WIDTH => 23;
use constant DEFAULT_ORDER	=> "ND";

#Global Options/Congiguration Directives
use vars qw($config);
$config->{debug}=0;  
             
use vars qw(%sortname);
%sortname =
( 	
'N'=>'Name' ,
'M'=>'LastModified',
'S'=>'Size',
'D'=>'Description',
);
			
#Statistics variables
use vars qw($nDir $nRedir $nIndex $nThumb);
$nDir=0;
$nRedir=0;
$nIndex=0;
$nThumb=0;


if ($ENV{MOD_PERL}){
	no strict;
	@ISA=qw(DynaLoader);
	__PACKAGE__->bootstrap($VERSION);
	if (Apache->module('Apache::Status')){
		Apache::Status->menu_item('AutoIndex' => 'Apache::AutoIndex status', \&status);
		}
}

sub dir_index {
	my($r) = @_;
	my $lang = new Apache::Language ($r);
	my %args = $r->args;
	my $name = $r->filename;
	my $cfg = Apache::ModuleConfig->get($r);
	my $subr;
	$r->filename("$name/") unless $name =~ m:/$:; 
        
	unless (opendir DH, "$name"){
		$r->log_reason( __PACKAGE__ . " Can't open directory for index", $r->uri . " (" . $r->filename . ")");
	return FORBIDDEN;
	}
	$nDir++;
    
    if ($cfg->{options} & THUMBNAILS){



( run in 0.576 second using v1.01-cache-2.11-cpan-acf6aa7dc9e )