css audit

This commit is contained in:
Oliver Gorwits
2013-05-11 11:57:19 +01:00
parent 201470275d
commit e9349f325d
26 changed files with 489 additions and 494 deletions

View File

@@ -2,11 +2,11 @@ body {
padding-top: 0px !important; padding-top: 0px !important;
} }
#search_results > li:not(.active) { #nd_search-results > li:not(.active) {
display: none !important; display: none !important;
} }
.navbar, .sidebar { .navbar, .nd_sidebar {
display: none !important; display: none !important;
} }

View File

@@ -1,18 +1,19 @@
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* for the fixed navbar make sure content stops short of page top*/ /* style common to all pages in the site */
/* for the fixed navbar make sure content stops short of page top*/
body { body {
padding-top: 50px; padding-top: 50px;
} }
/* magnifying glass icon for search box */ /* magnifying glass icon for search box */
.navbar_icon { .nd_navbar-icon {
vertical-align: sub; vertical-align: sub;
cursor: pointer; cursor: pointer;
} }
/* for the "logged in as..." text */ /* for the "logged in as..." text */
.nd_navbartext { .nd_navbar-text {
color: #666; color: #666;
padding-top: 11px; padding-top: 11px;
} }
@@ -31,49 +32,32 @@ body {
.ui-autocomplete { .ui-autocomplete {
max-height: 200px; max-height: 200px;
overflow-y: auto; overflow-y: auto;
/* prevent horizontal scrollbar */
overflow-x: hidden; overflow-x: hidden;
} }
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* various styles to adjust the hero box used for homepage + login */ /* styles to adjust the hero box used for homepage + login */
.nd_herorow { /* space between hero box and navbar */
.nd_hero-row {
margin-top: 50px; margin-top: 50px;
} }
/* alter proportions of hero unit to make it "tighter" on content */
.hero-unit { .hero-unit {
padding: 30px 60px 40px 90px; padding: 30px 60px 40px 90px;
} }
.nd_loginform { /* push user/pass/login form down+away from the Netdisco banner text */
.nd_login-form {
margin-top: 15px; margin-top: 15px;
margin-bottom: 0px; margin-bottom: 0px;
} }
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* styles for Reports */ /* styles for device inventory */
/* from Bootstrap doc style sheet */ .nd_inventory-table-head {
.nd_show-grid [class*="span"] {
background-color: cornsilk;
text-align: center;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
min-height: 30px;
line-height: 30px;
}
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* styles for Inventory */
#nd_dev_age_form {
margin-top: 10px;
margin-bottom: 12px;
}
.nd_inv_tbl_head {
text-align: center; text-align: center;
color: lightSlateGray; color: lightSlateGray;
margin-top: 6px; margin-top: 6px;
@@ -81,12 +65,7 @@ body {
} }
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* results table links */ /* styles for links in results tables */
.nd_stealthlink {
text-decoration: none !important;
color: #404040;
}
/* make the whole cell become a hyperlink in results table */ /* make the whole cell become a hyperlink in results table */
.nd_linkcell { .nd_linkcell {
@@ -95,119 +74,57 @@ body {
height: 100%; height: 100%;
} }
/* special placing for edit icon in details tab */ /* still a link, but styled like normal text */
.nd_device_details_edit { .nd_stealth-link {
float: right !important; text-decoration: none !important;
font-size: 14px; color: #404040;
} }
/* port admin up/down control */ /* nudge cell content to the right when port_control controls are enabled */
.nd_edit_icon, .nd_hand_icon { .nd_editable-cell > .nd_this-port-only {
cursor: pointer;
float: left;
display: none;
}
.nd_power_icon {
cursor: pointer;
}
.icon-off {
vertical-align: middle;
color: darkRed;
}
.nd_power_on {
color: darkGreen;
}
/* placement of port link when port admin hint is enabled */
.nd_editable_cell > .nd_this_port_only {
margin-left: 18px; margin-left: 18px;
} }
.nd_editable_cell > .nd_editable_cell_content { .nd_editable-cell > .nd_editable-cell-content {
margin-left: 18px; margin-left: 18px;
} }
/* style of editable content in table */
[contenteditable]:focus {
background: #FFFFD3 !important;
}
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* many styles for the collapsing lists */ /* styles to position table cell content */
/* mouse-over should be pointer to show JS collapser is clickable */
.nd_collapser {
cursor: pointer;
color: #0088CC;
}
/* collapser label should not have any decoration even though it's clickable */
.clearfix > a {
text-decoration: none !important;
}
/* collapser label should not have any decoration even though it's clickable */
.nd_collapse_vlans {
text-decoration: none !important;
cursor: pointer;
color: #0088CC;
}
/* class to control default state of collapsible lists on page load */
.nd_collapse_pre_hidden {
display: none;
}
/* for the tagged vlans total when hiding the full list */
.vlan_total {
float: right;
}
/* little up/down chevron to the right of some collapser link */
.arrow-up-down {
float: right;
margin-top: 1px;
margin-right: 1px;
color: #555;
}
/* draw little up arrow to the left of a label for collapsed list */
.cell-arrow-up-down {
float: left;
margin-right: 6px;
color: #555;
}
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* for table and to position cell content */
td { td {
vertical-align: baseline; vertical-align: baseline;
} }
.center_cell { .nd_center-cell {
text-align: center; text-align: center;
} }
/* manage pseudo devices table form */ /* fix layout of form fields inside the (topology) table */
.center_cell input { td div.input-append {
margin-bottom: 2px; margin-bottom: 0px;
} }
.nd_inline_form { /* fix layout of form fields inside the (pseudo devices) table */
.nd_center-cell input {
margin-bottom: 0px;
}
/* with two forms inside one cell, make the submit buttons side-by-side */
.nd_inline-form {
display: inline; display: inline;
} }
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* tabs */ /* styles for "tabs" and surrounding content */
#search_results {
/* add a small bottom margin (gutter) below all pages */
#nd_search-results {
margin-bottom: 10px; margin-bottom: 10px;
} }
#nd_device_name { /* for any label which we want to appear alongside tabs, floated to the right */
#nd_device-name {
float: right; float: right;
margin-bottom: 0px; margin-bottom: 0px;
margin-top: 9px; margin-top: 9px;
@@ -215,90 +132,255 @@ td {
color: #6D5720; color: #6D5720;
} }
.nd_single_tab { /* when there's only one tab (report, task etc) change the text color */
.nd_single-tab {
color: rgb(187,112,0) !important; color: rgb(187,112,0) !important;
} }
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* style for port_control controls */
/* edit icon in details tab is in the label (not content) cell so nudge to RHS*/
.nd_device-details-edit {
float: right !important;
font-size: 14px;
}
/* port admin up/down control */
.nd_edit-icon, .nd_hand-icon {
cursor: pointer;
float: left;
display: none;
margin-top: 3px;
}
/* port power control */
.nd_power-icon {
cursor: pointer;
}
/* the port power icon, whether it's on or off */
.icon-off {
vertical-align: middle;
color: darkRed;
}
/* change color of icon from default of red (which is OK for power-off) */
.nd_power-on {
color: darkGreen;
}
/* style of editable content in any table - yellow background */
[contenteditable]:focus {
background: #FFFFD3 !important;
}
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* styles for collapsing lists - sidebar or main table cell content */
/* sidebar collapser is clickable and deep grey */
.nd_collapser {
cursor: pointer;
color: #0088CC;
}
/* vlans collapser also clickable and deep grey but with no link styling */
.nd_collapse-vlans {
cursor: pointer;
color: #0088CC;
text-decoration: none !important;
}
/* set default state of collapsible lists as collapsed (hidden) */
.nd_collapse-pre-hidden {
display: none;
}
/* for the tagged vlans total when hiding the full list */
.nd_vlan-total {
float: right;
}
/* little up/down chevron to the right of some collapsed list */
.nd_arrow-up-down-right {
float: right;
margin-top: 1px;
margin-right: 1px;
color: #555;
}
/* little up arrow to the left of a label for collapsed list */
.nd_arrow-up-down-left {
float: left;
margin-right: 6px;
color: #555;
}
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* styles for sidebar placement and sizing */
/* make the sidebar fixed on the screen */
.container-fluid > .nd_sidebar {
position: absolute;
right: 20px;
width: 200px;
left: auto;
}
/* nudge content in the sidebar closer to the left */
.nd_sidebar-form {
padding-left: 0px;
margin-top: -9px;
margin-bottom: 0px;
}
/* reduce padding at the bottom of the sidebar content */
.container-fluid > .nd_sidebar > .well {
padding-bottom: 15px;
}
/* pull tab content away from the sidebar */
.container-fluid > .content {
margin-right: 215px;
margin-left: 0px;
}
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* styles for sidebar position controls (collapse, pin) */
.nd_sidebar-pinned {
position: fixed !important;
}
.nd_sidebar-pin-clicked {
color: rgba(255,0,0,0.8) !important;
}
.nd_sidebar-pin {
float: left;
margin-top: 6px;
margin-left: -16px;
font-size: 15px;
color: #555;
cursor: pointer;
}
#nd_sidebar-toggle-img-in {
float: left;
margin-top: -9px;
margin-left: -16px;
font-size: 15px;
color: #555;
cursor: pointer;
}
#nd_sidebar-toggle-img-out {
position: fixed;
top: 60px;
right: 7px;
z-index: 1;
color: #555;
cursor: pointer;
display: none;
}
/* question mark image with popover for netmap instructions */
#nd_netmap-help {
position: fixed;
top: 160px;
right: 7px;
z-index: 1;
color: #555;
font-size: 20px;
cursor: pointer;
display: none;
}
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* style customization for many items which appear in the sidebar */ /* style customization for many items which appear in the sidebar */
/* fixups for prepended checkbox in sidebar */ .nd_sidebar-title {
margin-left: 10px;
margin-top: 6px;
margin-bottom: 12px;
}
/* fixup for prepended checkbox in sidebar */
.nd_searchcheckbox { .nd_searchcheckbox {
width: 123px; width: 123px;
padding-left: 8px; padding-left: 8px;
cursor: pointer; cursor: pointer;
} }
/* fixup for prepended checkbox in sidebar */
.nd_sidebar .input-prepend {
margin-left: -2px;
margin-bottom: 0px;
}
/* for some reason bootstrap 2.1.0 displays add-on as block - no check supprt? */ /* for some reason bootstrap 2.1.0 displays add-on as block - no check supprt? */
.nd_checkboxlabel { .nd_checkboxlabel {
display: inline; display: inline;
} }
/* fixups for placing the Archived "A" inside the prepended checkbox */ /* fixup for placing the Archived "A" inside the prepended checkbox */
.nd_legendlabel { .nd_legendlabel {
float: right; float: right;
line-height: 1.2; line-height: 1.2;
} }
.nd_side_input { /* placement of form field in sidebar */
.nd_side-input {
margin-left: -3px; margin-left: -3px;
width: 152px; width: 152px;
} }
.nd_side_select { /* placement of form field in sidebar */
.nd_side-select {
margin-left: -3px; margin-left: -3px;
width: 165px; width: 165px;
} }
.sidebar .input-prepend { /* nudge the port name/vlan filter over a little (as compared to nd_side-select) */
margin-left: -2px; #nd_port-query {
margin-bottom: 0px;
}
/* nudge the port name/vlan filter over a little */
#nd_port_query {
margin-left: 5px !important; margin-left: 5px !important;
width: 152px; width: 152px;
} }
/* somewhere between span1 and span2 is desirable */ /* set the day/mon/year drop-down width */
#nd_days_select { #nd_days-select {
margin-top: 4px; margin-top: 4px;
width: 56px; width: 56px;
} }
/* set the day/mon/year drop-down width */ /* set the day/mon/year drop-down width */
#nd_age_select { #nd_age-select {
margin-top: 4px; margin-top: 4px;
width: 95px; width: 95px;
} }
/* set the MAC format drop-down width */ /* set the MAC format drop-down width */
#nd_mac_format { #nd_mac-format {
margin-top: 4px; margin-top: 4px;
width: 154px; width: 154px;
} }
/* set the MAC format drop-down width */ /* set the MAC format drop-down width */
#nd_node_mac_format { #nd_node-mac-format {
margin-left: -2px; margin-left: -2px;
margin-top: 4px; margin-top: 4px;
width: 165px; width: 165px;
} }
/* sidebar submit button width and spacing from Node Props */ /* sidebar submit button width and spacing */
.sidebar button { .nd_sidebar button {
margin-top: 9px; margin-top: 9px;
margin-left: -3px; margin-left: -3px;
width: 165px; width: 165px;
} }
.sidebar #ports_submit {
margin-top: 9px;
width: 165px;
}
/* little icon inside of search input fields */ /* little icon inside of search input fields */
.field_clear_icon, .field_copy_icon { .nd_field-clear-icon, .nd_field-copy-icon {
position: absolute; position: absolute;
margin-left: 140px; margin-left: 140px;
margin-top: 5px; margin-top: 5px;
@@ -307,22 +389,24 @@ td {
cursor: pointer; cursor: pointer;
} }
.field_copy_icon { /* little icon inside of search input fields */
.nd_field-copy-icon {
color: #999; color: #999;
} }
.field_clear_icon { /* little icon inside of search input fields */
.nd_field-clear-icon {
background-color: #A9DBA9; background-color: #A9DBA9;
color: #3A87AD; color: #3A87AD;
} }
/* for the ports form, but the positioning is slightly different */ /* same for the ports form, but the positioning is slightly different */
#ports_form .field_clear_icon { #ports_form .nd_field-clear-icon {
margin-left: 149px; margin-left: 149px;
margin-top: 5px; margin-top: 5px;
} }
/* change highlighting for form fields which are being used in a search */ /* change bg color for form fields which are being used in a search */
form .clearfix.success select { form .clearfix.success select {
background-color: #A9DBA9; background-color: #A9DBA9;
} }
@@ -339,109 +423,21 @@ form .clearfix.success input {
} }
/* bring sidebar items closer together */ /* bring sidebar items closer together */
.inputs-list label { .nd_inputs-list label {
margin-bottom: 1px; margin-bottom: 1px;
} }
.inputs-list i { /* compact icons for the sidebar legend */
.nd_inputs-list i {
margin-right: 5px; margin-right: 5px;
margin-left: 2px; margin-left: 2px;
} }
/* nudge content closer to the header labels in the sidebar */ /* nudge content closer to the header labels in the sidebar */
.inputs-list li:first-child { .nd_inputs-list li:first-child {
padding-top: 3px !important; padding-top: 3px !important;
} }
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* sidebar collapser */
.nd_sidebar_title {
margin-left: 10px;
margin-top: 6px;
margin-bottom: 12px;
}
.sidebar_pinned {
position: fixed !important;
}
.sidebar_pin_clicked {
color: rgba(255,0,0,0.8) !important;
}
/* for placing the sidebar pin icons */
.sidebar_pin {
float: left;
margin-top: 6px;
margin-left: -16px;
font-size: 15px;
color: #555;
cursor: pointer;
}
/* for placing the sidebar toggle icons */
#sidebar_toggle_img_in {
float: left;
margin-top: -9px;
margin-left: -16px;
font-size: 15px;
color: #555;
cursor: pointer;
}
/* for placing the sidebar toggle icons */
#sidebar_toggle_img_out {
position: fixed;
top: 60px;
right: 7px;
z-index: 1;
color: #555;
cursor: pointer;
display: none;
}
/* question mark image with popover for netmap instructions */
#netmap_help_img {
position: fixed;
top: 160px;
right: 7px;
z-index: 1;
color: #555;
font-size: 20px;
cursor: pointer;
display: none;
}
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* sidebar placement and sizing */
/* make the sidebar fixed on the screen */
.container-fluid > .sidebar {
position: absolute;
right: 20px;
width: 200px;
left: auto;
}
/* smaller padding below form button in sidebar well */
.container-fluid > .sidebar > .well {
padding-bottom: 15px;
}
/* make the content start more to the left now the sidebar is narrower */
.container-fluid > .content {
margin-right: 215px;
margin-left: 0px;
}
/* nudge content in the sidebar closer to the left */
.nd_sidesearchform {
padding-left: 0px;
margin-top: -9px;
margin-bottom: 0px;
}
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* D3 SVG */ /* D3 SVG */

View File

@@ -9,8 +9,8 @@ function do_search (event, tab) {
// page title // page title
var pgtitle = 'Netdisco'; var pgtitle = 'Netdisco';
if ($('#nd_device_name').text().length) { if ($('#nd_device-name').text().length) {
var pgtitle = $('#nd_device_name').text() +' - '+ $('#'+ tab + '_link').text(); var pgtitle = $('#nd_device-name').text() +' - '+ $('#'+ tab + '_link').text();
} }
// each sidebar search form has a hidden copy of the main navbar search // each sidebar search form has a hidden copy of the main navbar search
@@ -26,16 +26,16 @@ function do_search (event, tab) {
// hide or show sidebars depending on previous state, // hide or show sidebars depending on previous state,
// and whether the sidebar contains any content (detected by TT) // and whether the sidebar contains any content (detected by TT)
if (has_sidebar[tab] == 0) { if (has_sidebar[tab] == 0) {
$('.sidebar, #sidebar_toggle_img_out').hide(); $('.nd_sidebar, #nd_sidebar-toggle-img-out').hide();
$('.content').css('margin-right', '10px'); $('.content').css('margin-right', '10px');
} }
else { else {
if (sidebar_hidden) { if (sidebar_hidden) {
$('#sidebar_toggle_img_out').show(); $('#nd_sidebar-toggle-img-out').show();
} }
else { else {
$('.content').css('margin-right', '215px'); $('.content').css('margin-right', '215px');
$('.sidebar').show(); $('.nd_sidebar').show();
} }
} }
@@ -104,8 +104,8 @@ function update_content(from, to) {
// page title // page title
var pgtitle = 'Netdisco'; var pgtitle = 'Netdisco';
if ($('#nd_device_name').text().length) { if ($('#nd_device-name').text().length) {
var pgtitle = $('#nd_device_name').text() +' - '+ $('#'+ to + '_link').text(); var pgtitle = $('#nd_device-name').text() +' - '+ $('#'+ to + '_link').text();
} }
if (window.History && window.History.enabled && is_from_state_event == 0) { if (window.History && window.History.enabled && is_from_state_event == 0) {
@@ -144,7 +144,7 @@ function device_form_state(e) {
$('#nq').css('text-decoration', 'line-through'); $('#nq').css('text-decoration', 'line-through');
if (e.attr('type') == 'text') { if (e.attr('type') == 'text') {
$('.field_copy_icon').hide(); $('.nd_field-copy-icon').hide();
} }
} }
@@ -160,15 +160,15 @@ function device_form_state(e) {
function(n,i) {return($(n).val() != "")}).length; function(n,i) {return($(n).val() != "")}).length;
if (num_empty === 3) { if (num_empty === 3) {
$('#nq').css('text-decoration', 'none'); $('#nq').css('text-decoration', 'none');
$('.field_copy_icon').show(); $('.nd_field-copy-icon').show();
} }
} }
} }
$(document).ready(function() { $(document).ready(function() {
// sidebar form fields should change colour and have bin/copy icon // sidebar form fields should change colour and have bin/copy icon
$('.field_copy_icon').hide(); $('.nd_field-copy-icon').hide();
$('.field_clear_icon').hide(); $('.nd_field-clear-icon').hide();
// activate typeahead on the main search box, for device names only // activate typeahead on the main search box, for device names only
$('#nq').typeahead({ $('#nq').typeahead({
@@ -197,30 +197,30 @@ $(document).ready(function() {
$('.add-on :checkbox').each(syncCheckBox).click(syncCheckBox); $('.add-on :checkbox').each(syncCheckBox).click(syncCheckBox);
// sidebar toggle - pinning // sidebar toggle - pinning
$('.sidebar_pin').click(function() { $('.nd_sidebar-pin').click(function() {
$('.sidebar').toggleClass('sidebar_pinned'); $('.nd_sidebar').toggleClass('nd_sidebar-pinned');
$('.sidebar_pin').toggleClass('sidebar_pin_clicked'); $('.nd_sidebar-pin').toggleClass('nd_sidebar-pin-clicked');
// update tooltip note for current state // update tooltip note for current state
if ($('.sidebar_pin').hasClass('sidebar_pin_clicked')) { if ($('.nd_sidebar-pin').hasClass('nd_sidebar-pin-clicked')) {
$('.sidebar_pin').first().data('tooltip').options.title = 'Unpin Sidebar'; $('.nd_sidebar-pin').first().data('tooltip').options.title = 'Unpin Sidebar';
} }
else { else {
$('.sidebar_pin').first().data('tooltip').options.title = 'Pin Sidebar'; $('.nd_sidebar-pin').first().data('tooltip').options.title = 'Pin Sidebar';
} }
}); });
// sidebar toggle - trigger in/out on image click() // sidebar toggle - trigger in/out on image click()
$('#sidebar_toggle_img_in').click(function() { $('#nd_sidebar-toggle-img-in').click(function() {
$('.sidebar').toggle(250); $('.nd_sidebar').toggle(250);
$('#sidebar_toggle_img_out').toggle(); $('#nd_sidebar-toggle-img-out').toggle();
$('.content').css('margin-right', '10px'); $('.content').css('margin-right', '10px');
sidebar_hidden = 1; sidebar_hidden = 1;
}); });
$('#sidebar_toggle_img_out').click(function() { $('#nd_sidebar-toggle-img-out').click(function() {
$('#sidebar_toggle_img_out').toggle(); $('#nd_sidebar-toggle-img-out').toggle();
$('.content').css('margin-right', '215px'); $('.content').css('margin-right', '215px');
$('.sidebar').toggle(250); $('.nd_sidebar').toggle(250);
if (! $('.sidebar').hasClass('sidebar_pinned')) { if (! $('.nd_sidebar').hasClass('nd_sidebar-pinned')) {
$(window).scrollTop(0); $(window).scrollTop(0);
} }
sidebar_hidden = 0; sidebar_hidden = 0;
@@ -228,7 +228,7 @@ $(document).ready(function() {
// could not get twitter bootstrap tabs to behave, so implemented this // could not get twitter bootstrap tabs to behave, so implemented this
// but warning! will probably not work for dropdowns in tabs // but warning! will probably not work for dropdowns in tabs
$('#search_results li').delegate('a', 'click', function(event) { $('#nd_search-results li').delegate('a', 'click', function(event) {
event.preventDefault(); event.preventDefault();
var from_li = $('.nav-tabs').find('> .active').first(); var from_li = $('.nav-tabs').find('> .active').first();
var to_li = $(this).parent('li') var to_li = $(this).parent('li')

View File

@@ -32,12 +32,12 @@ function port_control (e) {
} }
else if ($.trim(td.attr('data-action')) == 'false') { else if ($.trim(td.attr('data-action')) == 'false') {
$(e).next('span').text(''); $(e).next('span').text('');
$(e).toggleClass('nd_power_on'); $(e).toggleClass('nd_power-on');
$(e).data('tooltip').options.title = 'Click to Enable'; $(e).data('tooltip').options.title = 'Click to Enable';
td.attr('data-action', 'true'); td.attr('data-action', 'true');
} }
else if ($.trim(td.attr('data-action')) == 'true') { else if ($.trim(td.attr('data-action')) == 'true') {
$(e).toggleClass('nd_power_on'); $(e).toggleClass('nd_power-on');
$(e).data('tooltip').options.title = 'Click to Disable'; $(e).data('tooltip').options.title = 'Click to Disable';
td.attr('data-action', 'false'); td.attr('data-action', 'false');
} }

View File

@@ -1,16 +1,16 @@
<i class="sidebar_toggle icon-wrench icon-large" id="sidebar_toggle_img_out" <i class="nd_sidebar-toggle icon-wrench icon-large" id="nd_sidebar-toggle-img-out"
rel="tooltip" data-placement="left" data-offset="5" data-title="Show Sidebar"></i> rel="tooltip" data-placement="left" data-offset="5" data-title="Show Sidebar"></i>
<div class="container-fluid"> <div class="container-fluid">
<div class="sidebar sidebar_pinned"> <div class="nd_sidebar nd_sidebar-pinned">
<div class="well"> <div class="well">
<i class="sidebar_toggle icon-signout" id="sidebar_toggle_img_in" <i class="nd_sidebar-toggle icon-signout" id="nd_sidebar-toggle-img-in"
rel="tooltip" data-placement="left" data-offset="5" data-title="Hide Sidebar"></i> rel="tooltip" data-placement="left" data-offset="5" data-title="Hide Sidebar"></i>
<i class="sidebar_pin icon-pushpin sidebar_pin_clicked" <i class="nd_sidebar-pin icon-pushpin nd_sidebar-pin-clicked"
rel="tooltip" data-placement="left" data-offset="5" data-title="Unpin Sidebar"></i> rel="tooltip" data-placement="left" data-offset="5" data-title="Unpin Sidebar"></i>
<div class="tab-content"> <div class="tab-content">
<div id="[% task.tag %]_search" class="tab-pane active"> <div id="[% task.tag %]_search" class="tab-pane active">
<form id="[% task.tag %]_form" class="nd_sidesearchform form-stacked" <form id="[% task.tag %]_form" class="nd_sidebar-form form-stacked"
method="get" action="[% uri_for('/admin') %]"> method="get" action="[% uri_for('/admin') %]">
[% TRY %] [% TRY %]
[% INCLUDE "sidebar/admintask/${task.tag}.tt" %] [% INCLUDE "sidebar/admintask/${task.tag}.tt" %]
@@ -25,11 +25,11 @@
</div> </div>
<div class="content"> <div class="content">
<ul id="search_results" class="nav nav-tabs"> <ul id="nd_search-results" class="nav nav-tabs">
<li class="active"><a id="[% task.tag %]_link" class="nd_single_tab" <li class="active"><a id="[% task.tag %]_link" class="nd_single-tab"
href="#[% task.tag %]_pane">[% task.label %]</a></li> href="#[% task.tag %]_pane">[% task.label %]</a></li>
[% IF task.tag == 'jobqueue' %] [% IF task.tag == 'jobqueue' %]
<span id="nd_device_name"></span> <span id="nd_device-name"></span>
[% END %] [% END %]
</ul> </ul>
<div class="tab-content"> <div class="tab-content">

View File

@@ -1,16 +1,16 @@
<table class="table table-bordered table-condensed table-striped"> <table class="table table-bordered table-condensed table-striped">
<thead> <thead>
<tr> <tr>
<th class="center_cell">Entered</th> <th class="nd_center-cell">Entered</th>
<th class="center_cell">Action</th> <th class="nd_center-cell">Action</th>
<th class="center_cell">Status</th> <th class="nd_center-cell">Status</th>
<th class="center_cell">Device</th> <th class="nd_center-cell">Device</th>
<th class="center_cell">Port</th> <th class="nd_center-cell">Port</th>
<th class="center_cell">Param</th> <th class="nd_center-cell">Param</th>
<th class="center_cell">User</th> <th class="nd_center-cell">User</th>
<th class="center_cell">Started</th> <th class="nd_center-cell">Started</th>
<th class="center_cell">Finished</th> <th class="nd_center-cell">Finished</th>
<th class="center_cell">Action</th> <th class="nd_center-cell">Action</th>
</tr> </tr>
</thead> </thead>
</tbody> </tbody>
@@ -20,26 +20,26 @@
[% ' class="error"' IF row.status == 'error' %] [% ' class="error"' IF row.status == 'error' %]
[% ' class="info"' IF row.status.search('^queued-') %] [% ' class="info"' IF row.status.search('^queued-') %]
> >
<td class="center_cell">[% row.entered_stamp | html_entity %]</td> <td class="nd_center-cell">[% row.entered_stamp | html_entity %]</td>
<td class="center_cell"> <td class="nd_center-cell">
[% FOREACH word IN row.action.split('_') %] [% FOREACH word IN row.action.split('_') %]
[% word.ucfirst | html_entity %]&nbsp; [% word.ucfirst | html_entity %]&nbsp;
[% END %] [% END %]
</td> </td>
[% IF row.status.search('^queued-') %] [% IF row.status.search('^queued-') %]
<td class="center_cell">Running on &quot;[% row.status.remove('^queued-') | html_entity %]&quot;</td> <td class="nd_center-cell">Running on &quot;[% row.status.remove('^queued-') | html_entity %]&quot;</td>
[% ELSE %] [% ELSE %]
<td class="center_cell">[% row.status.ucfirst | html_entity %]</td> <td class="nd_center-cell">[% row.status.ucfirst | html_entity %]</td>
[% END %] [% END %]
<td class="center_cell"><a class="nd_linkcell" <td class="nd_center-cell"><a class="nd_linkcell"
href="[% device_ports %]&q=[% row.device | uri %]">[% row.device | html_entity %]</a></td> href="[% device_ports %]&q=[% row.device | uri %]">[% row.device | html_entity %]</a></td>
<td class="center_cell">[% row.port | html_entity %]</td> <td class="nd_center-cell">[% row.port | html_entity %]</td>
<td class="center_cell">[% row.subaction | html_entity %]</td> <td class="nd_center-cell">[% row.subaction | html_entity %]</td>
<td class="center_cell">[% row.username | html_entity %]</td> <td class="nd_center-cell">[% row.username | html_entity %]</td>
<td class="center_cell">[% row.started_stamp | html_entity %]</td> <td class="nd_center-cell">[% row.started_stamp | html_entity %]</td>
<td class="center_cell">[% row.finished_stamp | html_entity %]</td> <td class="nd_center-cell">[% row.finished_stamp | html_entity %]</td>
<td class="center_cell"> <td class="nd_center-cell">
<form name="del" class="nd_inline_form"> <form name="del" class="nd_inline-form">
<input name="job" type="hidden" value="[% row.job | html_entity %]"> <input name="job" type="hidden" value="[% row.job | html_entity %]">
<button class="btn" name="del" type="submit"><i class="icon-trash text-error"></i></button> <button class="btn" name="del" type="submit"><i class="icon-trash text-error"></i></button>
</form> </form>

View File

@@ -1,19 +1,19 @@
<table class="table-bordered table-condensed table-striped"> <table class="table-bordered table-condensed table-striped">
<thead> <thead>
<tr> <tr>
<th class="center_cell">Device Name</th> <th class="nd_center-cell">Device Name</th>
<th class="center_cell">Device IP</th> <th class="nd_center-cell">Device IP</th>
<th class="center_cell">Number of Ports</th> <th class="nd_center-cell">Number of Ports</th>
<th class="center_cell">Action</th> <th class="nd_center-cell">Action</th>
</tr> </tr>
</thead> </thead>
</tbody> </tbody>
<tr> <tr>
<form name="add"> <form name="add">
<td class="center_cell"><input name="dns" type="text"></td> <td class="nd_center-cell"><input name="dns" type="text"></td>
<td class="center_cell"><input name="ip" type="text"></td> <td class="nd_center-cell"><input name="ip" type="text"></td>
<td class="center_cell"><input name="ports" type="number"></td> <td class="nd_center-cell"><input name="ports" type="number"></td>
<td class="center_cell"> <td class="nd_center-cell">
<button class="btn btn-small" name="add" type="submit"><i class="icon-plus-sign"></i> Add</button> <button class="btn btn-small" name="add" type="submit"><i class="icon-plus-sign"></i> Add</button>
</td> </td>
</form> </form>
@@ -21,16 +21,16 @@
[% WHILE (row = results.next) %] [% WHILE (row = results.next) %]
<tr> <tr>
<form name="update"> <form name="update">
<td class="center_cell"><a class="nd_linkcell" <td class="nd_center-cell"><a class="nd_linkcell"
href="[% device_ports %]&q=[% row.dns | uri %]">[% row.dns | html_entity %]</a></td> href="[% device_ports %]&q=[% row.dns | uri %]">[% row.dns | html_entity %]</a></td>
<td class="center_cell">[% row.ip | html_entity %]</td> <td class="nd_center-cell">[% row.ip | html_entity %]</td>
<td class="center_cell"><input name="ports" type="number" value="[% row.port_count | html_entity %]"></td> <td class="nd_center-cell"><input name="ports" type="number" value="[% row.port_count | html_entity %]"></td>
<td class="center_cell"> <td class="nd_center-cell">
<input name="dns" type="hidden" value="[% row.dns | html_entity %]"> <input name="dns" type="hidden" value="[% row.dns | html_entity %]">
<input name="ip" type="hidden" value="[% row.ip | html_entity %]"> <input name="ip" type="hidden" value="[% row.ip | html_entity %]">
<button class="btn" name="update" type="submit"><i class="icon-save text-warning"></i></button> <button class="btn" name="update" type="submit"><i class="icon-save text-warning"></i></button>
</form> </form>
<form name="del" class="nd_inline_form"> <form name="del" class="nd_inline-form">
<input name="dns" type="hidden" value="[% row.dns | html_entity %]"> <input name="dns" type="hidden" value="[% row.dns | html_entity %]">
<input name="ip" type="hidden" value="[% row.ip | html_entity %]"> <input name="ip" type="hidden" value="[% row.ip | html_entity %]">
<input name="ports" type="hidden" value="[% row.port_count | html_entity %]"> <input name="ports" type="hidden" value="[% row.port_count | html_entity %]">

View File

@@ -1,41 +1,41 @@
<table class="table-bordered table-condensed table-striped"> <table class="table-bordered table-condensed table-striped">
<thead> <thead>
<tr> <tr>
<th class="center_cell">Left Device</th> <th class="nd_center-cell">Left Device</th>
<th class="center_cell">Left Port</th> <th class="nd_center-cell">Left Port</th>
<th class="center_cell">Right Device</th> <th class="nd_center-cell">Right Device</th>
<th class="center_cell">Right Port</th> <th class="nd_center-cell">Right Port</th>
<th class="center_cell">Action</th> <th class="nd_center-cell">Action</th>
</tr> </tr>
</thead> </thead>
</tbody> </tbody>
<tr> <tr>
<form name="add"> <form name="add">
<td class="center_cell"> <td class="nd_center-cell">
<div class="input-append"> <div class="input-append">
<input class="nd_topo_dev nd_topo_dev1" name="dev1" type="text"> <input class="nd_topo_dev nd_topo_dev1" name="dev1" type="text">
<span class="add-on nd_topo_dev_caret"><i class="icon-caret-down icon-large"></i></span> <span class="add-on nd_topo_dev_caret"><i class="icon-caret-down icon-large"></i></span>
</div> </div>
</td> </td>
<td class="center_cell"> <td class="nd_center-cell">
<div class="input-append"> <div class="input-append">
<input class="nd_topo_port nd_topo_dev1" name="port1" type="text"> <input class="nd_topo_port nd_topo_dev1" name="port1" type="text">
<span class="add-on nd_topo_port_caret"><i class="icon-caret-down icon-large"></i></span> <span class="add-on nd_topo_port_caret"><i class="icon-caret-down icon-large"></i></span>
</div> </div>
</td> </td>
<td class="center_cell"> <td class="nd_center-cell">
<div class="input-append"> <div class="input-append">
<input class="nd_topo_dev nd_topo_dev2" name="dev2" type="text"> <input class="nd_topo_dev nd_topo_dev2" name="dev2" type="text">
<span class="add-on nd_topo_dev_caret"><i class="icon-caret-down icon-large"></i></span> <span class="add-on nd_topo_dev_caret"><i class="icon-caret-down icon-large"></i></span>
</div> </div>
</td> </td>
<td class="center_cell"> <td class="nd_center-cell">
<div class="input-append"> <div class="input-append">
<input class="nd_topo_port nd_topo_dev2" name="port2" type="text"> <input class="nd_topo_port nd_topo_dev2" name="port2" type="text">
<span class="add-on nd_topo_port_caret"><i class="icon-caret-down icon-large"></i></span> <span class="add-on nd_topo_port_caret"><i class="icon-caret-down icon-large"></i></span>
</div> </div>
</td> </td>
<td class="center_cell"> <td class="nd_center-cell">
<button class="btn btn-small" name="add" type="submit"><i class="icon-plus-sign"></i> Add</button> <button class="btn btn-small" name="add" type="submit"><i class="icon-plus-sign"></i> Add</button>
</td> </td>
</form> </form>
@@ -43,13 +43,13 @@
[% WHILE (row = results.next) %] [% WHILE (row = results.next) %]
<tr> <tr>
<form name="del"> <form name="del">
<td class="center_cell"><a class="nd_linkcell" <td class="nd_center-cell"><a class="nd_linkcell"
href="[% device_ports %]&q=[% row.dev1 | uri %]">[% row.dev1 | html_entity %]</a></td> href="[% device_ports %]&q=[% row.dev1 | uri %]">[% row.dev1 | html_entity %]</a></td>
<td class="center_cell">[% row.port1 | html_entity %]</td> <td class="nd_center-cell">[% row.port1 | html_entity %]</td>
<td class="center_cell"><a class="nd_linkcell" <td class="nd_center-cell"><a class="nd_linkcell"
href="[% device_ports %]&q=[% row.dev2 | uri %]">[% row.dev2 | html_entity %]</a></td> href="[% device_ports %]&q=[% row.dev2 | uri %]">[% row.dev2 | html_entity %]</a></td>
<td class="center_cell">[% row.port2 | html_entity %]</td> <td class="nd_center-cell">[% row.port2 | html_entity %]</td>
<td class="center_cell"> <td class="nd_center-cell">
<input name="dev1" type="hidden" value="[% row.dev1 | html_entity %]"> <input name="dev1" type="hidden" value="[% row.dev1 | html_entity %]">
<input name="port1" type="hidden" value="[% row.port1 | html_entity %]"> <input name="port1" type="hidden" value="[% row.port1 | html_entity %]">
<input name="dev2" type="hidden" value="[% row.dev2 | html_entity %]"> <input name="dev2" type="hidden" value="[% row.dev2 | html_entity %]">

View File

@@ -3,7 +3,7 @@
<tr> <tr>
<th>Address</th> <th>Address</th>
<th>DNS</th> <th>DNS</th>
<th class="center_cell">Interface</th> <th class="nd_center-cell">Interface</th>
<th>Description</th> <th>Description</th>
<th>Prefix</th> <th>Prefix</th>
</tr> </tr>
@@ -13,7 +13,7 @@
<tr> <tr>
<td>[% row.alias | html_entity %]</a> <td>[% row.alias | html_entity %]</a>
<td>[% row.dns | html_entity %]</a> <td>[% row.dns | html_entity %]</a>
<td class="center_cell"><a class="nd_linkcell" <td class="nd_center-cell"><a class="nd_linkcell"
href="[% device_ports %]&q=[% params.q | uri %]&f=[% row.port | uri %]">[% row.port | html_entity %]</a></td> href="[% device_ports %]&q=[% params.q | uri %]&f=[% row.port | uri %]">[% row.port | html_entity %]</a></td>
<td>[% row.device_port.name | html_entity %]</td> <td>[% row.device_port.name | html_entity %]</td>
<td><a class="nd_linkcell" <td><a class="nd_linkcell"

View File

@@ -7,11 +7,11 @@
<tr> <tr>
<td>Location <td>Location
[% IF vars.user.port_control %] [% IF vars.user.port_control %]
<i class="icon-edit nd_edit_icon nd_device_details_edit"></i> <i class="icon-edit nd_edit-icon nd_device-details-edit"></i>
[% END %] [% END %]
</td> </td>
[% IF vars.user.port_control %] [% IF vars.user.port_control %]
<td class="nd_editable_cell" contenteditable="true" <td class="nd_editable-cell" contenteditable="true"
data-field="location" data-for-device="[% d.ip %]"> data-field="location" data-for-device="[% d.ip %]">
[% d.location | html_entity %] [% d.location | html_entity %]
</td> </td>
@@ -25,11 +25,11 @@
<tr> <tr>
<td>Contact <td>Contact
[% IF vars.user.port_control %] [% IF vars.user.port_control %]
<i class="icon-edit nd_edit_icon nd_device_details_edit"></i> <i class="icon-edit nd_edit-icon nd_device-details-edit"></i>
[% END %] [% END %]
</td> </td>
[% IF vars.user.port_control %] [% IF vars.user.port_control %]
<td class="nd_editable_cell" contenteditable="true" <td class="nd_editable-cell" contenteditable="true"
data-field="contact" data-for-device="[% d.ip | html_entity %]"> data-field="contact" data-for-device="[% d.ip | html_entity %]">
[% d.contact | html_entity %] [% d.contact | html_entity %]
</td> </td>

View File

@@ -6,7 +6,7 @@
[% NEXT IF item.name == 'c_admin' %] [% NEXT IF item.name == 'c_admin' %]
[% NEXT IF item.name == 'c_nodes' AND params.c_nodes AND params.c_neighbors %] [% NEXT IF item.name == 'c_nodes' AND params.c_nodes AND params.c_neighbors %]
[% NEXT UNLESS params.${item.name} %] [% NEXT UNLESS params.${item.name} %]
<th[% ' class="center_cell"' IF NOT loop.first %]>[% item.label | html_entity %]</th> <th[% ' class="nd_center-cell"' IF NOT loop.first %]>[% item.label | html_entity %]</th>
[% END %] [% END %]
</tr> </tr>
</thead> </thead>
@@ -28,37 +28,37 @@
[% IF params.c_port %] [% IF params.c_port %]
[% IF vars.user.port_control AND params.c_admin %] [% IF vars.user.port_control AND params.c_admin %]
[% IF row.up_admin == 'up' %] [% IF row.up_admin == 'up' %]
<td nowrap class="nd_editable_cell" data-action="down" <td nowrap class="nd_editable-cell" data-action="down"
data-field="c_port" data-for-device="[% device | html_entity %]" data-for-port="[% row.port | html_entity %]"> data-field="c_port" data-for-device="[% device | html_entity %]" data-for-port="[% row.port | html_entity %]">
<i class="icon-hand-down nd_hand_icon" <i class="icon-hand-down nd_hand-icon"
rel="tooltip" data-placement="top" data-offset="3" rel="tooltip" data-placement="top" data-offset="3"
data-animation="" data-title="Click to Disable"></i> data-animation="" data-title="Click to Disable"></i>
[% ELSE %] [% ELSE %]
<td nowrap class="nd_editable_cell" data-action="up" <td nowrap class="nd_editable-cell" data-action="up"
data-field="c_port" data-for-device="[% device | html_entity %]" data-for-port="[% row.port | html_entity %]"> data-field="c_port" data-for-device="[% device | html_entity %]" data-for-port="[% row.port | html_entity %]">
<i class="icon-hand-up nd_hand_icon" <i class="icon-hand-up nd_hand-icon"
rel="tooltip" data-placement="top" data-offset="3" rel="tooltip" data-placement="top" data-offset="3"
data-animation="" data-title="Click to Enable"></i> data-animation="" data-title="Click to Enable"></i>
[% END %] [% END %]
[% ELSE %] [% ELSE %]
<td nowrap> <td nowrap>
[% END %] [% END %]
<a class="nd_linkcell nd_this_port_only" href="[% uri_for('/device', <a class="nd_linkcell nd_this-port-only" href="[% uri_for('/device',
self_options) %]&q=[% params.q | uri %]&f=[% row.port | uri %]"> self_options) %]&q=[% params.q | uri %]&f=[% row.port | uri %]">
[% row.port | html_entity %] [% row.port | html_entity %]
</a></td> </a></td>
[% END %] [% END %]
[% IF params.c_descr %] [% IF params.c_descr %]
<td nowrap class="center_cell">[% row.descr | html_entity %]</td> <td nowrap class="nd_center-cell">[% row.descr | html_entity %]</td>
[% END %] [% END %]
[% IF params.c_type %] [% IF params.c_type %]
<td class="center_cell">[% row.type | html_entity %]</td> <td class="nd_center-cell">[% row.type | html_entity %]</td>
[% END %] [% END %]
[% IF params.c_duplex %] [% IF params.c_duplex %]
<td class="center_cell"> <td class="nd_center-cell">
[% IF row.up == 'up' AND row.duplex %] [% IF row.up == 'up' AND row.duplex %]
[% row.duplex_admin | html_entity %] / [% row.duplex | html_entity %] [% row.duplex_admin | html_entity %] / [% row.duplex | html_entity %]
[% END %] [% END %]
@@ -66,46 +66,46 @@
[% END %] [% END %]
[% IF params.c_lastchange %] [% IF params.c_lastchange %]
<td class="center_cell">[% row.lastchange_stamp | html_entity %]</td> <td class="nd_center-cell">[% row.lastchange_stamp | html_entity %]</td>
[% END %] [% END %]
[% IF params.c_name %] [% IF params.c_name %]
[% IF vars.user.port_control AND params.c_admin %] [% IF vars.user.port_control AND params.c_admin %]
<td nowrap class="center_cell nd_editable_cell" contenteditable="true" <td nowrap class="nd_center-cell nd_editable-cell" contenteditable="true"
data-field="c_name" data-for-device="[% device | html_entity %]" data-for-port="[% row.port | html_entity %]"> data-field="c_name" data-for-device="[% device | html_entity %]" data-for-port="[% row.port | html_entity %]">
<i class="icon-edit nd_edit_icon"></i> <i class="icon-edit nd_edit-icon"></i>
[% ELSE %] [% ELSE %]
<td nowrap class="center_cell"> <td nowrap class="nd_center-cell">
[% END %] [% END %]
<div class="nd_editable_cell_content"> <div class="nd_editable-cell-content">
[% row.name | html_entity %] [% row.name | html_entity %]
</div> </div>
</td> </td>
[% END %] [% END %]
[% IF params.c_speed %] [% IF params.c_speed %]
<td class="center_cell">[% row.speed | html_entity %]</td> <td class="nd_center-cell">[% row.speed | html_entity %]</td>
[% END %] [% END %]
[% IF params.c_mac %] [% IF params.c_mac %]
<td class="center_cell">[% row.mac | html_entity %]</td> <td class="nd_center-cell">[% row.mac | html_entity %]</td>
[% END %] [% END %]
[% IF params.c_mtu %] [% IF params.c_mtu %]
<td class="center_cell">[% row.mtu | html_entity %]</td> <td class="nd_center-cell">[% row.mtu | html_entity %]</td>
[% END %] [% END %]
[% IF params.c_vlan %] [% IF params.c_vlan %]
[% IF vars.user.port_control AND params.c_admin %] [% IF vars.user.port_control AND params.c_admin %]
<td class="center_cell nd_editable_cell" contenteditable="true" <td class="nd_center-cell nd_editable-cell" contenteditable="true"
data-field="c_vlan" data-for-device="[% device | html_entity %]" data-for-port="[% row.port | html_entity %]"> data-field="c_vlan" data-for-device="[% device | html_entity %]" data-for-port="[% row.port | html_entity %]">
<i class="icon-edit nd_edit_icon"></i> <i class="icon-edit nd_edit-icon"></i>
<div class="nd_editable_cell_content"> <div class="nd_editable-cell-content">
[% IF row.vlan %][% row.vlan | html_entity %][% END %] [% IF row.vlan %][% row.vlan | html_entity %][% END %]
</div> </div>
</td> </td>
[% ELSE %] [% ELSE %]
<td class="center_cell"> <td class="nd_center-cell">
<a class="nd_linkcell" <a class="nd_linkcell"
href="[% uri_for('/search') %]?tab=vlan&q=[% row.vlan | uri %]"> href="[% uri_for('/search') %]?tab=vlan&q=[% row.vlan | uri %]">
[% row.vlan | html_entity %]</a> [% row.vlan | html_entity %]</a>
@@ -123,11 +123,10 @@
[% SET output = output _ ', ' IF NOT loop.last %] [% SET output = output _ ', ' IF NOT loop.last %]
[% END %] [% END %]
[% IF row.tagged_vlans_count > 10 %] [%# TODO make this a settable variable %] [% IF row.tagged_vlans_count > 10 %] [%# TODO make this a settable variable %]
[% SET output = '<div class="vlan_total">(' _ row.tagged_vlans_count [% SET output = '<div class="nd_vlan-total">(' _ row.tagged_vlans_count
_ ')</div><span class="nd_linkcell nd_collapse_vlans"> _ ')</div><span class="nd_linkcell nd_collapse-vlans">
<i class="cell-arrow-up-down icon-chevron-up icon-large"> <div class="nd_arrow-up-down-left icon-chevron-up icon-large"></div>Show VLANs</span>
</i>Show VLANs</span> <div class="nd_collapsing nd_collapse-pre-hidden">' _ output %]
<div class="nd_collapsing nd_collapse_pre_hidden">' _ output %]
[% SET output = output _ '</div>' %] [% SET output = output _ '</div>' %]
[% END %] [% END %]
[% output %] [% output %]
@@ -143,12 +142,12 @@
data-field="c_power" data-for-device="[% device | html_entity %]" data-field="c_power" data-for-device="[% device | html_entity %]"
data-for-port="[% row.port | html_entity %]"> data-for-port="[% row.port | html_entity %]">
<i class="icon-off nd_power_icon nd_power_on" <i class="icon-off nd_power-icon nd_power-on"
rel="tooltip" data-placement="top" data-offset="3" rel="tooltip" data-placement="top" data-offset="3"
data-animation="" data-title="Click to Disable"></i> data-animation="" data-title="Click to Disable"></i>
[% ELSE %] [% ELSE %]
<td nowrap> <td nowrap>
<i class="icon-off nd_power_on"></i> <i class="icon-off nd_power-on"></i>
[% END %] [% END %]
<span> <span>
[% IF row.power.power > 0 %] [% IF row.power.power > 0 %]
@@ -163,7 +162,7 @@
data-field="c_power" data-for-device="[% device | html_entity %]" data-field="c_power" data-for-device="[% device | html_entity %]"
data-for-port="[% row.port | html_entity %]"> data-for-port="[% row.port | html_entity %]">
<i class="icon-off nd_power_icon" <i class="icon-off nd_power-icon"
rel="tooltip" data-placement="top" data-offset="3" rel="tooltip" data-placement="top" data-offset="3"
data-animation="" data-title="Click to Enable"></i> data-animation="" data-title="Click to Enable"></i>
[% ELSE %] [% ELSE %]
@@ -216,11 +215,11 @@
[% END %] [% END %]
[% IF params.c_stp %] [% IF params.c_stp %]
<td class="center_cell">[% row.stp | html_entity %]</td> <td class="nd_center-cell">[% row.stp | html_entity %]</td>
[% END %] [% END %]
[% IF params.c_up %] [% IF params.c_up %]
<td class="center_cell"> <td class="nd_center-cell">
[% row.up_admin | html_entity %] / [% row.up | html_entity %] [% row.up_admin | html_entity %] / [% row.up | html_entity %]
</td> </td>
[% END %] [% END %]

View File

@@ -1,28 +1,28 @@
<table class="table-bordered table-condensed table-striped"> <table class="table-bordered table-condensed table-striped">
<thead> <thead>
<tr> <tr>
<th class="center_cell">Left Device</th> <th class="nd_center-cell">Left Device</th>
<th class="center_cell">Interface</th> <th class="nd_center-cell">Interface</th>
<th class="center_cell">Duplex</th> <th class="nd_center-cell">Duplex</th>
<th class="center_cell">Right Device</th> <th class="nd_center-cell">Right Device</th>
<th class="center_cell">Interface</th> <th class="nd_center-cell">Interface</th>
<th class="center_cell">Duplex</th> <th class="nd_center-cell">Duplex</th>
</tr> </tr>
</thead> </thead>
</tbody> </tbody>
[% WHILE (row = results.next) %] [% WHILE (row = results.next) %]
<tr> <tr>
<td class="center_cell">[% row.left_dns || row.left_ip | html_entity %]</a> <td class="nd_center-cell">[% row.left_dns || row.left_ip | html_entity %]</a>
<td class="center_cell"><a class="nd_linkcell" <td class="nd_center-cell"><a class="nd_linkcell"
href="[% device_ports %]&q=[% row.left_dns || row.left_ip | uri %]&f=[% row.left_port | uri %]&c_duplex=on"> href="[% device_ports %]&q=[% row.left_dns || row.left_ip | uri %]&f=[% row.left_port | uri %]&c_duplex=on">
[% row.left_port | html_entity %]</a></td> [% row.left_port | html_entity %]</a></td>
<td class="center_cell">[% row.left_duplex.ucfirst | html_entity %]</td> <td class="nd_center-cell">[% row.left_duplex.ucfirst | html_entity %]</td>
<td class="center_cell">[% row.right_dns || row.right_ip | html_entity %]</a> <td class="nd_center-cell">[% row.right_dns || row.right_ip | html_entity %]</a>
<td class="center_cell"><a class="nd_linkcell" <td class="nd_center-cell"><a class="nd_linkcell"
href="[% device_ports %]&q=[% row.right_dns || row.right_ip | uri %]&f=[% row.right_port | uri %]&c_duplex=on"> href="[% device_ports %]&q=[% row.right_dns || row.right_ip | uri %]&f=[% row.right_port | uri %]&c_duplex=on">
[% row.right_port | html_entity %]</a></td> [% row.right_port | html_entity %]</a></td>
<td class="center_cell">[% row.right_duplex.ucfirst | html_entity %]</td> <td class="nd_center-cell">[% row.right_duplex.ucfirst | html_entity %]</td>
</tr> </tr>
[% END %] [% END %]
</tbody> </tbody>

View File

@@ -12,17 +12,17 @@
</tbody> </tbody>
[% WHILE (row = results.next) %] [% WHILE (row = results.next) %]
<tr> <tr>
<td><a class="nd_linkcell nd_stealthlink" <td><a class="nd_linkcell nd_stealth-link"
href="[% device_ports %]&q=[% row.dns || row.ip | uri %]&f=[% row.vlan.vlan | uri %]">[% row.vlan.vlan | html_entity %]</a></td> href="[% device_ports %]&q=[% row.dns || row.ip | uri %]&f=[% row.vlan.vlan | uri %]">[% row.vlan.vlan | html_entity %]</a></td>
<td><a class="nd_linkcell" <td><a class="nd_linkcell"
href="[% device_ports %]&q=[% row.dns || row.ip | uri %]&f=[% row.vlan.vlan | uri %]">[% row.dns || row.ip | html_entity %]</a></td> href="[% device_ports %]&q=[% row.dns || row.ip | uri %]&f=[% row.vlan.vlan | uri %]">[% row.dns || row.ip | html_entity %]</a></td>
<td><a class="nd_linkcell nd_stealthlink" <td><a class="nd_linkcell nd_stealth-link"
href="[% device_ports %]&q=[% row.dns || row.ip | uri %]&f=[% row.vlan.vlan | uri %]">[% row.vlan.description | html_entity %]</a></td> href="[% device_ports %]&q=[% row.dns || row.ip | uri %]&f=[% row.vlan.vlan | uri %]">[% row.vlan.description | html_entity %]</a></td>
<td><a class="nd_linkcell nd_stealthlink" <td><a class="nd_linkcell nd_stealth-link"
href="[% device_ports %]&q=[% row.dns || row.ip | uri %]&f=[% row.vlan.vlan | uri %]">[% row.model | html_entity %]</a></td> href="[% device_ports %]&q=[% row.dns || row.ip | uri %]&f=[% row.vlan.vlan | uri %]">[% row.model | html_entity %]</a></td>
<td><a class="nd_linkcell nd_stealthlink" <td><a class="nd_linkcell nd_stealth-link"
href="[% device_ports %]&q=[% row.dns || row.ip | uri %]&f=[% row.vlan.vlan | uri %]">[% row.os | html_entity %]</a></td> href="[% device_ports %]&q=[% row.dns || row.ip | uri %]&f=[% row.vlan.vlan | uri %]">[% row.os | html_entity %]</a></td>
<td><a class="nd_linkcell nd_stealthlink" <td><a class="nd_linkcell nd_stealth-link"
href="[% device_ports %]&q=[% row.dns || row.ip | uri %]&f=[% row.vlan.vlan | uri %]">[% row.vendor | html_entity %]</a></td> href="[% device_ports %]&q=[% row.dns || row.ip | uri %]&f=[% row.vlan.vlan | uri %]">[% row.vendor | html_entity %]</a></td>
</tr> </tr>
[% END %] [% END %]

View File

@@ -1,6 +1,6 @@
<i class="sidebar_toggle icon-wrench icon-large" id="sidebar_toggle_img_out" <i class="nd_sidebar-toggle icon-wrench icon-large" id="nd_sidebar-toggle-img-out"
rel="tooltip" data-placement="left" data-offset="5" data-title="Show Sidebar"></i> rel="tooltip" data-placement="left" data-offset="5" data-title="Show Sidebar"></i>
<i class="icon-question-sign icon-large" id="netmap_help_img" rel="popover" <i class="icon-question-sign icon-large" id="nd_netmap-help" rel="popover"
data-title="Neighbor Map Controls" data-title="Neighbor Map Controls"
data-html="true" data-html="true"
data-content=" data-content="
@@ -12,16 +12,16 @@
</ul>" </ul>"
data-placement='left' data-trigger='click'></i> data-placement='left' data-trigger='click'></i>
<div class="container-fluid"> <div class="container-fluid">
<div class="sidebar sidebar_pinned"> <div class="nd_sidebar nd_sidebar-pinned">
<div class="well"> <div class="well">
<i class="sidebar_toggle icon-signout" id="sidebar_toggle_img_in" <i class="nd_sidebar-toggle icon-signout" id="nd_sidebar-toggle-img-in"
rel="tooltip" data-placement="left" data-offset="5" data-title="Hide Sidebar"></i> rel="tooltip" data-placement="left" data-offset="5" data-title="Hide Sidebar"></i>
<i class="sidebar_pin icon-pushpin sidebar_pin_clicked" <i class="nd_sidebar-pin icon-pushpin nd_sidebar-pin-clicked"
rel="tooltip" data-placement="left" data-offset="5" data-title="Unpin Sidebar"></i> rel="tooltip" data-placement="left" data-offset="5" data-title="Unpin Sidebar"></i>
<div class="tab-content"> <div class="tab-content">
[% FOREACH tab IN settings.device_tabs %] [% FOREACH tab IN settings.device_tabs %]
<div id="[% tab.tag %]_search" class="tab-pane [% 'active' IF params.tab == tab.tag %]"> <div id="[% tab.tag %]_search" class="tab-pane [% 'active' IF params.tab == tab.tag %]">
<form id="[% tab.tag %]_form" class="nd_sidesearchform form-stacked" <form id="[% tab.tag %]_form" class="nd_sidebar-form form-stacked"
method="get" action="[% uri_for('/device') %]"> method="get" action="[% uri_for('/device') %]">
<input name="tab" value="[% tab.tag %]" type="hidden"/> <input name="tab" value="[% tab.tag %]" type="hidden"/>
[% TRY %] [% TRY %]
@@ -41,11 +41,11 @@
</div> </div>
<div class="content"> <div class="content">
<ul id="search_results" class="nav nav-tabs"> <ul id="nd_search-results" class="nav nav-tabs">
[% FOREACH tab IN settings.device_tabs %] [% FOREACH tab IN settings.device_tabs %]
<li[% ' class="active"' IF params.tab == tab.tag %]><a id="[% tab.tag %]_link" href="#[% tab.tag %]_pane">[% tab.label %]</a></li> <li[% ' class="active"' IF params.tab == tab.tag %]><a id="[% tab.tag %]_link" href="#[% tab.tag %]_pane">[% tab.label %]</a></li>
[% END %] [% END %]
<span id="nd_device_name">[% d.dns || d.name | html_entity %]</span> <span id="nd_device-name">[% d.dns || d.name | html_entity %]</span>
</ul> </ul>
<div class="tab-content"> <div class="tab-content">
[% FOREACH tab IN settings.device_tabs %] [% FOREACH tab IN settings.device_tabs %]

View File

@@ -1,5 +1,5 @@
<div class="container"> <div class="container">
<div class="row nd_herorow"> <div class="row nd_hero-row">
<div class="span8 offset2"> <div class="span8 offset2">
[% IF params.failed %] [% IF params.failed %]
<div class="alert alert-error fade in"> <div class="alert alert-error fade in">
@@ -30,7 +30,7 @@
<h2>Welcome to Netdisco</h2> <h2>Welcome to Netdisco</h2>
<small>Netdisco is an Open Source web-based network management tool.</small> <small>Netdisco is an Open Source web-based network management tool.</small>
[% IF NOT session.user %] [% IF NOT session.user %]
<form class="nd_loginform" method="post" action="[% uri_for('/login') %]"> <form class="nd_login-form" method="post" action="[% uri_for('/login') %]">
<div class="form-horizontal"> <div class="form-horizontal">
<input placeholder="Username" class="span2" name="username" type="text"/> <input placeholder="Username" class="span2" name="username" type="text"/>
<input placeholder="Password" class="span2" name="password" type="password"/> <input placeholder="Password" class="span2" name="password" type="password"/>

View File

@@ -2,7 +2,7 @@
[% IF models.count %] [% IF models.count %]
<div class="row"> <div class="row">
<div class="span6"> <div class="span6">
<h3 class="nd_inv_tbl_head">By Platform</h3> <h3 class="nd_inventory-table-head">By Platform</h3>
<table class="table table-condensed"> <table class="table table-condensed">
<thead> <thead>
<tr> <tr>
@@ -32,7 +32,7 @@
</table> </table>
</div> </div>
<div class="span6"> <div class="span6">
<h3 class="nd_inv_tbl_head">By Software Release</h3> <h3 class="nd_inventory-table-head">By Software Release</h3>
<table class="table table-condensed"> <table class="table table-condensed">
<thead> <thead>
<tr> <tr>

View File

@@ -9,16 +9,16 @@
// reload this table every 10 seconds // reload this table every 10 seconds
if (tab == 'jobqueue') { if (tab == 'jobqueue') {
$('#nd_device_name').text('10'); $('#nd_device-name').text('10');
setTimeout(function() { $('#nd_device_name').text('9') }, 1000 ); setTimeout(function() { $('#nd_device-name').text('9') }, 1000 );
setTimeout(function() { $('#nd_device_name').text('8') }, 2000 ); setTimeout(function() { $('#nd_device-name').text('8') }, 2000 );
setTimeout(function() { $('#nd_device_name').text('7') }, 3000 ); setTimeout(function() { $('#nd_device-name').text('7') }, 3000 );
setTimeout(function() { $('#nd_device_name').text('6') }, 4000 ); setTimeout(function() { $('#nd_device-name').text('6') }, 4000 );
setTimeout(function() { $('#nd_device_name').text('5') }, 5000 ); setTimeout(function() { $('#nd_device-name').text('5') }, 5000 );
setTimeout(function() { $('#nd_device_name').text('4') }, 6000 ); setTimeout(function() { $('#nd_device-name').text('4') }, 6000 );
setTimeout(function() { $('#nd_device_name').text('3') }, 7000 ); setTimeout(function() { $('#nd_device-name').text('3') }, 7000 );
setTimeout(function() { $('#nd_device_name').text('2') }, 8000 ); setTimeout(function() { $('#nd_device-name').text('2') }, 8000 );
setTimeout(function() { $('#nd_device_name').text('1') }, 9000 ); setTimeout(function() { $('#nd_device-name').text('1') }, 9000 );
setTimeout(function() { setTimeout(function() {
$('#' + tab + '_form').trigger('submit'); $('#' + tab + '_form').trigger('submit');
}, 10000); }, 10000);

View File

@@ -12,31 +12,19 @@
function inner_view_processing(tab) { function inner_view_processing(tab) {
// LT wanted the page title to reflect what's on the page :) // LT wanted the page title to reflect what's on the page :)
document.title = $('#nd_device_name').text() document.title = $('#nd_device-name').text()
+' - '+ $('#'+ tab + '_link').text(); +' - '+ $('#'+ tab + '_link').text();
// VLANs column list collapser trigger // used for contenteditable cells to find out whether the user has made
// it's a bit of a faff because we can't easily use Bootstrap's collapser // changes, and only reset when they submit or cancel the change
$('.nd_collapse_vlans').toggle(function() {
$(this).siblings('.nd_collapsing').toggle();
$(this).siblings('.cell-arrow-up-down')
.toggleClass('icon-chevron-up icon-chevron-down');
$(this).html('<div class="cell-arrow-up-down icon-chevron-down icon-large"></div>Hide VLANs');
}, function() {
$(this).siblings('.nd_collapsing').toggle();
$(this).siblings('.cell-arrow-up-down')
.toggleClass('icon-chevron-up icon-chevron-down');
$(this).html('<div class="cell-arrow-up-down icon-chevron-up icon-large"></div>Show VLANs');
});
var dirty = false; var dirty = false;
// show or hide netmap help button // show or hide netmap help button
if (tab == 'netmap') { if (tab == 'netmap') {
$('#netmap_help_img').show(); $('#nd_netmap-help').show();
} }
else { else {
$('#netmap_help_img').hide(); $('#nd_netmap-help').hide();
} }
// activate tooltips and popovers // activate tooltips and popovers
@@ -55,18 +43,18 @@
// sidebar collapser events trigger change of up/down arrow // sidebar collapser events trigger change of up/down arrow
$('.collapse').on('show', function() { $('.collapse').on('show', function() {
$(this).siblings().find('.arrow-up-down') $(this).siblings().find('.nd_arrow-up-down-right')
.toggleClass('icon-chevron-up icon-chevron-down'); .toggleClass('icon-chevron-up icon-chevron-down');
}); });
$('.collapse').on('hide', function() { $('.collapse').on('hide', function() {
$(this).siblings().find('.arrow-up-down') $(this).siblings().find('.nd_arrow-up-down-right')
.toggleClass('icon-chevron-up icon-chevron-down'); .toggleClass('icon-chevron-up icon-chevron-down');
}); });
// handler for bin icon in port filter box // handler for bin icon in port filter box
var portfilter = $('#ports_form').find("input[name=f]"); var portfilter = $('#ports_form').find("input[name=f]");
$('.field_clear_icon').click(function() { $('.nd_field-clear-icon').click(function() {
portfilter.val(''); portfilter.val('');
$('#ports_form').trigger('submit'); $('#ports_form').trigger('submit');
device_form_state(portfilter); // will hide copy icons device_form_state(portfilter); // will hide copy icons
@@ -74,53 +62,65 @@
// clickable device port names can simply resubmit AJAX rather than // clickable device port names can simply resubmit AJAX rather than
// fetch the whole page again. // fetch the whole page again.
$(target).on('click', '.nd_this_port_only', function() { $('#ports_pane').on('click', '.nd_this-port-only', function() {
event.preventDefault(); // link is real so prevent page submit event.preventDefault(); // link is real so prevent page submit
var port = $(this).text(); var port = $(this).text();
port = $.trim(port); port = $.trim(port);
portfilter.val(port); portfilter.val(port);
$('.field_clear_icon').show(); $('.nd_field-clear-icon').show();
$('#ports_form').trigger('submit'); $('#ports_form').trigger('submit');
device_form_state(portfilter); // will hide copy icons device_form_state(portfilter); // will hide copy icons
}); });
// VLANs column list collapser trigger
// it's a bit of a faff because we can't easily use Bootstrap's collapser
$('#ports_pane').on('click', '.nd_collapse-vlans', function() {
$(this).siblings('.nd_collapsing').toggle();
if ($(this).find('.nd_arrow-up-down-left').hasClass('icon-chevron-up')) {
$(this).html('<div class="nd_arrow-up-down-left icon-chevron-down icon-large"></div>Hide VLANs');
}
else {
$(this).html('<div class="nd_arrow-up-down-left icon-chevron-up icon-large"></div>Show VLANs');
}
});
// toggle visibility of port up/down and edit controls // toggle visibility of port up/down and edit controls
$(target).on('mouseenter', '.nd_editable_cell', function() { $('.tab-content').on('mouseenter', '.nd_editable-cell', function() {
$(this).children('.nd_hand_icon').show(); $(this).children('.nd_hand-icon').show();
if (! $(this).is(':focus')) { if (! $(this).is(':focus')) {
$(this).children('.nd_edit_icon').show(); // ports $(this).children('.nd_edit-icon').show(); // ports
$(this).siblings('td').find('.nd_device_details_edit').show(); // details $(this).siblings('td').find('.nd_device-details-edit').show(); // details
} }
}); });
$(target).on('mouseleave', '.nd_editable_cell', function() { $('.tab-content').on('mouseleave', '.nd_editable-cell', function() {
$(this).children('.nd_hand_icon').hide(); $(this).children('.nd_hand-icon').hide();
if (! $(this).is(':focus')) { if (! $(this).is(':focus')) {
$(this).children('.nd_edit_icon').hide(); // ports $(this).children('.nd_edit-icon').hide(); // ports
$(this).siblings('td').find('.nd_device_details_edit').hide(); // details $(this).siblings('td').find('.nd_device-details-edit').hide(); // details
} }
}); });
$(target).on('focus', '[contenteditable=true]', function() { $('.tab-content').on('focus', '[contenteditable=true]', function() {
$(this).children('.nd_edit_icon').hide(); // ports $(this).children('.nd_edit-icon').hide(); // ports
$(this).siblings('td').find('.nd_device_details_edit').hide(); // details $(this).siblings('td').find('.nd_device-details-edit').hide(); // details
}); });
// activity for port up/down control // activity for port up/down control
$(target).on('click', '.icon-hand-up', function() { $('#ports_pane').on('click', '.icon-hand-up', function() {
port_control(this); // save port_control(this); // save
}); });
$(target).on('click', '.icon-hand-down', function() { $('#ports_pane').on('click', '.icon-hand-down', function() {
port_control(this); // save port_control(this); // save
}); });
// activity for power enable/disable control // activity for power enable/disable control
$(target).on('click', '.nd_power_icon', function() { $('#ports_pane').on('click', '.nd_power-icon', function() {
port_control(this); // save port_control(this); // save
}); });
// activity for contenteditable control // activity for contenteditable control
$(target).on('keydown', '[contenteditable=true]', function() { $('.tab-content').on('keydown', '[contenteditable=true]', function() {
var esc = event.which == 27, var esc = event.which == 27,
nl = event.which == 13; nl = event.which == 13;

View File

@@ -22,7 +22,7 @@
form_inputs.change(function() {device_form_state($(this))}); form_inputs.change(function() {device_form_state($(this))});
// handler for copy icon in search option // handler for copy icon in search option
$('.field_copy_icon').click(function() { $('.nd_field-copy-icon').click(function() {
var name = $(this).data('btn-for'); var name = $(this).data('btn-for');
var input = $('#device_form [name=' + name + ']'); var input = $('#device_form [name=' + name + ']');
input.val( $('#nq').val() ); input.val( $('#nq').val() );
@@ -30,7 +30,7 @@
}); });
// handler for bin icon in search option // handler for bin icon in search option
$('.field_clear_icon').click(function() { $('.nd_field-clear-icon').click(function() {
var name = $(this).data('btn-for'); var name = $(this).data('btn-for');
var input = $('#device_form [name=' + name + ']'); var input = $('#device_form [name=' + name + ']');
input.val(''); input.val('');

View File

@@ -83,7 +83,7 @@
<input placeholder="Find Anything" class="search-query span3" <input placeholder="Find Anything" class="search-query span3"
id="nq" name="q" type="text" autocomplete="off"/> id="nq" name="q" type="text" autocomplete="off"/>
<span style="font-size: 24px;"> <span style="font-size: 24px;">
<i id="navsearchgo" class="icon-search navbar_icon"></i> <i id="navsearchgo" class="icon-search nd_navbar-icon"></i>
</span> </span>
</form> </form>
[% IF vars.user.admin AND settings.admin_tasks.size %] [% IF vars.user.admin AND settings.admin_tasks.size %]
@@ -99,7 +99,7 @@
</ul> </ul>
[% END %] [% END %]
<ul class="nav pull-right"> <ul class="nav pull-right">
<li class="nd_navbartext">Logged in as &nbsp;</li> <li class="nd_navbar-text">Logged in as &nbsp;</li>
<li class="dropdown"> <li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">
[% IF vars.user.admin %] [% IF vars.user.admin %]

View File

@@ -1,16 +1,16 @@
<i class="sidebar_toggle icon-wrench icon-large" id="sidebar_toggle_img_out" <i class="nd_sidebar-toggle icon-wrench icon-large" id="nd_sidebar-toggle-img-out"
rel="tooltip" data-placement="left" data-offset="5" data-title="Show Sidebar"></i> rel="tooltip" data-placement="left" data-offset="5" data-title="Show Sidebar"></i>
<div class="container-fluid"> <div class="container-fluid">
<div class="sidebar sidebar_pinned"> <div class="nd_sidebar nd_sidebar-pinned">
<div class="well"> <div class="well">
<i class="sidebar_toggle icon-signout" id="sidebar_toggle_img_in" <i class="nd_sidebar-toggle icon-signout" id="nd_sidebar-toggle-img-in"
rel="tooltip" data-placement="left" data-offset="5" data-title="Hide Sidebar"></i> rel="tooltip" data-placement="left" data-offset="5" data-title="Hide Sidebar"></i>
<i class="sidebar_pin icon-pushpin sidebar_pin_clicked" <i class="nd_sidebar-pin icon-pushpin nd_sidebar-pin-clicked"
rel="tooltip" data-placement="left" data-offset="5" data-title="Unpin Sidebar"></i> rel="tooltip" data-placement="left" data-offset="5" data-title="Unpin Sidebar"></i>
<div class="tab-content"> <div class="tab-content">
<div id="[% report.tag %]_search" class="tab-pane active"> <div id="[% report.tag %]_search" class="tab-pane active">
<form id="[% report.tag %]_form" class="nd_sidesearchform form-stacked" <form id="[% report.tag %]_form" class="nd_sidebar-form form-stacked"
method="get" action="[% uri_for('/report') %]"> method="get" action="[% uri_for('/report') %]">
[% TRY %] [% TRY %]
[% INCLUDE "sidebar/report/${report.tag}.tt" %] [% INCLUDE "sidebar/report/${report.tag}.tt" %]
@@ -25,8 +25,8 @@
</div> </div>
<div class="content"> <div class="content">
<ul id="search_results" class="nav nav-tabs"> <ul id="nd_search-results" class="nav nav-tabs">
<li class="active"><a id="[% report.tag %]_link" class="nd_single_tab" <li class="active"><a id="[% report.tag %]_link" class="nd_single-tab"
href="#[% report.tag %]_pane">[% report.label %]</a></li> href="#[% report.tag %]_pane">[% report.label %]</a></li>
</ul> </ul>
<div class="tab-content"> <div class="tab-content">

View File

@@ -1,16 +1,16 @@
<i class="sidebar_toggle icon-wrench icon-large" id="sidebar_toggle_img_out" <i class="nd_sidebar-toggle icon-wrench icon-large" id="nd_sidebar-toggle-img-out"
rel="tooltip" data-placement="left" data-offset="5" data-title="Show Sidebar"></i> rel="tooltip" data-placement="left" data-offset="5" data-title="Show Sidebar"></i>
<div class="container-fluid"> <div class="container-fluid">
<div class="sidebar"> <div class="nd_sidebar">
<div class="well"> <div class="well">
<i class="sidebar_toggle icon-signout" id="sidebar_toggle_img_in" <i class="nd_sidebar-toggle icon-signout" id="nd_sidebar-toggle-img-in"
rel="tooltip" data-placement="left" data-offset="5" data-title="Hide Sidebar"></i> rel="tooltip" data-placement="left" data-offset="5" data-title="Hide Sidebar"></i>
<i class="sidebar_pin icon-pushpin" <i class="nd_sidebar-pin icon-pushpin"
rel="tooltip" data-placement="left" data-offset="5" data-title="Pin Sidebar"></i> rel="tooltip" data-placement="left" data-offset="5" data-title="Pin Sidebar"></i>
<div class="tab-content"> <div class="tab-content">
[% FOREACH tab IN settings.search_tabs %] [% FOREACH tab IN settings.search_tabs %]
<div id="[% tab.tag %]_search" class="tab-pane [% 'active' IF params.tab == tab.tag %]"> <div id="[% tab.tag %]_search" class="tab-pane [% 'active' IF params.tab == tab.tag %]">
<form id="[% tab.tag %]_form" class="nd_sidesearchform form-stacked" method="get" action="[% uri_for('/search') %]"> <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"/> <input name="tab" value="[% tab.tag %]" type="hidden"/>
[% TRY %] [% TRY %]
[% INCLUDE "sidebar/search/${tab.tag}.tt" %] [% INCLUDE "sidebar/search/${tab.tag}.tt" %]
@@ -28,7 +28,7 @@
</div> </div>
<div class="content"> <div class="content">
<ul id="search_results" class="nav nav-tabs"> <ul id="nd_search-results" class="nav nav-tabs">
[% FOREACH tab IN settings.search_tabs %] [% FOREACH tab IN settings.search_tabs %]
<li[% ' class="active"' IF params.tab == tab.tag %]><a id="[% tab.tag %]_link" href="#[% tab.tag %]_pane">[% tab.label %]</a></li> <li[% ' class="active"' IF params.tab == tab.tag %]><a id="[% tab.tag %]_link" href="#[% tab.tag %]_pane">[% tab.label %]</a></li>
[% END %] [% END %]

View File

@@ -1,20 +1,20 @@
<input name="q" value="[% params.q | html_entity %]" type="hidden"/> <input name="q" value="[% params.q | html_entity %]" type="hidden"/>
<div class="clearfix"> <div class="clearfix">
<i class="field_clear_icon icon-trash icon-large" <i class="nd_field-clear-icon icon-trash icon-large"
rel="tooltip" data-placement="bottom" data-offset="3" data-title="Show all Ports" rel="tooltip" data-placement="bottom" data-offset="3" data-title="Show all Ports"
id="f_clear_btn" data-btn-for="port"></i> id="f_clear_btn" data-btn-for="port"></i>
<input id="nd_port_query" placeholder="Port, Name or VLAN" <input id="nd_port-query" placeholder="Port, Name or VLAN"
name="f" value="[% params.f | html_entity %]" type="text" name="f" value="[% params.f | html_entity %]" type="text"
rel="tooltip" data-placement="left" data-offset="5" data-title="Filter by Port, Name or VLAN"/> rel="tooltip" data-placement="left" data-offset="5" data-title="Filter by Port, Name or VLAN"/>
</div> </div>
<div class="clearfix"> <div class="clearfix">
<span data-toggle="collapse" data-target="#nd_legend"> <span data-toggle="collapse" data-target="#nd_legend">
<label class="nd_collapser">Legend <label class="nd_collapser">Legend
<i class="arrow-up-down icon-chevron-up icon-large"></i> <i class="nd_arrow-up-down-right icon-chevron-up icon-large"></i>
</label></span> </label></span>
<div id="nd_legend" class="collapse"> <div id="nd_legend" class="collapse">
<ul class="inputs-list unstyled"> <ul class="nd_inputs-list unstyled">
<li> <li>
<span class="label">S</span>&nbsp; Admin Disabled <span class="label">S</span>&nbsp; Admin Disabled
</li> </li>
@@ -47,10 +47,10 @@
<div class="clearfix"> <div class="clearfix">
<span data-toggle="collapse" data-target="#nd_columns"> <span data-toggle="collapse" data-target="#nd_columns">
<label class="nd_collapser">Display Columns <label class="nd_collapser">Display Columns
<i class="arrow-up-down icon-chevron-down icon-large"></i> <i class="nd_arrow-up-down-right icon-chevron-down icon-large"></i>
</label></span> </label></span>
<div id="nd_columns" class="collapse in"> <div id="nd_columns" class="collapse in">
<ul class="inputs-list unstyled"> <ul class="nd_inputs-list unstyled">
[% FOREACH item IN vars.port_columns %] [% FOREACH item IN vars.port_columns %]
[% NEXT IF item.name == 'c_admin' AND NOT vars.user.port_control %] [% NEXT IF item.name == 'c_admin' AND NOT vars.user.port_control %]
<li> <li>
@@ -71,18 +71,18 @@
<div class="clearfix"> <div class="clearfix">
<span data-toggle="collapse" data-target="#nd_portprops"> <span data-toggle="collapse" data-target="#nd_portprops">
<label class="nd_collapser">Port Properties <label class="nd_collapser">Port Properties
<i class="arrow-up-down icon-chevron-up icon-large"></i> <i class="nd_arrow-up-down-right icon-chevron-up icon-large"></i>
</label></span> </label></span>
<div id="nd_portprops" class="collapse"> <div id="nd_portprops" class="collapse">
<ul class="inputs-list unstyled"> <ul class="nd_inputs-list unstyled">
<li> <li>
<em class="muted">Mark as Free if Down for:</em><br/> <em class="muted">Mark as Free if Down for:</em><br/>
<select id="nd_days_select" name="age_num"> <select id="nd_days-select" name="age_num">
[% FOREACH count IN [1..32] %] [% FOREACH count IN [1..32] %]
<option[% ' selected="selected"' IF params.age_num == count %]>[% count %]</option> <option[% ' selected="selected"' IF params.age_num == count %]>[% count %]</option>
[% END %] [% END %]
</select> </select>
<select id="nd_age_select" name="age_unit"> <select id="nd_age-select" name="age_unit">
[% FOREACH unit IN [ 'days', 'weeks', 'months', 'years' ] %] [% FOREACH unit IN [ 'days', 'weeks', 'months', 'years' ] %]
<option[% ' selected="selected"' IF params.age_unit == unit %]>[% unit %]</option> <option[% ' selected="selected"' IF params.age_unit == unit %]>[% unit %]</option>
[% END %] [% END %]
@@ -101,13 +101,13 @@
<div class="clearfix"> <div class="clearfix">
<span data-toggle="collapse" data-target="#nd_nodeprops"> <span data-toggle="collapse" data-target="#nd_nodeprops">
<label class="nd_collapser">Node Properties <label class="nd_collapser">Node Properties
<i class="arrow-up-down icon-chevron-up icon-large"></i> <i class="nd_arrow-up-down-right icon-chevron-up icon-large"></i>
</label></span> </label></span>
<div id="nd_nodeprops" class="collapse"> <div id="nd_nodeprops" class="collapse">
<ul class="inputs-list unstyled"> <ul class="nd_inputs-list unstyled">
<li> <li>
<em class="muted">MAC address format:</em><br/> <em class="muted">MAC address format:</em><br/>
<select id="nd_mac_format" name="mac_format"> <select id="nd_mac-format" name="mac_format">
[% FOREACH format IN [ 'IEEE', 'Cisco', 'Microsoft', 'Sun' ] %] [% FOREACH format IN [ 'IEEE', 'Cisco', 'Microsoft', 'Sun' ] %]
<option[% ' selected="selected"' IF params.mac_format == format %]>[% format %]</option> <option[% ' selected="selected"' IF params.mac_format == format %]>[% format %]</option>
[% END %] [% END %]

View File

@@ -1,48 +1,48 @@
<p class="nd_sidebar_title"><em>Device Search Options</em></p> <p class="nd_sidebar-title"><em>Device Search Options</em></p>
<input name="q" value="[% params.q | html_entity %]" type="hidden"/> <input name="q" value="[% params.q | html_entity %]" type="hidden"/>
<div class="clearfix"> <div class="clearfix">
<i data-btn-for="dns" class="field_copy_icon icon-copy icon-large"></i> <i data-btn-for="dns" class="nd_field-copy-icon icon-copy icon-large"></i>
<i id="dns_clear_btn" data-btn-for="dns" <i id="dns_clear_btn" data-btn-for="dns"
class="field_clear_icon icon-trash icon-large"></i> class="nd_field-clear-icon icon-trash icon-large"></i>
<input class="nd_side_input" placeholder="DNS" <input class="nd_side-input" placeholder="DNS"
type="text" name="dns" value="[% params.dns | html_entity %]" type="text" name="dns" value="[% params.dns | html_entity %]"
rel="tooltip" data-placement="left" data-offset="5" data-title="DNS"/> rel="tooltip" data-placement="left" data-offset="5" data-title="DNS"/>
</div> </div>
<div class="clearfix"> <div class="clearfix">
<i data-btn-for="ip" class="field_copy_icon icon-copy icon-large"></i> <i data-btn-for="ip" class="nd_field-copy-icon icon-copy icon-large"></i>
<i id="ip_clear_btn" data-btn-for="ip" <i id="ip_clear_btn" data-btn-for="ip"
class="field_clear_icon icon-trash icon-large"></i> class="nd_field-clear-icon icon-trash icon-large"></i>
<input class="nd_side_input" placeholder="IP Address" <input class="nd_side-input" placeholder="IP Address"
type="text" name="ip" value="[% params.ip | html_entity %]" type="text" name="ip" value="[% params.ip | html_entity %]"
rel="tooltip" data-placement="left" data-offset="5" data-title="IP Address"/> rel="tooltip" data-placement="left" data-offset="5" data-title="IP Address"/>
</div> </div>
<div class="clearfix"> <div class="clearfix">
<i data-btn-for="name" class="field_copy_icon icon-copy icon-large"></i> <i data-btn-for="name" class="nd_field-copy-icon icon-copy icon-large"></i>
<i id="name_clear_btn" data-btn-for="name" <i id="name_clear_btn" data-btn-for="name"
class="field_clear_icon icon-trash icon-large"></i> class="nd_field-clear-icon icon-trash icon-large"></i>
<input class="nd_side_input" placeholder="System Name" <input class="nd_side-input" placeholder="System Name"
type="text" name="name" value="[% params.name | html_entity %]" type="text" name="name" value="[% params.name | html_entity %]"
rel="tooltip" data-placement="left" data-offset="5" data-title="System Name"/> rel="tooltip" data-placement="left" data-offset="5" data-title="System Name"/>
</div> </div>
<div class="clearfix"> <div class="clearfix">
<i data-btn-for="location" class="field_copy_icon icon-copy icon-large"></i> <i data-btn-for="location" class="nd_field-copy-icon icon-copy icon-large"></i>
<i id="location_clear_btn" data-btn-for="location" <i id="location_clear_btn" data-btn-for="location"
class="field_clear_icon icon-trash icon-large"></i> class="nd_field-clear-icon icon-trash icon-large"></i>
<input class="nd_side_input" placeholder="Location" <input class="nd_side-input" placeholder="Location"
type="text" name="location" value="[% params.location | html_entity %]" type="text" name="location" value="[% params.location | html_entity %]"
rel="tooltip" data-placement="left" data-offset="5" data-title="Location"/> rel="tooltip" data-placement="left" data-offset="5" data-title="Location"/>
</div> </div>
<div class="clearfix"> <div class="clearfix">
<i data-btn-for="description" class="field_copy_icon icon-copy icon-large"></i> <i data-btn-for="description" class="nd_field-copy-icon icon-copy icon-large"></i>
<i id="description_clear_btn" data-btn-for="description" <i id="description_clear_btn" data-btn-for="description"
class="field_clear_icon icon-trash icon-large"></i> class="nd_field-clear-icon icon-trash icon-large"></i>
<input class="nd_side_input" placeholder="Description" <input class="nd_side-input" placeholder="Description"
type="text" name="description" value="[% params.description | html_entity %]" type="text" name="description" value="[% params.description | html_entity %]"
rel="tooltip" data-placement="left" data-offset="5" data-title="Description"/> rel="tooltip" data-placement="left" data-offset="5" data-title="Description"/>
</div> </div>
<div class="clearfix"> <div class="clearfix">
<select class="nd_side_select" size="[% model_list.size > 5 ? 5 : model_list.size %]" <select class="nd_side-select" size="[% model_list.size > 5 ? 5 : model_list.size %]"
multiple="on" name="model" multiple="on" name="model"
rel="tooltip" data-placement="left" data-offset="5" data-title="Model"/> rel="tooltip" data-placement="left" data-offset="5" data-title="Model"/>
[% FOREACH opt IN model_list %] [% FOREACH opt IN model_list %]
@@ -51,7 +51,7 @@
</select> </select>
</div> </div>
<div class="clearfix"> <div class="clearfix">
<select class="nd_side_select" size="[% os_ver_list.size > 5 ? 5 : os_ver_list.size %]" <select class="nd_side-select" size="[% os_ver_list.size > 5 ? 5 : os_ver_list.size %]"
multiple="on" name="os_ver" multiple="on" name="os_ver"
rel="tooltip" data-placement="left" data-offset="5" data-title="OS Release"/> rel="tooltip" data-placement="left" data-offset="5" data-title="OS Release"/>
[% FOREACH opt IN os_ver_list %] [% FOREACH opt IN os_ver_list %]
@@ -60,7 +60,7 @@
</select> </select>
</div> </div>
<div class="clearfix"> <div class="clearfix">
<select class="nd_side_select" size="[% vendor_list.size > 5 ? 5 : vendor_list.size %]" <select class="nd_side-select" size="[% vendor_list.size > 5 ? 5 : vendor_list.size %]"
multiple="on" name="vendor" multiple="on" name="vendor"
rel="tooltip" data-placement="left" data-offset="5" data-title="Vendor"/> rel="tooltip" data-placement="left" data-offset="5" data-title="Vendor"/>
[% FOREACH opt IN vendor_list %] [% FOREACH opt IN vendor_list %]

View File

@@ -1,5 +1,5 @@
<p class="nd_sidebar_title"><em>Node Search Options</em></p> <p class="nd_sidebar-title"><em>Node Search Options</em></p>
<input name="q" value="[% params.q | html_entity %]" type="hidden"/> <input name="q" value="[% params.q | html_entity %]" type="hidden"/>
<div class="clearfix input-prepend"> <div class="clearfix input-prepend">
<label class="add-on"> <label class="add-on">
@@ -40,7 +40,7 @@
</div> </div>
<div class="clearfix"> <div class="clearfix">
<em class="muted">MAC address format:</em><br/> <em class="muted">MAC address format:</em><br/>
<select id="nd_node_mac_format" name="mac_format"> <select id="nd_node-mac-format" name="mac_format">
[% FOREACH format IN [ 'IEEE', 'Cisco', 'Microsoft', 'Sun' ] %] [% FOREACH format IN [ 'IEEE', 'Cisco', 'Microsoft', 'Sun' ] %]
<option[% ' selected="selected"' IF params.mac_format == format %]>[% format %]</option> <option[% ' selected="selected"' IF params.mac_format == format %]>[% format %]</option>
[% END %] [% END %]

View File

@@ -1,5 +1,5 @@
<p class="nd_sidebar_title"><em>Port Search Options</em></p> <p class="nd_sidebar-title"><em>Port Search Options</em></p>
<input name="q" value="[% params.q | html_entity %]" type="hidden"/> <input name="q" value="[% params.q | html_entity %]" type="hidden"/>
<div class="clearfix input-prepend"> <div class="clearfix input-prepend">
<label class="add-on"> <label class="add-on">