Allow Port Control users to see Port Config Log report
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
|
||||
* Display clean version of creation stamp on port log
|
||||
* Make sure only to check for admins in deploy script
|
||||
* Allow Port Control users to see Port Config Log report
|
||||
|
||||
[BUG FIXES]
|
||||
|
||||
|
||||
@@ -178,6 +178,16 @@ any query parameters which might customize the report search.
|
||||
See the L<App::Netdisco::Web::Plugin::Report::DuplexMismatch> module for a
|
||||
simple example of how to implement the handler.
|
||||
|
||||
An additional feature allows you to create Reports which do not appear in the
|
||||
Navbar menu. This is useful if the page is only linked directly from another
|
||||
(for example Port Log). To enable this feature add the C<hidden> key:
|
||||
|
||||
register_report({
|
||||
tag => 'newfeature',
|
||||
label => 'My New Feature',
|
||||
hidden => true,
|
||||
});
|
||||
|
||||
=head1 CSV Response
|
||||
|
||||
Most pages in Netdisco are a table with data. It's possible to have the
|
||||
@@ -224,7 +234,7 @@ want arbitrary links supported.
|
||||
|
||||
An additional feature allows you to create Admin Tasks which do not appear in
|
||||
the Navbar menu. This is useful if the page is only linked directly from
|
||||
another (for example Port Log). To enable this feature add the C<hidden> key:
|
||||
another. To enable this feature add the C<hidden> key:
|
||||
|
||||
register_admin_task({
|
||||
tag => 'newfeature',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package App::Netdisco::Web::Plugin::AdminTask::PortLog;
|
||||
package App::Netdisco::Web::Plugin::Report::PortLog;
|
||||
|
||||
use Dancer ':syntax';
|
||||
use Dancer::Plugin::Ajax;
|
||||
@@ -7,13 +7,14 @@ use Dancer::Plugin::Auth::Extensible;
|
||||
|
||||
use App::Netdisco::Web::Plugin;
|
||||
|
||||
register_admin_task({
|
||||
register_report({
|
||||
tag => 'portlog',
|
||||
label => 'Port Control Log',
|
||||
category => 'Port', # not used
|
||||
hidden => true,
|
||||
});
|
||||
|
||||
ajax '/ajax/content/admin/portlog' => require_role admin => sub {
|
||||
ajax '/ajax/content/report/portlog' => require_role port_control => sub {
|
||||
my $device = param('q');
|
||||
my $port = param('f');
|
||||
send_error('Bad Request', 400) unless $device and $port;
|
||||
@@ -31,7 +32,7 @@ ajax '/ajax/content/admin/portlog' => require_role admin => sub {
|
||||
})->with_times;
|
||||
|
||||
content_type('text/html');
|
||||
template 'ajax/admintask/portlog.tt', {
|
||||
template 'ajax/report/portlog.tt', {
|
||||
results => $set,
|
||||
}, { layout => undef };
|
||||
};
|
||||
@@ -53,7 +53,7 @@ web_plugins:
|
||||
- Report::SsidInventory
|
||||
- Report::VlanInventory
|
||||
- Report::SubnetUtilization
|
||||
- AdminTask::PortLog
|
||||
- Report::PortLog
|
||||
- AdminTask::JobQueue
|
||||
- AdminTask::Topology
|
||||
- AdminTask::PollerPerformance
|
||||
|
||||
@@ -40,12 +40,6 @@
|
||||
<span id="nd_device-name">
|
||||
<a class="nd_adminbutton" name="delall" href="#"><i class="icon-trash text-error"></i></a>
|
||||
</span>
|
||||
[% ELSIF task.tag == 'portlog' %]
|
||||
<span id="nd_device-name">
|
||||
<a href="[% device_ports %]&q=[% params.q | uri %]&c_admin=on">[% params.q %]</a>
|
||||
-
|
||||
<a href="[% device_ports %]&q=[% params.q | uri %]&f=[% params.f | uri %]&c_admin=on">[% params.f %]</a>
|
||||
</span>
|
||||
[% ELSIF task.provides_csv %]
|
||||
<span id="nd_device-name">
|
||||
<a id="nd_csv-download" href="#" download="netdisco.csv">
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
data-animation="" data-title="Click to Enable"></i>
|
||||
[% END %]
|
||||
<a class="nd_log-icon"
|
||||
href="[% uri_for('/admin/portlog') %]?q=[% device.ip | uri %]&f=[% row.port | uri %]">
|
||||
href="[% uri_for('/report/portlog') %]?q=[% device.ip | uri %]&f=[% row.port | uri %]">
|
||||
<i class="icon-file-text-alt"
|
||||
rel="tooltip" data-placement="top" data-offset="3"
|
||||
data-animation="" data-title="View Port Log"></i>
|
||||
@@ -342,7 +342,7 @@
|
||||
role="dialog" aria-hidden="true">
|
||||
<div class="modal-body">
|
||||
<blockquote>
|
||||
<ul><li><p>Please provide a reason for chainging the Port Configuration</p></li></ul>
|
||||
<ul><li><p>Please provide a reason for changing the Port Configuration</p></li></ul>
|
||||
</blockquote>
|
||||
<select id="nd_portlog-reason" class="input-block-level" name="reason">
|
||||
[% FOREACH pair IN settings.port_control_reasons.pairs %]
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
method="get" action="[% uri_for('/device') %]">
|
||||
<input name="tab" value="[% tab.tag %]" type="hidden"/>
|
||||
[% TRY %]
|
||||
[% INCLUDE "sidebar/device/${tab.tag}.tt" %]
|
||||
<script type="text/javascript">has_sidebar["[% tab.tag %]"] = 1;</script>
|
||||
[% INCLUDE "sidebar/device/${tab.tag}.tt" %]
|
||||
[% CATCH %]
|
||||
<!-- no "[% tab.tag %]" search options -->
|
||||
<input name="q" value="[% params.q | html_entity %]" type="hidden"/>
|
||||
|
||||
@@ -77,6 +77,7 @@
|
||||
<a href="#">[% category | html_entity %]</a>
|
||||
<ul class="dropdown-menu">
|
||||
[% FOREACH item IN settings._reports_menu.$category %]
|
||||
[% NEXT IF settings._reports.$item.hidden %]
|
||||
<li><a href="[% uri_for('/report/' _ item) %]">[% settings._reports.$item.label | html_entity %]</a></li>
|
||||
[% END %]
|
||||
</ul>
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
<form id="[% report.tag %]_form" class="nd_sidebar-form form-stacked"
|
||||
method="get" action="[% uri_for('/report') %]">
|
||||
[% TRY %]
|
||||
[% INCLUDE "sidebar/report/${report.tag}.tt" %]
|
||||
<script type="text/javascript">has_sidebar["[% report.tag %]"] = 1;</script>
|
||||
[% INCLUDE "sidebar/report/${report.tag}.tt" %]
|
||||
[% CATCH %]
|
||||
<script type="text/javascript">has_sidebar["[% report.tag %]"] = 0;</script>
|
||||
[% END %]
|
||||
@@ -28,7 +28,13 @@
|
||||
<ul id="nd_search-results" class="nav nav-tabs">
|
||||
<li class="active"><a id="[% report.tag %]_link" class="nd_single-tab"
|
||||
href="#[% report.tag %]_pane">[% report.label %]</a></li>
|
||||
[% IF report.provides_csv %]
|
||||
[% IF report.tag == 'portlog' %]
|
||||
<span id="nd_device-name">
|
||||
<a href="[% device_ports %]&q=[% params.q | uri %]&c_admin=on">[% params.q %]</a>
|
||||
-
|
||||
<a href="[% device_ports %]&q=[% params.q | uri %]&f=[% params.f | uri %]&c_admin=on">[% params.f %]</a>
|
||||
</span>
|
||||
[% ELSIF report.provides_csv %]
|
||||
<span id="nd_device-name">
|
||||
<a id="nd_csv-download" href="#" download="netdisco.csv">
|
||||
<i id="nd_csv-download-icon" class="text-info icon-file-text-alt icon-large"
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
<form id="[% tab.tag %]_form" class="nd_sidebar-form form-stacked" method="get" action="[% uri_for('/search') %]">
|
||||
<input name="tab" value="[% tab.tag %]" type="hidden"/>
|
||||
[% TRY %]
|
||||
[% INCLUDE "sidebar/search/${tab.tag}.tt" %]
|
||||
<script type="text/javascript">has_sidebar["[% tab.tag %]"] = 1;</script>
|
||||
[% INCLUDE "sidebar/search/${tab.tag}.tt" %]
|
||||
[% CATCH %]
|
||||
<!-- no "[% tab.tag %]" search options -->
|
||||
<input name="q" value="[% params.q | html_entity %]" type="hidden"/>
|
||||
|
||||
Reference in New Issue
Block a user