implement register_report() and replace More menu with Reports menu

This commit is contained in:
Oliver Gorwits
2013-03-10 17:21:23 +00:00
parent 4a16e3fde3
commit f513000f08
2 changed files with 38 additions and 8 deletions

View File

@@ -7,6 +7,8 @@ set(
'navbar_items' => [],
'search_tabs' => [],
'device_tabs' => [],
'reports' => {},
'report_order' => [qw/Device Port Node VLAN Network Wireless/],
);
# this is what Dancer::Template::TemplateToolkit does by default
@@ -77,6 +79,29 @@ register 'register_device_tab' => sub {
_register_tab('device', $config);
};
register 'register_report' => sub {
my ($self, $config) = plugin_args(@_);
my @categories = @{ setting('report_order') };
if (!length $config->{category}
or !length $config->{path}
or !length $config->{label}
or 0 == scalar grep {$config->{category} eq $_} @categories) {
error "bad config to register_report";
return;
}
foreach my $item (@{setting('reports')->{ $config->{category} }}) {
if ($item->{label} eq $config->{label}) {
$item = $config;
return;
}
}
push @{setting('reports')->{ $config->{category} }}, $config;
};
register_plugin;
true;

View File

@@ -38,7 +38,6 @@
<body>
[%
more_dd = { "Reports" = "/reports" }
user_dd = [
{ "title" = "Settings", "link" = "/settings" },
{ "title" = "Help", "link" = "/help" },
@@ -57,17 +56,23 @@
<a href="[% uri_for(ni.path) %]">[% ni.label | html_entity %]</a>
</li>
[% END %]
[% IF more_dd.size %]
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
More <b class="caret"></b></a>
<li class="dropdown[% ' active' IF vars.nav == 'reports' %]">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Reports <b class="caret"></b></a>
<ul class="dropdown-menu">
[% FOREACH title IN more_dd.keys.sort %]
<li><a href="[% uri_for(more_dd.$title) %]">[% title | html_entity %]</a></li>
[% FOREACH category IN settings.report_order %]
[% IF vars.reports.$category.size %]
<li class="dropdown-submenu">
<a href="#">[% category | html_entity %]</a>
<ul class="dropdown-menu">
[% FOREACH item IN settings.reports.$category %]
<li><a href="[% uri_for(item.path) %]">[% item.label | html_entity %]</a></li>
[% END %]
</ul>
</li>
[% END %]
[% END %]
</ul>
</li> <!-- /dropdown -->
[% END %]
</ul>
<form class="navbar-search pull-left" method="get" action="[% uri_for('/search') %]">
<input placeholder="Find Anything" class="search-query span3"