Start switch to Bootstrap 5
- drop jQuery and fontawesome dependencies - add bootstrap5 and bootstrap-icons - update fonts mfizz - update base templates and the first set of other templates - replace blocktrans and trans with blocktranslate and translate to prepare for Django 4 - move hostingpakcage templates to hostingpackages/templates - update translations
This commit is contained in:
parent
5cf7ef7a23
commit
8e42cb9c18
124 changed files with 10873 additions and 4490 deletions
|
@ -0,0 +1,13 @@
|
|||
{% extends "hostingpackages/base.html" %}
|
||||
{% load i18n crispy_forms_tags %}
|
||||
{% block title %}{{ block.super }} -
|
||||
{% blocktranslate with package=hostingpackage.name full_name=customer.get_full_name trimmed %}
|
||||
Add Option to Hosting Package {{ package }} of Customer {{ full_name }}
|
||||
{% endblocktranslate %}{% endblock title %}
|
||||
{% block page_title %}{% blocktranslate with package=hostingpackage.name full_name=customer.get_full_name trimmed %}
|
||||
Add Option to Hosting Package {{ package }} of Customer {{ full_name }}
|
||||
{% endblocktranslate %}{% endblock page_title %}
|
||||
|
||||
{% block content %}
|
||||
{% crispy form %}
|
||||
{% endblock content %}
|
|
@ -0,0 +1 @@
|
|||
{% extends "base.html" %}
|
|
@ -0,0 +1,34 @@
|
|||
{% extends "hostingpackages/base.html" %}
|
||||
{% load i18n %}
|
||||
{% block title %}{{ block.super }} - {% translate "All hosting packages" %}{% endblock title %}
|
||||
{% block page_title %}{% translate "All hosting packages" %}{% endblock page_title %}
|
||||
|
||||
{% block content %}
|
||||
{% if customerhostingpackage_list %}
|
||||
<table class="table table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{% translate "Name" %}</th>
|
||||
<th>{% translate "Customer" %}</th>
|
||||
<th>{% translate "Setup date" %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for package in customerhostingpackage_list %}
|
||||
<tr>
|
||||
<td><a href="{{ package.get_absolute_url }}">{{ package.name }}</a></td>
|
||||
<td>
|
||||
<a href="{% url 'customer_dashboard' slug=package.customer.username %}">{{ package.customer }}</a>
|
||||
</td>
|
||||
<td>{{ package.created }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% else %}
|
||||
<p class="text-info">{% translate "No hosting packages have been setup yet." %}</p>
|
||||
{% endif %}
|
||||
<p>
|
||||
<a href="{% url 'create_hosting_package' %}" class="btn btn-primary">{% translate "Add hosting package" %}</a>
|
||||
</p>
|
||||
{% endblock content %}
|
|
@ -0,0 +1,12 @@
|
|||
{% extends "hostingpackages/base.html" %}
|
||||
{% load i18n crispy_forms_tags %}
|
||||
{% block title %}{{ block.super }} - {% blocktranslate with full_name=customer.get_full_name trimmed %}
|
||||
Add hosting package for Customer {{ full_name }}
|
||||
{% endblocktranslate %}{% endblock title %}
|
||||
{% block page_title %}{% blocktranslate with full_name=customer.get_full_name trimmed %}
|
||||
Add Hosting Package for Customer {{ full_name }}
|
||||
{% endblocktranslate %}{% endblock page_title %}
|
||||
|
||||
{% block content %}
|
||||
{% crispy form %}
|
||||
{% endblock content %}
|
|
@ -0,0 +1,280 @@
|
|||
{% extends "hostingpackages/base.html" %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block title %}{{ block.super }} - {% spaceless %}
|
||||
{% if user == customer %}
|
||||
{% blocktranslate with package=hostingpackage.name trimmed %}
|
||||
Details for your Hosting Package {{ package }}
|
||||
{% endblocktranslate %}
|
||||
{% else %}
|
||||
{% blocktranslate with package=hostingpackage.name full_name=customer.get_full_name trimmed %}
|
||||
Details for Hosting Package {{ package }} of {{ full_name }}
|
||||
{% endblocktranslate %}
|
||||
{% endif %}
|
||||
{% endspaceless %}{% endblock title %}
|
||||
|
||||
{% block page_title %}{% blocktranslate with package=hostingpackage.name trimmed %}
|
||||
Details of Hosting Package {{ package }}
|
||||
{% endblocktranslate %}{% endblock page_title %}
|
||||
|
||||
{% block content %}
|
||||
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-4">
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
{% translate "Hosting Package Information" %}
|
||||
{% if user.is_staff %}
|
||||
<div class="float-end">
|
||||
<a class="panel-title" href="#"
|
||||
title="{% translate "Edit Hosting Package Information" %}"><i
|
||||
class="bi-gear"></i></a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<dl class="dl-horizontal">
|
||||
<dt>{% translate "Name" %}</dt>
|
||||
<dd>{{ hostingpackage.name }}</dd>
|
||||
<dt>{% translate "Description" %}</dt>
|
||||
<dd>{{ hostingpackage.description|default:"-" }}</dd>
|
||||
<dt>{% translate "Disk space" %}</dt>
|
||||
{% with diskspace=hostingpackage.get_disk_space packagespace=hostingpackage.get_package_space %}
|
||||
<dd>
|
||||
<span title="{% blocktranslate trimmed %}
|
||||
The reserved disk space for your hosting package is {{ diskspace }} bytes
|
||||
{% endblocktranslate %}">{{ diskspace|filesizeformat }}</span>
|
||||
<i class="bi-info-circle"
|
||||
title="{% blocktranslate with humanbytes=packagespace|filesizeformat trimmed %}
|
||||
The package contributes {{ humanbytes }} ({{ packagespace }} bytes) the difference comes from disk space options
|
||||
{% endblocktranslate %}"></i>
|
||||
</dd>
|
||||
{% endwith %}
|
||||
<dt>{% translate "Mailboxes" %}</dt>
|
||||
<dd>
|
||||
{% blocktranslate with num=hostingpackage.used_mailbox_count total=hostingpackage.mailbox_count trimmed %}
|
||||
{{ num }} of {{ total }} in use{% endblocktranslate %}
|
||||
<i class="bi-info-circle"
|
||||
title="{% blocktranslate with mailboxcount=hostingpackage.mailboxcount trimmed %}The package provides {{ mailboxcount }} mailboxes the difference comes from mailbox options.{% endblocktranslate %}"></i>
|
||||
</dd>
|
||||
<dt>{% if osuser.is_sftp_user %}{% translate "SFTP username" %}{% else %}
|
||||
{% translate "SSH/SFTP username" %}{% endif %}</dt>
|
||||
<dd>{{ osuser.username }}{% if sshkeys %}
|
||||
<a href="{% url 'list_ssh_keys' package=hostingpackage.id %}" class="badge"
|
||||
title="{% blocktranslate count counter=sshkeys|length trimmed %}There is an SSH public key set for this user.{% plural %}There are {{ counter }} SSH public keys set for this user.{% endblocktranslate %}"><i
|
||||
class="bi-key"></i> {{ sshkeys|length }}</a>{% endif %}</dd>
|
||||
<dt>{% translate "Upload server" %}</dt>
|
||||
<dd>{{ uploadserver }}</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">{% translate "Hosting Package Options" %}</div>
|
||||
{% if hostingoptions %}
|
||||
<ul class="list-group list-group-flush">
|
||||
{% for opt in hostingoptions %}
|
||||
<li class="list-group-item">{{ opt }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% else %}
|
||||
<div class="card-body text-info">{% translate "No options booked" %}</div>
|
||||
{% endif %}
|
||||
{% if user.is_staff %}
|
||||
<div class="card-footer"><a
|
||||
class="btn btn-primary"
|
||||
href="{% url 'hosting_option_choices' pk=hostingpackage.id %}"
|
||||
title="{% translate "Add another hosting option" %}">{% translate "Add option" %}</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">{% translate "Hosting Package Actions" %}</div>
|
||||
<ul class="list-group list-group-flush">
|
||||
<li class="list-group-item"><a
|
||||
href="#"
|
||||
title="{% translate "Edit Hosting Package Description" %}">{% translate "Edit description" %}</a>
|
||||
</li>
|
||||
<li class="list-group-item"><a href="{% url "set_osuser_password" slug=osuser.username %}">
|
||||
{% if osuser.is_sftp_user %}{% translate "Set SFTP password" %}{% else %}
|
||||
{% translate "Set SSH/SFTP password" %}{% endif %}</a></li>
|
||||
<li class="list-group-item"><a
|
||||
href="{% url "add_ssh_key" package=hostingpackage.id %}"
|
||||
title="{% blocktranslate trimmed %}
|
||||
Add an SSH public key that can be used as an alternative for password
|
||||
{% endblocktranslate %}">{% translate "Add SSH public key" %}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row row-cols-1 mt-4">
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">{% translate "Domains" %}</div>
|
||||
{% if domains %}
|
||||
<table class="table table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="name-column">{% translate "Domain name" %}</th>
|
||||
<th>{% translate "Mail addresses" %}</th>
|
||||
<th>{% translate "Websites" %}</th>
|
||||
<th title="{% translate "Domain actions" %}" class="actions-column"><span
|
||||
class="visually-hidden">{% translate "Actions" %}</span></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for domain in domains %}
|
||||
<tr>
|
||||
<td>{{ domain.domain }}</td>
|
||||
{% if domain.domain.maildomain.mailaddress_set.exists %}
|
||||
<td>
|
||||
{% with maildomain=domain.domain.maildomain %}
|
||||
{% for mailaddress in maildomain.mailaddresses %}{% spaceless %}
|
||||
<a href="{% url 'edit_mailaddress' package=hostingpackage.id domain=maildomain.domain pk=mailaddress.id %}"
|
||||
title="{% translate "Edit mail address targets" %}">{{ mailaddress }}</a>
|
||||
<a href="{% url 'delete_mailaddress' package=hostingpackage.id domain=maildomain.domain pk=mailaddress.id %}"
|
||||
title="{% translate "Delete mail address" %}"><i
|
||||
class="bi-trash"></i><span
|
||||
class="visually-hidden"> {% translate "Delete mail address" %}</span></a>
|
||||
{% endspaceless %}{% if not forloop.last %}, {% endif %}{% endfor %}
|
||||
{% endwith %}
|
||||
</td>
|
||||
{% else %}
|
||||
<td class="text-info">{% translate "None" %}</td>
|
||||
{% endif %}
|
||||
{% if domain.domain.website_set.exists %}
|
||||
<td>
|
||||
{% with domain=domain.domain %}
|
||||
{% for website in domain.website_set.all %}{% spaceless %}
|
||||
{{ website }}
|
||||
<a href="{% url 'delete_website' package=hostingpackage.id domain=domain.domain pk=website.id %}"
|
||||
titel="{% translate "Delete website" %}"><i
|
||||
class="bi-trash"></i><span
|
||||
class="visually-hidden"> {% translate "Delete website" %}</span></a>
|
||||
{% endspaceless %}{% if not forloop.last %}, {% endif %}{% endfor %}
|
||||
{% endwith %}
|
||||
</td>
|
||||
{% else %}
|
||||
<td class="text-info">{% translate "None" %}</td>
|
||||
{% endif %}
|
||||
<td>
|
||||
{% if domain.domain.maildomain %}
|
||||
{% with maildomain=domain.domain.maildomain %}
|
||||
<a href="{% url 'add_mailaddress' package=hostingpackage.id domain=maildomain.domain %}"
|
||||
title="{% translate "Add mail address" %}"><i
|
||||
class="bi-envelope-plus"></i><span
|
||||
class="visually-hidden"> {% translate "Add mail address" %}</span></a>
|
||||
{% endwith %}
|
||||
{% endif %}
|
||||
{% with hostingdomain=domain.domain %}
|
||||
<a href="{% url 'add_website' package=hostingpackage.id domain=hostingdomain.domain %}"
|
||||
title="{% translate "Add website" %}"><i class="bi-globe"></i><span
|
||||
class="visually-hidden"> {% translate "Add website" %}</span></a>
|
||||
{% endwith %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% else %}
|
||||
<div class="card-body text-info">{% translate "There are no domains assigned to this hosting package yet." %}</div>
|
||||
{% endif %}
|
||||
{% if user.is_staff %}
|
||||
<div class="card-footer"><a href="{% url 'create_hosting_domain' package=hostingpackage.id %}"
|
||||
class="btn btn-primary">{% translate "Add domain" %}</a></div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row row-cols-1 row-cols-lg-2 mt-4">
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">{% translate "E-Mail-Accounts" %}</div>
|
||||
{% if mailboxes %}
|
||||
<table class="table table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="name-column">{% translate "Mailbox" %}</th>
|
||||
<th>{% translate "Mail addresses" %}</th>
|
||||
<th class="status-column">{% translate "Active" %}</th>
|
||||
<th title="{% translate "Mailbox actions" %}" class="actions-column"><span
|
||||
class="visually-hidden">{% translate "Actions" %}</span></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for mailbox in mailboxes %}
|
||||
<tr>
|
||||
<td>{{ mailbox.username }}</td>
|
||||
<td>{{ mailbox.mailaddresses|join:", " }}</td>
|
||||
<td>
|
||||
<i class="{% if mailbox.active %}bi-check-circle{% else %}bi-dash-circle{% endif %}"></i><span
|
||||
class="visually-hidden"> {% if mailbox.active %}{% translate "Active" %}{% else %}
|
||||
{% translate "inactive" %}{% endif %}</span></td>
|
||||
<td>
|
||||
<a href="{% url 'change_mailbox_password' package=hostingpackage.id slug=mailbox.username %}"><i
|
||||
class="bi-lock" title="{% translate "Set mailbox password" %}"></i><span
|
||||
class="visually-hidden"> {% translate "Set mailbox password" %}</span></a>
|
||||
</td>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% else %}
|
||||
<div class="card-body text-info">{% translate "There are no mailboxes assigned to this hosting package yet." %}</div>
|
||||
{% endif %}
|
||||
{% if hostingpackage.may_add_mailbox %}
|
||||
<div class="card-footer"><a
|
||||
href="{% url 'create_mailbox' package=hostingpackage.id %}"
|
||||
class="btn btn-primary">{% translate "Add mailbox" %}</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">{% translate "Databases" %}</div>
|
||||
{% if databases %}
|
||||
<table class="table table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="name-column">{% translate "Database name" %}</th>
|
||||
<th class="name-column">{% translate "Database user" %}</th>
|
||||
<th title="{% translate "Database type" %}"><span
|
||||
class="visually-hidden">{% translate "Type" %}</span></th>
|
||||
<th title="{% translate "Database actions" %}" class="actions-column"><span
|
||||
class="visually-hidden">{% translate "Actions" %}</span></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for database in databases %}
|
||||
<tr>
|
||||
<td>{{ database.db_name }}</td>
|
||||
<td>{{ database.db_user.name }}</td>
|
||||
<td>{% include "userdbs/snippets/db_type.html" with db_type=database.db_user.db_type %}</td>
|
||||
<td>
|
||||
<a href="{% url 'change_dbuser_password' package=hostingpackage.id slug=database.db_user.name %}"
|
||||
title="{% translate "Set database user password" %}"><i
|
||||
class="bi-database-gear"></i><span
|
||||
class="visually-hidden"> {% translate "Set database user password" %}</span></a>
|
||||
<a href="{% url 'delete_userdatabase' package=hostingpackage.id slug=database.db_name %}"
|
||||
title="{% translate "Delete database" %}"><i class="bi-database-dash"></i><span
|
||||
class="visually-hidden">{% translate "Delete database" %}</span></a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% else %}
|
||||
<div class="card-body text-info">{% translate "There are no databases assigned to this hosting package yet." %}</div>
|
||||
{% endif %}
|
||||
{% if hostingpackage.may_add_database %}
|
||||
<div class="card-footer"><a
|
||||
href="{% url 'add_userdatabase' package=hostingpackage.id %}"
|
||||
class="btn btn-primary">{% translate "Add database" %}</a></div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock content %}
|
|
@ -0,0 +1,48 @@
|
|||
{% extends "hostingpackages/base.html" %}
|
||||
{% load i18n %}
|
||||
{% block title %}{{ block.super }} - {% spaceless %}
|
||||
{% if user == customer %}
|
||||
{% translate "Your hosting packages" %}
|
||||
{% else %}
|
||||
{% blocktranslate with customer=customer.get_full_name trimmed %}Hosting Packages of
|
||||
{{ customer }}{% endblocktranslate %}
|
||||
{% endif %}
|
||||
{% endspaceless %}{% endblock title %}
|
||||
|
||||
{% block page_title %}{% spaceless %}
|
||||
{% if user == customer %}
|
||||
{% translate "Your hosting packages" %}
|
||||
{% else %}
|
||||
{% blocktranslate with customer=customer.get_full_name trimmed %}Hosting Packages
|
||||
<small>of {{ customer }}</small>{% endblocktranslate %}
|
||||
{% endif %}
|
||||
{% endspaceless %}{% endblock page_title %}
|
||||
|
||||
{% block content %}
|
||||
{% if customerhostingpackage_list %}
|
||||
<table class="table table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{% translate "Name" %}</th>
|
||||
<th>{% translate "Setup date" %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for package in customerhostingpackage_list %}
|
||||
<tr>
|
||||
<td><a href="{{ package.get_absolute_url }}">{{ package.name }}</a></td>
|
||||
<td>{{ package.created }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% else %}
|
||||
<p class="text-info">
|
||||
{% if user == customer %}{% translate "You have no hosting packages setup yet." %}{% else %}
|
||||
{% translate "There are no hosting packages setup for this customer yet." %}{% endif %}</p>
|
||||
{% endif %}
|
||||
{% if user.is_staff %}
|
||||
<p><a href="{% url 'create_customer_hosting_package' user=customer.username %}"
|
||||
class="btn btn-primary">{% translate "Add hosting package" %}</a></p>
|
||||
{% endif %}
|
||||
{% endblock content %}
|
|
@ -0,0 +1,29 @@
|
|||
{% extends "hostingpackages/base.html" %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block title %}{{ block.super }} -
|
||||
{% blocktranslate with package=hostingpackage.name full_name=customer.get_full_name trimmed %}Choose new Option for
|
||||
Hosting Package {{ package }} of Customer {{ full_name }}{% endblocktranslate %}{% endblock title %}
|
||||
|
||||
{% block page_title %}{% blocktranslate with package=hostingpackage.name full_name=customer.get_full_name trimmed %}
|
||||
Choose new Option for Hosting Package {{ package }} of Customer {{ full_name }}
|
||||
{% endblocktranslate %}{% endblock page_title %}
|
||||
|
||||
{% block content %}
|
||||
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-4">
|
||||
{% for label, items in hosting_options %}
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">{{ label }}</div>
|
||||
<ul class="list-group list-group-flush">
|
||||
{% for item, option_type in items %}
|
||||
<li class="list-group-item"><a
|
||||
href="{% url 'add_hosting_option' package=hostingpackage.id type=option_type optionid=item.id %}"><i
|
||||
class="bi-plus-circle"></i> {{ item }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endblock %}
|
Loading…
Add table
Add a link
Reference in a new issue