HTML-Widgets-NavMenu
view release on metacpan or search on metacpan
examples/article-examples/cgi-script/H-W-NM-serve.pl view on Meta::CPAN
);
my $cgi = CGI->new();
my $path_info = $cgi->path_info();
if ( $cgi->param("hi") )
{
print $cgi->header( -type => "text/plain" );
print( map { "$_ => $ENV{$_}\n" } keys(%ENV) );
exit;
}
my $found = 0;
PAGE_LOOP:
foreach my $page (@pages)
{
my $path = $page->{'path'};
my $title = $page->{'title'};
my $content = $page->{'content'};
if ( $path_info eq "/$path" )
{
$found = 1;
render_page( "/" . $path, $title, $content );
last;
}
}
sub render_page
{
my ( $path, $title, $content ) = @_;
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();
print $cgi->header();
my $template = Template->new(
{
'POST_CHOMP' => 1,
}
);
my $vars = {
'title' => $title,
'css_style' => $css_style,
'nav_menu_text' => join( "\n", @{ $nav_menu_results->{'html'} } )
. "\n",
'content' => $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 );
}
if ( !$found )
{
eval { render_page( $path_info, "Not a title", "Page Contents" ); };
if ($@)
{
$@->CGIpm_perform_redirect($cgi);
}
}
( run in 1.342 second using v1.01-cache-2.11-cpan-f6376fbd888 )