mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-08-26 12:46:08 +00:00
Internationalize strings in template files
This commit is contained in:
parent
139db064a9
commit
02cd89b60d
@ -18,16 +18,26 @@
|
|||||||
#
|
#
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h2>Services and Applications</h2>
|
<h2>{% trans "Services and Applications" %}</h2>
|
||||||
|
|
||||||
<p>You can install and run various services and applications on your
|
<p>
|
||||||
{{ cfg.box_name }}.</p>
|
{% blocktrans trimmed %}
|
||||||
|
You can install and run various services and applications on
|
||||||
|
your {{ cfg.box_name }}.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>This box can be your photo sharing site, your instant
|
<p>
|
||||||
messaging site, your social networking site, your news site. Remember
|
{% blocktrans trimmed %}
|
||||||
web portals? We can be one of those too. Many of the services you
|
This box can be your photo sharing site, your instant messaging
|
||||||
use on the web could soon be on site and under your control!</p>
|
site, your social networking site, your news site. Remember web
|
||||||
|
portals? We can be one of those too. Many of the services you
|
||||||
|
use on the web could soon be on site and under your control!
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -19,36 +19,45 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h2>Service Discovery</h2>
|
<h2>{% trans "Service Discovery" %}</h2>
|
||||||
|
|
||||||
<p>Service discovery allows other machines on the network to discover
|
<p>
|
||||||
your FreedomBox and services running on it. It also allows
|
{% blocktrans trimmed %}
|
||||||
FreedomBox to discover other machines and services running on your
|
Service discovery allows other machines on the network to
|
||||||
local network. Service discovery is not essential and works only on
|
discover your FreedomBox and services running on it. It also
|
||||||
internal networks. It may be disabled to improve security
|
allows FreedomBox to discover other machines and services
|
||||||
especially when connecting to a hostile local network.</p>
|
running on your local network. Service discovery is not
|
||||||
|
essential and works only on internal networks. It may be
|
||||||
|
disabled to improve security especially when connecting to a
|
||||||
|
hostile local network.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<h3>Status</h3>
|
<h3>{% trans "Status" %}</h3>
|
||||||
|
|
||||||
<p class="running-status-parent">
|
<p class="running-status-parent">
|
||||||
{% if status.is_running %}
|
{% if status.is_running %}
|
||||||
<span class="running-status active"></span> Service discovery server is running
|
<span class="running-status active"></span>
|
||||||
{% else %}
|
{% trans "Service discovery server is running" %}
|
||||||
<span class="running-status inactive"></span> Service discovery server is not running
|
{% else %}
|
||||||
{% endif %}
|
<span class="running-status inactive"></span>
|
||||||
</p>
|
{% trans "Service discovery server is not running" %}
|
||||||
|
{% endif %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<h3>Configuration</h3>
|
<h3>{% trans "Configuration" %}</h3>
|
||||||
|
|
||||||
<form class="form" method="post">
|
<form class="form" method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
{{ form|bootstrap }}
|
{{ form|bootstrap }}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Update setup"/>
|
<input type="submit" class="btn btn-primary"
|
||||||
</form>
|
value="{% trans "Update setup" %}"/>
|
||||||
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -19,6 +19,7 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
@ -27,8 +28,8 @@
|
|||||||
|
|
||||||
{{ form|bootstrap }}
|
{{ form|bootstrap }}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Submit"/>
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{% trans "Submit" %}"/>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -19,32 +19,41 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h2>Date & Time</h2>
|
<h2>{% trans "Date & Time" %}</h2>
|
||||||
|
|
||||||
<p>Network time server is a program that maintians the system time in synchronization with servers on the Internet.</p>
|
<p>
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
Network time server is a program that maintians the system time
|
||||||
|
in synchronization with servers on the Internet.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<h3>Status</h3>
|
<h3>{% trans "Status" %}</h3>
|
||||||
|
|
||||||
<p class="running-status-parent">
|
<p class="running-status-parent">
|
||||||
{% if status.is_running %}
|
{% if status.is_running %}
|
||||||
<span class="running-status active"></span> Network time server is running
|
<span class="running-status active"></span>
|
||||||
{% else %}
|
{% trans "Network time server is running" %}
|
||||||
<span class="running-status inactive"></span> Network time server is not running
|
{% else %}
|
||||||
{% endif %}
|
<span class="running-status inactive"></span>
|
||||||
</p>
|
{% trans "Network time server is not running" %}
|
||||||
{% include "diagnostics_button.html" with module="datetime" %}
|
{% endif %}
|
||||||
|
</p>
|
||||||
|
{% include "diagnostics_button.html" with module="datetime" %}
|
||||||
|
|
||||||
<h3>Configuration</h3>
|
<h3>{% trans "Configuration" %}</h3>
|
||||||
|
|
||||||
<form class="form" method="post">
|
<form class="form" method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
{{ form|bootstrap }}
|
{{ form|bootstrap }}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Update setup"/>
|
<input type="submit" class="btn btn-primary"
|
||||||
</form>
|
value="{% trans "Update setup" %}"/>
|
||||||
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -19,37 +19,46 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h2>BitTorrent Web Client (Deluge)</h2>
|
<h2>{% trans "BitTorrent Web Client (Deluge)" %}</h2>
|
||||||
|
|
||||||
<p>Deluge is a BitTorrent client that features a Web UI.</p>
|
<p>{% trans "Deluge is a BitTorrent client that features a Web UI." %}</p>
|
||||||
|
|
||||||
<p>When enabled, the Deluge web client will be available from
|
<p>
|
||||||
<a href="/deluge">/deluge</a> path on the web server. The default
|
{% blocktrans trimmed %}
|
||||||
password is 'deluge', but you should log in and change it immediately after
|
When enabled, the Deluge web client will be available from
|
||||||
enabling this service.</p>
|
<a href="/deluge">/deluge</a> path on the web server. The
|
||||||
|
default password is 'deluge', but you should log in and change
|
||||||
|
it immediately after enabling this service.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<h3>Status</h3>
|
<h3>{% trans "Status" %}</h3>
|
||||||
|
|
||||||
<p class="running-status-parent">
|
<p class="running-status-parent">
|
||||||
{% if status.is_running %}
|
{% if status.is_running %}
|
||||||
<span class="running-status active"></span> deluge-web is running
|
<span class="running-status active"></span>
|
||||||
{% else %}
|
{% trans "deluge-web is running" %}
|
||||||
<span class="running-status inactive"></span> deluge-web is not running
|
{% else %}
|
||||||
{% endif %}
|
<span class="running-status inactive"></span>
|
||||||
</p>
|
{% trans "deluge-web is not running" %}
|
||||||
{% include "diagnostics_button.html" with module="deluge" %}
|
{% endif %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<h3>Configuration</h3>
|
{% include "diagnostics_button.html" with module="deluge" %}
|
||||||
|
|
||||||
<form class="form" method="post">
|
<h3>{% trans "Configuration" %}</h3>
|
||||||
{% csrf_token %}
|
|
||||||
|
|
||||||
{{ form|bootstrap }}
|
<form class="form" method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Update setup"/>
|
{{ form|bootstrap }}
|
||||||
</form>
|
|
||||||
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{% trans "Update setup" %}"/>
|
||||||
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -18,6 +18,7 @@
|
|||||||
#
|
#
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block page_head %}
|
{% block page_head %}
|
||||||
|
|
||||||
@ -30,49 +31,55 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h2>{{ title }}</h2>
|
<h2>{{ title }}</h2>
|
||||||
|
|
||||||
<p>The system diagnostic test will run a number of checks on your
|
<p>
|
||||||
system to confirm that applications and services are working as expected.</p>
|
{% blocktrans trimmed %}
|
||||||
|
The system diagnostic test will run a number of checks on your
|
||||||
|
system to confirm that applications and services are working as
|
||||||
|
expected.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
{% if not is_running %}
|
{% if not is_running %}
|
||||||
<form class="form form-diagnostics-button" method="post"
|
<form class="form form-diagnostics-button" method="post"
|
||||||
action="{% url 'diagnostics:index' %}">
|
action="{% url 'diagnostics:index' %}">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Run Diagnostics"/>
|
<input type="submit" class="btn btn-primary"
|
||||||
</form>
|
value="{% trans "Run Diagnostics" %}"/>
|
||||||
{% else %}
|
</form>
|
||||||
<p>Diagnotics test is currently running</p>
|
|
||||||
<div class="progress">
|
|
||||||
<div class="progress-bar progress-bar-striped active"
|
|
||||||
role="progressbar" aria-valuemin="0" aria-valuemax="100"
|
|
||||||
aria-valuenow="{{ results.progress_percentage }}"
|
|
||||||
style="width: {{ results.progress_percentage }}%">
|
|
||||||
{{ results.progress_percentage }}%
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if results %}
|
|
||||||
<h3>Results</h3>
|
|
||||||
{% if results.error %}
|
|
||||||
<div class="alert alert-danger alert-dismissable">
|
|
||||||
<a class="close" data-dismiss="alert">×</a>
|
|
||||||
{{ results.error }}
|
|
||||||
</div>
|
|
||||||
{% else %}
|
{% else %}
|
||||||
{% for module, module_results in results.results.items %}
|
<p>{% trans "Diagnotics test is currently running" %}</p>
|
||||||
<h4>Module: {{ module }}</h4>
|
<div class="progress">
|
||||||
|
<div class="progress-bar progress-bar-striped active"
|
||||||
|
role="progressbar" aria-valuemin="0" aria-valuemax="100"
|
||||||
|
aria-valuenow="{{ results.progress_percentage }}"
|
||||||
|
style="width: {{ results.progress_percentage }}%">
|
||||||
|
{{ results.progress_percentage }}%
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
{% if module_results %}
|
|
||||||
{% include "diagnostics_results.html" with results=module_results %}
|
|
||||||
{% else %}
|
|
||||||
<p><span class="glyphicon glyphicon-hourglass"></span></p>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
|
||||||
|
{% if results %}
|
||||||
|
<h3>{% trans "Results" %}</h3>
|
||||||
|
{% if results.error %}
|
||||||
|
<div class="alert alert-danger alert-dismissable">
|
||||||
|
<a class="close" data-dismiss="alert">×</a>
|
||||||
|
{{ results.error }}
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
{% for module, module_results in results.results.items %}
|
||||||
|
<h4>{% blocktrans %}Module: {{ module }}{% endblocktrans %}</h4>
|
||||||
|
|
||||||
|
{% if module_results %}
|
||||||
|
{% include "diagnostics_results.html" with results=module_results %}
|
||||||
|
{% else %}
|
||||||
|
<p><span class="glyphicon glyphicon-hourglass"></span></p>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -17,9 +17,12 @@
|
|||||||
#
|
#
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
<form class="form form-diagnostics-button" method="post"
|
<form class="form form-diagnostics-button" method="post"
|
||||||
action="{% url 'diagnostics:module' module %}">
|
action="{% url 'diagnostics:module' module %}">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-default" value="Run Diagnostics"/>
|
<input type="submit" class="btn btn-default"
|
||||||
|
value="{% trans "Run Diagnostics" %}"/>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@ -18,16 +18,18 @@
|
|||||||
#
|
#
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h2>Diagnostic Results</h2>
|
<h2>{% trans "Diagnostic Results" %}</h2>
|
||||||
|
|
||||||
<h3>Module: {{ module_name }}</h3>
|
<h3>{% blocktrans %}Module: {{ module_name }}{% endblocktrans %}</h3>
|
||||||
|
|
||||||
{% if results %}
|
{% if results %}
|
||||||
{% include "diagnostics_results.html" with results=results %}
|
{% include "diagnostics_results.html" with results=results %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<p>This module does not support diagnostics</p>
|
<p>{% trans "This module does not support diagnostics" %}</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -17,31 +17,33 @@
|
|||||||
#
|
#
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-5">
|
<div class="col-sm-5">
|
||||||
<table class="table table-bordered table-striped diagnostics-results">
|
<table class="table table-bordered table-striped diagnostics-results">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="diagnostic-test">Test</th>
|
<th class="diagnostic-test">{% trans "Test" %}</th>
|
||||||
<th class="diagnostics-result">Result</th>
|
<th class="diagnostics-result">{% trans "Result" %}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for test, result in results %}
|
{% for test, result in results %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ test }}</td>
|
<td>{{ test }}</td>
|
||||||
<td>
|
<td>
|
||||||
{% if result == 'passed' %}
|
{% if result == 'passed' %}
|
||||||
<span class="label label-success">{{ result }}</span>
|
<span class="label label-success">{{ result }}</span>
|
||||||
{% elif result == 'failed' %}
|
{% elif result == 'failed' %}
|
||||||
<span class="label label-danger">{{ result }}</span>
|
<span class="label label-danger">{{ result }}</span>
|
||||||
{% elif result == 'error' %}
|
{% elif result == 'error' %}
|
||||||
<span class="label label-warning">{{ result }}</span>
|
<span class="label label-warning">{{ result }}</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
{{ result }}
|
{{ result }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@ -18,29 +18,50 @@
|
|||||||
#
|
#
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h2>DynamicDNS client</h2>
|
|
||||||
<p>If your internet provider changes your IP address periodic (i.e. every 24h)
|
<h2>{% trans "DynamicDNS client" %}</h2>
|
||||||
it may be hard for others to find you in the WEB. And for this reason nobody
|
|
||||||
may find the services which are provided by FreedomBox (like your ownCloud).
|
<p>
|
||||||
</br> </br>
|
{% blocktrans trimmed %}
|
||||||
The solution is to assign a DNS name to your IP address and update the DNS
|
If your internet provider changes your IP address periodic
|
||||||
name every time your IP is changed by your Internet provider. Dynamic DNS
|
(i.e. every 24h) it may be hard for others to find you in the
|
||||||
allows you to push your current public IP address to an
|
WEB. And for this reason nobody may find the services which are
|
||||||
<a href='http://gnudip2.sourceforge.net/' target='_blank'> gnudip </a>
|
provided by FreedomBox (like your ownCloud).
|
||||||
server. Afterwards the Server will assign your DNS name with the new IP
|
{% endblocktrans %}
|
||||||
and if someone from the internet asks for your DNS name he will get your
|
</p>
|
||||||
current IP answered.
|
|
||||||
</br> </br>
|
<p>
|
||||||
If you are looking for a free dynamic DNS account, you may find a free
|
{% blocktrans trimmed %}
|
||||||
GnuDIP service at <a href='http://gnudip.datasystems24.net'
|
The solution is to assign a DNS name to your IP address and
|
||||||
target='_blank'>gnudip.datasystems24.net</a> or you may find free update
|
update the DNS name every time your IP is changed by your
|
||||||
URL based services on
|
Internet provider. Dynamic DNS allows you to push your current
|
||||||
<a href='http://freedns.afraid.org/' target='_blank'>
|
public IP address to an
|
||||||
freedns.afraid.org</a>
|
<a href='http://gnudip2.sourceforge.net/' target='_blank'> gnudip </a>
|
||||||
</br> </br>
|
server. Afterwards the Server will assign your DNS name with the
|
||||||
If your freedombox is connected behind some NAT router, don't forget
|
new IP and if someone from the internet asks for your DNS name
|
||||||
to add portforwarding (i.e. forward some standard ports like 80 and 443)
|
he will get your current IP answered.
|
||||||
to your freedombox device.
|
{% endblocktrans %}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
If you are looking for a free dynamic DNS account, you may find
|
||||||
|
a free GnuDIP service at <a href='http://gnudip.datasystems24.net'
|
||||||
|
target='_blank'>gnudip.datasystems24.net</a> or you may find
|
||||||
|
free update URL based services on
|
||||||
|
<a href='http://freedns.afraid.org/' target='_blank'>
|
||||||
|
freedns.afraid.org</a>
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
If your freedombox is connected behind some NAT router, don't forget
|
||||||
|
to add portforwarding (i.e. forward some standard ports like 80 and 443)
|
||||||
|
to your freedombox device.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -19,22 +19,25 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<form class="form" method="post">
|
<form class="form" method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
<noscript>
|
<noscript>
|
||||||
You have disabled Javascript. Dynamic form mode is disabled and
|
{% blocktrans trimmed %}
|
||||||
some helper functions may not work <br>
|
You have disabled Javascript. Dynamic form mode is disabled
|
||||||
(but the main functionality should work)
|
and some helper functions may not work (but the main
|
||||||
<br><hr>
|
functionality should work).
|
||||||
|
{% endblocktrans %}
|
||||||
</noscript>
|
</noscript>
|
||||||
|
|
||||||
{{ form|bootstrap }}
|
{{ form|bootstrap }}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Update setup"/>
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{% trans "Update setup" %}"/>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -18,25 +18,35 @@
|
|||||||
#
|
#
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
|
<h3>{% trans "NAT type" %}</h3>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<h3>NAT type</h3>
|
{% if nat_unchecked %}
|
||||||
{% if nat_unchecked %}
|
{% blocktrans trimmed %}
|
||||||
NAT type not detected yet, if you do not provide a "IP check URL" we will
|
NAT type not detected yet, if you do not provide a "IP check
|
||||||
not detect a NAT type.
|
URL" we will not detect a NAT type.
|
||||||
{% else %}
|
{% endblocktrans %}
|
||||||
{% if no_nat %}
|
|
||||||
Direct connection to the internet.
|
|
||||||
{% else %}
|
{% else %}
|
||||||
Behind NAT, this means that dynamic DNS service will poll the
|
{% if no_nat %}
|
||||||
"IP check URL" for changes (we need the "IP check URL" for this reason
|
{% trans "Direct connection to the internet." %}
|
||||||
- otherwise we will not detect IP changes).
|
{% else %}
|
||||||
It may take up to {{ timer }} minutes until we update your DNS entry in
|
{% blocktrans trimmed %}
|
||||||
case of WAN IP change.
|
Behind NAT, this means that dynamic DNS service will poll
|
||||||
|
the "IP check URL" for changes (we need the "IP check URL"
|
||||||
|
for this reason - otherwise we will not detect IP changes).
|
||||||
|
It may take up to {{ timer }} minutes until we update your
|
||||||
|
DNS entry in case of WAN IP change.
|
||||||
|
{% endblocktrans %}
|
||||||
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
|
||||||
<h3>Last update</h3>
|
|
||||||
{{ last_update }}
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<h3>{% trans "Last update" %}</h3>
|
||||||
|
|
||||||
|
<p>{{ last_update }}</p>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -18,77 +18,96 @@
|
|||||||
#
|
#
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h2>{{ title }}</h2>
|
<h2>{{ title }}</h2>
|
||||||
|
|
||||||
<p>Firewall is a network security system that controls the incoming
|
<p>
|
||||||
and outgoing network traffic on your {{ cfg.box_name }}. Keeping a
|
{% blocktrans trimmed %}
|
||||||
firewall enabled and properly configured reduces risk of security
|
Firewall is a network security system that controls the incoming
|
||||||
threat from the Internet.</p>
|
and outgoing network traffic on your {{ cfg.box_name }}. Keeping
|
||||||
|
a firewall enabled and properly configured reduces risk of
|
||||||
|
security threat from the Internet.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>The following is the current status:</p>
|
<p>{% trans "The following is the current status:" %}</p>
|
||||||
|
|
||||||
{% if firewall_status = 'not_running' %}
|
{% if firewall_status = 'not_running' %}
|
||||||
|
|
||||||
<p>Firewall daemon is not running. Please run it. Firewall comes
|
<p>
|
||||||
enabled by default on {{ cfg.box_name }}. On any Debian based system
|
{% blocktrans trimmed %}
|
||||||
(such as {{ cfg.box_name }}) you may run it using the command 'service
|
Firewall daemon is not running. Please run it. Firewall comes
|
||||||
firewalld start' or in case of a system with systemd 'systemctl start
|
enabled by default on {{ cfg.box_name }}. On any Debian based
|
||||||
firewalld'</p>
|
system (such as {{ cfg.box_name }}) you may run it using the
|
||||||
|
command 'service firewalld start' or in case of a system with
|
||||||
|
systemd 'systemctl start firewalld'
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<table class='table table-autowidth table-striped'>
|
<table class='table table-autowidth table-striped'>
|
||||||
<thead>
|
<thead>
|
||||||
<th>Service/Port</th>
|
<th>{% trans "Service/Port" %}</th>
|
||||||
<th>Status</th>
|
<th>{% trans "Status" %}</th>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for service in services %}
|
{% for service in services %}
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>{{ service.name }}</strong></td>
|
<td><strong>{{ service.name }}</strong></td>
|
||||||
<td>
|
<td>
|
||||||
{% if service.is_enabled %}
|
{% if service.is_enabled %}
|
||||||
<span class='label label-success'>Enabled</span>
|
<span class='label label-success'>
|
||||||
{% else %}
|
{% trans "Enabled" %}</span>
|
||||||
<span class='label label-warning'>Disabled</span>
|
{% else %}
|
||||||
{% endif %}
|
<span class='label label-warning'>
|
||||||
</td>
|
{% trans "Disabled" %}</span>
|
||||||
</tr>
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
{% for port in service.ports %}
|
{% for port in service.ports %}
|
||||||
<tr>
|
<tr>
|
||||||
<td class='cell-indented'><em>{{ port }}</em></td>
|
<td class='cell-indented'><em>{{ port }}</em></td>
|
||||||
<td>
|
<td>
|
||||||
{% if port in internal_enabled_services and port in external_enabled_services %}
|
{% if port in internal_enabled_services and port in external_enabled_services %}
|
||||||
<span class='label label-success'>Permitted</span>
|
<span class='label label-success'>
|
||||||
{% elif port in internal_enabled_services %}
|
{% trans "Permitted" %}</span>
|
||||||
<span class='label label-warning'>Permitted (internal only)</span>
|
{% elif port in internal_enabled_services %}
|
||||||
{% elif port in external_enabled_services %}
|
<span class='label label-warning'>
|
||||||
<span class='label label-warning'>Permitted (external only)</span>
|
{% trans "Permitted (internal only)" %}</span>
|
||||||
{% else %}
|
{% elif port in external_enabled_services %}
|
||||||
<span class='label label-danger'>Blocked</span>
|
<span class='label label-warning'>
|
||||||
{% endif %}
|
{% trans "Permitted (external only)" %}</span>
|
||||||
</td>
|
{% else %}
|
||||||
</tr>
|
<span class='label label-danger'>
|
||||||
{% endfor %}
|
{% trans "Blocked" %}</span>
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
{% endfor %}
|
<p>
|
||||||
|
<em>
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
The operation of the firewall is automatic. When you enable
|
||||||
|
a service it is automatically permitted in the firewall and
|
||||||
|
you disable a service is automatically disabled in the firewall.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</em>
|
||||||
|
</p>
|
||||||
|
|
||||||
</tbody>
|
{% endif %}
|
||||||
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p><em>The operation of the firewall is automatic. When you enable a
|
|
||||||
service it is automatically permitted in the firewall and you disable
|
|
||||||
a service is automatically disabled in the firewall.</em></p>
|
|
||||||
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -18,8 +18,9 @@
|
|||||||
#
|
#
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load static %}
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
{% load static %}
|
||||||
|
|
||||||
{% block page_head %}
|
{% block page_head %}
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
@ -46,14 +47,18 @@
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h3 class="text-center">
|
<h3 class="text-center">
|
||||||
Congratulations! Your FreedomBox is up and running!
|
{% trans "Congratulations! Your FreedomBox is up and running!" %}
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
<p class="text-center">Please provide the following basic
|
<p class="text-center">
|
||||||
information to complete the setup process.</p>
|
{% blocktrans trimmed %}
|
||||||
|
Please provide the following basic information to complete the
|
||||||
|
setup process.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<p class="text-center">
|
<p class="text-center">
|
||||||
<a href="{% url 'first_boot:state1' %}"
|
<a href="{% url 'first_boot:state1' %}"
|
||||||
class="btn btn-primary btn-large">Next</a>
|
class="btn btn-primary btn-large">{% trans "Next" %}</a>
|
||||||
</p>
|
</p>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -18,8 +18,9 @@
|
|||||||
#
|
#
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load static %}
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
{% load static %}
|
||||||
|
|
||||||
{% block add_nav_and_login %}
|
{% block add_nav_and_login %}
|
||||||
<ul class="nav navbar-nav navbar-right">
|
<ul class="nav navbar-nav navbar-right">
|
||||||
@ -35,17 +36,24 @@
|
|||||||
<div class="col-md-6 col-md-offset-3">
|
<div class="col-md-6 col-md-offset-3">
|
||||||
{% include 'messages.html' %}
|
{% include 'messages.html' %}
|
||||||
|
|
||||||
<h2>Administrator Account</h2>
|
<h2>{% trans "Administrator Account" %}</h2>
|
||||||
|
|
||||||
<p>Choose a username and password to access this web interface.
|
<p>
|
||||||
The password can be changed and other users can be added
|
{% blocktrans trimmed %}
|
||||||
later. An LDAP user with administrative privileges (sudo) is
|
Choose a username and password to access this web interface.
|
||||||
also created.</p>
|
The password can be changed and other users can be added
|
||||||
|
later. An LDAP user with administrative privileges (sudo) is
|
||||||
|
also created.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<form class="form" method="post">
|
<form class="form" method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
{{ form|bootstrap }}
|
{{ form|bootstrap }}
|
||||||
<input type="submit" class="btn btn-primary" value="Box it up!"/>
|
|
||||||
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{% trans "Box it up!" %}"/>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -19,34 +19,44 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content_row %}
|
{% block content_row %}
|
||||||
|
|
||||||
<div class="col-lg-6 col-lg-offset-3">
|
<div class="col-lg-6 col-lg-offset-3">
|
||||||
{% include 'messages.html' %}
|
{% include 'messages.html' %}
|
||||||
|
|
||||||
<h2>Setup Complete!</h2>
|
<h2>{% trans "Setup Complete!" %}</h2>
|
||||||
|
|
||||||
<p>FreedomBox setup is now complete. However, you should check
|
<p>
|
||||||
the network setup and modify it if necessary. Do not forget to
|
{% blocktrans trimmed %}
|
||||||
change the default Wi-Fi passwords.</p>
|
FreedomBox setup is now complete. However, you should check
|
||||||
|
the network setup and modify it if necessary. Do not forget
|
||||||
|
to change the default Wi-Fi passwords.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>To make your FreedomBox functional, you need some applications.
|
<p>
|
||||||
Applications will be installed the first time you access them.</p>
|
{% blocktrans trimmed %}
|
||||||
|
To make your FreedomBox functional, you need some
|
||||||
|
applications. Applications will be installed the first time
|
||||||
|
you access them.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<h3>Network Configuration</h3>
|
<h3>{% trans "Network Configuration" %}</h3>
|
||||||
|
|
||||||
{% include "connections_diagram.html" %}
|
{% include "connections_diagram.html" %}
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-6 text-center">
|
<div class="col-xs-6 text-center">
|
||||||
<a class="btn btn-lg btn-primary" href="{% url 'networks:index' %}">
|
<a class="btn btn-lg btn-primary" href="{% url 'networks:index' %}">
|
||||||
Go to Networks</a>
|
{% trans "Go to Networks" %}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-xs-6 text-center">
|
<div class="col-xs-6 text-center">
|
||||||
<a class="btn btn-lg btn-primary" href="{% url 'apps:index' %}">
|
<a class="btn btn-lg btn-primary" href="{% url 'apps:index' %}">
|
||||||
Go to Apps</a>
|
{% trans "Go to Apps" %}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -19,41 +19,62 @@
|
|||||||
#
|
#
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<img src="{% static 'theme/img/freedombox-logo-250px.png' %}"
|
<img src="{% static 'theme/img/freedombox-logo-250px.png' %}"
|
||||||
class="main-graphic" />
|
class="main-graphic" />
|
||||||
|
|
||||||
<p>FreedomBox is a community project to develop, design and promote
|
<p>
|
||||||
personal servers running free software for private, personal
|
{% blocktrans trimmed %}
|
||||||
communications. It is a networking appliance designed to allow
|
FreedomBox is a community project to develop, design and promote
|
||||||
interfacing with the rest of the Internet under conditions of
|
personal servers running free software for private, personal
|
||||||
protected privacy and data security. It hosts applications such as
|
communications. It is a networking appliance designed to allow
|
||||||
blog, wiki, website, social network, email, web proxy and a Tor relay
|
interfacing with the rest of the Internet under conditions of
|
||||||
on a device that can replace your Wi-Fi router so that your data stays
|
protected privacy and data security. It hosts applications such
|
||||||
with you.</p>
|
as blog, wiki, website, social network, email, web proxy and a
|
||||||
|
Tor relay on a device that can replace your Wi-Fi router so that
|
||||||
|
your data stays with you.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>We live in a world where our use of the network is mediated by
|
<p>
|
||||||
those who often do not have our best interests at heart. By building
|
{% blocktrans trimmed %}
|
||||||
software that does not rely on a central service, we can regain
|
We live in a world where our use of the network is mediated by
|
||||||
control and privacy. By keeping our data in our homes, we gain useful
|
those who often do not have our best interests at heart. By
|
||||||
legal protections over it. By giving back power to the users over
|
building software that does not rely on a central service, we
|
||||||
their networks and machines, we are returning the Internet to its
|
can regain control and privacy. By keeping our data in our
|
||||||
intended peer-to-peer architecture.</p>
|
homes, we gain useful legal protections over it. By giving back
|
||||||
|
power to the users over their networks and machines, we are
|
||||||
|
returning the Internet to its intended peer-to-peer
|
||||||
|
architecture.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>There are a number of projects working to realize a future of
|
<p>
|
||||||
distributed services; FreedomBox aims to bring them all together in a
|
{% blocktrans trimmed %}
|
||||||
convenient package.</p>
|
There are a number of projects working to realize a future of
|
||||||
|
distributed services; FreedomBox aims to bring them all together
|
||||||
|
in a convenient package.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>For more information about the FreedomBox project, see the
|
<p>
|
||||||
<a href="https://wiki.debian.org/FreedomBox">FreedomBox Wiki</a>.</p>
|
{% blocktrans trimmed %}
|
||||||
|
For more information about the FreedomBox project, see the
|
||||||
|
<a href="https://wiki.debian.org/FreedomBox">FreedomBox Wiki</a>.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<p><a class="btn btn-primary btn-lg"
|
<p><a class="btn btn-primary btn-lg"
|
||||||
href="https://wiki.debian.org/FreedomBox" target="_blank">Learn more
|
href="https://wiki.debian.org/FreedomBox"
|
||||||
»</a></p>
|
target="_blank">{% trans "Learn more »" %}</a></p>
|
||||||
|
|
||||||
<p style='margin-top:30px'>
|
<p style='margin-top:30px'>
|
||||||
You are running Plinth version {{ version }}.
|
{% blocktrans trimmed %}
|
||||||
</p>
|
You are running Plinth version {{ version }}.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -18,24 +18,42 @@
|
|||||||
#
|
#
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h2>Help</h2>
|
<h2>{% trans "Help" %}</h2>
|
||||||
|
|
||||||
<p>The <a href={% url 'help:manual' %}>FreedomBox Manual</a> is the
|
<p>
|
||||||
best place to start for information regarding {{ cfg.box_name }}.</p>
|
{% url 'help:manual' as manual_url %}
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
The <a href="{{ manual_url }}">FreedomBox Manual</a> is the
|
||||||
|
best place to start for information regarding {{ cfg.box_name }}.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<p><a href="http://wiki.debian.org/FreedomBox"
|
<p>
|
||||||
target="_blank">FreedomBox project wiki </a> contains further
|
{% blocktrans trimmed %}
|
||||||
information.</p>
|
<a href="http://wiki.debian.org/FreedomBox" target="_blank">
|
||||||
|
FreedomBox project wiki </a> contains further information.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>To seek help from FreedomBox community, queries may be posted on
|
<p>
|
||||||
the
|
{% blocktrans trimmed %}
|
||||||
<a href="https://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss">
|
To seek help from FreedomBox community, queries may be posted on
|
||||||
mailing list</a>. The list archives also contain information about
|
the
|
||||||
problems faced by other users and possible solutions.</p>
|
<a href="https://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss">
|
||||||
|
mailing list</a>. The list archives also contain information
|
||||||
|
about problems faced by other users and possible solutions.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>Many FreedomBox contributors and users are also available on the
|
<p>
|
||||||
#freedombox channel of the irc.oftc.net IRC network.</p>
|
{% blocktrans trimmed %}
|
||||||
|
Many FreedomBox contributors and users are also available on the
|
||||||
|
#freedombox channel of the irc.oftc.net IRC network.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -18,6 +18,8 @@
|
|||||||
#
|
#
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block page_head %}
|
{% block page_head %}
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
dd {
|
dd {
|
||||||
@ -29,4 +31,3 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
{{ content|safe }}
|
{{ content|safe }}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|||||||
@ -19,22 +19,28 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<p>When enabled, the blogs and wikis will be available
|
<p>
|
||||||
from <a href="/ikiwiki">/ikiwiki</a>.</p>
|
{% blocktrans trimmed %}
|
||||||
|
When enabled, the blogs and wikis will be available
|
||||||
|
from <a href="/ikiwiki">/ikiwiki</a>.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
{% include "diagnostics_button.html" with module="ikiwiki" %}
|
{% include "diagnostics_button.html" with module="ikiwiki" %}
|
||||||
|
|
||||||
<h3>Configuration</h3>
|
<h3>{% trans "Configuration" %}</h3>
|
||||||
|
|
||||||
<form class="form" method="post">
|
<form class="form" method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
{{ form|bootstrap }}
|
{{ form|bootstrap }}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Update setup"/>
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{% trans "Update setup" %}"/>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -19,15 +19,17 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<form class="form" method="post">
|
<form class="form" method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
{{ form|bootstrap }}
|
{{ form|bootstrap }}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Update setup"/>
|
<input type="submit" class="btn btn-primary"
|
||||||
</form>
|
value="{% trans "Update setup" %}"/>
|
||||||
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -19,23 +19,31 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h3>Delete Wiki/Blog <em>{{ name }}</em></h3>
|
<h3>
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
Delete Wiki/Blog <em>{{ name }}</em>
|
||||||
|
{% endblocktrans %}
|
||||||
|
</h3>
|
||||||
|
|
||||||
<p>This action will remove all the posts, pages and comments
|
<p>
|
||||||
including revision history. Delete this wiki/blog
|
{% blocktrans trimmed %}
|
||||||
permanently?</p>
|
This action will remove all the posts, pages and comments
|
||||||
|
including revision history. Delete this wiki/blog permanently?
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<form class="form" method="post">
|
<form class="form" method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-md btn-primary"
|
<input type="submit" class="btn btn-md btn-primary"
|
||||||
value="Delete {{ name }}"/>
|
value="{% blocktrans %}Delete {{ name }}{% endblocktrans %}"/>
|
||||||
|
|
||||||
<a href="{% url 'ikiwiki:manage' %}" role="button"
|
<a href="{% url 'ikiwiki:manage' %}" role="button"
|
||||||
class="btn btn-md btn-primary">Cancel</a>
|
class="btn btn-md btn-primary">{% trans "Cancel" %}</a>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -19,6 +19,7 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block page_head %}
|
{% block page_head %}
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
@ -37,28 +38,29 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
{% if not sites %}
|
{% if not sites %}
|
||||||
<p>No wikis or blogs available.</p>
|
<p>{% trans "No wikis or blogs available." %}</p>
|
||||||
<p>
|
<p>
|
||||||
<a class="btn btn-primary btn-md"
|
<a class="btn btn-primary btn-md"
|
||||||
href="{% url 'ikiwiki:create' %}">Create a Wiki or Blog</a>
|
href="{% url 'ikiwiki:create' %}">
|
||||||
|
{% trans "Create a Wiki or Blog" %}
|
||||||
|
</a>
|
||||||
</p>
|
</p>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="list-group">
|
<div class="list-group">
|
||||||
{% for site in sites %}
|
{% for site in sites %}
|
||||||
<div class="list-group-item clearfix">
|
<div class="list-group-item clearfix">
|
||||||
<a href="{% url 'ikiwiki:delete' site %}"
|
<a href="{% url 'ikiwiki:delete' site %}"
|
||||||
class="btn btn-default btn-sm pull-right"
|
class="btn btn-default btn-sm pull-right"
|
||||||
role="button" title="Delete site {{ site }}">
|
role="button"
|
||||||
|
title="{% blocktrans %}Delete site {{ site }}{% endblocktrans %}">
|
||||||
<span class="glyphicon glyphicon-trash"
|
<span class="glyphicon glyphicon-trash"
|
||||||
aria-hidden="true"></span>
|
aria-hidden="true"></span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a class="wiki-label"
|
<a class="wiki-label" href="/ikiwiki/{{ site }}"
|
||||||
href="/ikiwiki/{{ site }}"
|
title="{% blocktrans %}Go to site {{ site }}{% endblocktrans %}">
|
||||||
title="Go to site {{ site }}">
|
|
||||||
{{ site }}
|
{{ site }}
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -19,39 +19,52 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h2>Voice Chat (Mumble)</h2>
|
<h2>{% trans "Voice Chat (Mumble)" %}</h2>
|
||||||
|
|
||||||
<p>Mumble is an open source, low-latency, encrypted, high quality voice chat
|
<p>
|
||||||
software.</p>
|
{% blocktrans trimmed %}
|
||||||
|
Mumble is an open source, low-latency, encrypted, high quality
|
||||||
|
voice chat software.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>You can connect to your Mumble server on the regular Mumble port 64738.
|
<p>
|
||||||
<a href="http://mumble.info">Clients</a> to connect to Mumble from your
|
{% blocktrans trimmed %}
|
||||||
desktop and Android devices are available.</p>
|
You can connect to your Mumble server on the regular Mumble port 64738.
|
||||||
|
<a href="http://mumble.info">Clients</a> to connect to Mumble
|
||||||
|
from your desktop and Android devices are available.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<h3>Status</h3>
|
<h3>{% trans "Status" %}</h3>
|
||||||
|
|
||||||
<p class="running-status-parent">
|
<p class="running-status-parent">
|
||||||
{% if status.is_running %}
|
{% if status.is_running %}
|
||||||
<span class="running-status active"></span> Mumble server is running
|
<span class="running-status active"></span>
|
||||||
{% else %}
|
{% trans "Mumble server is running" %}
|
||||||
<span class="running-status inactive"></span> Mumble server is not running
|
{% else %}
|
||||||
{% endif %}
|
<span class="running-status inactive"></span>
|
||||||
</p>
|
{% trans "Mumble server is not running" %}
|
||||||
{% include "diagnostics_button.html" with module="mumble" %}
|
{% endif %}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
{% include "diagnostics_button.html" with module="mumble" %}
|
||||||
|
|
||||||
|
|
||||||
<h3>Configuration</h3>
|
<h3>{% trans "Configuration" %}</h3>
|
||||||
|
|
||||||
<form class="form" method="post">
|
<form class="form" method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
{{ form|bootstrap }}
|
{{ form|bootstrap }}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Update setup"/>
|
<input type="submit" class="btn btn-primary"
|
||||||
</form>
|
value="{% trans "Update setup" %}"/>
|
||||||
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -18,6 +18,10 @@
|
|||||||
#
|
#
|
||||||
# ToDo: if connection is disabled, no information are visible anymore (Bug)
|
# ToDo: if connection is disabled, no information are visible anymore (Bug)
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block page_head %}
|
{% block page_head %}
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
.list-group-item .btn {
|
.list-group-item .btn {
|
||||||
@ -28,123 +32,131 @@
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% load bootstrap %}
|
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<div>
|
<div>
|
||||||
<a href="{% url 'networks:edit' connection.uuid %}"
|
<a href="{% url 'networks:edit' connection.uuid %}"
|
||||||
class="btn btn-primary" role="button"
|
class="btn btn-primary" role="button"
|
||||||
title="Edit connection">Edit</a>
|
title="{% trans "Edit connection" %}">{% trans "Edit" %}</a>
|
||||||
|
|
||||||
{% if active_connection %}
|
{% if active_connection %}
|
||||||
<form class="form form-inline" method="post"
|
<form class="form form-inline" method="post"
|
||||||
action="{% url 'networks:deactivate' connection.uuid %}">
|
action="{% url 'networks:deactivate' connection.uuid %}">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<button class="btn btn-default" type="submit">Deactivate</button>
|
<button class="btn btn-default" type="submit">
|
||||||
|
{% trans "Deactivate" %}</button>
|
||||||
</form>
|
</form>
|
||||||
{% else %}
|
{% else %}
|
||||||
<form class="form form-inline" method="post"
|
<form class="form form-inline" method="post"
|
||||||
action="{% url 'networks:activate' connection.uuid %}">
|
action="{% url 'networks:activate' connection.uuid %}">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<button class="btn btn-default" type="submit">Activate</button>
|
<button class="btn btn-default" type="submit">
|
||||||
|
{% trans "Activate" %}</button>
|
||||||
</form>
|
</form>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<a href="{% url 'networks:delete' connection.uuid %}"
|
<a href="{% url 'networks:delete' connection.uuid %}"
|
||||||
class="btn btn-default" role="button"
|
class="btn btn-default" role="button"
|
||||||
title="Delete connection">Delete</a>
|
title="{% trans "Delete connection" %}">{% trans "Delete" %}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h3>Connection</h3>
|
<h3>{% trans "Connection" %}</h3>
|
||||||
|
|
||||||
<div class="list-group">
|
<div class="list-group">
|
||||||
{% if connection.primary %}
|
{% if connection.primary %}
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
Primary connection
|
{% trans "Primary connection" %}
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
<span class="label label-success">yes</span>
|
<span class="label label-success">{% trans "yes" %}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
Name
|
{% trans "Name" %}
|
||||||
<div class="pull-right">{{ connection.id }}</div>
|
<div class="pull-right">{{ connection.id }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% if device %}
|
{% if device %}
|
||||||
<h3>Device</h3>
|
<h3>{% trans "Device" %}</h3>
|
||||||
|
|
||||||
<div class="list-group">
|
<div class="list-group">
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
State
|
{% trans "State" %}
|
||||||
<span class="pull-right">{{ device.state }}</span>
|
<span class="pull-right">{{ device.state }}</span>
|
||||||
</div>
|
</div>
|
||||||
{% if device.state_reason != 'none' %}
|
{% if device.state_reason != 'none' %}
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
State reason
|
{% trans "State reason" %}
|
||||||
<span class="pull-right">{{ device.state_reason }}</span>
|
<span class="pull-right">{{ device.state_reason }}</span>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
Type
|
{% trans "Type" %}
|
||||||
<span class="pull-right">{{ device.type }}</span>
|
<span class="pull-right">{{ device.type }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
MAC address
|
{% trans "MAC address" %}
|
||||||
<span class="pull-right">{{ device.hw_address }}</span>
|
<span class="pull-right">{{ device.hw_address }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
Interface
|
{% trans "Interface" %}
|
||||||
<span class="pull-right">{{ device.interface_name }}</span>
|
<span class="pull-right">{{ device.interface_name }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
Description
|
{% trans "Description" %}
|
||||||
<span class="pull-right">{{ device.description }}</span>
|
<span class="pull-right">{{ device.description }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<h3>Physical Link</h3>
|
<h3>{% trans "Physical Link" %}</h3>
|
||||||
|
|
||||||
<div class="list-group">
|
<div class="list-group">
|
||||||
{% if device.ethernet %}
|
{% if device.ethernet %}
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
Link state
|
{% trans "Link state" %}
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
{% if device.ethernet.carrier %}
|
{% if device.ethernet.carrier %}
|
||||||
<span class='label label-success'>cable is connected</span>
|
<span class='label label-success'>
|
||||||
|
{% trans "cable is connected" %}</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
<span class='label label-warning'>please check cable</span>
|
<span class='label label-warning'>
|
||||||
|
{% trans "please check cable" %}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
Speed
|
{% trans "Speed" %}
|
||||||
<span class="pull-right">{{ device.ethernet.speed }} Mbit/s</span>
|
<span class="pull-right">
|
||||||
|
{% blocktrans %}{{ device.ethernet.speed }} Mbit/s{% endblocktrans %}
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if connection.type == "802-11-wireless" %}
|
{% if connection.type == "802-11-wireless" %}
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
SSID
|
{% trans "SSID" %}
|
||||||
<span class="pull-right">{{ connection.wireless.ssid }}</span>
|
<span class="pull-right">{{ connection.wireless.ssid }}</span>
|
||||||
</div>
|
</div>
|
||||||
{% if device %}
|
{% if device %}
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
Speed
|
{% trans "Speed" %}
|
||||||
<span class="pull-right">{{ device.wireless.bitrate }} Mbit/s</span>
|
<span class="pull-right">
|
||||||
|
{% blocktrans %}{{ device.wireless.bitrate }} Mbit/s{% endblocktrans %}
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
Mode
|
{% trans "Mode" %}
|
||||||
<span class="pull-right">{{ device.wireless.mode }}</span>
|
<span class="pull-right">{{ device.wireless.mode }}</span>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if access_point.channel %}
|
{% if access_point.channel %}
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
Signal strength
|
{% trans "Signal strength" %}
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
<span class="btn btn-primary btn-xs">
|
<span class="btn btn-primary btn-xs">
|
||||||
{{ access_point.strength }}%
|
{{ access_point.strength }}%
|
||||||
@ -154,7 +166,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% if access_point.channel %}
|
{% if access_point.channel %}
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
Channel
|
{% trans "Channel" %}
|
||||||
<span class="pull-right">{{ access_point.channel }}</span>
|
<span class="pull-right">{{ access_point.channel }}</span>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@ -162,19 +174,19 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% if active_connection %}
|
{% if active_connection %}
|
||||||
<h3>IPv4</h3>
|
<h3>{% trans "IPv4" %}</h3>
|
||||||
|
|
||||||
<div class="list-group">
|
<div class="list-group">
|
||||||
{% if connection.ipv4.method %}
|
{% if connection.ipv4.method %}
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
Method
|
{% trans "Method" %}
|
||||||
<span class="pull-right">{{ connection.ipv4.method }}</span>
|
<span class="pull-right">{{ connection.ipv4.method }}</span>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% for address in device.ip4.addresses %}
|
{% for address in device.ip4.addresses %}
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
IP address
|
{% trans "IP address" %}
|
||||||
<span class="pull-right">
|
<span class="pull-right">
|
||||||
{{ address.address }}/{{ address.prefix }}
|
{{ address.address }}/{{ address.prefix }}
|
||||||
</span>
|
</span>
|
||||||
@ -183,76 +195,76 @@
|
|||||||
|
|
||||||
{% if device.ip4.gateway %}
|
{% if device.ip4.gateway %}
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
Gateway
|
{% trans "Gateway" %}
|
||||||
<span class="pull-right">{{ device.ip4.gateway }}</span>
|
<span class="pull-right">{{ device.ip4.gateway }}</span>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% for server in device.ip4.nameservers %}
|
{% for server in device.ip4.nameservers %}
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
DNS server
|
{% trans "DNS server" %}
|
||||||
<span class="pull-right">{{ server }}</span>
|
<span class="pull-right">{{ server }}</span>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{% if active_connection.ip4.default %}
|
{% if active_connection.ip4.default %}
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
Default
|
{% trans "Default" %}
|
||||||
<span class="pull-right">yes</span>
|
<span class="pull-right">{% trans "yes" %}</span>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h3>IPv6</h3>
|
<h3>{% trans "IPv6" %}</h3>
|
||||||
|
|
||||||
<div class="list-group">
|
<div class="list-group">
|
||||||
{% if connection.ipv6.method %}
|
{% if connection.ipv6.method %}
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
Method
|
{% trans "Method" %}
|
||||||
<span class="pull-right">{{ connection.ipv6.method }}</span>
|
<span class="pull-right">{{ connection.ipv6.method }}</span>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% for address in device.ip6.addresses %}
|
{% for address in device.ip6.addresses %}
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
IP address
|
{% trans "IP address" %}
|
||||||
<span class="pull-right">{{ address.address }}/{{ address.prefix }}</span>
|
<span class="pull-right">{{ address.address }}/{{ address.prefix }}</span>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{% if device.ip6.gateway %}
|
{% if device.ip6.gateway %}
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
Gateway
|
{% trans "Gateway" %}
|
||||||
<span class="pull-right">{{ device.ip6.gateway }}</span>
|
<span class="pull-right">{{ device.ip6.gateway }}</span>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% for server in device.ip6.nameservers %}
|
{% for server in device.ip6.nameservers %}
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
DNS server
|
{% trans "DNS server" %}
|
||||||
<span class="pull-right">{{ server }}</span>
|
<span class="pull-right">{{ server }}</span>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{% if active_connection.ip6.default %}
|
{% if active_connection.ip6.default %}
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
Default
|
{% trans "Default" %}
|
||||||
<span class="pull-right">yes</span>
|
<span class="pull-right">{% trans "yes" %}</span>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<h3>Status</h3>
|
<h3>{% trans "Status" %}</h3>
|
||||||
|
|
||||||
<p>This connection is not active.</p>
|
<p>{% trans "This connection is not active." %}</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<h3>Security</h3>
|
<h3>{% trans "Security" %}</h3>
|
||||||
|
|
||||||
{% if connection.zone == "internal" %}
|
{% if connection.zone == "internal" %}
|
||||||
<div class="list-group">
|
<div class="list-group">
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
Firewall zone
|
{% trans "Firewall zone" %}
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
<span class="label label-success">{{ connection.zone }}</span>
|
<span class="label label-success">{{ connection.zone }}</span>
|
||||||
</div>
|
</div>
|
||||||
@ -261,15 +273,18 @@
|
|||||||
|
|
||||||
<div class="alert alert-info">
|
<div class="alert alert-info">
|
||||||
<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
|
<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
|
||||||
This interface should be connected to local network/machine. If you
|
{% blocktrans trimmed %}
|
||||||
connect this interface to a public network, services meant to
|
This interface should be connected to local
|
||||||
be available only internally will become available externally.
|
network/machine. If you connect this interface to a
|
||||||
This is a security risk.
|
public network, services meant to be available only
|
||||||
|
internally will become available externally. This is a
|
||||||
|
security risk.
|
||||||
|
{% endblocktrans %}
|
||||||
</div>
|
</div>
|
||||||
{% elif connection.zone == "external" %}
|
{% elif connection.zone == "external" %}
|
||||||
<div class="list-group">
|
<div class="list-group">
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
Firewall zone
|
{% trans "Firewall zone" %}
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
<span class="label label-warning">{{ connection.zone }}</span>
|
<span class="label label-warning">{{ connection.zone }}</span>
|
||||||
</div>
|
</div>
|
||||||
@ -278,14 +293,17 @@
|
|||||||
|
|
||||||
<div class="alert alert-info">
|
<div class="alert alert-info">
|
||||||
<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
|
<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
|
||||||
This interface should receive your Internet connection. If
|
{% blocktrans trimmed %}
|
||||||
you connect it your a local network/machine, many services
|
This interface should receive your Internet connection.
|
||||||
meant to available only internally will not be available.
|
If you connect it your a local network/machine, many
|
||||||
|
services meant to available only internally will not be
|
||||||
|
available.
|
||||||
|
{% endblocktrans %}
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="list-group">
|
<div class="list-group">
|
||||||
<div class="list-group-item">
|
<div class="list-group-item">
|
||||||
Firewall zone
|
{% trans "Firewall zone" %}
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
<span class="label label-danger">{{ connection.zone }}</span>
|
<span class="label label-danger">{{ connection.zone }}</span>
|
||||||
</div>
|
</div>
|
||||||
@ -294,10 +312,13 @@
|
|||||||
|
|
||||||
<div class="alert alert-danger">
|
<div class="alert alert-danger">
|
||||||
<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
|
<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
|
||||||
This interface is not maintained by FreedomBox. Its security
|
{% blocktrans trimmed %}
|
||||||
status is unknown to FreedomBox. Many FreedomBox services may
|
This interface is not maintained by FreedomBox. Its
|
||||||
not be available on this interface. It is recommended that
|
security status is unknown to FreedomBox. Many FreedomBox
|
||||||
you deactivate/delete this connection and re-configure it.
|
services may not be available on this interface. It is
|
||||||
|
recommended that you deactivate/delete this connection and
|
||||||
|
re-configure it.
|
||||||
|
{% endblocktrans %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -19,6 +19,7 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
@ -29,8 +30,8 @@
|
|||||||
|
|
||||||
{{ form|bootstrap }}
|
{{ form|bootstrap }}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Create..."/>
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{% trans "Create..." %}"/>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -19,6 +19,7 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
@ -29,8 +30,8 @@
|
|||||||
|
|
||||||
{{ form|bootstrap }}
|
{{ form|bootstrap }}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Create Connection"/>
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{% trans "Create Connection" %}"/>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -19,12 +19,13 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h3>Delete Connection <em>{{ name }}</em></h3>
|
<h3>{% blocktrans %}Delete Connection <em>{{ name }}</em>{% endblocktrans %}</h3>
|
||||||
|
|
||||||
<p>Delete connection permanently?</p>
|
<p>{% trans "Delete connection permanently?" %}</p>
|
||||||
|
|
||||||
<form class="form" method="post">
|
<form class="form" method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
@ -33,7 +34,7 @@
|
|||||||
value="Delete {{ name }}"/>
|
value="Delete {{ name }}"/>
|
||||||
|
|
||||||
<a href="{% url 'networks:index' %}" role="button"
|
<a href="{% url 'networks:index' %}" role="button"
|
||||||
class="btn btn-md btn-primary">Cancel</a>
|
class="btn btn-md btn-primary">{% trans "Cancel" %}</a>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -18,6 +18,7 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load static %}
|
{% load static %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
.connection-diagram {
|
.connection-diagram {
|
||||||
@ -61,28 +62,31 @@
|
|||||||
<div class="row connection-diagram">
|
<div class="row connection-diagram">
|
||||||
<div class="col-sm-2">
|
<div class="col-sm-2">
|
||||||
<img src="{% static 'theme/img/network-internet.svg' %}"
|
<img src="{% static 'theme/img/network-internet.svg' %}"
|
||||||
class="col-image network-entity" alt="Internet"/>
|
class="col-image network-entity" alt="{% trans "Internet" %}"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-3">
|
<div class="col-sm-3">
|
||||||
<img src="{% static 'theme/img/network-spacing.svg' %}"
|
<img src="{% static 'theme/img/network-spacing.svg' %}"
|
||||||
class="col-image network-spacing hidden-xs" alt="Spacing"/>
|
class="col-image network-spacing hidden-xs"
|
||||||
|
alt="{% trans "Spacing" %}"/>
|
||||||
<img src="{% static 'theme/img/network-connection.svg' %}"
|
<img src="{% static 'theme/img/network-connection.svg' %}"
|
||||||
class="col-image network-connection hidden-xs" alt="Connection"/>
|
class="col-image network-connection hidden-xs"
|
||||||
|
alt="{% trans "Connection" %}"/>
|
||||||
<img src="{% static 'theme/img/network-connection-vertical.svg' %}"
|
<img src="{% static 'theme/img/network-connection-vertical.svg' %}"
|
||||||
class="network-connection-vertical visible-xs-block" alt="Connection"/>
|
class="network-connection-vertical visible-xs-block"
|
||||||
|
alt="{% trans "Connection" %}"/>
|
||||||
<div class="connection-list">
|
<div class="connection-list">
|
||||||
<p class="connection-list-heading">External</p>
|
<p class="connection-list-heading">{% trans "External" %}</p>
|
||||||
{% for connection in connections %}
|
{% for connection in connections %}
|
||||||
{% if connection.interface_name and connection.is_active and connection.zone == 'external' %}
|
{% if connection.interface_name and connection.is_active and connection.zone == 'external' %}
|
||||||
{% if connection.type == '802-3-ethernet' %}
|
{% if connection.type == '802-3-ethernet' %}
|
||||||
<img src="{% static 'theme/img/network-ethernet.svg' %}"
|
<img src="{% static 'theme/img/network-ethernet.svg' %}"
|
||||||
class="network-type-icon" alt="Ethernet"/>
|
class="network-type-icon" alt="{% trans "Ethernet" %}"/>
|
||||||
{% elif connection.type == '802-11-wireless' %}
|
{% elif connection.type == '802-11-wireless' %}
|
||||||
<img src="{% static 'theme/img/network-wireless.svg' %}"
|
<img src="{% static 'theme/img/network-wireless.svg' %}"
|
||||||
class="network-type-icon" alt="Wi-Fi"/>
|
class="network-type-icon" alt="{% trans "Wi-Fi" %}"/>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a href="{% url 'networks:show' connection.uuid %}"
|
<a href="{% url 'networks:show' connection.uuid %}"
|
||||||
title="Show connection {{ connection.name }}">
|
title="{% blocktrans %}Show connection {{ connection.name }}{% endblocktrans %}">
|
||||||
{{ connection.name }} ({{ connection.interface_name }})</a>
|
{{ connection.name }} ({{ connection.interface_name }})</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
@ -90,37 +94,40 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-sm-2">
|
<div class="col-sm-2">
|
||||||
<img src="{% static 'theme/img/network-freedombox.svg' %}"
|
<img src="{% static 'theme/img/network-freedombox.svg' %}"
|
||||||
class="col-image network-entity" alt="FreedomBox"/>
|
class="col-image network-entity" alt="{{ cfg.box_name }}"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-3">
|
<div class="col-sm-3">
|
||||||
<img src="{% static 'theme/img/network-spacing.svg' %}"
|
<img src="{% static 'theme/img/network-spacing.svg' %}"
|
||||||
class="col-image network-spacing hidden-xs" alt="Spacing"/>
|
class="col-image network-spacing hidden-xs"
|
||||||
|
alt="{% trans "Spacing" %}"/>
|
||||||
<img src="{% static 'theme/img/network-connection.svg' %}"
|
<img src="{% static 'theme/img/network-connection.svg' %}"
|
||||||
class="col-image network-connection hidden-xs" alt="Connection"/>
|
class="col-image network-connection hidden-xs"
|
||||||
|
alt="{% trans "Connection" %}"/>
|
||||||
<div class="connection-list">
|
<div class="connection-list">
|
||||||
<p class="connection-list-heading">Internal</p>
|
<p class="connection-list-heading">{% trans "Internal" %}</p>
|
||||||
{% for connection in connections %}
|
{% for connection in connections %}
|
||||||
{% if connection.interface_name and connection.is_active and connection.zone == 'internal' %}
|
{% if connection.interface_name and connection.is_active and connection.zone == 'internal' %}
|
||||||
<p>
|
<p>
|
||||||
{% if connection.type == '802-3-ethernet' %}
|
{% if connection.type == '802-3-ethernet' %}
|
||||||
<img src="{% static 'theme/img/network-ethernet.svg' %}"
|
<img src="{% static 'theme/img/network-ethernet.svg' %}"
|
||||||
class="network-type-icon" alt="Ethernet"/>
|
class="network-type-icon" alt="{% trans "Ethernet" %}"/>
|
||||||
{% elif connection.type == '802-11-wireless' %}
|
{% elif connection.type == '802-11-wireless' %}
|
||||||
<img src="{% static 'theme/img/network-wireless.svg' %}"
|
<img src="{% static 'theme/img/network-wireless.svg' %}"
|
||||||
class="network-type-icon" alt="Wi-Fi"/>
|
class="network-type-icon" alt="{% trans "Wi-Fi" %}"/>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a href="{% url 'networks:show' connection.uuid %}"
|
<a href="{% url 'networks:show' connection.uuid %}"
|
||||||
title="Show connection {{ connection.name }}">
|
title="{% blocktrans %}Show connection {{ connection.name }}{% endblocktrans %}">
|
||||||
{{ connection.name }} ({{ connection.interface_name }})</a>
|
{{ connection.name }} ({{ connection.interface_name }})</a>
|
||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
<img src="{% static 'theme/img/network-connection-vertical.svg' %}"
|
<img src="{% static 'theme/img/network-connection-vertical.svg' %}"
|
||||||
class="network-connection-vertical visible-xs-block" alt="Connection"/>
|
class="network-connection-vertical visible-xs-block"
|
||||||
|
alt="{% trans "Connection" %}"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-2">
|
<div class="col-sm-2">
|
||||||
<img src="{% static 'theme/img/network-computer.svg' %}"
|
<img src="{% static 'theme/img/network-computer.svg' %}"
|
||||||
class="col-image network-entity" alt="Computer"/>
|
class="col-image network-entity" alt="{% trans "Computer" %}"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -19,6 +19,7 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
@ -29,8 +30,8 @@
|
|||||||
|
|
||||||
{{ form|bootstrap }}
|
{{ form|bootstrap }}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Edit Connection"/>
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{% trans "Edit Connection" %}"/>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -19,6 +19,7 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block page_head %}
|
{% block page_head %}
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
@ -62,7 +63,8 @@
|
|||||||
<div class="list-group-item clearfix">
|
<div class="list-group-item clearfix">
|
||||||
<a href="{% url 'networks:delete' connection.uuid %}"
|
<a href="{% url 'networks:delete' connection.uuid %}"
|
||||||
class="btn btn-default btn-sm pull-right"
|
class="btn btn-default btn-sm pull-right"
|
||||||
role="button" title="Delete connection {{ connection.name }}">
|
role="button"
|
||||||
|
title="{% blocktrans %}Delete connection {{ connection.name }}{% endblocktrans %}">
|
||||||
<span class="glyphicon glyphicon-trash"
|
<span class="glyphicon glyphicon-trash"
|
||||||
aria-hidden="true"></span>
|
aria-hidden="true"></span>
|
||||||
</a>
|
</a>
|
||||||
@ -73,7 +75,7 @@
|
|||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
<button type="submit" class="btn btn-default btn-sm">
|
<button type="submit" class="btn btn-default btn-sm">
|
||||||
Deactivate</button>
|
{% trans "Deactivate" %}</button>
|
||||||
</form>
|
</form>
|
||||||
{% else %}
|
{% else %}
|
||||||
<form class="form pull-right" method="post"
|
<form class="form pull-right" method="post"
|
||||||
@ -81,16 +83,16 @@
|
|||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
<button type="submit" class="btn btn-default btn-sm">
|
<button type="submit" class="btn btn-default btn-sm">
|
||||||
Activate</button>
|
{% trans "Activate" %}</button>
|
||||||
</form>
|
</form>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if connection.is_active %}
|
{% if connection.is_active %}
|
||||||
<span class="label label-success connection-status-label">
|
<span class="label label-success connection-status-label">
|
||||||
Active</span>
|
{% trans "Active" %}</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
<span class="label label-warning connection-status-label">
|
<span class="label label-warning connection-status-label">
|
||||||
Inactive</span>
|
{% trans "Inactive" %}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<a class="connection-show-label"
|
<a class="connection-show-label"
|
||||||
|
|||||||
@ -19,6 +19,7 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
@ -29,8 +30,8 @@
|
|||||||
|
|
||||||
{{ form|bootstrap }}
|
{{ form|bootstrap }}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Create..."/>
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{% trans "Create..." %}"/>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -19,6 +19,7 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
@ -26,19 +27,19 @@
|
|||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div class="list-group">
|
<div class="list-group">
|
||||||
{% for access_point in access_points %}
|
{% for access_point in access_points %}
|
||||||
<div class="list-group-item clearfix">
|
<div class="list-group-item clearfix">
|
||||||
{% if access_point.ssid %}
|
{% if access_point.ssid %}
|
||||||
<a display="inline-block" width="40%"
|
<a display="inline-block" width="40%"
|
||||||
href="{% url 'networks:add_wifi' access_point.ssid access_point.interface_name %}">
|
href="{% url 'networks:add_wifi' access_point.ssid access_point.interface_name %}">
|
||||||
{{ access_point.ssid }}
|
{{ access_point.ssid }}
|
||||||
</a>
|
</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
--
|
--
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<span class="btn btn-primary btn-xs pull-right">
|
<span class="btn btn-primary btn-xs pull-right">
|
||||||
{{ access_point.strength }}%
|
{{ access_point.strength }}%
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -19,7 +19,7 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block page_head %}
|
{% block page_head %}
|
||||||
|
|
||||||
@ -32,84 +32,111 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h2>Virtual Private Network (OpenVPN)</h2>
|
<h2>{% trans "Virtual Private Network (OpenVPN)" %}</h2>
|
||||||
|
|
||||||
<p>Virtual Private Network (VPN) is a technique for securely
|
<p>
|
||||||
connecting two machines in order to access resources of a private
|
{% blocktrans trimmed %}
|
||||||
network. While you are away from home, you can connect to your
|
Virtual Private Network (VPN) is a technique for securely
|
||||||
{{ cfg.box_name }} in order to join your home network and access
|
connecting two machines in order to access resources of a
|
||||||
private/internal services provided by {{ cfg.box_name }}. You can
|
private network. While you are away from home, you can connect
|
||||||
also access the rest of the Internet via {{ cfg.box_name }} for
|
to your {{ cfg.box_name }} in order to join your home network
|
||||||
added security and anonymity.</p>
|
and access private/internal services provided by
|
||||||
|
{{ cfg.box_name }}. You can also access the rest of the
|
||||||
|
Internet via {{ cfg.box_name }} for added security and
|
||||||
|
anonymity.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
{% if status.is_setup %}
|
{% if status.is_setup %}
|
||||||
|
|
||||||
<h3>Profile</h3>
|
<h3>{% trans "Profile" %}</h3>
|
||||||
|
|
||||||
<p>To connect to {{ cfg.box_name }}'s VPN, you need to download a
|
<p>
|
||||||
profile and feed it to an OpenVPN client on your mobile or
|
{% blocktrans trimmed %}
|
||||||
desktop machine. OpenVPN Clients are available for most
|
To connect to {{ cfg.box_name }}'s VPN, you need to download a
|
||||||
platforms. See
|
profile and feed it to an OpenVPN client on your mobile or
|
||||||
<a href="https://wiki.debian.org/FreedomBox/Manual/OpenVPN"
|
desktop machine. OpenVPN Clients are available for most
|
||||||
title="FreedomBox Manual - OpenVPN">documentation</a> on
|
platforms. See
|
||||||
recommended clients and instructions on how to configure them.</p>
|
<a href="https://wiki.debian.org/FreedomBox/Manual/OpenVPN"
|
||||||
|
title="FreedomBox Manual - OpenVPN">documentation</a> on
|
||||||
|
recommended clients and instructions on how to configure them.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>Profile is specific to each user of {{ cfg.box_name }}. Keep
|
<p>
|
||||||
it a secret.</p>
|
{% blocktrans trimmed %}
|
||||||
|
Profile is specific to each user of {{ cfg.box_name }}. Keep
|
||||||
|
it a secret.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<form class="form" method="post" action="{% url 'openvpn:profile' %}">
|
<form class="form" method="post" action="{% url 'openvpn:profile' %}">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Download my profile"/>
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{% trans "Download my profile" %}"/>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<h3>Status</h3>
|
<h3>{% trans "Status" %}</h3>
|
||||||
|
|
||||||
{% if not status.is_setup and not status.setup_running %}
|
{% if not status.is_setup and not status.setup_running %}
|
||||||
<p>OpenVPN has not yet been setup. Performing a secure setup
|
<p>
|
||||||
takes a very long time. Depending on how fast your
|
{% blocktrans trimmed %}
|
||||||
{{ cfg.box_name }} is, it may even take hours. If the setup is
|
OpenVPN has not yet been setup. Performing a secure setup
|
||||||
interrupted, you may start it again.</p>
|
takes a very long time. Depending on how fast your
|
||||||
|
{{ cfg.box_name }} is, it may even take hours. If the setup
|
||||||
|
is interrupted, you may start it again.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<form class="form" method="post" action="{% url 'openvpn:setup' %}">
|
<form class="form" method="post" action="{% url 'openvpn:setup' %}">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Start setup"/>
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{% trans "Start setup" %}"/>
|
||||||
</form>
|
</form>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if not status.is_setup and status.setup_running %}
|
{% if not status.is_setup and status.setup_running %}
|
||||||
<p class="running-status-parent">
|
<p class="running-status-parent">
|
||||||
<span class='running-status active'></span> OpenVPN setup is running
|
<span class='running-status active'></span>
|
||||||
|
{% trans "OpenVPN setup is running" %}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>To perform a secure setup, this process takes a very long time.
|
<p>
|
||||||
Depending on how fast your {{ cfg.box_name }} is, it may even
|
{% blocktrans trimmed %}
|
||||||
take hours. If the setup is interrupted, you may start it
|
To perform a secure setup, this process takes a very long
|
||||||
again.</p>
|
time. Depending on how fast your {{ cfg.box_name }} is, it
|
||||||
|
may even take hours. If the setup is interrupted, you may
|
||||||
|
start it again.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if status.is_setup %}
|
{% if status.is_setup %}
|
||||||
<p class="running-status-parent">
|
<p class="running-status-parent">
|
||||||
{% if status.is_running %}
|
{% if status.is_running %}
|
||||||
<span class='running-status active'></span> OpenVPN server is running
|
<span class='running-status active'></span>
|
||||||
|
{% trans "OpenVPN server is running" %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<span class='running-status inactive'></span> OpenVPN server is not running
|
<span class='running-status inactive'></span>
|
||||||
|
{% trans "OpenVPN server is not running" %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
{% include "diagnostics_button.html" with module="openvpn" %}
|
{% include "diagnostics_button.html" with module="openvpn" %}
|
||||||
|
|
||||||
<h3>Configuration</h3>
|
<h3>{% trans "Configuration" %}</h3>
|
||||||
|
|
||||||
<form class="form" method="post">
|
<form class="form" method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
{{ form|bootstrap }}
|
{{ form|bootstrap }}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Update setup"/>
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{% trans "Update setup" %}"/>
|
||||||
</form>
|
</form>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|||||||
@ -19,34 +19,44 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h2>File Hosting (ownCloud)</h2>
|
<h2>{% trans "File Hosting (ownCloud)" %}</h2>
|
||||||
|
|
||||||
<p>ownCloud gives you universal access to your files through a web
|
<p>
|
||||||
interface or WebDAV. It also provides a platform to easily view &
|
{% blocktrans trimmed %}
|
||||||
sync your contacts, calendars and bookmarks across all your devices
|
ownCloud gives you universal access to your files through a web
|
||||||
and enables basic editing right on the web. Installation has minimal
|
interface or WebDAV. It also provides a platform to easily view
|
||||||
server requirements, doesn't need special permissions and is
|
& sync your contacts, calendars and bookmarks across all your
|
||||||
quick. ownCloud is extendable via a simple but powerful API for
|
devices and enables basic editing right on the web. Installation
|
||||||
applications and plugins.</p>
|
has minimal server requirements, doesn't need special
|
||||||
|
permissions and is quick. ownCloud is extendable via a simple
|
||||||
|
but powerful API for applications and plugins.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>When enabled, the ownCloud installation will be available
|
<p>
|
||||||
from <a href="/owncloud">/owncloud</a> path on the web server.
|
{% blocktrans trimmed %}
|
||||||
Visit this URL to set up the initial administration account for
|
When enabled, the ownCloud installation will be available
|
||||||
ownCloud.</p>
|
from <a href="/owncloud">/owncloud</a> path on the web server.
|
||||||
|
Visit this URL to set up the initial administration account for
|
||||||
|
ownCloud.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
{% include "diagnostics_button.html" with module="owncloud" %}
|
{% include "diagnostics_button.html" with module="owncloud" %}
|
||||||
|
|
||||||
<h3>Configuration</h3>
|
<h3>{% trans "Configuration" %}</h3>
|
||||||
|
|
||||||
<form class="form" method="post">
|
<form class="form" method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
{{ form|bootstrap }}
|
{{ form|bootstrap }}
|
||||||
<input type="submit" class="btn btn-primary btn-md" value="Apply changes"/>
|
|
||||||
|
|
||||||
|
<input type="submit" class="btn btn-primary btn-md"
|
||||||
|
value="{% trans "Apply changes" %}"/>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -19,6 +19,7 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
@ -29,14 +30,15 @@
|
|||||||
|
|
||||||
<div id='pagekite-post-enabled-form'
|
<div id='pagekite-post-enabled-form'
|
||||||
style='display: {{ form.enabled.value|yesno:'block,none' }};'>
|
style='display: {{ form.enabled.value|yesno:'block,none' }};'>
|
||||||
<h3>PageKite Account</h3>
|
<h3>{% trans "PageKite Account" %}</h3>
|
||||||
{{ form.server_domain|bootstrap_horizontal }}
|
{{ form.server_domain|bootstrap_horizontal }}
|
||||||
{{ form.server_port|bootstrap_horizontal }}
|
{{ form.server_port|bootstrap_horizontal }}
|
||||||
{{ form.kite_name|bootstrap_horizontal }}
|
{{ form.kite_name|bootstrap_horizontal }}
|
||||||
{{ form.kite_secret|bootstrap_horizontal }}
|
{{ form.kite_secret|bootstrap_horizontal }}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<input type="submit" class="btn btn-primary" value="Save settings"/>
|
|
||||||
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{% trans "Save settings" %}"/>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -19,6 +19,7 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% load pagekite_extras %}
|
{% load pagekite_extras %}
|
||||||
|
|
||||||
@ -40,31 +41,39 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<div class="alert alert-warning" role="alert">
|
<div class="alert alert-warning" role="alert">
|
||||||
<b>Warning:</b><br>Your PageKite frontend server may not support all the
|
{% blocktrans trimmed %}
|
||||||
protocol/port combinations that you are able to define here. For example,
|
<b>Warning:</b><br>Your PageKite frontend server may not support
|
||||||
HTTPS on ports other than 443 is known to cause problems.
|
all the protocol/port combinations that you are able to define
|
||||||
|
here. For example, HTTPS on ports other than 443 is known to
|
||||||
|
cause problems.
|
||||||
|
{% endblocktrans %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row custom-services">
|
<div class="row custom-services">
|
||||||
|
|
||||||
<div class="col-lg-6">
|
<div class="col-lg-6">
|
||||||
<form class="form add-service" method="post">
|
<form class="form add-service" method="post">
|
||||||
<h4>Create a custom service</h4>
|
<h4>{% trans "Create a custom service" %}</h4>
|
||||||
{{ form|bootstrap_horizontal:'col-lg-6' }}
|
{{ form|bootstrap_horizontal:'col-lg-6' }}
|
||||||
|
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class=" col-lg-offset-6 col-lg-6">
|
<div class=" col-lg-offset-6 col-lg-6">
|
||||||
<input type="submit" class="btn btn-primary" value="Add Service"/>
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{% trans "Add Service" %}"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-lg-5 col-lg-offset-1">
|
<div class="col-lg-5 col-lg-offset-1">
|
||||||
<h4>Existing custom services</h4>
|
<h4>{% trans "Existing custom services" %}</h4>
|
||||||
|
|
||||||
{% if not custom_services %}
|
{% if not custom_services %}
|
||||||
<i>You don't have any Custom Services enabled</i>
|
<i>{% trans "You don't have any Custom Services enabled" %}</i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div class="list-group">
|
<div class="list-group">
|
||||||
{% for service in custom_services %}
|
{% for service in custom_services %}
|
||||||
{% create_pagekite_service_url service kite_name as service_url %}
|
{% create_pagekite_service_url service kite_name as service_url %}
|
||||||
@ -77,7 +86,9 @@
|
|||||||
{{ service_url }}
|
{{ service_url }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<br>
|
<br>
|
||||||
connected to {{ service.backend_host }}:{{ service.backend_port }}
|
{% blocktrans trimmed %}
|
||||||
|
connected to {{ service.backend_host }}:{{ service.backend_port }}
|
||||||
|
{% endblocktrans %}
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
<form class="form pull-right" method="post"
|
<form class="form pull-right" method="post"
|
||||||
@ -87,7 +98,7 @@
|
|||||||
{{ service.form.as_p }}
|
{{ service.form.as_p }}
|
||||||
</div>
|
</div>
|
||||||
<button type="submit" class="btn btn-default"
|
<button type="submit" class="btn btn-default"
|
||||||
title="Delete this service">
|
title="{% trans "Delete this service" %}">
|
||||||
<span class="glyphicon glyphicon-trash" aria-hidden="true">
|
<span class="glyphicon glyphicon-trash" aria-hidden="true">
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@ -18,38 +18,65 @@
|
|||||||
#
|
#
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<p>PageKite is a system for exposing {{ cfg.box_name }} services when
|
<p>
|
||||||
you don't have a direct connection to the Internet. You only need this
|
{% blocktrans trimmed %}
|
||||||
if your {{ cfg.box_name }} services are unreachable from the
|
PageKite is a system for exposing {{ cfg.box_name }} services
|
||||||
rest of the Internet. This includes the following situations: </p>
|
when you don't have a direct connection to the Internet. You
|
||||||
|
only need this if your {{ cfg.box_name }} services are
|
||||||
|
unreachable from the rest of the Internet. This includes the
|
||||||
|
following situations:
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>{{ cfg.box_name }} is behind a restricted firewall.</li>
|
<li>
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
{{ cfg.box_name }} is behind a restricted firewall.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</li>
|
||||||
|
|
||||||
<li>{{ cfg.box_name }} is connected to a (wireless) router which you
|
<li>
|
||||||
don't control.</li>
|
{% blocktrans trimmed %}
|
||||||
|
{{ cfg.box_name }} is connected to a (wireless) router which
|
||||||
|
you don't control.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</li>
|
||||||
|
|
||||||
<li>Your ISP does not provide you an external IP address and instead
|
<li>
|
||||||
provides Internet connection through NAT.</li>
|
{% blocktrans trimmed %}
|
||||||
|
Your ISP does not provide you an external IP address and
|
||||||
|
instead provides Internet connection through NAT.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</li>
|
||||||
|
|
||||||
<li>Your ISP does not provide you a static IP address and your IP
|
<li>
|
||||||
address changes evertime you connect to Internet.</li>
|
{% blocktrans trimmed %}
|
||||||
|
Your ISP does not provide you a static IP address and your IP
|
||||||
|
address changes evertime you connect to Internet.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</li>
|
||||||
|
|
||||||
<li>Your ISP limits incoming connections.</li>
|
<li>{% trans "Your ISP limits incoming connections." %}</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>PageKite works around NAT, firewalls and IP-address limitations by
|
<p>
|
||||||
using a combination of tunnels and reverse proxies. You can use any
|
{% blocktrans trimmed %}
|
||||||
pagekite service provider, for example
|
PageKite works around NAT, firewalls and IP-address limitations
|
||||||
<a href="https://pagekite.net">pagekite.net</a>.
|
by using a combination of tunnels and reverse proxies. You can
|
||||||
In future it might be possible to use your buddy's
|
use any pagekite service provider, for example
|
||||||
{{ cfg.box_name }} for this.</p>
|
<a href="https://pagekite.net">pagekite.net</a>. In future it
|
||||||
|
might be possible to use your buddy's {{ cfg.box_name }} for
|
||||||
|
this.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<a class="btn btn-primary btn-md"
|
<a class="btn btn-primary btn-md" href="{% url 'pagekite:configure' %}">
|
||||||
href="{% url 'pagekite:configure' %}">Configure PageKite</a>
|
{% trans "Configure PageKite" %}</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -19,6 +19,7 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block page_head %}
|
{% block page_head %}
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
@ -35,9 +36,23 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<div class="alert alert-warning" role="alert">
|
<div class="alert alert-warning" role="alert">
|
||||||
<b>Warning:</b><br>
|
|
||||||
<p>Published services are accessible and attackable from the evil internet.<p>
|
{% trans "<b>Warning:</b><br/>" %}
|
||||||
<p>Exposing SSH with the default password for 'fbx' is a VERY BAD idea.</p>
|
|
||||||
|
<p>
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
Published services are accessible and attackable from the evil
|
||||||
|
internet.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
Exposing SSH with the default password for 'fbx' is a VERY BAD
|
||||||
|
idea.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<form class="form predefined" method="post">
|
<form class="form predefined" method="post">
|
||||||
@ -45,7 +60,9 @@
|
|||||||
{{ form.https|bootstrap_horizontal:'col-lg-0' }}
|
{{ form.https|bootstrap_horizontal:'col-lg-0' }}
|
||||||
{{ form.ssh|bootstrap_horizontal:'col-lg-0' }}
|
{{ form.ssh|bootstrap_horizontal:'col-lg-0' }}
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<input type="submit" class="btn btn-primary" value="Save Services"/>
|
|
||||||
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{% trans "Save Services" %}"/>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -19,42 +19,55 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h2>Web Proxy (Privoxy)</h2>
|
<h2>{% trans "Web Proxy (Privoxy)" %}</h2>
|
||||||
|
|
||||||
<p>Privoxy is a non-caching web proxy with advanced filtering
|
<p>
|
||||||
capabilities for enhancing privacy, modifying web page data and HTTP
|
{% blocktrans trimmed %}
|
||||||
headers, controlling access, and removing ads and other obnoxious
|
Privoxy is a non-caching web proxy with advanced filtering
|
||||||
Internet junk.</p>
|
capabilities for enhancing privacy, modifying web page data and
|
||||||
|
HTTP headers, controlling access, and removing ads and other
|
||||||
|
obnoxious Internet junk.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>You can use Privoxy by modifying your browser proxy settings to
|
<p>
|
||||||
your {{ cfg.box_name }} hostname (or IP address) with port 8118.
|
{% blocktrans trimmed %}
|
||||||
While using Privoxy, you can see its configuration details and
|
You can use Privoxy by modifying your browser proxy settings to
|
||||||
documentation
|
your {{ cfg.box_name }} hostname (or IP address) with port 8118.
|
||||||
at <a href="http://config.privoxy.org">http://config.privoxy.org/</a>
|
While using Privoxy, you can see its configuration details and
|
||||||
or <a href="http://p.p">http://p.p</a></p>
|
documentation at
|
||||||
|
<a href="http://config.privoxy.org">http://config.privoxy.org/</a>
|
||||||
|
or <a href="http://p.p">http://p.p</a>
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<h3>Status</h3>
|
<h3>{% trans "Status" %}</h3>
|
||||||
|
|
||||||
<p class="running-status-parent">
|
<p class="running-status-parent">
|
||||||
{% if status.is_running %}
|
{% if status.is_running %}
|
||||||
<span class="running-status active"></span> Privoxy is running
|
<span class="running-status active"></span>
|
||||||
{% else %}
|
{% trans "Privoxy is running" %}
|
||||||
<span class="running-status inactive"></span> Privoxy is not running
|
{% else %}
|
||||||
{% endif %}
|
<span class="running-status inactive"></span>
|
||||||
</p>
|
{% trans "Privoxy is not running" %}
|
||||||
{% include "diagnostics_button.html" with module="privoxy" %}
|
{% endif %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<h3>Configuration</h3>
|
{% include "diagnostics_button.html" with module="privoxy" %}
|
||||||
|
|
||||||
<form class="form" method="post">
|
<h3>{% trans "Configuration" %}</h3>
|
||||||
{% csrf_token %}
|
|
||||||
|
|
||||||
{{ form|bootstrap }}
|
<form class="form" method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Update setup"/>
|
{{ form|bootstrap }}
|
||||||
</form>
|
|
||||||
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{% trans "Update setup" %}"/>
|
||||||
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -19,25 +19,37 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h2>reStore</h2>
|
<h2>{% trans "reStore" %}</h2>
|
||||||
<p>reStore is a server for <a href='https://unhosted.org/'>unhosted</a>
|
|
||||||
web applications. The idea is to uncouple web applications from the
|
|
||||||
data, and thus the data can be stored on any unhosted storage server.</p>
|
|
||||||
|
|
||||||
<p>You can create and edit accounts in the
|
<p>
|
||||||
<a href='/restore/'>reStore web-interface</a>.</p>
|
{% blocktrans trimmed %}
|
||||||
|
reStore is a server for <a href='https://unhosted.org/'>unhosted</a>
|
||||||
|
web applications. The idea is to uncouple web applications from
|
||||||
|
the data, and thus the data can be stored on any unhosted
|
||||||
|
storage server.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<h3>Configuration</h3>
|
<p>
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
You can create and edit accounts in the
|
||||||
|
<a href='/restore/'>reStore web-interface</a>.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<form class="form" method="post">
|
<h3>Configuration</h3>
|
||||||
{% csrf_token %}
|
|
||||||
|
|
||||||
{{ form|bootstrap }}
|
<form class="form" method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Update setup"/>
|
{{ form|bootstrap }}
|
||||||
</form>
|
|
||||||
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{% trans "Update setup" %}"/>
|
||||||
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -19,40 +19,55 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h2>Email Client (Roundcube)</h2>
|
<h2>{% trans "Email Client (Roundcube)" %}</h2>
|
||||||
|
|
||||||
<p>Roundcube webmail is a browser-based multilingual IMAP client with
|
<p>
|
||||||
an application-like user interface. It provides full functionality
|
{% blocktrans trimmed %}
|
||||||
you expect from an email client, including MIME support, address
|
Roundcube webmail is a browser-based multilingual IMAP client
|
||||||
book, folder manipulation, message searching and spell checking.</p>
|
with an application-like user interface. It provides full
|
||||||
|
functionality you expect from an email client, including MIME
|
||||||
|
support, address book, folder manipulation, message searching
|
||||||
|
and spell checking.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>You can access Roundcube from <a href="/roundcube">/roundcube</a>.
|
<p>
|
||||||
Provide the username and password of the email account you wish to
|
{% blocktrans trimmed %}
|
||||||
access followed by the domain name of the IMAP server for your email
|
You can access Roundcube from <a href="/roundcube">/roundcube</a>.
|
||||||
provider, like <code>imap.example.com</code>. For IMAP over SSL
|
Provide the username and password of the email account you wish
|
||||||
(recommended), fill the server field
|
to access followed by the domain name of the IMAP server for
|
||||||
like <code>imaps://imap.example.com</code>.</p>
|
your email provider, like <code>imap.example.com</code>. For
|
||||||
|
IMAP over SSL (recommended), fill the server field like
|
||||||
|
<code>imaps://imap.example.com</code>.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>For Gmail, username will be your Gmail address, password will be
|
<p>
|
||||||
your Google account password and server will be
|
{% blocktrans trimmed %}
|
||||||
<code>imaps://imap.gmail.com</code>. Note that you will also need
|
For Gmail, username will be your Gmail address, password will be
|
||||||
to enable "Less secure apps" in your Google account settings
|
your Google account password and server will be
|
||||||
(<a href="https://www.google.com/settings/security/lesssecureapps"
|
<code>imaps://imap.gmail.com</code>. Note that you will also need
|
||||||
>https://www.google.com/settings/security/lesssecureapps</a>).</p>
|
to enable "Less secure apps" in your Google account settings
|
||||||
|
(<a href="https://www.google.com/settings/security/lesssecureapps"
|
||||||
|
>https://www.google.com/settings/security/lesssecureapps</a>).
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
{% include "diagnostics_button.html" with module="roundcube" %}
|
{% include "diagnostics_button.html" with module="roundcube" %}
|
||||||
|
|
||||||
<h3>Configuration</h3>
|
<h3>{% trans "Configuration" %}</h3>
|
||||||
|
|
||||||
<form class="form" method="post">
|
<form class="form" method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
{{ form|bootstrap }}
|
{{ form|bootstrap }}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Update setup"/>
|
<input type="submit" class="btn btn-primary"
|
||||||
</form>
|
value="{% trans "Update setup" %}"/>
|
||||||
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -19,25 +19,33 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h2>Bookmarks (Shaarli)</h2>
|
<h2>{% trans "Bookmarks (Shaarli)" %}</h2>
|
||||||
|
|
||||||
<p>Shaarli allows you to save and share bookmarks.</p>
|
<p>{% trans "Shaarli allows you to save and share bookmarks." %}</p>
|
||||||
|
|
||||||
<p>When enabled, Shaarli will be available from <a href="/shaarli">/shaarli</a>
|
<p>
|
||||||
path on the web server. Note that Shaarli only supports a single user
|
{% blocktrans trimmed %}
|
||||||
account, which you will need to setup on the initial visit.<p>
|
|
||||||
|
|
||||||
<h3>Configuration</h3>
|
When enabled, Shaarli will be available from <a href="/shaarli">/shaarli</a>
|
||||||
|
path on the web server. Note that Shaarli only supports a single
|
||||||
|
user account, which you will need to setup on the initial visit.
|
||||||
|
|
||||||
<form class="form" method="post">
|
{% endblocktrans %}
|
||||||
{% csrf_token %}
|
</p>
|
||||||
|
|
||||||
{{ form|bootstrap }}
|
<h3>{% trans "Configuration" %}</h3>
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Update setup"/>
|
<form class="form" method="post">
|
||||||
</form>
|
{% csrf_token %}
|
||||||
|
|
||||||
|
{{ form|bootstrap }}
|
||||||
|
|
||||||
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{% trans "Update setup" %}"/>
|
||||||
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -18,13 +18,24 @@
|
|||||||
#
|
#
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h2>System Configuration</h2>
|
<h2>{% trans "System Configuration" %}</h2>
|
||||||
|
|
||||||
<p>Here you can administrate the underlying system of your {{ cfg.box_name }}.
|
<p>
|
||||||
</p>
|
{% blocktrans trimmed %}
|
||||||
<p>The options affect the {{ cfg.box_name }} at its most
|
Here you can administrate the underlying system of your
|
||||||
general level, so be careful!</p>
|
{{ cfg.box_name }}.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
The options affect the {{ cfg.box_name }} at its most general
|
||||||
|
level, so be careful!
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -19,91 +19,109 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h2>Anonymity Network (Tor)</h2>
|
<h2>{% trans "Anonymity Network (Tor)" %}</h2>
|
||||||
|
|
||||||
<p>Tor is an anonymous communication system. You can learn more about
|
<p>
|
||||||
it from the <a href="https://www.torproject.org/">Tor Project</a>
|
{% blocktrans trimmed %}
|
||||||
website. For best protection when web surfing, the Tor Project
|
Tor is an anonymous communication system. You can learn more
|
||||||
recommends that you use
|
about it from the <a href="https://www.torproject.org/">Tor
|
||||||
the <a href="https://www.torproject.org/download/download-easy.html.en">
|
Project</a> website. For best protection when web surfing, the
|
||||||
Tor Browser</a>.</p>
|
Tor Project recommends that you use the
|
||||||
|
<a href="https://www.torproject.org/download/download-easy.html.en">
|
||||||
|
Tor Browser</a>.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<h3>Status</h3>
|
<h3>{% trans "Status" %}</h3>
|
||||||
|
|
||||||
<p class="running-status-parent">
|
<p class="running-status-parent">
|
||||||
{% if status.is_running %}
|
{% if status.is_running %}
|
||||||
<span class="running-status active"></span> Tor is running
|
<span class="running-status active"></span>
|
||||||
{% else %}
|
{% trans "Tor is running" %}
|
||||||
<span class="running-status inactive"></span> Tor is not running
|
{% else %}
|
||||||
|
<span class="running-status inactive"></span>
|
||||||
|
{% trans "Tor is not running" %}
|
||||||
|
{% endif %}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
{% include "diagnostics_button.html" with module="tor" %}
|
||||||
|
|
||||||
|
{% if status.hs_enabled %}
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-3">
|
||||||
|
<table class="table table-bordered table-condensed table-striped">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>{% trans "Hidden Service" %}</th>
|
||||||
|
<th>{% trans "Port" %}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>{{ status.hs_hostname }}</td>
|
||||||
|
<td>{{ status.hs_ports }}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
|
||||||
{% include "diagnostics_button.html" with module="tor" %}
|
|
||||||
|
|
||||||
{% if status.hs_enabled %}
|
<h3>{% trans "Configuration" %}</h3>
|
||||||
|
|
||||||
|
<form class="form" method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
|
||||||
|
{{ form|bootstrap }}
|
||||||
|
|
||||||
|
<input type="submit" class="btn btn-primary btn-md"
|
||||||
|
value="{% trans "Update setup" %}"/>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<h3>{% trans "Bridge" %}</h3>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
Your {{ cfg.box_name }} is configured as a Tor bridge with
|
||||||
|
obfsproxy, so it can help circumvent censorship. If your {{
|
||||||
|
cfg.box_name }} is behind a router or firewall, you should make
|
||||||
|
sure the following ports are open, and port-forwarded, if
|
||||||
|
necessary:
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-3">
|
<div class="col-sm-3">
|
||||||
<table class="table table-bordered table-condensed table-striped">
|
<table class="table table-bordered table-condensed table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Hidden Service</th>
|
<th>{% trans "Service" %}</th>
|
||||||
<th>Port</th>
|
<th>{% trans "Port" %}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
{% for name, port in status.ports.items %}
|
||||||
<td>{{ status.hs_hostname }}</td>
|
<tr>
|
||||||
<td>{{ status.hs_ports }}</td>
|
<td>{{ name }}</td>
|
||||||
</tr>
|
<td>{{ port }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<h3>Configuration</h3>
|
<h3>{% trans "SOCKS" %}</h3>
|
||||||
|
|
||||||
<form class="form" method="post">
|
<p>
|
||||||
{% csrf_token %}
|
{% blocktrans trimmed %}
|
||||||
|
A Tor SOCKS port is available on your {{ cfg.box_name }} on TCP port
|
||||||
{{ form|bootstrap }}
|
9050.
|
||||||
|
{% endblocktrans %}
|
||||||
<input type="submit" class="btn btn-primary btn-md" value="Update setup"/>
|
</p>
|
||||||
</form>
|
|
||||||
|
|
||||||
<h3>Bridge</h3>
|
|
||||||
|
|
||||||
<p>Your {{ cfg.box_name }} is configured as a Tor bridge with obfsproxy, so it
|
|
||||||
can help circumvent censorship. If your {{ cfg.box_name }} is behind a router
|
|
||||||
or firewall, you should make sure the following ports are open, and
|
|
||||||
port-forwarded, if necessary:</p>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-sm-3">
|
|
||||||
<table class="table table-bordered table-condensed table-striped">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Service</th>
|
|
||||||
<th>Port</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for name, port in status.ports.items %}
|
|
||||||
<tr>
|
|
||||||
<td>{{ name }}</td>
|
|
||||||
<td>{{ port }}</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h3>SOCKS</h3>
|
|
||||||
|
|
||||||
<p>A Tor SOCKS port is available on your {{ cfg.box_name }} on TCP port
|
|
||||||
9050.</p>
|
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -19,36 +19,49 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h2>Bittorrent (Transmission)</h2>
|
<h2>{% trans "Bittorrent (Transmission)" %}</h2>
|
||||||
|
|
||||||
<p>BitTorrent is a peer-to-peer file sharing protocol. Transmission
|
<p>
|
||||||
daemon handles Bitorrent file sharing. Note that BitTorrent is not
|
{% blocktrans trimmed %}
|
||||||
anonymous.</p>
|
BitTorrent is a peer-to-peer file sharing protocol.
|
||||||
|
Transmission daemon handles Bitorrent file sharing. Note that
|
||||||
|
BitTorrent is not anonymous.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>Access the web interface at <a href="/transmission">/transmission</a></p>
|
<p>
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
Access the web interface at <a href="/transmission">/transmission</a>
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<h3>Status</h3>
|
<h3>{% trans "Status" %}</h3>
|
||||||
|
|
||||||
<p class="running-status-parent">
|
<p class="running-status-parent">
|
||||||
{% if status.is_running %}
|
{% if status.is_running %}
|
||||||
<span class='running-status active'></span> Transmission daemon is running
|
<span class='running-status active'></span>
|
||||||
{% else %}
|
{% trans "Transmission daemon is running" %}
|
||||||
<span class='running-status inactive'></span> Transmission daemon is not running
|
{% else %}
|
||||||
{% endif %}
|
<span class='running-status inactive'></span>
|
||||||
</p>
|
{% trans "Transmission daemon is not running" %}
|
||||||
{% include "diagnostics_button.html" with module="transmission" %}
|
{% endif %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<h3>Configuration</h3>
|
{% include "diagnostics_button.html" with module="transmission" %}
|
||||||
|
|
||||||
<form class="form" method="post">
|
<h3>{% trans "Configuration" %}</h3>
|
||||||
{% csrf_token %}
|
|
||||||
|
|
||||||
{{ form|bootstrap }}
|
<form class="form" method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Update setup"/>
|
{{ form|bootstrap }}
|
||||||
</form>
|
|
||||||
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{% trans "Update setup" %}"/>
|
||||||
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -18,18 +18,25 @@
|
|||||||
#
|
#
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h2>{{ title }}</h2>
|
<h2>{{ title }}</h2>
|
||||||
|
|
||||||
<p>This will run unattended-upgrades, which will attempt to upgrade your system
|
<p>
|
||||||
with the latest Debian packages. It may take a few minutes to complete.</p>
|
{% blocktrans trimmed %}
|
||||||
|
This will run unattended-upgrades, which will attempt to upgrade
|
||||||
|
your system with the latest Debian packages. It may take a few
|
||||||
|
minutes to complete.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<form class="form" method="post" action="{% url 'upgrades:run' %}">
|
<form class="form" method="post" action="{% url 'upgrades:run' %}">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Upgrade now »"/>
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{% trans "Upgrade now »" %}"/>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -19,6 +19,7 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
@ -29,8 +30,8 @@
|
|||||||
|
|
||||||
{{ form|bootstrap }}
|
{{ form|bootstrap }}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary btn-md" value="Update setup"/>
|
<input type="submit" class="btn btn-primary btn-md"
|
||||||
|
value="{% trans "Update setup" %}"/>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -18,37 +18,42 @@
|
|||||||
#
|
#
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h2>{{title}}</h2>
|
<h2>{{title}}</h2>
|
||||||
|
|
||||||
{% if upgrades_error %}
|
{% if upgrades_error %}
|
||||||
<div class="alert alert-danger" role="alert">
|
<div class="alert alert-danger" role="alert">
|
||||||
There was an error while upgrading.
|
{% trans "There was an error while upgrading." %}
|
||||||
</div>
|
</div>
|
||||||
<h5>Output from unattended-upgrades:</h5>
|
|
||||||
<pre>{{ upgrades_error }}</pre>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if upgrades_output %}
|
<h5>{% trans "Output from unattended-upgrades:" %}</h5>
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-6">
|
<pre>{{ upgrades_error }}</pre>
|
||||||
<div class="alert alert-success" role="alert">
|
{% endif %}
|
||||||
The operating system is up to date now.
|
|
||||||
<button type="button" class="btn btn-default show-details" style='display:none'>
|
{% if upgrades_output %}
|
||||||
Show Details
|
<div class="row">
|
||||||
<div class="caret"></div>
|
<div class="col-lg-6">
|
||||||
</button>
|
<div class="alert alert-success" role="alert">
|
||||||
|
{% trans "The operating system is up to date now. " %}
|
||||||
|
<button type="button" class="btn btn-default show-details"
|
||||||
|
style='display:none'>
|
||||||
|
{% trans "Show Details" %}
|
||||||
|
<div class="caret"></div>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="details">
|
<div class="details">
|
||||||
<h5>Output from unattended-upgrades:</h5>
|
<h5>{% trans "Output from unattended-upgrades:" %}</h5>
|
||||||
<pre>{{ upgrades_output }}</pre>
|
<pre>{{ upgrades_output }}</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|||||||
@ -19,10 +19,15 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h3>Change Password for <em>{{ form.user.username }}</em></h3>
|
<h3>
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
Change Password for <em>{{ form.user.username }}</em>
|
||||||
|
{% endblocktrans %}
|
||||||
|
</h3>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
@ -31,8 +36,8 @@
|
|||||||
|
|
||||||
{{ form|bootstrap }}
|
{{ form|bootstrap }}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Save Password"/>
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{% trans "Save Password" %}"/>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -19,6 +19,7 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block page_head %}
|
{% block page_head %}
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
@ -37,8 +38,8 @@
|
|||||||
|
|
||||||
{{ form|bootstrap }}
|
{{ form|bootstrap }}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Create User"/>
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{%trans "Create User" %}"/>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -19,21 +19,26 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h3>Delete User <em>{{ object.username }}</em></h3>
|
<h3>
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
Delete User <em>{{ object.username }}</em>
|
||||||
|
{% endblocktrans %}
|
||||||
|
</h3>
|
||||||
|
|
||||||
<p>Delete user permanently?</p>
|
<p>{% trans "Delete user permanently?" %}</p>
|
||||||
|
|
||||||
<form class="form" method="post">
|
<form class="form" method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-md btn-primary"
|
<input type="submit" class="btn btn-md btn-primary"
|
||||||
value="Delete {{ object.username }}"/>
|
value="{% blocktrans %}Delete {{ object.username }}{% endblocktrans %}"/>
|
||||||
|
|
||||||
<a href="{% url 'users:index' %}" role="button"
|
<a href="{% url 'users:index' %}" role="button"
|
||||||
class="btn btn-md btn-primary">Cancel</a>
|
class="btn btn-md btn-primary">{% trans "Cancel" %}</a>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -19,6 +19,7 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block page_head %}
|
{% block page_head %}
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
@ -41,14 +42,15 @@
|
|||||||
<div class="list-group-item clearfix">
|
<div class="list-group-item clearfix">
|
||||||
<a href="{% url 'users:delete' user.username %}"
|
<a href="{% url 'users:delete' user.username %}"
|
||||||
class="btn btn-default btn-sm pull-right"
|
class="btn btn-default btn-sm pull-right"
|
||||||
role="button" title="Delete user {{ user.username }}">
|
role="button"
|
||||||
|
title="{% blocktrans %}Delete user {{ user.username }}{% endblocktrans %}">
|
||||||
<span class="glyphicon glyphicon-trash"
|
<span class="glyphicon glyphicon-trash"
|
||||||
aria-hidden="true"></span>
|
aria-hidden="true"></span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a class='user-edit-label'
|
<a class='user-edit-label'
|
||||||
href="{% url 'users:edit' user.username %}"
|
href="{% url 'users:edit' user.username %}"
|
||||||
title="Edit user {{ user.username }}">
|
title="{% blocktrans %}Edit user {{ user.username }}{% endblocktrans %}">
|
||||||
{{ user.username }}
|
{{ user.username }}
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|||||||
@ -19,6 +19,7 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block page_head %}
|
{% block page_head %}
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
@ -30,13 +31,19 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h3>Edit User <em>{{ object.username }}</em></h3>
|
<h3>
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
Edit User <em>{{ object.username }}</em>
|
||||||
|
{% endblocktrans %}
|
||||||
|
</h3>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Use the
|
{% url 'users:change_password' as change_password_url %}
|
||||||
<a href='{% url 'users:change_password' object.username %}'>
|
|
||||||
change password form
|
{% blocktrans trimmed %}
|
||||||
</a> to change the password.
|
Use the <a href='{{ change_password_url }}'>change password form
|
||||||
|
</a> to change the password.
|
||||||
|
{% endblocktrans %}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -46,8 +53,8 @@
|
|||||||
|
|
||||||
{{ form|bootstrap }}
|
{{ form|bootstrap }}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Save Changes"/>
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{% trans "Save Changes" %}"/>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -19,45 +19,65 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h2>Chat Server (XMPP)</h2>
|
<h2>{% trans "Chat Server (XMPP)" %}</h2>
|
||||||
|
|
||||||
<p>XMPP is an open and standardized communication protocol. Here you
|
<p>
|
||||||
can run and configure your XMPP server, called ejabberd.</p>
|
{% blocktrans trimmed %}
|
||||||
|
XMPP is an open and standardized communication protocol. Here
|
||||||
|
you can run and configure your XMPP server, called ejabberd.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>To actually communicate, you can use the <a href='/jwchat'>web client</a> or
|
<p>
|
||||||
any other <a href='http://xmpp.org/xmpp-software/clients/' target='_blank'>
|
{% blocktrans trimmed %}
|
||||||
XMPP client </a>.</p>
|
To actually communicate, you can use the <a href='/jwchat'>web
|
||||||
|
client</a> or any other <a href='http://xmpp.org/xmpp-software/clients/'
|
||||||
|
target='_blank'>XMPP client</a>.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>Your XMPP server domain is set to <b>{{ status.domainname }}</b>. User IDs
|
<p>
|
||||||
will look like <i>username@{{ status.domainname }}</i>. You can setup your
|
{% url 'config:index' as index_url %}
|
||||||
domain on the system <a href="{% url 'config:index' %}">Configure</a>
|
{% blocktrans trimmed with domainname=status.domainname %}
|
||||||
page.</p>
|
Your XMPP server domain is set to <b>{{ domainname }}</b>. User
|
||||||
|
IDs will look like <i>username@{{ domainname }}</i>. You
|
||||||
|
can setup your domain on the system
|
||||||
|
<a href="{{ index_url }}">Configure</a> page.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<p><a href='/jwchat' target='_blank' class='btn btn-primary'> Launch web
|
<p>
|
||||||
client</a></p>
|
<a href='/jwchat' target='_blank' class='btn btn-primary'>
|
||||||
|
{% trans "Launch web client" %}</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
<h3>Status</h3>
|
<h3>{% trans "Status" %}</h3>
|
||||||
|
|
||||||
<p class="running-status-parent">
|
<p class="running-status-parent">
|
||||||
{% if status.is_running %}
|
{% if status.is_running %}
|
||||||
<span class="running-status active"></span> ejabberd is running
|
<span class="running-status active"></span>
|
||||||
{% else %}
|
{% trans "ejabberd is running" %}
|
||||||
<span class="running-status inactive"></span> ejabberd is not running
|
{% else %}
|
||||||
{% endif %}
|
<span class="running-status inactive"></span>
|
||||||
</p>
|
{% trans "ejabberd is not running" %}
|
||||||
{% include "diagnostics_button.html" with module="xmpp" %}
|
{% endif %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<h3>Configuration</h3>
|
{% include "diagnostics_button.html" with module="xmpp" %}
|
||||||
|
|
||||||
<form class="form" method="post">
|
<h3>{% trans "Configuration" %}</h3>
|
||||||
{% csrf_token %}
|
|
||||||
|
|
||||||
{{ form|bootstrap }}
|
<form class="form" method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" value="Update setup"/>
|
{{ form|bootstrap }}
|
||||||
</form>
|
|
||||||
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{% trans "Update setup" %}"/>
|
||||||
|
</form>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -18,17 +18,25 @@
|
|||||||
#
|
#
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h2>404</h2>
|
<h2>{% trans "404" %}</h2>
|
||||||
|
|
||||||
<p>Requested page {{ request_path }} was not found.</p>
|
<p>
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
Requested page {{ request_path }} was not found.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>If you believe this missing page should exist, please file a bug with either
|
<p>
|
||||||
the Plinth project (<a href="https://github.com/freedombox/Plinth/issues">it
|
{% blocktrans trimmed %}
|
||||||
has an issue tracker</a>) or the people responsible for the module you are
|
If you believe this missing page should exist, please file a bug
|
||||||
trying to access.</p>
|
at the Plinth project
|
||||||
|
<a href="https://github.com/freedombox/Plinth/issues">issue
|
||||||
<p>Sorry for the mistake.</p>
|
tracker</a>.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -18,13 +18,19 @@
|
|||||||
#
|
#
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h2>500</h2>
|
<h2>{% trans "500" %}</h2>
|
||||||
|
|
||||||
<p>This is an internal error and not something you caused or can fix. Please
|
<p>
|
||||||
report the error on
|
{% blocktrans trimmed %}
|
||||||
the <a href="https://github.com/freedombox/Plinth/issues">bug tracker</a> so
|
This is an internal error and not something you caused or can
|
||||||
we can fix it.</p>
|
fix. Please report the error on
|
||||||
|
the <a href="https://github.com/freedombox/Plinth/issues">bug
|
||||||
|
tracker</a> so we can fix it.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
{% load i18n %}
|
||||||
{% load static %}
|
{% load static %}
|
||||||
{% load plinth_extras %}
|
{% load plinth_extras %}
|
||||||
|
|
||||||
@ -44,10 +45,11 @@
|
|||||||
<meta name="googlebot" content="noindex, nofollow, noarchive, nosnippet, noodp, noimageindex, notranslate" />
|
<meta name="googlebot" content="noindex, nofollow, noarchive, nosnippet, noodp, noimageindex, notranslate" />
|
||||||
<meta name="msnbot" content="noindex, nofollow, noarchive, noodp" />
|
<meta name="msnbot" content="noindex, nofollow, noarchive, noodp" />
|
||||||
<meta name="slurp" content="noindex, nofollow, noarchive, noodp, noydir" />
|
<meta name="slurp" content="noindex, nofollow, noarchive, noodp, noydir" />
|
||||||
<meta name="description" content="Plinth administrative interface for the FreedomBox" />
|
<meta name="description"
|
||||||
|
content="{% trans "Plinth administrative interface for the FreedomBox" %}" />
|
||||||
{% block title %}
|
{% block title %}
|
||||||
<title>
|
<title>
|
||||||
{% if title %} {{ title }} {% else %} FreedomBox {% endif %}
|
{% if title %} {{ title }} {% else %} {% trans "FreedomBox" %} {% endif %}
|
||||||
</title>
|
</title>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
@ -76,29 +78,29 @@
|
|||||||
<div class="navbar-header">
|
<div class="navbar-header">
|
||||||
<button type="button" class="navbar-toggle" data-toggle="collapse"
|
<button type="button" class="navbar-toggle" data-toggle="collapse"
|
||||||
data-target=".navbar-collapse">
|
data-target=".navbar-collapse">
|
||||||
<span class="sr-only">Toggle navigation</span>
|
<span class="sr-only">{% trans "Toggle navigation" %}</span>
|
||||||
<span class="icon-bar"></span>
|
<span class="icon-bar"></span>
|
||||||
<span class="icon-bar"></span>
|
<span class="icon-bar"></span>
|
||||||
<span class="icon-bar"></span>
|
<span class="icon-bar"></span>
|
||||||
</button>
|
</button>
|
||||||
<a href="{% url 'index' %}" class="navbar-brand" title="Applications">
|
<a href="{% url 'index' %}" class="navbar-brand" title="{% trans "Applications" %}">
|
||||||
<img src="{% static 'theme/img/freedombox-logo-32px.png' %}"
|
<img src="{% static 'theme/img/freedombox-logo-32px.png' %}"
|
||||||
alt="FreedomBox" />
|
alt="{% trans "FreedomBox" %}" />
|
||||||
Applications
|
{% trans "Applications" %}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="collapse navbar-collapse">
|
<div class="collapse navbar-collapse">
|
||||||
{% block add_nav_and_login %}
|
{% block add_nav_and_login %}
|
||||||
<ul class="nav navbar-nav navbar-right">
|
<ul class="nav navbar-nav navbar-right">
|
||||||
<li>
|
<li>
|
||||||
<a href="{% url 'help:index' %}" title="Help">
|
<a href="{% url 'help:index' %}" title="{% trans "Help" %}">
|
||||||
<span class="glyphicon-question-sign glyphicon nav-icon"></span>
|
<span class="glyphicon-question-sign glyphicon nav-icon"></span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
{% if user.is_authenticated %}
|
{% if user.is_authenticated %}
|
||||||
<li>
|
<li>
|
||||||
<a href="{% url 'system:index' %}" title="System Configuration">
|
<a href="{% url 'system:index' %}" title="{% trans "System Configuration" %}">
|
||||||
<span class="glyphicon-cog glyphicon nav-icon"></span>
|
<span class="glyphicon-cog glyphicon nav-icon"></span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@ -112,27 +114,29 @@
|
|||||||
<span class="caret"></span></a>
|
<span class="caret"></span></a>
|
||||||
<ul class="dropdown-menu" role="menu">
|
<ul class="dropdown-menu" role="menu">
|
||||||
<li><a href="{% url 'users:edit' user.username %}"
|
<li><a href="{% url 'users:edit' user.username %}"
|
||||||
title="Edit">Edit</a></li>
|
title="{% trans "Edit"%}">{% trans "Edit" %}</a></li>
|
||||||
<li><a href="{% url 'users:change_password' user.username %}"
|
<li><a href="{% url 'users:change_password' user.username %}"
|
||||||
title="Change password">Change password</a></li>
|
title="{% trans "Change password" %}">
|
||||||
|
{% trans "Change password" %}</a></li>
|
||||||
<li class="divider"></li>
|
<li class="divider"></li>
|
||||||
<li><a href="{% url 'users:logout' %}" title="Log out">
|
<li><a href="{% url 'users:logout' %}"
|
||||||
Log out</a></li>
|
title="{% trans "Log out" %}">
|
||||||
|
{% trans "Log out" %}</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
{% else %}
|
{% else %}
|
||||||
<li>
|
<li>
|
||||||
<a href="{% url 'users:login' %}" title="Log in">
|
<a href="{% url 'users:login' %}" title="{% trans "Log in" %}">
|
||||||
<i class="glyphicon glyphicon-user nav-icon"></i>
|
<i class="glyphicon glyphicon-user nav-icon"></i>
|
||||||
Log in</a>
|
{% trans "Log in" %}</a>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if user.is_authenticated %}
|
{% if user.is_authenticated %}
|
||||||
<li id="logout-nojs">
|
<li id="logout-nojs">
|
||||||
<a href="{% url 'users:logout' %}" title="Log out">
|
<a href="{% url 'users:logout' %}" title="{% trans "Log out" %}">
|
||||||
<i class="glyphicon glyphicon-remove-circle nav-icon"></i>
|
<i class="glyphicon glyphicon-remove-circle nav-icon"></i>
|
||||||
Log out</a>
|
{% trans "Log out" %}</a>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@ -19,6 +19,7 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
@ -30,7 +31,8 @@
|
|||||||
{{ form|bootstrap }}
|
{{ form|bootstrap }}
|
||||||
|
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<input type="submit" class="btn btn-primary" value="Login" />
|
<input type="submit" class="btn btn-primary"
|
||||||
|
value="{% trans "Login" %}" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -17,6 +17,8 @@
|
|||||||
#
|
#
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
<ul class="nav nav-pills nav-stacked">
|
<ul class="nav nav-pills nav-stacked">
|
||||||
{% for item in menu.items %}
|
{% for item in menu.items %}
|
||||||
|
|
||||||
|
|||||||
@ -17,6 +17,8 @@
|
|||||||
#
|
#
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% for message in messages %}
|
{% for message in messages %}
|
||||||
<div class='alert alert-{{ message.tags }} alert-dismissable'>
|
<div class='alert alert-{{ message.tags }} alert-dismissable'>
|
||||||
<a class="close" data-dismiss="alert">×</a>
|
<a class="close" data-dismiss="alert">×</a>
|
||||||
|
|||||||
@ -19,7 +19,7 @@
|
|||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
{% block page_head %}
|
{% block page_head %}
|
||||||
|
|
||||||
@ -32,16 +32,23 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h2>Installation</h2>
|
<h2>{% trans "Installation" %}</h2>
|
||||||
|
|
||||||
{% if not is_installing %}
|
{% if not is_installing %}
|
||||||
|
|
||||||
<p>This feature requires addtional packages to be installed. Do you
|
<p>
|
||||||
wish to install them?</p>
|
{% blocktrans trimmed %}
|
||||||
|
This feature requires addtional packages to be installed. Do
|
||||||
|
you wish to install them?
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr><th>Package</th><th>Summary</th></tr>
|
<tr>
|
||||||
|
<th>{% trans "Package" %}</th>
|
||||||
|
<th>{% trans "Summary" %}</th>
|
||||||
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for package_name, package in packages.items %}
|
{% for package_name, package in packages.items %}
|
||||||
@ -55,21 +62,30 @@
|
|||||||
|
|
||||||
<form action="" method="post">
|
<form action="" method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<input type="submit" class="btn btn-md btn-primary" value="Install" />
|
|
||||||
|
<input type="submit" class="btn btn-md btn-primary"
|
||||||
|
value="{% trans "Install" %}" />
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|
||||||
{% for key, transaction in transactions.items %}
|
{% for key, transaction in transactions.items %}
|
||||||
<div>Installing {{ transaction.package_names|join:", " }}:
|
<div>
|
||||||
{{ transaction.status_string }}
|
{% blocktrans trimmed %}
|
||||||
|
Installing {{ transaction.package_names|join:", " }}:
|
||||||
|
{{ transaction.status_string }}
|
||||||
|
{% endblocktrans %}
|
||||||
</div>
|
</div>
|
||||||
<div class="progress">
|
<div class="progress">
|
||||||
<div class="progress-bar progress-bar-striped active"
|
<div class="progress-bar progress-bar-striped active"
|
||||||
role="progressbar" aria-valuemin="0" aria-valuemax="100"
|
role="progressbar" aria-valuemin="0" aria-valuemax="100"
|
||||||
aria-valuenow="{{ transaction.percentage }}"
|
aria-valuenow="{{ transaction.percentage }}"
|
||||||
style="width: {{ transaction.percentage }}%">
|
style="width: {{ transaction.percentage }}%">
|
||||||
<span class="sr-only">{{ transaction.percentage }}% complete</span>
|
<span class="sr-only">
|
||||||
|
{% blocktrans trimmed %}
|
||||||
|
{{ transaction.percentage }}% complete
|
||||||
|
{% endblocktrans %}
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|||||||
@ -17,6 +17,8 @@
|
|||||||
#
|
#
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
<ul class="nav nav-pills nav-stacked">
|
<ul class="nav nav-pills nav-stacked">
|
||||||
{% for item in menu.items %}
|
{% for item in menu.items %}
|
||||||
|
|
||||||
|
|||||||
@ -17,6 +17,8 @@
|
|||||||
#
|
#
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
<ul class="nav nav-tabs">
|
<ul class="nav nav-tabs">
|
||||||
{% for urlitem in subsubmenu %}
|
{% for urlitem in subsubmenu %}
|
||||||
<li {% if urlitem.active %} class="active"{% endif %}
|
<li {% if urlitem.active %} class="active"{% endif %}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user