Squashed commit of the following: commitaa2baf5c75Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Jun 9 15:44:29 2013 +0100 next stable release commit79fe5b59e6Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Jun 9 15:37:26 2013 +0100 fix localenv discovery for scripts commit1af2f78dd4Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Jun 9 14:55:39 2013 +0100 include new bin scripts commit23d0e1b0e7Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Jun 9 14:09:27 2013 +0100 more bug fixes commitdfeacd12e2Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Jun 9 11:30:06 2013 +0100 several bug fixes commit9fd41f1c26Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Jun 8 21:22:44 2013 +0100 bump version for next beta commitb0925cf116Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Jun 8 21:20:13 2013 +0100 update plugin docs commit9571c45634Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Jun 8 20:54:30 2013 +0100 sanitize configuration files commitdd447e4246Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Jun 8 20:04:43 2013 +0100 tweak parsing of lists of regex in config commit9957548022Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Jun 8 19:54:10 2013 +0100 workers instead of daemon_* config commit4f6b470429Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Jun 8 19:39:40 2013 +0100 no more demo :( commiteda73c7dacAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat Jun 8 19:24:47 2013 +0100 lots of docs commit4a1ccba71aAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat Jun 8 18:17:42 2013 +0100 documentation for all config settings commit3538e47bcdAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat Jun 8 16:05:03 2013 +0100 update TODO commitcf9001fcccMerge:a43c9897b98e23Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Jun 8 16:03:29 2013 +0100 merge master after new release commita43c98962aAuthor: Oliver Gorwits <oliver@cpan.org> Date: Mon Jun 3 20:37:39 2013 +0100 Missing mibdirs causes all MIBs to be loaded (with a warning) commit09829a25b8Author: Oliver Gorwits <oliver@cpan.org> Date: Mon Jun 3 20:07:31 2013 +0100 local plugins site_plugins dir commitb0e804e558Author: Oliver Gorwits <oliver@cpan.org> Date: Mon Jun 3 19:59:04 2013 +0100 use send_error and redirect from Dancer commit3d1185261aAuthor: Oliver Gorwits <oliver@cpan.org> Date: Mon Jun 3 19:13:40 2013 +0100 support path config option commit31ca119f84Merge:9a798554d2b3a5Author: Oliver Gorwits <oliver@cpan.org> Date: Mon Jun 3 00:06:17 2013 +0100 Merge remote-tracking branch 'origin/og-work' into og-work g-work" This reverts commit9a79855361, reversing changes made to6fd6118354. Conflicts: Netdisco/share/views/plugin/device_port_column/c_observiumsparklines.tt commit9a79855361Merge:6fd6118c8c3b82Author: Oliver Gorwits <oliver@cpan.org> Date: Mon Jun 3 00:03:32 2013 +0100 Merge remote-tracking branch 'origin/master' into og-work commit6fd6118354Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Jun 2 15:47:45 2013 +0100 extra note about behind proxy commit798086ca29Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Jun 2 15:30:26 2013 +0100 complete the observium plugin commit66b3ced179Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Jun 2 12:48:06 2013 +0100 Plugins can have CSS and Javascript loaded within <head> commit4d2b3a5307Author: Oliver Gorwits <oliver@cpan.org> Date: Thu May 30 08:50:16 2013 +0100 get device dns to port template commited1bfa1ae7Author: Oliver Gorwits <oliver@cpan.org> Date: Thu May 30 08:17:02 2013 +0100 observium sparklines plugin; support X:: namespace commit76b7636c74Author: Oliver Gorwits <oliver@cpan.org> Date: Thu May 30 06:30:06 2013 +0100 rename private settings keys commitfdac8f6c33Author: Oliver Gorwits <oliver@cpan.org> Date: Thu May 30 05:59:53 2013 +0100 add macwalk and arpnip buttons to device details commit3d688c7d83Author: Oliver Gorwits <oliver@cpan.org> Date: Thu May 30 05:57:20 2013 +0100 Revert "reduce refresh to 5sec" This reverts commit8ea9ec7dd9. commitdc62382112Author: Oliver Gorwits <oliver@cpan.org> Date: Thu May 30 05:50:34 2013 +0100 support for arpwalk and macwalk and all jobs via web commit8bc7d83c98Author: Oliver Gorwits <oliver@cpan.org> Date: Thu May 30 05:35:41 2013 +0100 simplify discover options to only discoverall and discover commit8ea9ec7dd9Author: Oliver Gorwits <oliver@cpan.org> Date: Wed May 29 20:23:08 2013 +0100 reduce refresh to 5sec commit8c54e6c58bAuthor: Oliver Gorwits <oliver@cpan.org> Date: Wed May 29 20:11:06 2013 +0100 show undiscovered neighbor properly commite0ee25628fAuthor: Oliver Gorwits <oliver@cpan.org> Date: Wed May 29 19:54:09 2013 +0100 avoid unecessary log for queueing commitd5565423f2Author: Oliver Gorwits <oliver@cpan.org> Date: Wed May 29 19:51:37 2013 +0100 avoid warning on undefined remote type commit5d9b58a6b2Author: Oliver Gorwits <oliver@cpan.org> Date: Wed May 29 19:48:22 2013 +0100 avoid explosion when not admin commit377bb942e0Author: Oliver Gorwits <oliver@cpan.org> Date: Wed May 29 19:46:52 2013 +0100 avoid undefined warning commit08806dcfa2Author: Oliver Gorwits <oliver@cpan.org> Date: Wed May 29 19:46:42 2013 +0100 get_db_version will be 0 at first deploy commit9511c17056Author: Oliver Gorwits <oliver@cpan.org> Date: Wed May 29 19:15:55 2013 +0100 fix name of Template module commiteb0288de35Author: Oliver Gorwits <oliver@cpan.org> Date: Tue May 28 07:17:07 2013 +0100 initial config settings documentation commit7f2ea7f8dcAuthor: Oliver Gorwits <oliver@cpan.org> Date: Mon May 27 15:18:15 2013 +0100 remove check_mac to own module, use in macsuck too commitb995cf6398Author: Oliver Gorwits <oliver@cpan.org> Date: Mon May 27 15:01:29 2013 +0100 show probable but undiscovered neighbor is ports display commitdd8d461188Author: Oliver Gorwits <oliver@cpan.org> Date: Mon May 27 14:52:41 2013 +0100 new schema version for is_uplink and is_uplink_admin commit3f6a7b5aa2Author: Oliver Gorwits <oliver@cpan.org> Date: Mon May 27 14:47:59 2013 +0100 make sure device_port is updated when manual_topo is set commit33bf9a6599Author: Oliver Gorwits <oliver@cpan.org> Date: Sun May 26 19:51:49 2013 +0100 export store_arp and store_node commit0ed356d560Author: Oliver Gorwits <oliver@cpan.org> Date: Sat May 25 17:12:31 2013 +0100 use row lock not table lock commitf830bc3a3bAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat May 25 16:38:33 2013 +0100 move macsuck/arpnip/discover to ::Core namespace commitbe40788987Author: Oliver Gorwits <oliver@cpan.org> Date: Fri May 24 21:10:34 2013 +0100 add maybe_uplink to device_port; more macsuck implementation commit88371026d5Author: Oliver Gorwits <oliver@cpan.org> Date: Fri May 24 14:34:58 2013 +0100 start on macsuck; tweak update locking commit6f7c87ac07Author: Oliver Gorwits <oliver@cpan.org> Date: Fri May 24 13:10:58 2013 +0100 ORDER BY ... FOR UPDATE will allow us to avoid table lock commit7c438e01fcAuthor: Oliver Gorwits <oliver@cpan.org> Date: Fri May 24 12:12:46 2013 +0100 yet more efficient arpnip commitc74c56dc02Author: Oliver Gorwits <oliver@cpan.org> Date: Fri May 24 11:34:23 2013 +0100 guard against race with *_or_* DBIC methods commitd50c54972eAuthor: Oliver Gorwits <oliver@cpan.org> Date: Mon May 20 23:42:41 2013 +0100 more efficient arpnip commit73c8979130Author: Oliver Gorwits <oliver@cpan.org> Date: Sun May 19 22:52:15 2013 +0100 fix confusing name commitbf78e82411Author: Oliver Gorwits <oliver@cpan.org> Date: Sun May 19 22:37:22 2013 +0100 fix mistake in DBIx::Class schema commit6a5af95836Author: Oliver Gorwits <oliver@cpan.org> Date: Sun May 19 22:06:27 2013 +0100 arpnip implementation commit594abd3f82Author: Oliver Gorwits <oliver@cpan.org> Date: Thu May 16 00:00:50 2013 +0100 PostgreSQL explicit locking support. Squashed commit of the following: commit76e1539102Author: Oliver Gorwits <oliver@cpan.org> Date: Wed May 15 23:54:25 2013 +0100 finished explicit locking module commit369387258bAuthor: Oliver Gorwits <oliver@cpan.org> Date: Tue May 14 23:50:42 2013 +0100 initial implementation of locking from schema object commit55c6d4fe63Author: Oliver Gorwits <oliver@cpan.org> Date: Tue May 14 21:05:01 2013 +0100 add discover button to device details page commit11fd8bf964Author: Oliver Gorwits <oliver@cpan.org> Date: Tue May 14 20:43:43 2013 +0100 fix typo and clear port box on autocomplete dropdown commita00f9b5c2eAuthor: Oliver Gorwits <oliver@cpan.org> Date: Tue May 14 20:38:54 2013 +0100 move admin tasks and remove JobControl package commit74bc0023dfAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat May 11 18:25:04 2013 +0100 complete job queue delete and kill running timers properly when reloading page commitdd6947f38dAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat May 11 16:51:28 2013 +0100 fix improper use of bootstrap table class commitcd5b83f71eAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat May 11 15:55:45 2013 +0100 fix update view icon in sidebar commite9349f325dAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat May 11 11:57:19 2013 +0100 css audit commit201470275dAuthor: Oliver Gorwits <oliver@cpan.org> Date: Thu May 9 23:48:05 2013 +0100 add job queue to standard plugins list commita18a3c72a3Author: Oliver Gorwits <oliver@cpan.org> Date: Thu May 9 23:37:43 2013 +0100 fix table headings and improve Action display in Job Queue commit70f5da8bb6Author: Oliver Gorwits <oliver@cpan.org> Date: Thu May 9 23:30:32 2013 +0100 implement "no devices" prompt for admin users to do first discover commit2e8ac83173Author: Oliver Gorwits <oliver@cpan.org> Date: Thu May 9 21:53:39 2013 +0100 more js refactoring for report and search commit479ac0e55dAuthor: Oliver Gorwits <oliver@cpan.org> Date: Thu May 9 21:50:29 2013 +0100 refactor js for device tabs commit6a17fe5d6cAuthor: Oliver Gorwits <oliver@cpan.org> Date: Thu May 9 21:05:42 2013 +0100 fix crazy races with javasacript by using global delegations commite94e3cef3bAuthor: Oliver Gorwits <oliver@cpan.org> Date: Wed May 8 23:06:41 2013 +0100 remove Try::Tiny from web runtime commitc746e68b9bAuthor: Oliver Gorwits <oliver@cpan.org> Date: Tue May 7 21:54:11 2013 +0100 make topo autocomplete more responsive commit24c511786fAuthor: Oliver Gorwits <oliver@cpan.org> Date: Tue May 7 21:52:17 2013 +0100 display name and IP for device typeahead commit52ab7d1266Author: Oliver Gorwits <oliver@cpan.org> Date: Tue May 7 21:47:05 2013 +0100 add drop-down control for the topo form fields commit5744b6845fAuthor: Oliver Gorwits <oliver@cpan.org> Date: Tue May 7 21:25:30 2013 +0100 complete the topology editor (add/delete) commitb510fbe8c5Author: Oliver Gorwits <oliver@cpan.org> Date: Tue May 7 00:59:11 2013 +0100 add new admin tasks to default plugins list commit11d55e0129Author: Oliver Gorwits <oliver@cpan.org> Date: Tue May 7 00:56:19 2013 +0100 Manual Device Topology Needed to add the 'autocomplete' jQuery UI component because it can do minLength=0 properly. Used the smoothness UI theme. Added typeahead AJAX calls to support the topology searching. Added new plugin and template for the topology editing page. commitbf7a419d08Author: Oliver Gorwits <oliver@cpan.org> Date: Mon May 6 22:16:24 2013 +0100 add a little colour to lone tab titles commit9690a31f19Author: Oliver Gorwits <oliver@cpan.org> Date: Mon May 6 22:01:13 2013 +0100 complete Manage Pseudo Devices commit024f4d9a83Author: Oliver Gorwits <oliver@cpan.org> Date: Mon May 6 00:49:47 2013 +0100 use bootstrap font colour instead of css commitf75f1e5cbfAuthor: Oliver Gorwits <oliver@cpan.org> Date: Mon May 6 00:45:18 2013 +0100 add frontend update/del forms, and display port count commitf0899e16b3Author: Oliver Gorwits <oliver@cpan.org> Date: Sun May 5 23:53:20 2013 +0100 add frontend pseudo device add form commit3271c01931Author: Oliver Gorwits <oliver@cpan.org> Date: Sun May 5 21:45:17 2013 +0100 complete the code for admin tasks page loading commit38f70624f3Author: Oliver Gorwits <oliver@cpan.org> Date: Sun May 5 17:04:30 2013 +0100 set up file paths consistently in all scripts commitc761ca839bAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sun May 5 17:00:30 2013 +0100 Helper script to import the Netdisco 1.x Topology file to the database commitf468b48049Author: Oliver Gorwits <oliver@cpan.org> Date: Sun May 5 16:20:39 2013 +0100 Handle whitespace ahead of OUI data commit5c8a5754f6Author: Oliver Gorwits <oliver@cpan.org> Date: Sun May 5 16:16:20 2013 +0100 also set neighbor info when discovering device interfaces commitacb988b6afAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sun May 5 15:34:20 2013 +0100 try to avoid duplicate execution of scheduled jobs commitc6bcaf66c5Author: Oliver Gorwits <oliver@cpan.org> Date: Sun May 5 14:16:25 2013 +0100 do not clobber manual topo when discovering neighbors commitd9a6a1882aAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sun May 5 13:02:45 2013 +0100 User icon color indicates port_control/admin ability commit2cdcb9db7eAuthor: Oliver Gorwits <oliver@cpan.org> Date: Mon Apr 29 23:34:27 2013 +0100 add support for admin tasks as plugins commit075a770c9aAuthor: Oliver Gorwits <oliver@cpan.org> Date: Mon Apr 29 22:23:20 2013 +0100 skip pseudo devices (vendor netdisco) commit045c022d42Author: Oliver Gorwits <oliver@cpan.org> Date: Mon Apr 29 21:58:33 2013 +0100 incorporate manual topo info from the topology db table commit09285d42b4Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Apr 27 18:39:12 2013 +0100 add unique constraints to topology table commit2780b72e49Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Apr 27 15:38:05 2013 +0100 muted help text in sidebar commit733d4f83fbAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat Apr 27 14:39:54 2013 +0100 sorry, testing hook changes commit71e366e352Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Apr 27 14:34:36 2013 +0100 sorry, testing hook changes commit7f9eaa99f5Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Apr 27 14:33:44 2013 +0100 sorry, testing hook changes commit5215fd632dAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat Apr 27 14:30:07 2013 +0100 sorry, testing hook changes commitbe817d60c2Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Apr 27 14:21:45 2013 +0100 sorry, testing hook changes commit1fd3695358Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Apr 27 14:18:57 2013 +0100 sorry, testing hook changes commitac448c4a91Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Apr 27 14:13:03 2013 +0100 sorry, testing hook changes commitc563b8d9afAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat Apr 27 14:08:54 2013 +0100 sorry, testing hook changes commit3abcfb01d5Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Apr 27 14:06:25 2013 +0100 sorry, testing hook changes commit877a81facfAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat Apr 27 14:05:25 2013 +0100 sorry, testing hook changes
		
			
				
	
	
		
			269 lines
		
	
	
		
			9.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			269 lines
		
	
	
		
			9.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| <table class="table table-bordered table-striped">
 | |
|   <thead>
 | |
|     <tr>
 | |
|       <th></th>
 | |
|       [% FOREACH item IN vars.port_columns %]
 | |
|       [% NEXT IF item.name == 'c_admin' %]
 | |
|       [% NEXT IF item.name == 'c_nodes' AND params.c_nodes AND params.c_neighbors %]
 | |
|         [% NEXT UNLESS params.${item.name} %]
 | |
|         <th[% ' class="nd_nudge-for-icon"' IF
 | |
|           (vars.user.port_control AND params.c_admin AND (item.name == 'c_port' OR item.name == 'c_name')) %]>
 | |
|           [% item.label | html_entity %]
 | |
|         </th>
 | |
|       [% END %]
 | |
|     </tr>
 | |
|   </thead>
 | |
|   </tbody>
 | |
|     [% FOREACH row IN results %]
 | |
|     <tr>
 | |
|       <td>
 | |
|         [% IF row.up_admin == 'down' %]
 | |
|         <span class="label">S</span>
 | |
|         [% ELSIF row.stp == 'blocking' %]
 | |
|         <span class="label label-info">B</span>
 | |
|         [% ELSIF params.free OR row.is_free %]
 | |
|         <span class="label label-success">F</span>
 | |
|         [% ELSIF row.up_admin == 'up' AND row.up == 'down' %]
 | |
|         <span class="label label-warning">D</span>
 | |
|         [% END %]
 | |
|       </td>
 | |
| 
 | |
|       [% FOREACH config IN settings._extra_device_port_cols %]
 | |
|         [% NEXT UNLESS config.position == 'left' AND params.${config.name} %]
 | |
|         <td>
 | |
|           [% TRY %]
 | |
|           [% INCLUDE "plugin/${config.name}/device_port_column.tt" %]
 | |
|           [% CATCH %]
 | |
|           <!-- dummy content required by Template Toolkit TRY -->
 | |
|           [% END %]
 | |
|         </td>
 | |
|       [% END %]
 | |
| 
 | |
|       [% IF params.c_port %]
 | |
|       [% IF vars.user.port_control AND params.c_admin %]
 | |
|       [% IF row.up_admin == 'up' %]
 | |
|       <td nowrap class="nd_editable-cell" data-action="down"
 | |
|         data-field="c_port" data-for-device="[% device.ip | html_entity %]" data-for-port="[% row.port | html_entity %]">
 | |
|         <i class="icon-hand-down nd_hand-icon"
 | |
|           rel="tooltip" data-placement="top" data-offset="3"
 | |
|           data-animation="" data-title="Click to Disable"></i>
 | |
|       [% ELSE %]
 | |
|       <td nowrap class="nd_editable-cell" data-action="up"
 | |
|         data-field="c_port" data-for-device="[% device.ip | html_entity %]" data-for-port="[% row.port | html_entity %]">
 | |
|         <i class="icon-hand-up nd_hand-icon"
 | |
|           rel="tooltip" data-placement="top" data-offset="3"
 | |
|           data-animation="" data-title="Click to Enable"></i>
 | |
|       [% END %]
 | |
|       [% ELSE %]
 | |
|       <td nowrap>
 | |
|       [% END %]
 | |
|         <a class="nd_linkcell nd_this-port-only" href="[% uri_for('/device',
 | |
|             self_options) %]&q=[% params.q | uri %]&f=[% row.port | uri %]">
 | |
|         [% row.port | html_entity %]
 | |
|       </a></td>
 | |
|       [% END %]
 | |
| 
 | |
|       [% FOREACH config IN settings._extra_device_port_cols %]
 | |
|         [% NEXT UNLESS config.position == 'mid' AND params.${config.name} %]
 | |
|         <td>
 | |
|           [% TRY %]
 | |
|           [% INCLUDE "plugin/${config.name}/device_port_column.tt" %]
 | |
|           [% CATCH %]
 | |
|           <!-- dummy content required by Template Toolkit TRY -->
 | |
|           [% END %]
 | |
|         </td>
 | |
|       [% END %]
 | |
| 
 | |
|       [% IF params.c_descr %]
 | |
|       <td nowrap>[% row.descr | html_entity %]</td>
 | |
|       [% END %]
 | |
| 
 | |
|       [% IF params.c_type %]
 | |
|       <td>[% row.type | html_entity %]</td>
 | |
|       [% END %]
 | |
| 
 | |
|       [% IF params.c_duplex %]
 | |
|       <td>
 | |
|         [% IF row.up == 'up' AND row.duplex %]
 | |
|         [% row.duplex_admin.ucfirst | html_entity %] / [% row.duplex.ucfirst | html_entity %]
 | |
|         [% END %]
 | |
|       </td>
 | |
|       [% END %]
 | |
| 
 | |
|       [% IF params.c_lastchange %]
 | |
|       <td>[% row.lastchange_stamp | html_entity %]</td>
 | |
|       [% END %]
 | |
| 
 | |
|       [% IF params.c_name %]
 | |
|       [% IF vars.user.port_control AND params.c_admin %]
 | |
|       <td nowrap class="nd_editable-cell" contenteditable="true"
 | |
|           data-field="c_name" data-for-device="[% device.ip | html_entity %]" data-for-port="[% row.port | html_entity %]">
 | |
|       <i class="icon-edit nd_edit-icon"></i>
 | |
|       [% ELSE %]
 | |
|       <td nowrap>
 | |
|       [% END %]
 | |
|       <div class="nd_editable-cell-content">
 | |
|         [% row.name | html_entity %]
 | |
|       </div>
 | |
|       </td>
 | |
|       [% END %]
 | |
| 
 | |
|       [% IF params.c_speed %]
 | |
|       <td>[% row.speed | html_entity %]</td>
 | |
|       [% END %]
 | |
| 
 | |
|       [% IF params.c_mac %]
 | |
|       <td>[% row.mac | html_entity %]</td>
 | |
|       [% END %]
 | |
| 
 | |
|       [% IF params.c_mtu %]
 | |
|       <td>[% row.mtu | html_entity %]</td>
 | |
|       [% END %]
 | |
| 
 | |
|       [% IF params.c_vlan %]
 | |
|       [% IF vars.user.port_control AND params.c_admin %]
 | |
|       <td class="nd_editable-cell" contenteditable="true"
 | |
|         data-field="c_vlan" data-for-device="[% device.ip | html_entity %]" data-for-port="[% row.port | html_entity %]">
 | |
|       <i class="icon-edit nd_edit-icon"></i>
 | |
|       <div class="nd_editable-cell-content">
 | |
|         [% IF row.vlan %][% row.vlan | html_entity %][% END %]
 | |
|       </div>
 | |
|       </td>
 | |
|       [% ELSE %]
 | |
|       <td>
 | |
|         <a class="nd_linkcell"
 | |
|           href="[% uri_for('/search') %]?tab=vlan&q=[% row.vlan | uri %]">
 | |
|             [% row.vlan | html_entity %]</a>
 | |
|       </td>
 | |
|       [% END %]
 | |
|       [% END %]
 | |
| 
 | |
|       [% IF params.c_vmember %]
 | |
|       <td>
 | |
|         [% IF row.tagged_vlans_count %]
 | |
|         [% SET output = '' %]
 | |
|         [% FOREACH vlan IN row.tagged_vlans %]
 | |
|           [% SET output = output _
 | |
|             '<a href="' _ uri_for('/search') _ '?tab=vlan&q=' _ vlan.vlan _ '">' _ vlan.vlan _ '</a>' %]
 | |
|           [% SET output = output _ ', ' IF NOT loop.last %]
 | |
|         [% END %]
 | |
|         [% IF row.tagged_vlans_count > 10 %] [%# TODO make this a settable variable %]
 | |
|           [% SET output = '<div class="nd_vlan-total">(' _ row.tagged_vlans_count
 | |
|             _ ')</div><span class="nd_linkcell nd_collapse-vlans">
 | |
|               <div class="nd_arrow-up-down-left icon-chevron-up icon-large"></div>Show VLANs</span>
 | |
|               <div class="nd_collapsing nd_collapse-pre-hidden">' _ output %]
 | |
|           [% SET output = output _ '</div>' %]
 | |
|         [% END %]
 | |
|         [% output %]
 | |
|         [% END %]
 | |
|       </td>
 | |
|       [% END %]
 | |
| 
 | |
|       [% IF params.c_power %]
 | |
|         [% IF row.power %]
 | |
|           [% IF row.power.admin == 'true' %]
 | |
|             [% IF vars.user.port_control AND params.c_admin %]
 | |
|               <td nowrap data-action="false"
 | |
|                 data-field="c_power" data-for-device="[% device.ip | html_entity %]"
 | |
|                 data-for-port="[% row.port | html_entity %]">
 | |
| 
 | |
|                 <i class="icon-off nd_power-icon nd_power-on"
 | |
|                   rel="tooltip" data-placement="top" data-offset="3"
 | |
|                   data-animation="" data-title="Click to Disable"></i>
 | |
|             [% ELSE %]
 | |
|               <td nowrap>
 | |
|                 <i class="icon-off nd_power-on"></i>
 | |
|             [% END %]
 | |
|                 <span>
 | |
|                 [% IF row.power.power > 0 %]
 | |
|                   [% row.power.power | html_entity %] mW
 | |
|                 [% ELSE %]
 | |
|                   ([% row.power.status | html_entity %])
 | |
|                 [% END %]
 | |
|                 </span>
 | |
|           [% ELSE %]
 | |
|             [% IF vars.user.port_control AND params.c_admin %]
 | |
|               <td nowrap data-action="true"
 | |
|                 data-field="c_power" data-for-device="[% device.ip | html_entity %]"
 | |
|                 data-for-port="[% row.port | html_entity %]">
 | |
| 
 | |
|                 <i class="icon-off nd_power-icon"
 | |
|                   rel="tooltip" data-placement="top" data-offset="3"
 | |
|                   data-animation="" data-title="Click to Enable"></i>
 | |
|             [% ELSE %]
 | |
|               <td>
 | |
|                 <i class="icon-off"></i>
 | |
|             [% END %]
 | |
|           [% END %]
 | |
|               </td>
 | |
|         [% ELSE %]
 | |
|           <td></td>
 | |
|         [% END %]
 | |
|       [% END %]
 | |
| 
 | |
|       [% IF params.c_nodes OR params.c_neighbors %]
 | |
|       <td>
 | |
|         [% IF params.c_neighbors AND (row.remote_ip OR row.is_uplink) %]
 | |
|           [% IF row.neighbor %]
 | |
|           <a href="[% uri_for('/device',
 | |
|                 self_options) %]&q=[% row.neighbor.dns || row.neighbor.ip | uri %]&f=[% row.remote_port | uri %]">
 | |
|             [% row.neighbor.dns.remove(settings.domain_suffix) || row.neighbor.ip | html_entity %]
 | |
|             ([% row.remote_port | html_entity %])</a>
 | |
|           [% ELSIF row.remote_ip AND row.remote_port %]
 | |
|           <span class="label label-important">N</span>
 | |
|           <a href="[% search_node %]&q=[% row.remote_ip | uri %]">
 | |
|             [% row.remote_ip | html_entity %] (port: [% row.remote_port | html_entity %]
 | |
|             [% ' id: '_ row.remote_id IF row.remote_id %]
 | |
|             [% ' type: '_ row.remote_type IF row.remote_type %])</a>
 | |
|           [% ELSE %]
 | |
|           <span class="label label-important">N</span> (possible uplink)
 | |
|           [% END %]
 | |
|         [% END %]
 | |
|         [% IF params.c_nodes %]
 | |
|         [% FOREACH node IN row.$nodes %]
 | |
|           [% '<br/>' IF (row.remote_ip OR row.is_uplink) OR NOT loop.first %]
 | |
|           [% '<span class="label label-warning">A</span>  ' IF NOT node.active %]
 | |
|           <a href="[% search_node %]&q=[% node.net_mac.$mac_format_call | uri %]">
 | |
|             [% node.net_mac.$mac_format_call | html_entity %]</a>
 | |
|           [% ' (' _ node.time_last_age _ ')' IF params.n_age %]
 | |
|           [% IF params.n_ip %]
 | |
|             [% FOREACH ip IN node.ips %]
 | |
|             <br/>  [% '<span class="label label-warning">A</span>  ' IF NOT ip.active %]
 | |
|               [% SET dns = ip.dns %]
 | |
|               [% IF dns %]
 | |
|               <a href="[% search_node %]&q=[% ip.ip | uri %]">[% dns %] ([% ip.ip | html_entity %])</a>
 | |
|               [% ELSE %]
 | |
|               <a href="[% search_node %]&q=[% ip.ip | uri %]">[% ip.ip | html_entity %]</a>
 | |
|               [% END %]
 | |
|             [% END %]
 | |
|           [% END %]
 | |
|         [% END %]
 | |
|         [% END %]
 | |
|       </td>
 | |
|       [% END %]
 | |
| 
 | |
|       [% IF params.c_stp %]
 | |
|       <td>[% row.stp | html_entity %]</td>
 | |
|       [% END %]
 | |
| 
 | |
|       [% IF params.c_up %]
 | |
|       <td>
 | |
|         [% row.up_admin.ucfirst | html_entity %] / [% row.up.ucfirst | html_entity %]
 | |
|       </td>
 | |
|       [% END %]
 | |
| 
 | |
|       [% FOREACH config IN settings._extra_device_port_cols %]
 | |
|         [% NEXT UNLESS config.position == 'right' AND params.${config.name} %]
 | |
|         <td>
 | |
|           [% TRY %]
 | |
|           [% INCLUDE "plugin/${config.name}/device_port_column.tt" %]
 | |
|           [% CATCH %]
 | |
|           <!-- dummy content required by Template Toolkit TRY -->
 | |
|           [% END %]
 | |
|         </td>
 | |
|       [% END %]
 | |
|     </tr>
 | |
|     [% END %]
 | |
|   </tbody>
 | |
| </table>
 |