html: Drop trailing slash from void elements

See: https://github.com/validator/validator/wiki/Markup-%C2%BB-Void-elements

Tests:

- Fewer info messages in w3c HTML validator.

- Page loads and works as usual.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
This commit is contained in:
Sunil Mohan Adapa 2026-03-10 13:34:20 -07:00 committed by James Valleroy
parent 144efd71b8
commit 4a3ca01059
No known key found for this signature in database
GPG Key ID: 77C0C75E7B650808
20 changed files with 61 additions and 61 deletions

View File

@ -8,7 +8,7 @@
{% block page_head %}
<link type="text/css" rel="stylesheet"
href="{% static 'backups/backups.css' %}"/>
href="{% static 'backups/backups.css' %}">
{% endblock %}
{% block configuration %}

View File

@ -8,7 +8,7 @@
{% block page_head %}
<link type="text/css" rel="stylesheet"
href="{% static 'firewall/firewall.css' %}"/>
href="{% static 'firewall/firewall.css' %}">
{% endblock %}
{% block configuration %}

View File

@ -14,7 +14,7 @@ no-brand
{% block content %}
<div class="logo">
<img class="firstboot img-fluid" alt="{{ box_name }}"
src="{% static 'theme/img/freedombox-logo-standard.svg' %}"/>
src="{% static 'theme/img/freedombox-logo-standard.svg' %}">
</div>
<form class="form form-start text-center" method="post">

View File

@ -10,7 +10,7 @@
<p class="text-center">
<img src="{% static 'theme/img/freedombox-logo-250px.png' %}"
class="main-graphic" />
class="main-graphic">
</p>
{% if version %}

View File

@ -16,7 +16,7 @@
<span class="navbar-brand">
<img src="{% static 'theme/img/freedombox-logo-32px.png' %}"
alt="{{ cfg.box_name }}" />
alt="{{ cfg.box_name }}">
<a href="{% url 'index' %}">
{% blocktrans trimmed %}{{ box_name }} Setup{% endblocktrans %}
</a>

View File

@ -58,7 +58,7 @@
<span class="navbar-brand">
<img src="{% static 'theme/img/freedombox-logo-32px.png' %}"
alt="{{ cfg.box_name }}" />
alt="{{ cfg.box_name }}">
<a href="{% url 'index' %}">
{% blocktrans trimmed %}{{ box_name }} Setup{% endblocktrans %}
</a>

View File

@ -8,7 +8,7 @@
{% block page_head %}
<link type="text/css" rel="stylesheet"
href="{% static 'help/help.css' %}"/>
href="{% static 'help/help.css' %}">
{% endblock %}
{% block content %}

View File

@ -25,7 +25,7 @@
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Janus Video Room</title>
@ -42,13 +42,13 @@
<link rel="stylesheet"
href="/javascript/bootstrap5/css/bootstrap.css"
type="text/css"/>
type="text/css">
<link rel="stylesheet" href="/javascript/toastr/toastr.min.css"
type="text/css"/>
type="text/css">
<link rel="stylesheet"
href="{% static 'janus/janus-video-room.css' %}" type="text/css"/>
href="{% static 'janus/janus-video-room.css' %}" type="text/css">
<link rel="stylesheet"
href="/javascript/font-awesome/css/font-awesome.min.css" type="text/css"/>
href="/javascript/font-awesome/css/font-awesome.min.css" type="text/css">
</head>
<body data-user-turn-config="{{ user_turn_config }}">

View File

@ -34,17 +34,17 @@
<html>
<head>
<title>Jabber Chat (JSXC)</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="/javascript/bootstrap4/css/bootstrap.min.css" media="all"
rel="stylesheet" type="text/css" />
rel="stylesheet" type="text/css">
<link href="/javascript/jquery-ui/themes/base/jquery-ui.min.css"
media="all" rel="stylesheet" type="text/css" />
media="all" rel="stylesheet" type="text/css">
<link href="{% static 'jsxc/libjs-jsxc/jsxc.css' %}" media="all"
rel="stylesheet" type="text/css" />
rel="stylesheet" type="text/css">
<link href="{% static 'jsxc/jsxc-plinth.css' %}" media="all"
rel="stylesheet" type="text/css" />
rel="stylesheet" type="text/css">
<script src="/javascript/jquery/jquery.min.js"></script>
<script src="/javascript/jquery-ui/jquery-ui.min.js"></script>

View File

@ -9,7 +9,7 @@
{% block page_head %}
<link type="text/css" rel="stylesheet"
href="{% static 'letsencrypt/letsencrypt.css' %}"/>
href="{% static 'letsencrypt/letsencrypt.css' %}">
{% endblock %}
{% block configuration %}

View File

@ -10,7 +10,7 @@
{% block page_head %}
<link type="text/css" rel="stylesheet"
href="{% static 'networks/networks.css' %}"/>
href="{% static 'networks/networks.css' %}">
{% endblock %}
{% block content %}

View File

@ -8,28 +8,28 @@
<div class="row connection-diagram">
<div class="col-md-2">
<img src="{% static 'theme/img/network-internet.svg' %}"
class="col-image network-entity" alt="{% trans "Internet" %}"/>
class="col-image network-entity" alt="{% trans "Internet" %}">
</div>
<div class="col-md-3">
<img src="{% static 'theme/img/network-spacing.svg' %}"
class="col-image network-spacing d-none d-md-block"
alt="{% trans "Spacing" %}"/>
alt="{% trans "Spacing" %}">
<img src="{% static 'theme/img/network-connection.svg' %}"
class="col-image network-connection d-none d-md-block "
alt="{% trans "Connection" %}"/>
alt="{% trans "Connection" %}">
<img src="{% static 'theme/img/network-connection-vertical.svg' %}"
class="network-connection-vertical d-md-none"
alt="{% trans "Connection" %}"/>
alt="{% trans "Connection" %}">
<div class="connection-list">
<p class="connection-list-heading">{% trans "External" %}</p>
{% for connection in connections %}
{% if connection.interface_name and connection.is_active and connection.zone == 'external' %}
{% if connection.type == '802-3-ethernet' %}
<img src="{% static 'theme/img/network-ethernet.svg' %}"
class="network-type-icon" alt="{% trans "Ethernet" %}"/>
class="network-type-icon" alt="{% trans "Ethernet" %}">
{% elif connection.type == '802-11-wireless' %}
<img src="{% static 'theme/img/network-wireless.svg' %}"
class="network-type-icon" alt="{% trans "Wi-Fi" %}"/>
class="network-type-icon" alt="{% trans "Wi-Fi" %}">
{% endif %}
<a href="{% url 'networks:show' connection.uuid %}"
title="{% blocktrans with name=connection.name %}Show connection {{ name }}{% endblocktrans %}">
@ -40,15 +40,15 @@
</div>
<div class="col-md-2">
<img src="{% static 'theme/img/network-freedombox.svg' %}"
class="col-image network-entity" alt="{{ box_name }}"/>
class="col-image network-entity" alt="{{ box_name }}">
</div>
<div class="col-md-3">
<img src="{% static 'theme/img/network-spacing.svg' %}"
class="col-image network-spacing d-none d-md-block"
alt="{% trans "Spacing" %}"/>
alt="{% trans "Spacing" %}">
<img src="{% static 'theme/img/network-connection.svg' %}"
class="col-image network-connection d-none d-md-block"
alt="{% trans "Connection" %}"/>
alt="{% trans "Connection" %}">
<div class="connection-list">
<p class="connection-list-heading">{% trans "Internal" %}</p>
{% for connection in connections %}
@ -56,10 +56,10 @@
<p>
{% if connection.type == '802-3-ethernet' %}
<img src="{% static 'theme/img/network-ethernet.svg' %}"
class="network-type-icon" alt="{% trans "Ethernet" %}"/>
class="network-type-icon" alt="{% trans "Ethernet" %}">
{% elif connection.type == '802-11-wireless' %}
<img src="{% static 'theme/img/network-wireless.svg' %}"
class="network-type-icon" alt="{% trans "Wi-Fi" %}"/>
class="network-type-icon" alt="{% trans "Wi-Fi" %}">
{% endif %}
<a href="{% url 'networks:show' connection.uuid %}"
title="{% blocktrans with name=connection.name %}Show connection {{ name }}{% endblocktrans %}">
@ -70,10 +70,10 @@
</div>
<img src="{% static 'theme/img/network-connection-vertical.svg' %}"
class="network-connection-vertical d-md-none"
alt="{% trans "Connection" %}"/>
alt="{% trans "Connection" %}">
</div>
<div class="col-md-2">
<img src="{% static 'theme/img/network-computer.svg' %}"
class="col-image network-entity" alt="{% trans "Computer" %}"/>
class="col-image network-entity" alt="{% trans "Computer" %}">
</div>
</div>

View File

@ -9,7 +9,7 @@
{% block page_head %}
<link type="text/css" rel="stylesheet"
href="{% static 'networks/networks.css' %}"/>
href="{% static 'networks/networks.css' %}">
{% endblock %}
{% block configuration %}

View File

@ -11,12 +11,12 @@
<div class="container narrow-container authorize-container">
<div class="d-flex flex-row align-items-center authorize-diagram">
<img src="{% static 'theme/img/application.svg' %}"
class="col-image network-entity" alt="{% trans "Application" %}"/>
class="col-image network-entity" alt="{% trans "Application" %}">
<img src="{% static 'theme/img/network-connection.svg' %}"
class="col-image network-connection"
alt="{% trans "Connection" %}"/>
alt="{% trans "Connection" %}">
<img src="{% static 'theme/img/network-freedombox.svg' %}"
class="col-image network-entity" alt="{{ box_name }}"/>
class="col-image network-entity" alt="{{ box_name }}">
</div>
<h3>{% trans "Authorize App" %}</h3>

View File

@ -10,7 +10,7 @@
{% block page_head %}
<link type="text/css" rel="stylesheet"
href="{% static 'samba/samba.css' %}"/>
href="{% static 'samba/samba.css' %}">
{% endblock %}
{% block configuration %}

View File

@ -8,7 +8,7 @@
{% block page_head %}
<link type="text/css" rel="stylesheet"
href="{% static 'sharing/sharing.css' %}"/>
href="{% static 'sharing/sharing.css' %}">
{% endblock %}
{% block configuration %}

View File

@ -9,7 +9,7 @@
{% block page_head %}
<link type="text/css" rel="stylesheet"
href="{% static 'storage/storage.css' %}"/>
href="{% static 'storage/storage.css' %}">
{% endblock %}
{% block configuration %}

View File

@ -9,30 +9,30 @@
<html class="no-js" lang="en">
<!-- the "no-js" class will be removed if Javascript is turned on -->
<head>
<meta charset="utf-8" />
<meta charset="utf-8">
<!-- Always force latest IE rendering engine and Chrome Frame -->
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<!-- Mobile Viewport Fix http://j.mp/mobileviewport & http://davidbcalhoun.com/2010/viewport-metatag
device-width : Occupy full width of the screen in its current orientation
initial-scale = 1.0 retains dimensions instead of zooming out if page height > device height
maximum-scale = 1.0 retains dimensions instead of zooming in if page width < device width
-->
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- R2D2, you know better than to trust a strange computer! -->
<meta name="robots" content="noindex, nofollow, noarchive" />
<meta name="googlebot" content="noindex, nofollow, noarchive, nosnippet, noodp, noimageindex, notranslate" />
<meta name="msnbot" content="noindex, nofollow, noarchive, noodp" />
<meta name="slurp" content="noindex, nofollow, noarchive, noodp, noydir" />
<meta name="application-name" content="{{ box_name }}" />
<meta name="robots" content="noindex, nofollow, noarchive">
<meta name="googlebot" content="noindex, nofollow, noarchive, nosnippet, noodp, noimageindex, notranslate">
<meta name="msnbot" content="noindex, nofollow, noarchive, noodp">
<meta name="slurp" content="noindex, nofollow, noarchive, noodp, noydir">
<meta name="application-name" content="{{ box_name }}">
<meta name="description"
content="{% blocktrans trimmed %}
FreedomBox is a personal server designed for privacy and
data ownership. It is free software that lets you install
and manage server apps with ease.
{% endblocktrans %}" />
{% endblocktrans %}">
{% block title %}
<title>
{% if title %} {{ title }} {% else %} {{ box_name }} {% endif %}
@ -41,21 +41,21 @@
<!-- Favicon. Works with IE >= 11 and other GUI browsers -->
<link rel="icon" type="image/png"
href="{% static 'theme/img/freedombox-logo-32px.png' %}"/>
href="{% static 'theme/img/freedombox-logo-32px.png' %}">
<!-- The is the icon for iOS's Web Clip. Size: 57x57 for older iPhones, 72x72 for iPads, 114x114 for iPhone4
- To prevent iOS from applying its styles to the icon name it thusly: apple-touch-icon-precomposed.png
- Transparency is not recommended (iOS will put a black BG behind the icon) -->
<link rel="apple-touch-icon" sizes="57x57" href="{% static 'theme/img/apple-touch-icon-57px-precomposed.png' %}"/>
<link rel="apple-touch-icon" sizes="72x72" href="{% static 'theme/img/apple-touch-icon-72px-precomposed.png' %}"/>
<link rel="apple-touch-icon" sizes="114x114" href="{% static 'theme/img/apple-touch-icon-114px-precomposed.png' %}"/>
<link rel="apple-touch-icon" sizes="57x57" href="{% static 'theme/img/apple-touch-icon-57px-precomposed.png' %}">
<link rel="apple-touch-icon" sizes="72x72" href="{% static 'theme/img/apple-touch-icon-72px-precomposed.png' %}">
<link rel="apple-touch-icon" sizes="114x114" href="{% static 'theme/img/apple-touch-icon-114px-precomposed.png' %}">
<!-- Stylesheets -->
<link rel="stylesheet" href="{% static '/javascript/bootstrap5/css/bootstrap.min.css' %}"/>
<link rel="stylesheet" href="{% static '/javascript/fork-awesome/css/fork-awesome.css' %}"/>
<link rel="stylesheet" href="{% static 'theme/css/main.css' %}"/>
<link rel="stylesheet" href="{% static '/javascript/bootstrap5/css/bootstrap.min.css' %}">
<link rel="stylesheet" href="{% static '/javascript/fork-awesome/css/fork-awesome.css' %}">
<link rel="stylesheet" href="{% static 'theme/css/main.css' %}">
{% if user_css %}
<link rel="stylesheet" href="{% static user_css %}"/>
<link rel="stylesheet" href="{% static user_css %}">
{% endif %}
<!-- This script is not loaded in defer mode because it needs to run before
@ -202,7 +202,7 @@
action="{% url 'users:logout' %}">
{% csrf_token %}
<input type="submit" class="dropdown-item no-running-status"
value="{% trans "Log out" %}"/>
value="{% trans "Log out" %}">
</form>
</li>
</ul>
@ -240,7 +240,7 @@
method="post" action="{% url 'users:logout' %}">
{% csrf_token %}
<input type="submit" class="nav-link no-running-status btn btn-link"
value="{% trans "Log out" %}"/>
value="{% trans "Log out" %}">
</form>
{% endif %}
{% endblock %}

View File

@ -15,7 +15,7 @@ no-brand
<div class="logo">
<img class="firstboot img-fluid" alt="{{ box_name }}"
src="{% static 'theme/img/freedombox-logo-standard.svg' %}"/>
src="{% static 'theme/img/freedombox-logo-standard.svg' %}">
</div>
{% if is_first_setup_running %}

View File

@ -63,7 +63,7 @@
{% endif %}
<div class="card-icon">
{% if shortcut.icon|first == "/" %}
<img src="{{ shortcut.icon }}"/>
<img src="{{ shortcut.icon }}">
{% else %}
{% if shortcut.app_id %}
{% icon shortcut.app_id|add:'/icons/'|add:shortcut.icon|add:'.svg' class='card-icon' %}
@ -95,7 +95,7 @@
<p>
<a href="{% url 'help:about' %}" title="{% trans "About" %}">
<img class="footer-logo" alt="{{ box_name }}"
src="{% static 'theme/img/freedombox-logo-powered.svg' %}"/>
src="{% static 'theme/img/freedombox-logo-powered.svg' %}">
</a>
</p>
{% endblock %}