144 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			144 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
<div class="container">
 | 
						||
  <div class="row nd_hero-row">
 | 
						||
    <div class="span8 offset2">
 | 
						||
      [% IF params.login_failed %]
 | 
						||
      <div class="alert alert-error fade in">
 | 
						||
        <a class="close" data-dismiss="alert">×</a>
 | 
						||
        Incorrect username or password, please try again.
 | 
						||
      </div>
 | 
						||
      [% END %]
 | 
						||
      [% IF params.logout %]
 | 
						||
      <div class="alert fade in">
 | 
						||
        <a class="close" data-dismiss="alert">×</a>
 | 
						||
        You are now logged out.
 | 
						||
      </div>
 | 
						||
      [% END %]
 | 
						||
      [% IF params.nosuchdevice %]
 | 
						||
      <div class="alert fade in">
 | 
						||
        <a class="close" data-dismiss="alert">×</a>
 | 
						||
        Sorry, no such device is known.
 | 
						||
      </div>
 | 
						||
      [% END %]
 | 
						||
      [% IF vars.notfound %]
 | 
						||
      <div class="alert fade in">
 | 
						||
        <a class="close" data-dismiss="alert">×</a>
 | 
						||
        Sorry, page not found. 
 | 
						||
          <a href="https://github.com/netdisco/netdisco/issues/new" target="_blank"><i class="icon-bug"></i> Report a Bug?</a>
 | 
						||
      </div>
 | 
						||
      [% END %]
 | 
						||
      [% IF settings.suggest_guest AND NOT session.logged_in_user %]
 | 
						||
      <div class="alert alert-info fade in">
 | 
						||
        <a class="close" data-dismiss="alert">×</a>
 | 
						||
        Guest access is available by entering username "guest" and password "guest".
 | 
						||
      </div>
 | 
						||
      [% END %]
 | 
						||
      <div class="hero-unit">
 | 
						||
        <h2>Welcome to Netdisco</h2>
 | 
						||
        <small>Netdisco is an Open Source management tool designed for network administrators.</small>
 | 
						||
        [% IF NOT session.logged_in_user %]
 | 
						||
        <form class="nd_login-form" method="post" action="[% uri_for('/login') | none %]">
 | 
						||
          <div class="form-horizontal">
 | 
						||
            <input id='loginuser' placeholder="Username" class="span2" name="username" type="text" required="required"/>
 | 
						||
            <input placeholder="Password" class="span2" name="password" type="password" required="required"/>
 | 
						||
            <button type="submit" class="btn btn-info">Log In</button>
 | 
						||
            [% IF settings.login_logo %]
 | 
						||
            <img src="[% settings.login_logo | none %]" alt="Login Logo" />
 | 
						||
            [% END %]
 | 
						||
          </div>
 | 
						||
          [% IF params.return_url %]
 | 
						||
          <input type="hidden" name="return_url" value="[% params.return_url | html_entity %]"/>
 | 
						||
          [% END %]
 | 
						||
        </form>
 | 
						||
        [% ELSE %]
 | 
						||
          <p></p> <p></p>
 | 
						||
          <form class="" method="get" action="[% uri_for('/search') | none %]">
 | 
						||
            <div class="form-horizontal">
 | 
						||
              <input placeholder="Find Anything" class="span4" id="nqbody" name="q" type="text" autocomplete="off"/>
 | 
						||
              <input name="firstsearch" type="hidden" value="on">
 | 
						||
              <div class="btn-group">
 | 
						||
                <button type="submit" class="btn btn-primary">Search</button>
 | 
						||
                <button class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
 | 
						||
                  <span class="caret"></span> 
 | 
						||
                </button>
 | 
						||
                <ul class="dropdown-menu">
 | 
						||
                  <li><a class="nd_navsearchgo-specific" href="" data-tab="device">Search Devices</a></li>
 | 
						||
                  <li><a class="nd_navsearchgo-specific" href="" data-tab="node">Search Nodes</a></li>
 | 
						||
                  <li><a class="nd_navsearchgo-specific" href="" data-tab="vlan">Search VLANs</a></li>
 | 
						||
                  <li><a class="nd_navsearchgo-specific" href="" data-tab="port">Search Ports</a></li>
 | 
						||
                </ul>
 | 
						||
              </div>
 | 
						||
            </div>
 | 
						||
          </form>
 | 
						||
          [% IF user_has_role('admin') %]
 | 
						||
          <form class="nd_login-form" method="post" action="[% uri_for('/admin/discover') | none %]">
 | 
						||
            <div class="form-horizontal">
 | 
						||
              <input placeholder="Device hostname or IP" class="span4" name="device" value="[% params.device | html_entity %]" type="text"/>
 | 
						||
              <input type="hidden" name="extra" value="with-nodes"/>
 | 
						||
              <button type="submit" class="btn btn-info">Discover</button>
 | 
						||
            </div>
 | 
						||
          </form>
 | 
						||
          [% END %]
 | 
						||
        [% END %]
 | 
						||
      </div>
 | 
						||
    </div>
 | 
						||
  </div>
 | 
						||
  [% IF session.logged_in_user %]
 | 
						||
  <div class="accordion" id="accordion-statistics">
 | 
						||
    <div class="accordion-group">
 | 
						||
      <div class="accordion-heading nd_sysinfo-heading">
 | 
						||
          <a class="accordion-toggle" data-toggle="collapse" data-target="#collapse-stats" href="#">
 | 
						||
            <i class="icon-chevron-up nd_chevron"></i> System Information
 | 
						||
          </a>
 | 
						||
      </div>
 | 
						||
      <div id="collapse-stats" class="accordion-body collapse">
 | 
						||
        <div class="accordion-inner">
 | 
						||
          <div id="nd_stats">
 | 
						||
            <div id="nd_stats_status" class="span2 offset4 alert">
 | 
						||
              <i class="icon-spinner icon-spin"></i> Compiling statistics...</div>
 | 
						||
          </div>
 | 
						||
        </div>
 | 
						||
      </div>
 | 
						||
    </div>
 | 
						||
  </div>
 | 
						||
  [% END %]
 | 
						||
</div> <!-- /container -->
 | 
						||
 | 
						||
[% IF session.logged_in_user %]
 | 
						||
<script type="text/javascript">
 | 
						||
  var stats_loaded = 0;
 | 
						||
  $('#nqbody').focus(); // set focus to main search
 | 
						||
  $('#loginuser').focus(); // set focus to login, if it's there
 | 
						||
 | 
						||
  $('.collapse').on('show', function() {
 | 
						||
    $('.nd_chevron').toggleClass('icon-chevron-up icon-chevron-down');
 | 
						||
 | 
						||
    if (! stats_loaded) {
 | 
						||
      fetch( "[% uri_for('/ajax/content/statistics') | none %]",
 | 
						||
        { headers: { 'X-Requested-With': 'XMLHttpRequest' } })
 | 
						||
        .then( response => {
 | 
						||
          if (! response.ok) {
 | 
						||
            $('#nd_stats_status').addClass('alert-error')
 | 
						||
              .html('<i class="icon-warning-sign"></i> Failed to retrieve system information (server error).');
 | 
						||
            return;
 | 
						||
            // throw new Error('Network response was not ok');
 | 
						||
          }
 | 
						||
          return response.text();
 | 
						||
        })
 | 
						||
        .then( content => {
 | 
						||
          $('#nd_stats').html(content);
 | 
						||
        })
 | 
						||
        .catch( error => {
 | 
						||
          $('#nd_stats_status').addClass('alert-error')
 | 
						||
            .html('<i class="icon-warning-sign"></i> Failed to retrieve system information (network error: ' + error + ').');
 | 
						||
          console.error('There has been a problem with your fetch operation:', error);
 | 
						||
        });
 | 
						||
      stats_loaded = 1;
 | 
						||
    }
 | 
						||
  });
 | 
						||
 | 
						||
  $('.collapse').on('hide', function() {
 | 
						||
    $('.nd_chevron').toggleClass('icon-chevron-up icon-chevron-down');
 | 
						||
  });
 | 
						||
</script>
 | 
						||
[% END %]
 |