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 )