mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-12-29 10:23:47 +00:00
309 lines
17 KiB
HTML
309 lines
17 KiB
HTML
{% comment %}
|
|
Re2o est un logiciel d'administration développé initiallement au rezometz. Il
|
|
se veut agnostique au réseau considéré, de manière à être installable en
|
|
quelques clics.
|
|
|
|
Copyright © 2017 Goulven Kermarec
|
|
Copyright © 2017 Augustin Lemesle
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License along
|
|
with this program; if not, write to the Free Software Foundation, Inc.,
|
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
{% endcomment %}
|
|
|
|
{% load staticfiles %}
|
|
|
|
{# Load the tag library #}
|
|
{% load bootstrap3 %}
|
|
{% load acl %}
|
|
{% load self_adhesion %}
|
|
{% load i18n %}
|
|
|
|
{% self_adhesion as var_sa %}
|
|
<!DOCTYPE html>
|
|
<html lang="fr">
|
|
<head prefix="og: http://ogp.me/ns#">
|
|
{# Open Graph for social media #}
|
|
<meta property="og:title" content="{{ name_website }}" />
|
|
<meta property="og:type" content="website" />
|
|
<meta property="og:url" content="{{ request.scheme }}://{{ request.get_host }}/" />
|
|
<meta property="og:image" content="{% static 'images/logo_re2o.svg' %}"/>
|
|
<meta property="og:image:type" content="image/svg"/>
|
|
<meta property="og:image:alt" content="The Re2o logo"/>
|
|
<meta property="og:description" content="{% trans "Networking managing website endorsed by FedeRez." %}" />
|
|
|
|
{# Preload JavaScript #}
|
|
{% bootstrap_javascript %}
|
|
<script src="/static/js/typeahead/typeahead.js"></script>
|
|
<script src="/static/js/bootstrap-tokenfield/bootstrap-tokenfield.js"></script>
|
|
<script src="{% static 'js/collapse-from-url.js' %}"></script>
|
|
|
|
{# Load CSS #}
|
|
{% bootstrap_css %}
|
|
<link href="{% static 'css/typeaheadjs.css' %}" rel="stylesheet">
|
|
<link href="{% static 'css/bootstrap-tokenfield.css' %}" rel="stylesheet">
|
|
<link href="{% static 'css/font-awesome.min.css' %}" rel="stylesheet">
|
|
<link href="{% static 'css/base.css' %}" rel="stylesheet">
|
|
|
|
{# Favicon with iOS, Android, touchbar support #}
|
|
<link rel="apple-touch-icon" sizes="180x180" href="{% static 'favicon/apple-touch-icon.png' %}">
|
|
<link rel="icon" type="image/png" sizes="32x32" href="{% static 'favicon/favicon-32x32.png' %}">
|
|
<link rel="icon" type="image/png" sizes="16x16" href="{% static 'favicon/favicon-16x16.png' %}">
|
|
<link rel="manifest" href="{% static 'favicon/site.webmanifest' %}">
|
|
<link rel="mask-icon" href="{% static 'favicon/safari-pinned-tab.svg' %}" color="#5bbad5">
|
|
<link rel="shortcut icon" href="{% static 'favicon/favicon.ico' %}">
|
|
<meta name="theme-color" content="#ffffff">
|
|
|
|
{# Do not allow zooming on devices #}
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
|
|
<title>{{ name_website }} : {% block title %}{% trans "Home" %}{% endblock %}</title>
|
|
</head>
|
|
|
|
<body id="main">
|
|
<nav class="navbar navbar-inverse navbar-static-top">
|
|
<div class="container-fluid">
|
|
<div class="navbar-header">
|
|
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
|
|
<span class="icon-bar"></span>
|
|
<span class="icon-bar"></span>
|
|
<span class="icon-bar"></span>
|
|
</button>
|
|
<a class="navbar-brand" href="/">
|
|
<img src="{% static 'images/logo_re2o_navbar.svg' %}" height=32>
|
|
{{ name_website }}
|
|
</a>
|
|
</div>
|
|
<div class="collapse navbar-collapse" id="myNavbar">
|
|
<ul class="nav navbar-nav">
|
|
{% can_view_any_app users machines cotisations %}
|
|
<li class="dropdown">
|
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><i class="fa fa-users"></i> {% trans "Users" %}<span class="caret"></span></a>
|
|
<ul class="dropdown-menu">
|
|
{% can_view_app users %}
|
|
<li><a href="{% url 'users:index' %}"><i class="fa fa-user"></i> {% trans "Manage the users" %}</a></li>
|
|
<li><a href="{% url 'users:index-clubs' %}"><i class="fa fa-users"></i> {% trans "Manage the clubs" %}</a></li>
|
|
{% acl_end %}
|
|
{% can_view_app machines %}
|
|
<li><a href="{% url 'machines:index' %}"><i class="fa fa-desktop"></i> {% trans "Manage the machines" %}</a></li>
|
|
{% acl_end %}
|
|
{% can_view_app cotisations %}
|
|
<li><a href="{% url 'cotisations:index' %}"><i class="fa fa-eur"></i> {% trans "Manage the subscriptions" %}</a></li>
|
|
{% acl_end %}
|
|
|
|
{% for template in optionnal_templates_navbar_user_list%}
|
|
{{ template }}
|
|
{% endfor %}
|
|
</ul>
|
|
</li>
|
|
{% acl_end %}
|
|
{% can_view_app topologie %}
|
|
<li class="dropdown">
|
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><i class="fa fa-sitemap"></i> {% trans "Topology" %}<span class="caret"></span></a>
|
|
<ul class="dropdown-menu">
|
|
<li><a href="{% url 'topologie:index' %}"><i class="fa fa-microchip"></i> {% trans "Switches" %}</a></li>
|
|
<li><a href="{% url 'topologie:index-ap' %}"><i class="fa fa-wifi"></i> {% trans "Access points" %}</a></li>
|
|
<li><a href="{% url 'topologie:index-room' %}"><i class="fa fa-home"></i> {% trans "Rooms" %}</a></li>
|
|
</ul>
|
|
</li>
|
|
{% acl_end %}
|
|
{% can_view_app logs %}
|
|
<li><a href="{% url 'logs:index' %}"><i class="fa fa-area-chart"></i> {% trans "Statistics" %}</a></li>
|
|
{% acl_end %}
|
|
{% can_view_app preferences %}
|
|
<li>
|
|
<a href="{% url 'preferences:display-options' %}">
|
|
<i class="fa fa-cogs"></i> {% trans "Administration" %}
|
|
</a>
|
|
</li>
|
|
{% acl_end %}
|
|
</ul>
|
|
<ul class="nav navbar-nav navbar-right">
|
|
<li class="dropdown">
|
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><i class="fa fa-info"></i> {% trans "Information and contact" %}<span class="caret"></span></a>
|
|
<ul class="dropdown-menu">
|
|
<li><a href="{% url 'about' %}"><i class="fa fa-info-circle"></i> {% trans "About" %}</a></li>
|
|
<li><a href="{% url 'contact' %}"><i class="fa fa-at"></i> {% trans "Contact" %}</a></li>
|
|
{% comment %}
|
|
<li><a href="{% url 'tickets:new-ticket' %}"><i class="fa fa-ticket"></i> {% trans "Ouvrir un ticket" %}</a><li>
|
|
{% endcomment %}
|
|
</ul>
|
|
</li>
|
|
{% if not request.user.is_authenticated %}
|
|
{% for template in optionnal_templates_navbar_logout_list %}
|
|
{{ template }}
|
|
{% endfor %}
|
|
{% if var_sa %}
|
|
<li>
|
|
<a href="{% url 'users:new-user' %}">
|
|
<i class="fa fa-user-plus"></i> {% trans "Sign up" %}
|
|
</a>
|
|
</li>
|
|
{% endif %}
|
|
<li>
|
|
<a id="toggle_login" href="{% url 'login' %}">
|
|
<i class="fa fa-sign-in"></i> {% trans "Log in" %}
|
|
</a>
|
|
</li>
|
|
{% else %}
|
|
{% can_view_any_app users machines cotisations %}
|
|
<li>
|
|
<form action="{% url 'search:search' %}" class="navbar-form" role="search">
|
|
<div class="input-group">
|
|
<input type="text" class="form-control" placeholder="{% trans "Search" %}" name="q" id="search-term" {% if search_term %}value="{{ search_term }}"{% endif %}>
|
|
<div class="input-group-btn">
|
|
<button class="btn btn-default" type="submit"><i class="fa fa-search"></i></button>
|
|
<a href="{% url 'search:searchp' %}" class="btn btn-default" role="button"><i class="fa fa-plus"></i></a>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</li>
|
|
{% acl_end %}
|
|
{% endif %}
|
|
{% if request.user.is_authenticated %}
|
|
<li class="dropdown">
|
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><i class="fa fa-user-circle"></i> {{ request.user.pseudo|slice:":15" }} <span class="caret"></span></a>
|
|
<ul class="dropdown-menu">
|
|
<li><a href="{% url 'users:mon-profil' %}"><i class="fa fa-user"></i> {% trans "My profile" %}</a></li>
|
|
<li><a id="toggle_login" href="{% url 'logout' %}"><i class="fa fa-sign-out"></i> {% trans "Log out" %}</a></li>
|
|
</ul>
|
|
</li>
|
|
{% endif %}
|
|
<li>
|
|
{% include 'buttons/setlang.html' %}
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
<div class="container-fluid text-center">
|
|
<div class="row content">
|
|
<div class="col-sm-2 sidenav pt4">
|
|
<div class="panel panel-default">
|
|
<div class="text-left list-group">
|
|
{% block sidebar %}
|
|
{% endblock %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-8 text-left pt4">
|
|
{# Display django.contrib.messages as Bootstrap alerts #}
|
|
{% bootstrap_messages %}
|
|
{% block content %}{% endblock %}
|
|
</div>
|
|
<div class="col-sm-2 sidenav pt4">
|
|
<div class="panel panel-default">
|
|
{% if request_user.is_authenticated %}
|
|
<div class="panel-heading">
|
|
<h4>{{ request_user.name }} {{ request_user.surname }}</h4>
|
|
</div>
|
|
<table class="table">
|
|
<tr>
|
|
<th scope="row">{% trans "Username" %}</th>
|
|
<td class="text-right">{{ request_user.pseudo }}</td>
|
|
</tr>
|
|
<tr>
|
|
<th scope="row">{% trans "Room" %}</th>
|
|
<td class="text-right">{{ request_user.room }}</td>
|
|
</tr>
|
|
<tr>
|
|
<th scope="row">{% trans "Internet access" %}</th>
|
|
<td class="text-right">
|
|
{% if request_user.has_access %}
|
|
<i class="text-success">{% blocktrans with end_access_date=request.user.end_access|date:"d b Y" %}Until {{ end_access_date }}{% endblocktrans %}</i>
|
|
{% else %}
|
|
<i class="text-danger">{% trans "Disabled" %}</i>
|
|
{% endif %}
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th scope="row">{% trans "Membership" %}</th>
|
|
<td class="text-right">
|
|
{% if request_user.is_adherent %}
|
|
<i class="text-success">{% blocktrans with end_adhesion_date=request_user.end_adhesion|date:"d b Y" %}Until {{ end_adhesion_date }}{% endblocktrans %}</i>
|
|
{% else %}
|
|
<i class="text-danger">{% trans "Non member" %}</i>
|
|
{% endif %}
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<div class="list-group">
|
|
<a class="list-group-item list-group-item-info" role="button"href="{% url 'users:mon-profil' %}">
|
|
<i class="fa fa-user-circle"></i>
|
|
{% trans "View my profile" %}
|
|
</a>
|
|
</div>
|
|
{% else %}
|
|
<div class="panel-body">
|
|
<p>{% trans "You are not logged in." %}</p>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
{% if request_user.is_authenticated %}
|
|
<div class="panel panel-default">
|
|
<div class="panel-heading">
|
|
<h4>{% blocktrans count interfaces|length as nb %}{{ nb }} active machine{% plural %}{{ nb }} active machines{% endblocktrans %}</h4>
|
|
</div>
|
|
<ul class="list-group">
|
|
{% for interface in interfaces|slice:":5" %}
|
|
<div class="list-group-item">{{ interface }}</div>
|
|
{% endfor %}
|
|
{% if interfaces|length > 5 %}
|
|
<a class="list-group-item list-group-item-info" role="button" href="{% url 'users:mon-profil' %}">
|
|
<i class="fa fa-plus"></i>
|
|
{% trans "View my machines" %}
|
|
</a>
|
|
{% endif %}
|
|
</ul>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<footer class="text-muted">
|
|
<div class="container">
|
|
<p class="pull-right">
|
|
<a href="#">{% trans "Back to top" %}</a>
|
|
</p>
|
|
<p>{{ name_website }} {% trans "powered by" %} Re2o 2016–2018</p>
|
|
<p>
|
|
{% blocktrans trimmed %}
|
|
Brought to you with <i class="fa fa-heart text-danger"></i>.
|
|
{% endblocktrans %}
|
|
<a href="{{ request.scheme }}://{{ request.get_host }}/about/">{% trans "About this website" %}</a>.
|
|
</p>
|
|
<p>
|
|
{% blocktrans trimmed %}
|
|
This software is under the terms of the
|
|
<a href="http://www.gnu.org/licenses/gpl-2.0.txt" target="_blank" rel="nofollow">GPLv2</a> License.
|
|
{% endblocktrans %}
|
|
</p>
|
|
</div>
|
|
</footer>
|
|
|
|
{# Load JavaScript #}
|
|
<script src="/static/js/konami/konami.js"></script>
|
|
<script src="/static/js/sapphire.js"></script>
|
|
<script>
|
|
// Konami activate sapphire
|
|
let s = Sapphire();
|
|
Konami(s.activate);
|
|
</script>
|
|
<script src="/static/js/shortcuts.js"></script>
|
|
|
|
{# Read the documentation for more information #}
|
|
</body>
|
|
</html>
|
|
|