HTML-Widgets-NavMenu

 view release on metacpan or  search on metacpan

examples/article-examples/with-embellishments/H-W-NM-embellish.pl  view on Meta::CPAN

    my $site_map_generator = HTML::Widgets::NavMenu->new(
        path_info     => "/$site_map_path",
        current_host  => "default",
        hosts         => \%hosts,
        tree_contents => $nav_menu_tree
    );
    push @pages,
        {
        'path'    => $site_map_path,
        'title'   => "Site Map",
        'content' => join( "\n", @{ $site_map_generator->gen_site_map() } ),
        };
};

foreach my $page (@pages)
{
    my $path     = $page->{'path'};
    my $nav_menu = HTML::Widgets::NavMenu->new(
        path_info     => "/$path",
        current_host  => "default",
        hosts         => \%hosts,
        tree_contents => $nav_menu_tree,
    );

    my $nav_menu_results = $nav_menu->render();

    my $file_path = $path;
    if ( ( $file_path =~ m{/$} ) || ( $file_path eq "" ) )
    {
        $file_path .= "index.html";
    }
    my $full_path = "dest/$file_path";
    $full_path =~ m{^(.*)/[^/]+$};

    # mkpath() throws an exception if it isn't successful, which will cause
    # this program to terminate. This is what we want.
    mkpath( $1, 0, oct('0755'), );
    open my $out, ">", $full_path
        or die "Could not open \"$full_path\" for writing!";

    my $template = Template->new(
        {
            'POST_CHOMP' => 1,
        }
    );

    my $vars = {
        'title'         => $page->{'title'},
        'css_style'     => $css_style,
        'nav_menu_text' => join( "\n", @{ $nav_menu_results->{'html'} } )
            . "\n",
        'content'     => $page->{'content'} . "\n",
        'breadcrumbs' => $nav_menu_results->{leading_path},
        'nav_links'   => $nav_menu_results->{'nav_links_obj'},
    };

    my $nav_links_template = <<'EOF';
[% USE HTML %]
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>[% title %]</title>
<style type="text/css">
[% css_style %]
</style>
[% FOREACH key = nav_links.keys.sort %]
<link rel="[% key %]"
href="[% HTML.escape(nav_links.$key.direct_url()) %]"
title="[% nav_links.$key.title() %]" />
[% END %]
</head>
<body>
<div class="breadcrumb">
[% FOREACH c = breadcrumbs %]
[% UNLESS loop.first %] → [% END %]
<a href="[% HTML.escape(c.direct_url) %]"
[% IF c.title %] title="[% c.title %]"[% END %]
>[% c.label %]</a>
[% END %]

</div>
<div class="navlinks">
[% FOREACH key = nav_links.keys.sort %]
<a href="[% HTML.escape(nav_links.$key.direct_url()) %]"
title="[% nav_links.$key.title() %]">[% key %]</a>
[% END %]
</div>
<div class="navbar">
[% nav_menu_text %]
</div>
<div class="body">
<h1>[% title %]</h1>
[% content %]
</div>
</body>
</html>
EOF

    $template->process( \$nav_links_template, $vars, $out );

    close($out);
}



( run in 1.259 second using v1.01-cache-2.11-cpan-f4a522933cf )