clean template dirs
This commit is contained in:
parent
c577dd975c
commit
eaca0e793a
|
@ -1,12 +0,0 @@
|
||||||
{% extends "musician/base.html" %}
|
|
||||||
{% load i18n %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
<form method="post">
|
|
||||||
{% csrf_token %}
|
|
||||||
<p>{% blocktrans with address_name=object.full_address_name %}Are you sure that you want remove the address: "{{ address_name }}"?{% endblocktrans %}</p>
|
|
||||||
<p class="alert alert-warning"><strong>{% trans 'WARNING: This action cannot be undone.' %}</strong></p>
|
|
||||||
<input class="btn btn-danger" type="submit" value="{% trans 'Delete' %}">
|
|
||||||
<a class="btn btn-secondary" href="{% url 'musician:address-update' view.kwargs.pk %}">{% trans 'Cancel' %}</a>
|
|
||||||
</form>
|
|
||||||
{% endblock %}
|
|
|
@ -1,20 +0,0 @@
|
||||||
{% extends "musician/base.html" %}
|
|
||||||
{% load bootstrap4 i18n %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
<h1 class="service-name">{{ service.verbose_name }}</h1>
|
|
||||||
|
|
||||||
<form method="post">
|
|
||||||
{% csrf_token %}
|
|
||||||
{% bootstrap_form form %}
|
|
||||||
{% buttons %}
|
|
||||||
<a class="btn btn-light mr-2" href="{% url 'musician:address-list' %}">{% trans "Cancel" %}</a>
|
|
||||||
<button type="submit" class="btn btn-secondary">{% trans "Save" %}</button>
|
|
||||||
{% if form.instance %}
|
|
||||||
<div class="float-right">
|
|
||||||
<a class="btn btn-danger" href="{% url 'musician:address-delete' view.kwargs.pk %}">{% trans "Delete" %}</a>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
{% endbuttons %}
|
|
||||||
</form>
|
|
||||||
{% endblock %}
|
|
|
@ -1,41 +0,0 @@
|
||||||
{% extends "musician/mail_base.html" %}
|
|
||||||
{% load i18n %}
|
|
||||||
|
|
||||||
{% block tabcontent %}
|
|
||||||
<div class="tab-pane fade show active" id="addresses" role="tabpanel" aria-labelledby="addresses-tab">
|
|
||||||
<table class="table service-list">
|
|
||||||
<colgroup>
|
|
||||||
<col span="1" style="width: 25%;">
|
|
||||||
<col span="1" style="width: 25%;">
|
|
||||||
<col span="1" style="width: 25%;">
|
|
||||||
<col span="1" style="width: 25%;">
|
|
||||||
</colgroup>
|
|
||||||
<thead class="thead-dark">
|
|
||||||
<tr>
|
|
||||||
<th scope="col">{% trans "Email" %}</th>
|
|
||||||
<th scope="col">{% trans "Domain" %}</th>
|
|
||||||
<th scope="col">{% trans "Mailboxes" %}</th>
|
|
||||||
<th scope="col">{% trans "Forward" %}</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for obj in object_list %}
|
|
||||||
<tr>
|
|
||||||
<td><a href="{% url 'musician:address-update' obj.id %}">{{ obj.full_address_name }}</a></td>
|
|
||||||
<td>{{ obj.domain.name }}</td>
|
|
||||||
<td>
|
|
||||||
{% for mailbox in obj.mailboxes %}
|
|
||||||
<a href="{% url 'musician:mailbox-update' mailbox.id %}">{{ mailbox.name }}</a>
|
|
||||||
{% if not forloop.last %}<br/> {% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
</td>
|
|
||||||
<td>{{ obj.forward }}</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
{% include "musician/components/table_paginator.html" %}
|
|
||||||
</table>
|
|
||||||
<a class="btn btn-primary mt-4 mb-4" href="{% url 'musician:address-create' %}">{% trans "New mail address" %}</a>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
|
@ -1,41 +0,0 @@
|
||||||
{% extends "musician/base.html" %}
|
|
||||||
{% load i18n l10n %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
|
|
||||||
<h1 class="service-name">{% trans "Billing" %}</h1>
|
|
||||||
<p class="service-description">{% trans "Billing page description." %}</p>
|
|
||||||
|
|
||||||
<table class="table service-list">
|
|
||||||
<colgroup>
|
|
||||||
<col span="1" style="width: 15%;">
|
|
||||||
<col span="1" style="width: 15%;">
|
|
||||||
<col span="1" style="width: 40%;">
|
|
||||||
<col span="1" style="width: 10%;">
|
|
||||||
<col span="1" style="width: 10%;">
|
|
||||||
</colgroup>
|
|
||||||
<thead class="thead-dark">
|
|
||||||
<tr>
|
|
||||||
<th scope="col">{% trans "Number" %}</th>
|
|
||||||
<th scope="col">{% trans "Bill date" %}</th>
|
|
||||||
<th scope="col">{% trans "Type" %}</th>
|
|
||||||
<th scope="col">{% trans "Total" %}</th>
|
|
||||||
<th scope="col">{% trans "Download PDF" %}</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for bill in object_list %}
|
|
||||||
<tr>
|
|
||||||
<th scope="row">{{ bill.number }}</th>
|
|
||||||
<td>{{ bill.created_on|date:"SHORT_DATE_FORMAT" }}</td>
|
|
||||||
<td>{{ bill.type }}</td>
|
|
||||||
<td>{{ bill.total|floatformat:2|localize }}€</td>
|
|
||||||
<td><a class="text-dark" href="{% url 'musician:bill-download' bill.id %}" target="_blank" rel="noopener noreferrer"><i class="fas fa-file-pdf"></i></a></td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
{# TODO: define proper colspan #}
|
|
||||||
{% include "musician/components/table_paginator.html" %}
|
|
||||||
</table>
|
|
||||||
|
|
||||||
{% endblock %}
|
|
|
@ -1,29 +0,0 @@
|
||||||
{# <!-- paginator component --> #}
|
|
||||||
<div class="row object-list-paginator">
|
|
||||||
<div class="col-md-4">{{ page_obj.paginator.count }} items in total</div>
|
|
||||||
<div class="col-md-4 text-center">
|
|
||||||
{% if page_obj.has_previous %}
|
|
||||||
<a href="?page=1&per_page={{ page_obj.paginator.per_page }}">«</a>
|
|
||||||
<a href="?page={{ page_obj.previous_page_number }}&per_page={{ page_obj.paginator.per_page }}">‹</a>
|
|
||||||
{% endif %}
|
|
||||||
Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}
|
|
||||||
{% if page_obj.has_next %}
|
|
||||||
<a href="?page={{ page_obj.next_page_number }}&per_page={{ page_obj.paginator.per_page }}">›</a>
|
|
||||||
<a href="?page={{ page_obj.paginator.num_pages }}&per_page={{ page_obj.paginator.per_page }}">»</a>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
<div class="col-md-4 text-right">
|
|
||||||
<form method="get">
|
|
||||||
Showing
|
|
||||||
<select name="{{ per_page_param }}">
|
|
||||||
{% for value in per_page_values %}
|
|
||||||
{% with page_obj.paginator.per_page as per_page %}
|
|
||||||
<option value="{{ value }}" {% if value == per_page %}selected{% endif %}>{{ value }}</option>
|
|
||||||
{% endwith %}
|
|
||||||
{% endfor %}
|
|
||||||
</select>
|
|
||||||
per page
|
|
||||||
<input type="submit" value="apply" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
|
@ -1,50 +0,0 @@
|
||||||
{# <!-- table footer based paginator for ListView --> #}
|
|
||||||
{% load i18n %}
|
|
||||||
|
|
||||||
<tfoot>
|
|
||||||
<tr>
|
|
||||||
<td colspan="2">{{ page_obj.paginator.count }} items in total</td>
|
|
||||||
<td class="text-center">
|
|
||||||
<nav aria-label="Page navigation">
|
|
||||||
<ul class="pagination justify-content-center">
|
|
||||||
<li class="page-item {{ page_obj.has_previous|yesno:',disabled' }}">
|
|
||||||
<a class="page-link" {% if page_obj.has_previous %}
|
|
||||||
href="?page={{ page_obj.previous_page_number }}&per_page={{ page_obj.paginator.per_page }}"
|
|
||||||
{% else %} href="#" {% endif %} tabindex="-1">
|
|
||||||
<span aria-hidden="true">‹</span>
|
|
||||||
<span class="sr-only">{% trans "Previous" %}</span>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% for page_number in page_obj.paginator.page_range %}
|
|
||||||
<li class="page-item {% if page_number == page_obj.number %}active {% endif %}">
|
|
||||||
<a class="page-link"
|
|
||||||
href="?page={{ page_number }}&per_page={{ page_obj.paginator.per_page }}">{{ page_number }}</a>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
<li class="page-item {{ page_obj.has_next|yesno:',disabled' }}">
|
|
||||||
<a class="page-link" {% if page_obj.has_next %}
|
|
||||||
href="?page={{ page_obj.next_page_number }}&per_page={{ page_obj.paginator.per_page }}"
|
|
||||||
{% else %} href="#" {% endif %}>
|
|
||||||
<span aria-hidden="true">›</span>
|
|
||||||
<span class="sr-only">{% trans "Next" %}</span>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
</td>
|
|
||||||
<td colspan="2" class="text-right">
|
|
||||||
<form method="get">
|
|
||||||
Showing
|
|
||||||
<select name="{{ per_page_param }}">
|
|
||||||
{% for value in per_page_values %}
|
|
||||||
{% with page_obj.paginator.per_page as per_page %}
|
|
||||||
<option value="{{ value }}" {% if value == per_page %}selected{% endif %}>{{ value }}</option>
|
|
||||||
{% endwith %}
|
|
||||||
{% endfor %}
|
|
||||||
</select>
|
|
||||||
per page
|
|
||||||
<input type="submit" value="apply" />
|
|
||||||
</form>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tfoot>
|
|
|
@ -1,22 +0,0 @@
|
||||||
{% comment %}
|
|
||||||
Resource usage rendered as bootstrap progress bar
|
|
||||||
|
|
||||||
Expected parameter: detail
|
|
||||||
Expected structure: dictionary or object with attributes:
|
|
||||||
- usage (int): 125
|
|
||||||
- total (int): 200
|
|
||||||
- unit (string): 'MB'
|
|
||||||
- percent (int: [0, 25, 50, 75, 100]: 75
|
|
||||||
{% endcomment %}
|
|
||||||
|
|
||||||
<div class="text-center">
|
|
||||||
{% if detail %}
|
|
||||||
{{ detail.usage }} {{ detail.unit }}
|
|
||||||
{% else %}
|
|
||||||
N/A
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
<div class="progress">
|
|
||||||
<div class="progress-bar bg-secondary w-{{ detail.percent }}" role="progressbar" aria-valuenow="{{ detail.usage }}"
|
|
||||||
aria-valuemin="0" aria-valuemax="{{ detail.total }}"></div>
|
|
||||||
</div>
|
|
|
@ -1,161 +0,0 @@
|
||||||
{% extends "musician/base.html" %}
|
|
||||||
{% load i18n %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
|
|
||||||
<h2 style="margin-top: 10px;">{% trans "Welcome back" %} <strong>{{ profile.username }}</strong></h2>
|
|
||||||
{% if profile.last_login %}
|
|
||||||
<p>{% blocktrans with last_login=profile.last_login|date:"SHORT_DATE_FORMAT" %}Last time you logged in was: {{ last_login }}{% endblocktrans %}</p>
|
|
||||||
{% else %}
|
|
||||||
<p>{% trans "It's the first time you log into the system, welcome on board!" %}</p>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<div class="card-deck">
|
|
||||||
{% for resource, usage in resource_usage.items %}
|
|
||||||
<div class="card resource-usage resource-{{ resource }}">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title">{{ usage.verbose_name }}</h5>
|
|
||||||
{% include "musician/components/usage_progress_bar.html" with detail=usage.data %}
|
|
||||||
{% if usage.data.alert %}
|
|
||||||
<div class="text-center mt-4">
|
|
||||||
{{ usage.data.alert }}
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
<div class="card resource-usage resource-notifications">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title">{% trans "Notifications" %}</h5>
|
|
||||||
{% for message in notifications %}
|
|
||||||
<p class="card-text">{{ message }}</p>
|
|
||||||
{% empty %}
|
|
||||||
<p class="card-text">{% trans "There is no notifications at this time." %}</p>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<h1 class="service-name">{% trans "Your domains and websites" %}</h1>
|
|
||||||
<p class="service-description">{% trans "Dashboard page description." %}</p>
|
|
||||||
|
|
||||||
{% for domain in domains %}
|
|
||||||
<div class="card service-card">
|
|
||||||
<div class="card-header">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md">
|
|
||||||
<strong>{{ domain.name }}</strong>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-8">
|
|
||||||
{% with domain.websites.0 as website %}
|
|
||||||
{% with website.contents.0 as content %}
|
|
||||||
<button type="button" class="btn text-secondary" data-toggle="modal" data-target="#configDetailsModal"
|
|
||||||
data-domain="{{ domain.name }}" data-website="{{ website|yesno:'true,false' }}" data-webapp-type="{{ content.webapp.type }}" data-root-path="{{ content.path }}"
|
|
||||||
data-url="{% url 'musician:domain-detail' domain.id %}">
|
|
||||||
{% trans "view configuration" %} <strong class="fas fa-tools"></strong>
|
|
||||||
</button>
|
|
||||||
{% endwith %}
|
|
||||||
{% endwith %}
|
|
||||||
</div>
|
|
||||||
<div class="col-md text-right">
|
|
||||||
{% comment "@slamora: orchestra doesn't have this information [won't fix] See issue #2" %}
|
|
||||||
{% trans "Expiration date" %}: <strong>{{ domain.expiration_date|date:"SHORT_DATE_FORMAT" }}</strong>
|
|
||||||
{% endcomment %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div><!-- /card-header-->
|
|
||||||
<div class="card-body row text-center">
|
|
||||||
<div class="col-6 col-md-3 col-lg-2 border-right">
|
|
||||||
<h4>{% trans "Mail" %}</h4>
|
|
||||||
<p class="card-text"><i class="fas fa-envelope fa-3x"></i></p>
|
|
||||||
<p class="card-text text-dark">
|
|
||||||
{{ domain.addresses|length }} {% trans "mail addresses created" %}
|
|
||||||
</p>
|
|
||||||
<a class="stretched-link" href="{% url 'musician:address-list' %}?domain={{ domain.id }}"></a>
|
|
||||||
</div>
|
|
||||||
<div class="col-6 col-md-3 col-lg-2 border-right">
|
|
||||||
<h4>{% trans "Mail list" %}</h4>
|
|
||||||
<p class="card-text"><i class="fas fa-mail-bulk fa-3x"></i></p>
|
|
||||||
<a class="stretched-link" href="{% url 'musician:mailing-lists' %}?domain={{ domain.id }}"></a>
|
|
||||||
</div>
|
|
||||||
<div class="col-6 col-md-3 col-lg-2 border-right">
|
|
||||||
<h4>{% trans "Software as a Service" %}</h4>
|
|
||||||
<p class="card-text"><i class="fas fa-fire fa-3x"></i></p>
|
|
||||||
<p class="card-text text-dark">{% trans "Nothing installed" %}</p>
|
|
||||||
<a class="stretched-link" href="{% url 'musician:saas-list' %}?domain={{ domain.id }}"></a>
|
|
||||||
</div>
|
|
||||||
<div class="d-none d-lg-block col-lg-1"></div>
|
|
||||||
<div class="col-6 col-md-3 col-lg-4">
|
|
||||||
<h4>{% trans "Disk usage" %}</h4>
|
|
||||||
<p class="card-text"><i class="fas fa-hdd fa-3x"></i></p>
|
|
||||||
<div class="w-75 m-auto">
|
|
||||||
{% include "musician/components/usage_progress_bar.html" with detail=domain.usage %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="d-none d-lg-block col-lg-1"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
<!-- configuration details modal -->
|
|
||||||
<div class="modal fade" id="configDetailsModal" tabindex="-1" role="dialog" aria-labelledby="configDetailsModalLabel" aria-hidden="true">
|
|
||||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h5 class="modal-title text-secondary" id="configDetailsModalLabel">{% trans "Configuration details" %}</h5>
|
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
||||||
<span aria-hidden="true">×</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<div class="domain-ftp pb-3 border-bottom">
|
|
||||||
<h6 class="pl-4 mb-4">{% trans "FTP access:" %}</h6>
|
|
||||||
{# Translators: domain configuration detail modal #}
|
|
||||||
<p>{% trans "Contact with the support team to get details concerning FTP access." %}</p>
|
|
||||||
{% comment %}
|
|
||||||
<!-- hidden until API provides FTP information -->
|
|
||||||
<label>{% trans "Username" %}:</label> <span id="config-username" class="font-weight-bold">username</span><br/>
|
|
||||||
<label>{% trans "Password:" %}</label> <span id="config-password" class="font-weight-bold">password</span>
|
|
||||||
{% endcomment %}
|
|
||||||
</div>
|
|
||||||
<div class="domain-website pt-4">
|
|
||||||
<div id="no-website"><h6 class="pl-4">{% trans "No website configured." %}</h6></div>
|
|
||||||
<div id="config-website">
|
|
||||||
<label>{% trans "Root directory:" %}</label> <span id="config-root-path" class="font-weight-bold">root directory</span>
|
|
||||||
<label>{% trans "Type:" %}</label><span id="config-webapp-type" class="font-weight-bold">type</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<a href="#domain-detail" class="btn btn-primary">{% trans "View DNS records" %}</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
||||||
{% block extrascript %}
|
|
||||||
<script>
|
|
||||||
$('#configDetailsModal').on('show.bs.modal', function (event) {
|
|
||||||
var button = $(event.relatedTarget); // Button that triggered the modal
|
|
||||||
var modal = $(this);
|
|
||||||
|
|
||||||
// Extract info from data-* attributes
|
|
||||||
modal.find('.modal-title').text(button.data('domain'));
|
|
||||||
modal.find('.modal-body #config-webapp-type').text(button.data('webapp-type'));
|
|
||||||
modal.find('.modal-body #config-root-path').text(button.data('root-path'));
|
|
||||||
modal.find('.modal-footer .btn').attr('href', button.data('url'));
|
|
||||||
|
|
||||||
var nowebsite = modal.find('.modal-body #no-website');
|
|
||||||
var websitecfg = modal.find('.modal-body #config-website');
|
|
||||||
if(button.data('website')) {
|
|
||||||
nowebsite.hide();
|
|
||||||
websitecfg.show();
|
|
||||||
} else {
|
|
||||||
nowebsite.show();
|
|
||||||
websitecfg.hide();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
</script>
|
|
||||||
{% endblock %}
|
|
|
@ -1,68 +0,0 @@
|
||||||
{% extends "musician/base.html" %}
|
|
||||||
{% load i18n %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
|
|
||||||
<h1 class="service-name">{{ service.verbose_name }}</h1>
|
|
||||||
<p class="service-description">{{ service.description }}</p>
|
|
||||||
|
|
||||||
{% for database in object_list %}
|
|
||||||
<div class="card service-card">
|
|
||||||
<div class="card-header">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-8">
|
|
||||||
<strong>{{ database.name }}</strong>
|
|
||||||
</div>
|
|
||||||
<div class="col-md">
|
|
||||||
{% trans "Type" %}: <strong>{{ database.type }}</strong>
|
|
||||||
</div>
|
|
||||||
<div class="col-md text-right">
|
|
||||||
{% comment "@slamora: orchestra doesn't provide this information [won't fix] See issue #3" %}
|
|
||||||
{% trans "associated to" %}: <strong>{{ database.domain|default:"-" }}</strong>
|
|
||||||
{% endcomment %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div><!-- /card-header-->
|
|
||||||
<div class="card-body row">
|
|
||||||
<div class="col-md-4">
|
|
||||||
<h4>Database users</h4>
|
|
||||||
<ul class="list-unstyled pl-2">
|
|
||||||
{% for user in database.users %}
|
|
||||||
{# TODO(@slamora) render in two columns #}
|
|
||||||
<li><span class="d-inline-block w-25">{{ user.username }}</span> <i class="fas fa-user-edit"></i></li>
|
|
||||||
{% empty %}
|
|
||||||
<li>{% trans "No users for this database." %}</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-3 border-left border-right">
|
|
||||||
<h4>Database usage</h4>
|
|
||||||
<p class="text-center"><i class="fas fa-database fa-3x"></i></p>
|
|
||||||
{% include "musician/components/usage_progress_bar.html" with detail=database.usage %}
|
|
||||||
</div>
|
|
||||||
<div class="col-md-5 text-right">
|
|
||||||
<div class="service-manager-link">
|
|
||||||
<a class="btn btn-primary" href="{{ database.manager_url }}" target="_blank" rel="noopener noreferrer">{% trans "Open database manager" %} <i class="fas fa-external-link-alt"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% empty %}
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-4">
|
|
||||||
<div class="card service-card shadow p-3 mb-5 bg-white rounded">
|
|
||||||
<div class="card-body text-center">
|
|
||||||
<p class="mb-4"><i class="fas fa-database fa-5x"></i></p>
|
|
||||||
{# Translators: database page when there isn't any database. #}
|
|
||||||
<h5 class="card-title text-dark">{% trans "Ooops! Looks like there is nothing here!" %}</h5>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% if object_list|length > 0 %}
|
|
||||||
{% include "musician/components/paginator.html" %}
|
|
||||||
{% endif %}
|
|
||||||
{% endblock %}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{% extends "musician/base.html" %}
|
|
||||||
{% load i18n %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
<a class="btn-arrow-left" href="{% url 'musician:dashboard' %}">{% trans "Go back" %}</a>
|
|
||||||
|
|
||||||
<h1 class="service-name">{% trans "DNS settings for" %} <span class="font-weight-light">{{ object.name }}</span></h1>
|
|
||||||
<p class="service-description">{% trans "DNS settings page description." %}</p>
|
|
||||||
|
|
||||||
<table class="table service-list">
|
|
||||||
<colgroup>
|
|
||||||
<col span="1" style="width: 12%;">
|
|
||||||
<col span="1" style="width: 88%;">
|
|
||||||
</colgroup>
|
|
||||||
<thead class="thead-dark">
|
|
||||||
<tr>
|
|
||||||
<th scope="col">{% trans "Type" %}</th>
|
|
||||||
<th scope="col">{% trans "Value" %}</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for record in object.records %}
|
|
||||||
<tr>
|
|
||||||
<td>{{ record.type }}</td>
|
|
||||||
<td>{{ record.value }}</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
{% endblock %}
|
|
|
@ -1,32 +0,0 @@
|
||||||
{% extends "musician/base.html" %}
|
|
||||||
{% load i18n %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
{% if active_domain %}
|
|
||||||
<a class="btn-arrow-left" href="{% url 'musician:address-list' %}">{% trans "Go to global" %}</a>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<h1 class="service-name">{{ service.verbose_name }}
|
|
||||||
{% if active_domain %}<span class="font-weight-light">{% trans "for" %} {{ active_domain.name }}</span>{% endif %}
|
|
||||||
</h1>
|
|
||||||
<p class="service-description">{{ service.description }}</p>
|
|
||||||
|
|
||||||
{% with request.resolver_match.url_name as url_name %}
|
|
||||||
<ul class="nav nav-tabs" id="myTab" role="tablist">
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link {% if url_name == 'address-list' %}active{% endif %}" href="{% url 'musician:address-list' %}" role="tab"
|
|
||||||
aria-selected="{% if url_name == 'address-list' %}true{% else %}false{% endif %}">{% trans "Addresses" %}</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link {% if url_name == 'mailbox-list' %}active{% endif %}" href="{% url 'musician:mailbox-list' %}" role="tab"
|
|
||||||
aria-selected="{% if url_name == 'mailbox-list' %}true{% else %}false{% endif %}">{% trans "Mailboxes" %}</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
{% endwith %}
|
|
||||||
|
|
||||||
<div class="tab-content" id="myTabContent">
|
|
||||||
{% block tabcontent %}
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% endblock %}
|
|
|
@ -1,15 +0,0 @@
|
||||||
{% extends "musician/base.html" %}
|
|
||||||
{% load bootstrap4 i18n %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
<h1 class="service-name">{% trans "Change password" %}: <span class="font-weight-light">{{ object.name }}</span></h1>
|
|
||||||
|
|
||||||
<form method="post">
|
|
||||||
{% csrf_token %}
|
|
||||||
{% bootstrap_form form %}
|
|
||||||
{% buttons %}
|
|
||||||
<a class="btn btn-light mr-2" href="{% url 'musician:mailbox-list' %}">{% trans "Cancel" %}</a>
|
|
||||||
<button type="submit" class="btn btn-secondary">{% trans "Save" %}</button>
|
|
||||||
{% endbuttons %}
|
|
||||||
</form>
|
|
||||||
{% endblock %}
|
|
|
@ -1,15 +0,0 @@
|
||||||
{% extends "musician/base.html" %}
|
|
||||||
{% load i18n %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
<form method="post">
|
|
||||||
{% csrf_token %}
|
|
||||||
<p>{% blocktrans with name=object.name %}Are you sure that you want remove the mailbox: "{{ name }}"?{% endblocktrans %}</p>
|
|
||||||
<div class="alert alert-danger" role="alert">
|
|
||||||
{% trans "All mailbox's messages will be <strong>deleted and cannot be recovered</strong>." %}
|
|
||||||
</div>
|
|
||||||
<p class="alert alert-warning"><strong>{% trans 'WARNING: This action cannot be undone.' %}</strong></p>
|
|
||||||
<input class="btn btn-danger" type="submit" value="{% trans 'Delete' %}">
|
|
||||||
<a class="btn btn-secondary" href="{% url 'musician:mailbox-list' %}">{% trans 'Cancel' %}</a>
|
|
||||||
</form>
|
|
||||||
{% endblock %}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{% extends "musician/base.html" %}
|
|
||||||
{% load bootstrap4 i18n %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
<h1 class="service-name">{{ service.verbose_name }}</h1>
|
|
||||||
|
|
||||||
{% if extra_mailbox %}
|
|
||||||
<div class="alert alert-warning alert-dismissible fade show" role="alert">
|
|
||||||
<strong>{% trans "Warning!" %}</strong> {% trans "You have reached the limit of mailboxes of your subscription so <strong>extra fees</strong> may apply." %}
|
|
||||||
<button type="button" class="close" data-dismiss="alert" aria-label="{% trans 'Close' %}">
|
|
||||||
<span aria-hidden="true">×</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<form method="post">
|
|
||||||
{% csrf_token %}
|
|
||||||
{% bootstrap_form form %}
|
|
||||||
{% buttons %}
|
|
||||||
<a class="btn btn-light mr-2" href="{% url 'musician:mailbox-list' %}">{% trans "Cancel" %}</a>
|
|
||||||
<button type="submit" class="btn btn-secondary">{% trans "Save" %}</button>
|
|
||||||
{% if form.instance %}
|
|
||||||
<div class="float-right">
|
|
||||||
<a class="btn btn-outline-warning" href="{% url 'musician:mailbox-password' view.kwargs.pk %}"><i class="fas fa-key"></i> {% trans "Change password" %}</a>
|
|
||||||
<a class="btn btn-danger" href="{% url 'musician:mailbox-delete' view.kwargs.pk %}">{% trans "Delete" %}</a>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
{% endbuttons %}
|
|
||||||
</form>
|
|
||||||
{% endblock %}
|
|
|
@ -1,46 +0,0 @@
|
||||||
{% extends "musician/mail_base.html" %}
|
|
||||||
{% load i18n %}
|
|
||||||
|
|
||||||
{% block tabcontent %}
|
|
||||||
<div class="tab-pane fade show active" id="mailboxes" role="tabpanel" aria-labelledby="mailboxes-tab">
|
|
||||||
<table class="table service-list">
|
|
||||||
<colgroup>
|
|
||||||
<col span="1" style="width: 25%;">
|
|
||||||
<col span="1" style="width: 10%;">
|
|
||||||
<col span="1" style="width: 65%;">
|
|
||||||
</colgroup>
|
|
||||||
<thead class="thead-dark">
|
|
||||||
<tr>
|
|
||||||
<th scope="col">{% trans "Name" %}</th>
|
|
||||||
<th scope="col">{% trans "Filtering" %}</th>
|
|
||||||
<th scope="col">{% trans "Addresses" %}</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for mailbox in object_list %}
|
|
||||||
{# <!-- Exclude (don't render) inactive mailboxes -->#}
|
|
||||||
{% if mailbox.is_active %}
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<a href="{% url 'musician:mailbox-update' mailbox.id %}">{{ mailbox.name }}</a>
|
|
||||||
<a class="roll-hover btn btn-outline-warning" href="{% url 'musician:mailbox-password' mailbox.id %}">
|
|
||||||
<i class="fas fa-key"></i> {% trans "Update password" %}</a>
|
|
||||||
</td>
|
|
||||||
<td>{{ mailbox.filtering }}</td>
|
|
||||||
<td>
|
|
||||||
{% for addr in mailbox.addresses %}
|
|
||||||
<a href="{% url 'musician:address-update' addr.data.id %}">
|
|
||||||
{{ addr.full_address_name }}
|
|
||||||
</a><br/>
|
|
||||||
{% endfor %}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{% endif %}{# <!-- /is_active --> #}
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
{% include "musician/components/table_paginator.html" %}
|
|
||||||
</table>
|
|
||||||
<a class="btn btn-primary mt-4 mb-4" href="{% url 'musician:mailbox-create' %}">{% trans "New mailbox" %}</a>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
|
@ -1,46 +0,0 @@
|
||||||
{% extends "musician/base.html" %}
|
|
||||||
{% load i18n %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
{% if active_domain %}
|
|
||||||
<a class="btn-arrow-left" href="{% url 'musician:mailing-lists' %}">{% trans "Go to global" %}</a>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<h1 class="service-name">{{ service.verbose_name }}{% if active_domain %} <span class="font-weight-light">{% trans "for" %} {{ active_domain.name }}</span>{% endif %}</h1>
|
|
||||||
<p class="service-description">{{ service.description }}</p>
|
|
||||||
|
|
||||||
<table class="table service-list">
|
|
||||||
<colgroup>
|
|
||||||
<col span="1" style="width: 13%;">
|
|
||||||
<col span="1" style="width: 12%;">
|
|
||||||
<col span="1" style="width: 50%;">
|
|
||||||
<col span="1" style="width: 15%;">
|
|
||||||
<col span="1" style="width: 10%;">
|
|
||||||
</colgroup>
|
|
||||||
<thead class="thead-dark">
|
|
||||||
<tr>
|
|
||||||
<th scope="col">Name</th>
|
|
||||||
<th scope="col">Status</th>
|
|
||||||
<th scope="col">Address</th>
|
|
||||||
<th scope="col">Admin email</th>
|
|
||||||
<th scope="col">Configure</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for resource in object_list %}
|
|
||||||
<tr>
|
|
||||||
<th scope="row">{{ resource.name }}</th>
|
|
||||||
{% if resource.is_active %}
|
|
||||||
<td class="text-primary font-weight-bold">{% trans "Active" %}</td>
|
|
||||||
{% else %}
|
|
||||||
<td class="text-danger font-weight-bold">{% trans "Inactive" %}</td>
|
|
||||||
{% endif %}
|
|
||||||
<td>{{ resource.address_name}}</td>
|
|
||||||
<td>{{ resource.admin_email }}</td>
|
|
||||||
<td><a href="{{ resource.manager_url }}" target="_blank" rel="noopener noreferrer">Mailtrain <i class="fas fa-external-link-alt"></i></a></td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
{% include "musician/components/table_paginator.html" %}
|
|
||||||
</table>
|
|
||||||
{% endblock %}
|
|
|
@ -1,65 +0,0 @@
|
||||||
{% extends "musician/base.html" %}
|
|
||||||
{% load i18n %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
|
|
||||||
<h1 class="service-name">{% trans "Profile" %}</h1>
|
|
||||||
<p class="service-description">{% trans "Little description on profile page." %}</p>
|
|
||||||
|
|
||||||
<div class="card-deck">
|
|
||||||
<div class="card card-profile">
|
|
||||||
<h5 class="card-header">{% trans "User information" %}</h5>
|
|
||||||
<div class="card-body row">
|
|
||||||
<div class="col-md">
|
|
||||||
<div class="border-primary rounded-circle d-inline-block p-1" style="background-color: white; border: 5px solid grey">
|
|
||||||
<img id="user-avatar" width="160" height="160" src="/static/musician/images/default-profile-picture-primary-color.png" alt="user-profile-picture">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-9">
|
|
||||||
<p class="card-text">{{ profile.username }}</p>
|
|
||||||
<p class="card-text">{{ profile.type }}</p>
|
|
||||||
<p class="card-text">{% trans "Preferred language:" %} {{ profile.language|language_name_local }}</p>
|
|
||||||
</div>
|
|
||||||
{% comment %}
|
|
||||||
<!-- disabled until set_password is implemented -->
|
|
||||||
<div class="col-md-12 text-right">
|
|
||||||
<a class="btn btn-primary pl-5 pr-5" href="#">{% trans "Set new password" %}</a>
|
|
||||||
</div>
|
|
||||||
{% endcomment %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% with profile.billing as contact %}
|
|
||||||
<div class="card card-profile">
|
|
||||||
<h5 class="card-header">{% trans "Billing information" %}</h5>
|
|
||||||
<div class="card-body">
|
|
||||||
<div class="form-group">{{ contact.name }}</div>
|
|
||||||
<div class="form-group">{{ contact.address }}</div>
|
|
||||||
<div class="form-group">
|
|
||||||
{{ contact.zipcode }}
|
|
||||||
{{ contact.city }}
|
|
||||||
{{ contact.country }}
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
{{ contact.vat }}
|
|
||||||
</div>
|
|
||||||
<!-- payment method -->
|
|
||||||
<div class="form-group">
|
|
||||||
{% trans "payment method:" %} {{ payment.method }}
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
{% if payment.method == 'SEPADirectDebit' %}
|
|
||||||
IBAN {{ payment.data.iban }}
|
|
||||||
{% else %}
|
|
||||||
{# <!-- "TODO handle Credit Card" --> #}
|
|
||||||
Details: {{ payment.data }}
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
<div class="text-right">
|
|
||||||
<a href="{% url 'musician:billing' %}">{% trans "Check your last bills" %}</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endwith %}
|
|
||||||
{% endblock %}
|
|
|
@ -1,56 +0,0 @@
|
||||||
{% extends "musician/base.html" %}
|
|
||||||
{% load i18n %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
|
|
||||||
<h1 class="service-name">{{ service.verbose_name }}</h1>
|
|
||||||
<p class="service-description">{{ service.description }}</p>
|
|
||||||
|
|
||||||
{% for saas in object_list %}
|
|
||||||
<div class="card service-card">
|
|
||||||
<div class="card-header">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-8">
|
|
||||||
<strong>{{ saas.name }}</strong>
|
|
||||||
</div>
|
|
||||||
{% comment "Hidden until API provides this information" %}
|
|
||||||
<div class="col-md text-right">
|
|
||||||
{% trans "Installed on" %}: <strong>{{ saas.domain|default:"-" }}</strong>
|
|
||||||
</div>
|
|
||||||
{% endcomment %}
|
|
||||||
</div>
|
|
||||||
</div><!-- /card-header-->
|
|
||||||
<div class="card-body row">
|
|
||||||
<div class="col-md-4">
|
|
||||||
<h4>{{ saas.service|capfirst }}</h4>
|
|
||||||
<p class="text-center service-brand"><i class="fab fa-{{ saas.service }} fa-10x"></i></p>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-3 border-left border-right">
|
|
||||||
<h4 class="mb-3">{% trans "Service info" %}</h4>
|
|
||||||
<label class="w-25">{% trans "active" %}:</label> <strong>{{ saas.is_active|yesno }}</strong><br/>
|
|
||||||
{% for key, value in saas.data.items %}
|
|
||||||
<label class="w-25">{{ key }}:</label> <strong>{{ value }}</strong><br/>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
<div class="col-md-5 text-right">
|
|
||||||
<div class="service-manager-link">
|
|
||||||
<a class="btn btn-primary" href="{{ saas.manager_url }}" target="_blank" rel="noopener noreferrer">{% trans "Open service admin panel" %} <i class="fas fa-external-link-alt"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% empty %}
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-4">
|
|
||||||
<div class="card service-card shadow p-3 mb-5 bg-white rounded">
|
|
||||||
<div class="card-body text-center">
|
|
||||||
<p class="mb-4"><i class="fas fa-fire fa-5x"></i></p>
|
|
||||||
{# Translators: saas page when there isn't any saas. #}
|
|
||||||
<h5 class="card-title text-dark">{% trans "Ooops! Looks like there is nothing here!" %}</h5>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% endblock %}
|
|
|
@ -1,28 +0,0 @@
|
||||||
{% extends "musician/base.html" %}
|
|
||||||
{% load i18n musician %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
|
|
||||||
<h1>{{ service.verbose_name }}</h1>
|
|
||||||
<p>{{ service.description }}</p>
|
|
||||||
<table class="table table-hover">
|
|
||||||
<thead class="thead-dark">
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
{% for field_name in service.fields %}
|
|
||||||
<th scope="col">{{ field_name }}</th>
|
|
||||||
{% endfor %}
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for resource in object_list %}
|
|
||||||
<tr>
|
|
||||||
{% for field_name in service.fields %}
|
|
||||||
<td>{{ resource|get_item:field_name }}</td>
|
|
||||||
{% endfor %}
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
{% include "musician/components/table_paginator.html" %}
|
|
||||||
</table>
|
|
||||||
{% endblock %}
|
|
Loading…
Reference in New Issue