diff --git a/Netdisco/lib/App/Netdisco/Web.pm b/Netdisco/lib/App/Netdisco/Web.pm index 797b7283..d51d4bf4 100644 --- a/Netdisco/lib/App/Netdisco/Web.pm +++ b/Netdisco/lib/App/Netdisco/Web.pm @@ -13,6 +13,7 @@ use App::Netdisco::Web::AuthN; use App::Netdisco::Web::Search; use App::Netdisco::Web::Device; use App::Netdisco::Web::Report; +use App::Netdisco::Web::AdminTask; use App::Netdisco::Web::TypeAhead; use App::Netdisco::Web::PortControl; diff --git a/Netdisco/lib/App/Netdisco/Web/Plugin.pm b/Netdisco/lib/App/Netdisco/Web/Plugin.pm index 11a6a179..53c17859 100644 --- a/Netdisco/lib/App/Netdisco/Web/Plugin.pm +++ b/Netdisco/lib/App/Netdisco/Web/Plugin.pm @@ -7,7 +7,7 @@ set( 'navbar_items' => [], 'search_tabs' => [], 'device_tabs' => [], - 'admin_tasks' => [], + 'admin_tasks' => {}, 'reports_menu' => {}, 'reports' => {}, 'report_order' => [qw/Device Port Node VLAN Network Wireless/], @@ -60,14 +60,7 @@ register 'register_admin_task' => sub { return; } - foreach my $item (@{ setting('admin_tasks') }) { - if ($item->{tag} eq $config->{tag}) { - $item = $config; - return; - } - } - - push @{ setting('admin_tasks') }, $config; + setting('admin_tasks')->{ $config->{tag} } = $config; }; sub _register_tab { diff --git a/Netdisco/share/public/javascripts/netdisco.js b/Netdisco/share/public/javascripts/netdisco.js index 865eb60e..d8f6527c 100644 --- a/Netdisco/share/public/javascripts/netdisco.js +++ b/Netdisco/share/public/javascripts/netdisco.js @@ -44,8 +44,8 @@ function do_search (event, tab) { // update browser search history with the new query. // however if it's the same tab, this is a *replace* of the query url. - // and just skip this bit if it's the reports display. - if (path != 'report' && window.History && window.History.enabled) { + // and just skip this bit if it's the report or admin display. + if (path != 'report' && path != 'admin' && window.History && window.History.enabled) { is_from_history_plugin = 1; window.History.replaceState( {name: tab, fields: $(form).serializeArray()}, diff --git a/Netdisco/share/views/admintask.tt b/Netdisco/share/views/admintask.tt new file mode 100644 index 00000000..8957a6a1 --- /dev/null +++ b/Netdisco/share/views/admintask.tt @@ -0,0 +1,38 @@ + +