OpenIndex
view release on metacpan or search on metacpan
OpenIndex.pm view on Meta::CPAN
my $self=$class->new;
my $menu=DEFAULT_MENU;
$self->{menu}=[@$menu];
$menu=DEFAULT_ADMN_MENU;
$self->{admnmenu}=[@$menu];
$self->{userdir}='';
$self->{usersite}='';
$self->{icon_width}=DEFAULT_ICON_WIDTH;
$self->{icon_height}=DEFAULT_ICON_HEIGHT;
$self->{name_width}=DEFAULT_NAME_WIDTH;
$self->{default_order}=DEFAULT_ORDER;
$self->{fakedir}=DEFAULT_FAKE_DIR;
$self->{markdir}=DEFAULT_MARK_DIR;
$self->{markroot}='';
$self->{root}="";
$self->{admin}=0;
$self->{umask}=0;
$self->{frames}=0;
$self->{mark}=0;
$self->{revoke}=0;
$self->{notitle}=0;
$self->{nocache}=0;
$self->{debug}=0;
$self->{textlen}=DEFAULT_TEXT_LEN;
$self->{postmax}=DEFAULT_POST_MAX;
$self->{help}=DEFAULT_HELP_URL;
$self->{language}=0;
$self->{gidenv}= "";
$self->{userenv}= "";
$self->{headuri}="";
$self->{footuri}="";
$self->{ignore}=[];
$self->{header}=[];
$self->{readme}=[];
$self->{indexfile}=[];
$self->{desc}={};
$self->{htmltags}={};
$self->{htmltext}={};
$self->{options}=0;
$self->{options_add}=0;
$self->{options_del}=0;
return $self;
}
sub DIR_MERGE {
my ($parent, $current) = @_;
my %new;
$new{default_order} = $current->{default_order} || $parent->{default_order};
$new{options_add} = 0;
$new{options_del} = 0;
if($current->{options} & NO_OPTIONS) { # None=override all
$new{options} = NO_OPTIONS;
} else {
if ($current->{options} == 0) { # all incremental, so combine them with parent
$new{options_add} = ($parent->{options_add} | $current->{options_add}) & ~$current->{options_del};
$new{options_del} = ($parent->{options_del} | $current->{options_del}) ;
$new{options} = $parent->{options} & ~NO_OPTIONS;
} else { # not all incremental, so no inheritance
$new{options} = $current->{options};
}
# Collect cascaded options
$new{options} |= $new{options_add};
$new{options} &= ~ $new{options_del};
}
$new{userdir} = $current->{userdir} || $parent->{userdir};
$new{usersite} = $current->{usersite} || $parent->{usersite};
$new{icon_height} = $current->{icon_height} || $parent->{icon_height};
$new{icon_width} = $current->{icon_width} || $parent->{icon_width};
$new{name_width} = $current->{name_width} || $parent->{name_width};
$new{fakedir} = $current->{fakedir} || $parent->{fakedir};
$new{markdir} = $current->{markdir} || $parent->{markdir};
$new{markroot} = $current->{markroot} || $parent->{markroot};
$new{frames} = $current->{frames} || $parent->{frames};
$new{root} = $current->{root} || $parent->{root};
$new{admin} = $current->{admin} || $parent->{admin};
$new{umask} = $current->{umask} || $parent->{umask};
$new{textlen} = $current->{textlen} || $parent->{textlen};
$new{postmax} = $current->{postmax} || $parent->{postmax};
$new{help} = $current->{help} || $parent->{help};
$new{language} = $current->{language} || $parent->{language};
$new{userenv} = $current->{userenv} || $parent->{userenv};
$new{gidenv} = $current->{gidenv} || $parent->{gidenv};
$new{mark} = $current->{mark} || $parent->{mark};
$new{revoke} = $current->{revoke} || $parent->{revoke};
$new{nocache} = $current->{nocache} || $parent->{nocache};
$new{notitle} = $current->{notitle} || $parent->{notitle};
$new{debug} = $current->{debug} || $parent->{debug};
$new{menu} = $current->{menu} || $parent->{menu};
$new{admnmenu} = $current->{admnmenu} || $parent->{admnmenu};
$new{always} = $current->{always} || $parent->{always};
$new{headuri} = $current->{headuri} || $parent->{headuri};
$new{footuri} = $current->{footuri} || $parent->{footuri};
$new{readme} = [ @{$current->{readme}}, @{$parent->{readme}} ];
$new{header} = [ @{$current->{header}}, @{$parent->{header}} ];
$new{readme} = [ @{$current->{readme}}, @{$parent->{readme}} ];
$new{ignore} = [ @{$current->{ignore}}, @{$parent->{ignore}} ];
$new{indexfile} = [ @{$current->{indexfile}},@{$parent->{indexfile}} ];
$new{desc} = {% {$current->{desc}}};
foreach ( keys %{$parent->{desc}}) { $new{desc}->{$_}=$parent->{desc}{$_}; }
$new{htmltags} = {% {$current->{htmltags}}};
foreach ( keys %{$parent->{htmltags}}) { $new{htmltags}->{$_}=$parent->{htmltags}{$_}; }
$new{htmltext} = {% {$current->{htmltext}}};
foreach ( keys %{$parent->{htmltext}}) { $new{htmltext}->{$_}=$parent->{htmltext}{$_}; }
return bless \%new, ref($parent);
}
sub DirectoryIndex($$$;*) {
my ($cfg, $parms, $files, $cfg_fh) = @_;
for my $file (split /\s+/, $files) {
push @{$cfg->{indexfile}}, $file;
}
return DECLINE_CMD if Apache->module('mod_dir.c');
}
sub AddDescription($$$;*) {
#this is not completely supported.
#Since I didn't take the time to fully check mod_autoindex.c behavior,
#I just implemented this as simplt as I could.
my ($cfg, $parms, $args, $cfg_fh) = @_;
my ($desc, $files) = ( $args =~ /^\s*"([^"]*)"\s+(.*)$/);
my $file = join "|", split /\s+/, $files;
( run in 0.481 second using v1.01-cache-2.11-cpan-39bf76dae61 )