HTML::EasyTemplate::DirMenu - HTML menus of directories.


NAME

HTML::EasyTemplate::DirMenu - HTML menus of directories.


DESCRIPTION

Provide an easy means of creating from a directory a representative block of HTML suitable for use as a substitution item in an HTML::Easytemplate, or as freestanding mark-up.


SYNOPSIS

Print a simple menu of HTML files in current working directory:

        use HTML::EasyTemplate;
        my $m = new HTML::EasyTemplate::DirMenu (
                'START'                 => 'E:/www/leegoddard_com',
                'URL_ROOT'              => 'http://leegoddard_com',
                'MODE'                  => 'files',
                'TITLE_FROM'    => 'title',
                'LIST_START'    => '<DIV class="menu-layer">',
                'LIST_END'              => '</DIV>',
                'ARTICLE_START' => '<DIV class="menu-item">',
                'ARTICLE_END'   => '</DIV>',
                'DIR_START'             => '<DIV class="dir-name>',
                'DIR_END'               => '</DIV>',
        );
        print $m->{HTML};

Add the following lines to the above for a menu in an HTML::EasyTemplate, as TEMPLATEITEM name='menu1' (based on the example provided in HTML::EasyTemplate):

        use HTML::EasyTemplate::DirMenu;
        my %items = (
                'articleTitle'=> 'An Example Article',
                'articleText' => 'This is boring sample text: hello world...',
                'menu'            => $m->{HTML},
        );
        my $TEMPLATE = new HTML::EasyTemplate('E:/WWW/leegoddard_com/FL/_templates/Template_Blank.html') or die "Couldn't make template!";
        $TEMPLATE->title("Latka Lover");
        $TEMPLATE -> process('fill',\%items);
        $TEMPLATE -> save( 'E:/WWW/leegoddard_com/FL/','new2.html');
        print "Saved the new document as <$TEMPLATE->{ARTICLE_PATH}>\n";
        __END__


DEPENDENCIES and PRAGMA

        EasyTemplate;
        cwd;
        HTML::TokeParser;
        strict;


Constructor method (new)

The method expects a package/class referemnce as it's first parameter. Following that, arguments should be passed in the form of an anonymous hash or as name/value pairs:

        my $m = new HTML::EasyTemplate::DirMenu (
                        'arg1'=>'val1','arg2'=>'val2',
        );

or:

        my $m = new HTML::EasyTemplate::DirMenu (
                        {'arg1'=>'val1','arg2'=>'val2',}
        );

Arguments

MODE
Must be set to one of either 'all', 'dirs', 'files'.

START
The directory to menu, or at which to start menuing.

EXTENSIONS
Filter - a regular expression fragment applied to the filenames within a directory: insensitive to case, is bracketed, and matches after a dot, and is tied to the the end of the string:
        m/\.($HERE)$/i

Deafults to .*\.html?.

PRINTEXTENSIONS
True or false to request that filename extensions, defined in the object's EXTENSIONS slot above, be included or excluded in the printing of a filename. Defaults to exclude.

EXC_DIRS, EXC_FILES
A regular expression to be applied against directories/files to decide exclusion.

TITLE_FROM
An HTML element within the doc, the first occurance of which will be accessed to get the text for the menu link. If it fails or is not supplied, will use the doc's filename.

LIST_START, LIST_END
HTML to put at the top and bottom of the menu output.

ARTICLE_START, ARTICLE_END
HTML to put at before and after each menu item.

HTMLDEFAULT
HTML to use when no files are found in a directory. Defaults to [No content].

TOPDIRTEXT
Text will be used as top-level directory title.

ARTICLE_ROOT
The directory in which to begin work; defaults to the same value as the START slot detailed above.

The ARTICLE_ROOT is stripped from filepaths when creating HTML A href elements, and replaced with...

URL_ROOT
This slot is used as the BASE for created hyperlinks to files, instead of ARTICLE_ROOT, above.

URL_ROOT_TEXT
Text to use in a link that refers to URL_ROOT.

Other Slots

HTML
It is in this slot that a single scalar representing the composed HTML menu will be found.

OUTPUT
Defaults to LIST, which produces HTML output using the options and defaults above. Could be used to call another processing sub (in &new) to output maybe a drop-down menu.


METHOD collect_this_dir

Collects content info of a directory, the path to which it accepts as it's sole argument.

Returns undef on failure.


METHOD create_html

Fills the calling object's HTML slot detailed in the constructor method's documentation.

Incidentaly returns that HTML.


CAVEATS


TODO


SEE ALSO

        HTML::TokeParser
        HTML::EasyTemplate
        HTML::EasyTemplate::PageMenu
        HTML::EasyTemplate::BuildMySite


AUTHOR

Lee Goddard (LGoddard@CPAN.org)


COPYRIGHT

Copyright 2000-2001 Lee Goddard.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

 HTML::EasyTemplate::DirMenu - HTML menus of directories.