diff --git a/Netdisco/lib/App/Netdisco/Web.pm b/Netdisco/lib/App/Netdisco/Web.pm index 85e88aa0..32efc054 100644 --- a/Netdisco/lib/App/Netdisco/Web.pm +++ b/Netdisco/lib/App/Netdisco/Web.pm @@ -51,6 +51,9 @@ hook 'before_template' => sub { # allow very long lists of ports $Template::Directive::WHILE_MAX = 10_000; + + # allow hash keys with leading underscores + $Template::Stash::PRIVATE = undef; }; get '/' => sub { diff --git a/Netdisco/lib/App/Netdisco/Web/AdminTask.pm b/Netdisco/lib/App/Netdisco/Web/AdminTask.pm index 389351d9..91859061 100644 --- a/Netdisco/lib/App/Netdisco/Web/AdminTask.pm +++ b/Netdisco/lib/App/Netdisco/Web/AdminTask.pm @@ -71,7 +71,7 @@ get '/admin/*' => sub { var(nav => 'admin'); template 'admintask', { - task => setting('admin_tasks')->{ $tag }, + task => setting('_admin_tasks')->{ $tag }, }; }; diff --git a/Netdisco/lib/App/Netdisco/Web/Plugin.pm b/Netdisco/lib/App/Netdisco/Web/Plugin.pm index 53c17859..a2ff8d24 100644 --- a/Netdisco/lib/App/Netdisco/Web/Plugin.pm +++ b/Netdisco/lib/App/Netdisco/Web/Plugin.pm @@ -4,13 +4,13 @@ use Dancer ':syntax'; use Dancer::Plugin; set( - 'navbar_items' => [], - 'search_tabs' => [], - 'device_tabs' => [], - 'admin_tasks' => {}, - 'reports_menu' => {}, - 'reports' => {}, - 'report_order' => [qw/Device Port Node VLAN Network Wireless/], + '_navbar_items' => [], + '_search_tabs' => [], + '_device_tabs' => [], + '_admin_tasks' => {}, + '_reports_menu' => {}, + '_reports' => {}, + '_report_order' => [qw/Device Port Node VLAN Network Wireless/], ); # this is what Dancer::Template::TemplateToolkit does by default @@ -40,14 +40,14 @@ register 'register_navbar_item' => sub { return; } - foreach my $item (@{ setting('navbar_items') }) { + foreach my $item (@{ setting('_navbar_items') }) { if ($item->{tag} eq $config->{tag}) { $item = $config; return; } } - push @{ setting('navbar_items') }, $config; + push @{ setting('_navbar_items') }, $config; }; register 'register_admin_task' => sub { @@ -60,12 +60,12 @@ register 'register_admin_task' => sub { return; } - setting('admin_tasks')->{ $config->{tag} } = $config; + setting('_admin_tasks')->{ $config->{tag} } = $config; }; sub _register_tab { my ($nav, $config) = @_; - my $stash = setting("${nav}_tabs"); + my $stash = setting("_${nav}_tabs"); if (!length $config->{tag} or !length $config->{label}) { @@ -96,7 +96,7 @@ register 'register_device_tab' => sub { register 'register_report' => sub { my ($self, $config) = plugin_args(@_); - my @categories = @{ setting('report_order') }; + my @categories = @{ setting('_report_order') }; if (!length $config->{category} or !length $config->{tag} @@ -107,15 +107,15 @@ register 'register_report' => sub { return; } - foreach my $item (@{setting('reports_menu')->{ $config->{category} }}) { + foreach my $item (@{setting('_reports_menu')->{ $config->{category} }}) { if ($item eq $config->{tag}) { - setting('reports')->{$config->{tag}} = $config; + setting('_reports')->{$config->{tag}} = $config; return; } } - push @{setting('reports_menu')->{ $config->{category} }}, $config->{tag}; - setting('reports')->{$config->{tag}} = $config; + push @{setting('_reports_menu')->{ $config->{category} }}, $config->{tag}; + setting('_reports')->{$config->{tag}} = $config; }; register_plugin; diff --git a/Netdisco/lib/App/Netdisco/Web/Report.pm b/Netdisco/lib/App/Netdisco/Web/Report.pm index fba23e90..e9ab7bb4 100644 --- a/Netdisco/lib/App/Netdisco/Web/Report.pm +++ b/Netdisco/lib/App/Netdisco/Web/Report.pm @@ -10,7 +10,7 @@ get '/report/*' => sub { var(nav => 'reports'); template 'report', { - report => setting('reports')->{ $tag }, + report => setting('_reports')->{ $tag }, }; }; diff --git a/Netdisco/share/views/device.tt b/Netdisco/share/views/device.tt index 7eed4a58..bfa27799 100644 --- a/Netdisco/share/views/device.tt +++ b/Netdisco/share/views/device.tt @@ -19,7 +19,7 @@
- [% FOREACH tab IN settings.device_tabs %] + [% FOREACH tab IN settings._device_tabs %]