| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- {# Base layout for the core NetBox UI w/navbar and page content #}
- {% extends 'base/base.html' %}
- {% load helpers %}
- {% load nav %}
- {% load search_options %}
- {% load static %}
- {% block layout %}
- <div class="container-fluid px-0">
- <main class="ms-sm-auto">
- {# Sidebar #}
- <nav id="sidebar-menu" class="d-md-block sidebar collapse px-0" data-simplebar>
- {# Sidebar content #}
- <div class="position-sticky">
- {# Logo #}
- <div class="py-2">
- <a class="sidebar-logo d-none d-md-flex justify-content-center" href="{% url 'home' %}">
- <img src="{% static 'netbox_logo.svg' %}" alt="NetBox logo" />
- </a>
- </div>
- <ul class="nav flex-column">
- {# Search bar for collapsed menu #}
- <div class="d-block d-md-none mx-1 my-3 search-container">
- {% search_options %}
- </div>
- <div class="d-flex d-md-none mx-1 my-3 justify-content-center justify-content-md-end order-last order-md-0">
- {% include 'inc/profile_button.html' %}
- </div>
- {# Navigation menu #}
- {% nav %}
- </ul>
- </div>
- {# Sidebar footer #}
- <div class="d-flex flex-column container-fluid mt-auto justify-content-end sidebar-bottom">
- <nav class="nav">
- {# Documentation #}
- <a type="button" class="nav-link" href="{% static 'docs/' %}" target="_blank">
- <i title="Docs" class="mdi mdi-book-open-variant text-primary" data-bs-placement="top" data-bs-toggle="tooltip"></i>
- </a>
- {# REST API #}
- <a type="button" class="nav-link" href="{% url 'api-root' %}" target="_blank">
- <i title="REST API" class="mdi mdi-cloud-braces text-primary" data-bs-placement="top" data-bs-toggle="tooltip"></i>
- </a>
- {# API docs #}
- <a type="button" class="nav-link" href="{% url 'api_docs' %}" target="_blank">
- <i title="REST API documentation" class="mdi mdi-book text-primary" data-bs-placement="top" data-bs-toggle="tooltip"></i>
- </a>
- {# GraphQL API #}
- {% if settings.GRAPHQL_ENABLED %}
- <a type="button" class="nav-link" href="{% url 'graphql' %}" target="_blank">
- <i title="GraphQL API" class="mdi mdi-graphql text-primary" data-bs-placement="top" data-bs-toggle="tooltip"></i>
- </a>
- {% endif %}
- {# GitHub #}
- <a type="button" class="nav-link" href="https://github.com/netbox-community/netbox" target="_blank">
- <i title="Source Code" class="mdi mdi-github text-primary" data-bs-placement="top" data-bs-toggle="tooltip"></i>
- </a>
- {# NetDev Slack #}
- <a type="button" class="nav-link" href="https://netdev.chat/" target="_blank">
- <i title="Community" class="mdi mdi-slack text-primary" data-bs-placement="top" data-bs-toggle="tooltip"></i>
- </a>
- </nav>
- </div>
- </nav>
- {# Body #}
- <div class="content-container">
- {# Top bar #}
- <nav class="navbar navbar-light sticky-top flex-md-nowrap p-3 search container-fluid">
- <div class="d-md-none w-100 d-flex justify-content-between align-items-center my-3">
- <a class="p-2 sidebar-logo d-block d-md-none" href="{% url 'home' %}">
- <img src="{% static 'netbox_logo.svg' %}" alt="NetBox logo" width="100%" />
- </a>
- <button
- type="button"
- aria-expanded="false"
- data-bs-toggle="collapse"
- aria-controls="sidebar-menu"
- data-bs-target="#sidebar-menu"
- aria-label="Toggle Navigation"
- class="navbar-toggler position-relative collapsed"
- >
- <span class="navbar-toggler-icon"></span>
- </button>
- </div>
- <div class="d-none d-md-flex w-100 search-container">
- {% search_options %}
- {% include 'inc/profile_button.html' %}
- </div>
- </nav>
- {% if settings.BANNER_TOP %}
- <div class="alert alert-info text-center mx-3" role="alert">
- {{ settings.BANNER_TOP|safe }}
- </div>
- {% endif %}
- {% if settings.MAINTENANCE_MODE %}
- <div class="alert alert-warning text-center mx-3" role="alert">
- <h4><i class="mdi mdi-alert"></i> Maintenance Mode</h4>
- <span>NetBox is currently in maintenance mode. Functionality may be limited.</span>
- </div>
- {% endif %}
- {# Page header #}
- {% block header %}
- <div class="title-container px-3 pb-3">
- {# Title #}
- <div id="content-title">
- {# Center-align title in object-edit views #}
- <h1 class="h2 w-100">{% block title %}{% endblock title %}</h1>
- {% block subtitle %}{% endblock %}
- </div>
- {# Controls #}
- {% block controls %}{% endblock controls %}
- </div>
- {% endblock header %}
- {# Page content #}
- <div id="content" class="container-fluid content px-0 m-0">
- {% block tabs %}{% endblock %}
- {% block content-wrapper %}
- <div class="px-3">
- {% block content %}{% endblock %}
- </div>
- {% endblock %}
- </div>
- {% if settings.BANNER_BOTTOM %}
- <div class="alert alert-info text-center mx-3" role="alert">
- {{ settings.BANNER_BOTTOM|safe }}
- </div>
- {% endif %}
- {# Page footer #}
- <footer class="footer container-fluid pb-3 pt-4 px-0">
- <div class="row align-items-center justify-content-end mx-0">
- <div class="col text-center small text-muted">
- <span class="fw-light d-block d-md-inline">{% annotated_now %} {% now 'T' %}</span>
- <span class="ms-md-3 d-block d-md-inline">{{ settings.HOSTNAME }} (v{{ settings.VERSION }})</span>
- </div>
- </div>
- </footer>
- </div>
- </main>
- </div>
- {% endblock layout %}
|