diff --git a/deployment/docker/error_403.html b/deployment/docker/error_403.html index 381eb1c485465ddfd3496ce22f3d28d66d8f6a0e..107e6b38198e67e5fc26db62cfdf985c06143925 100644 --- a/deployment/docker/error_403.html +++ b/deployment/docker/error_403.html @@ -1 +1,4 @@ -<!DOCTYPE html><html><body>You don't have access to this location.</body></html> +<!DOCTYPE html> +<html> + <body>You don't have access to this location.</body> +</html> diff --git a/deployment/docker/error_404.html b/deployment/docker/error_404.html index b3a86d5e4e3ed4e3907c6e2428382b771fe7ddcc..82dcae12e2d74d13e67f5d1dcbe3b9e571e7b596 100644 --- a/deployment/docker/error_404.html +++ b/deployment/docker/error_404.html @@ -1 +1,4 @@ -<!DOCTYPE html><html><body>This is not the page you're looking for.</body></html> +<!DOCTYPE html> +<html> + <body>This is not the page you're looking for.</body> +</html> diff --git a/deployment/docker/error_50x.html b/deployment/docker/error_50x.html index 0c761edb801684a4b421a934c21ac175cc2d2a3c..5cab55bde5f4caa17b1dcbcbdbca9f3d0a8b8cab 100644 --- a/deployment/docker/error_50x.html +++ b/deployment/docker/error_50x.html @@ -1 +1,4 @@ -<!DOCTYPE html><html><body>Please stand by, application will be available again shortly.</body></html> +<!DOCTYPE html> +<html> + <body>Please stand by, application will be available again shortly.</body> +</html> diff --git a/deployment/docker/index.html b/deployment/docker/index.html index fa58f5391fcc4f93eff0c5a1b684a09e5c88530f..a1ed4aa57bdc22572e7a4ab93cf1312cd06d915b 100644 --- a/deployment/docker/index.html +++ b/deployment/docker/index.html @@ -1 +1,4 @@ -<!DOCTYPE html><html><body>There is nothing to be seen here.</body></html> +<!DOCTYPE html> +<html> + <body>There is nothing to be seen here.</body> +</html> diff --git a/src/backoffice/templates/backoffice/_disclaimer_block.html b/src/backoffice/templates/backoffice/_disclaimer_block.html index 8366d133033b7a912e4ae52e8be81e91c22962a4..de179be0cbf389d278d5069ad7a1bd1eb93d6f67 100644 --- a/src/backoffice/templates/backoffice/_disclaimer_block.html +++ b/src/backoffice/templates/backoffice/_disclaimer_block.html @@ -1,6 +1,12 @@ {% if disclaimer %} -<div class="alert alert-{{ disclaimer_type|default:"info" }}" role="alert"> - <strong>{% if disclaimer_type == 'warning' %}ACHTUNG{% else %}HINWEIS{% endif %}</strong>: + <div class="alert alert-{{ disclaimer_type|default:"info" }}" role="alert"> + <strong> + {% if disclaimer_type == 'warning' %} + ACHTUNG + {% else %} + HINWEIS + {% endif %} + </strong>: {{ disclaimer }} -</div> -{% endif %} \ No newline at end of file + </div> +{% endif %} diff --git a/src/backoffice/templates/backoffice/_room_backend_status.html b/src/backoffice/templates/backoffice/_room_backend_status.html index 3dd1abaeaf00f7e1ffaaa3a152724ec79cb1aa4c..5d69ef800490955ee0e47dd8a06309055269d017 100644 --- a/src/backoffice/templates/backoffice/_room_backend_status.html +++ b/src/backoffice/templates/backoffice/_room_backend_status.html @@ -1,14 +1,5 @@ {% spaceless %} -<span class=" -{% with object.backend_status_class as c %} - {% if c == 'good' %}text-success - {% elif c == 'bad' %}text-error - {% elif c == 'warning' %}text-danger - {% elif c == 'info' %}text-primary - {% else %}text-muted - {% endif %} -{% endwith %} -"> -{{ backend_status_display|default:object.get_backend_status_display }} -</span> -{% endspaceless %} \ No newline at end of file + <span class=" {% with object.backend_status_class as c %} {% if c == 'good' %}text-success {% elif c == 'bad' %}text-error {% elif c == 'warning' %}text-danger {% elif c == 'info' %}text-primary {% else %}text-muted {% endif %} {% endwith %} "> + {{ backend_status_display|default:object.get_backend_status_display }} + </span> +{% endspaceless %} diff --git a/src/backoffice/templates/backoffice/_room_wa_map_status.html b/src/backoffice/templates/backoffice/_room_wa_map_status.html index 863a0bdf373c0b1285238ecd1dfaa55071491948..1bd362c28f7db5e75ebf59dba24ab96c70bebeb9 100644 --- a/src/backoffice/templates/backoffice/_room_wa_map_status.html +++ b/src/backoffice/templates/backoffice/_room_wa_map_status.html @@ -1,19 +1,15 @@ {% spaceless %} -{% if object.director_data %} + {% if object.director_data %} {% with sev=object.director_data.violation.severity %} - <span class=" - {% if sev == None %} - text-success - {% elif sev == "error" %}text-error - {% else %}text-primary - {% endif %} - "> - {% if sev == None %}{{ display|default:"GOOD" }} - {% else %}{{ display|default:sev }} - {% endif %} - </span> + <span class=" {% if sev == None %} text-success {% elif sev == "error" %}text-error {% else %}text-primary {% endif %} "> + {% if sev == None %} + {{ display|default:"GOOD" }} + {% else %} + {{ display|default:sev }} + {% endif %} + </span> {% endwith %} -{% else %} + {% else %} <span class="text-muted">{{ display|default:"---" }}</span> -{% endif %} -{% endspaceless %} \ No newline at end of file + {% endif %} +{% endspaceless %} diff --git a/src/backoffice/templates/backoffice/assembly_additionalfields.html b/src/backoffice/templates/backoffice/assembly_additionalfields.html index fa11891e2bb73e7159fbd7803e40241598b8b0eb..cbb511f461f7875d0aaa03252bdf02bfb7376e2d 100644 --- a/src/backoffice/templates/backoffice/assembly_additionalfields.html +++ b/src/backoffice/templates/backoffice/assembly_additionalfields.html @@ -2,78 +2,129 @@ {% for field in schema %} -<div class="input-group mb-3"> - {% with value=data|get_item_or_original:field.key %} - <label class="col-sm-2 col-form-label pt-0 text-muted" for="fld{{ field.key }}">{{ field.caption|get_language_item|default:field.key }}</label> - <div class="col-sm-10"> - {% if field.help and field.type != 'boolean' and field.type != 'option' %} - <span class="form-text">{{ field.help|get_language_item }}</span> - {% endif %} + <div class="input-group mb-3"> + {% with value=data|get_item_or_original:field.key %} + <label class="col-sm-2 col-form-label pt-0 text-muted" + for="fld{{ field.key }}">{{ field.caption|get_language_item|default:field.key }}</label> + <div class="col-sm-10"> + {% if field.help and field.type != 'boolean' and field.type != 'option' %} + <span class="form-text">{{ field.help|get_language_item }}</span> + {% endif %} - {% if field.type == 'string' %} - {% if field.choices and field.choices|length > 0 %} - <select class="form-control{% if field.required and value is False %} is-invalid{% endif %}" id="fld{{ field.key }}" name="additional_fields[{{ field.key }}]"> - {% for choice, translation in field.choices.items %} - <option value="{{ choice }}"{% if choice == value %} selected="selected"{% endif %}>{{ translation|get_language_item }}</option> - {% endfor %} - </select> - {% else %} - <input class="form-control{% if field.required and value is False %} is-invalid{% endif %}" id="fld{{ field.key }}" type="text" name="additional_fields[{{ field.key }}]" value="{{ value|default:'' }}"{% if field.required %} required="required"{% endif %}> - {% endif %} + {% if field.type == 'string' %} + {% if field.choices and field.choices|length > 0 %} + <select class="form-control{% if field.required and value is False %} is-invalid{% endif %}" + id="fld{{ field.key }}" + name="additional_fields[{{ field.key }}]"> + {% for choice, translation in field.choices.items %} + <option value="{{ choice }}" + {% if choice == value %}selected="selected"{% endif %}> + {{ translation|get_language_item }} + </option> + {% endfor %} + </select> + {% else %} + <input class="form-control{% if field.required and value is False %} is-invalid{% endif %}" + id="fld{{ field.key }}" + type="text" + name="additional_fields[{{ field.key }}]" + value="{{ value|default:'' }}" + {% if field.required %}required="required"{% endif %}> + {% endif %} - {% elif field.type == 'option' %} - <div class="form-check"> - <input class="form-check-input af_option" id="fld{{ field.key }}_option" type="checkbox" name="additional_fields[{{ field.key }}_option]"{% if value != None %} checked="checked"{% endif %} onchange="if (this.checked) { $('#fld{{ field.key }}_container').show(); $('#fld{{ field.key }}').prop('required', true) } else { $('#fld{{ field.key }}_container').hide(); $('#fld{{ field.key }}').prop('required', false) }"> - <label class="form-check-label" for="fld{{ field.key }}_option">{{ field.help|get_language_item }}</label> - </div> + {% elif field.type == 'option' %} + <div class="form-check"> + <input class="form-check-input af_option" + id="fld{{ field.key }}_option" + type="checkbox" + name="additional_fields[{{ field.key }}_option]" + {% if value != None %}checked="checked"{% endif %} + onchange="if (this.checked) { $('#fld{{ field.key }}_container').show(); $('#fld{{ field.key }}').prop('required', true) } else { $('#fld{{ field.key }}_container').hide(); $('#fld{{ field.key }}').prop('required', false) }"> + <label class="form-check-label" for="fld{{ field.key }}_option">{{ field.help|get_language_item }}</label> + </div> - {% elif field.type == 'boolean' %} - <div class="form-check"> - <input class="form-check-input" id="fld{{ field.key }}" type="checkbox" name="additional_fields[{{ field.key }}]"{% if value %} checked="checked"{% endif %}> - <label class="form-check-label" for="fld{{ field.key }}">{{ field.help|get_language_item }}</label> - </div> + {% elif field.type == 'boolean' %} + <div class="form-check"> + <input class="form-check-input" + id="fld{{ field.key }}" + type="checkbox" + name="additional_fields[{{ field.key }}]" + {% if value %}checked="checked"{% endif %}> + <label class="form-check-label" for="fld{{ field.key }}">{{ field.help|get_language_item }}</label> + </div> - {% elif field.type == 'choices' %} - {% for choice, translation in field.choices.items %} - <div class="form-check"> - <input class="form-check-input{% if field.required and value is False %} is-invalid{% endif %}" type="radio" name="additional_fields[{{ field.key }}]" id="fld{{ field.key }}_{{ choice }}" value="{{ choice }}" {% if choice == value %} checked="checked"{% endif %}{% if field.required %} required="required"{% endif %}> - <label class="form-check-label" for="fld{{ field.key }}_{{ choice }}"> - {{ translation|get_language_item }} - </label> - </div> - {% endfor %} + {% elif field.type == 'choices' %} + {% for choice, translation in field.choices.items %} + <div class="form-check"> + <input class="form-check-input{% if field.required and value is False %} is-invalid{% endif %}" + type="radio" + name="additional_fields[{{ field.key }}]" + id="fld{{ field.key }}_{{ choice }}" + value="{{ choice }}" + {% if choice == value %}checked="checked"{% endif %} + {% if field.required %}required="required"{% endif %}> + <label class="form-check-label" for="fld{{ field.key }}_{{ choice }}">{{ translation|get_language_item }}</label> + </div> + {% endfor %} - {% elif field.type == 'date' %} - <div class="form-group" style="width: 11em;"> - <input class="form-control" id="fld{{ field.key }}" type="date" name="additional_fields[{{ field.key }}]" value="{{ value|default:"" }}"{% if field.required %} required="required"{% endif %}{% if field.min_value %} min="{{ field.min_value }}"{% endif %}{% if field.max_value %} max="{{ field.max_value }}"{% endif %}> - </div> + {% elif field.type == 'date' %} + <div class="form-group" style="width: 11em;"> + <input class="form-control" + id="fld{{ field.key }}" + type="date" + name="additional_fields[{{ field.key }}]" + value="{{ value|default:"" }}" + {% if field.required %}required="required"{% endif %} + {% if field.min_value %}min="{{ field.min_value }}"{% endif %} + {% if field.max_value %}max="{{ field.max_value }}"{% endif %}> + </div> - {% elif field.type == 'integer' %} - <div class="input-group" style="width: 11em;"> - <input class="form-control" id="fld{{ field.key }}" type="number" step="1" pattern="\d+" name="additional_fields[{{ field.key }}]" value="{{ value|default:"" }}"{% if field.required %} required="required"{% endif %}{% if field.min_value %} min="{{ field.min_value }}"{% endif %}{% if field.max_value %} max="{{ field.max_value }}"{% endif %}> - {% if field.unit %}<div class="input-group-append"><div class="input-group-text">{{ field.unit }}</div></div>{% endif %} - </div> + {% elif field.type == 'integer' %} + <div class="input-group" style="width: 11em;"> + <input class="form-control" + id="fld{{ field.key }}" + type="number" + step="1" + pattern="\d+" + name="additional_fields[{{ field.key }}]" + value="{{ value|default:"" }}" + {% if field.required %}required="required"{% endif %} + {% if field.min_value %}min="{{ field.min_value }}"{% endif %} + {% if field.max_value %}max="{{ field.max_value }}"{% endif %}> + {% if field.unit %} + <div class="input-group-append"> + <div class="input-group-text">{{ field.unit }}</div> + </div> + {% endif %} + </div> - {% else %} - <input class="form-control" id="fld{{ field.key }}" type="hidden" name="additional_fields[{{ field.key }}]" value="{{ value }}"><span class="text-muted">{{ value }}</span> - {% endif %} + {% else %} + <input class="form-control" + id="fld{{ field.key }}" + type="hidden" + name="additional_fields[{{ field.key }}]" + value="{{ value }}"> + <span class="text-muted">{{ value }}</span> + {% endif %} - {% if field.type == 'option' %} - <div id="fld{{field.key}}_container"{% if value == None %} style="display: none;"{% endif %}> - {% if field.option_help %} - <small class="form-text text-muted">{{ field.option_help|get_language_item }}</small> - {% endif %} - <textarea class="form-control" id="fld{{ field.key }}" name="additional_fields[{{ field.key }}]"{% if value != None %} required="required"{% endif %}>{{ value|default:'' }}</textarea> - </div> - {% endif %} + {% if field.type == 'option' %} + <div id="fld{{ field.key }}_container" + {% if value == None %}style="display: none;"{% endif %}> + {% if field.option_help %} + <small class="form-text text-muted">{{ field.option_help|get_language_item }}</small> + {% endif %} + <textarea class="form-control" + id="fld{{ field.key }}" + name="additional_fields[{{ field.key }}]" + {% if value != None %} required="required"{% endif %}>{{ value|default:'' }}</textarea> + </div> + {% endif %} - {% if field.required and value|default:'' == '' %} - <div id="fld{{field.key}}_required" class="invalid-feedback"> - {% trans "assembly_additionalfield_required" %} - </div> - {% endif %} + {% if field.required and value|default:'' == '' %} + <div id="fld{{ field.key }}_required" class="invalid-feedback">{% trans "assembly_additionalfield_required" %}</div> + {% endif %} + </div> + {% endwith %} </div> - {% endwith %} -</div> {% endfor %} diff --git a/src/backoffice/templates/backoffice/assembly_auth.html b/src/backoffice/templates/backoffice/assembly_auth.html index 2c26f0d43a9970eb297dfd09c3fe76c99bcda72d..46f08e4615d5e48a443198a2dc454b09e4fdfed4 100644 --- a/src/backoffice/templates/backoffice/assembly_auth.html +++ b/src/backoffice/templates/backoffice/assembly_auth.html @@ -3,30 +3,40 @@ {% load widget_tweaks %} {% block title %} -{% trans 'Assembly__authentication' %} | {{ assembly.name }} | {{ conference.name }} + {% trans 'Assembly__authentication' %} | {{ assembly.name }} | {{ conference.name }} {% endblock %} {% block content %} -{% include "backoffice/assembly_edit_header.html" %} + {% include "backoffice/assembly_edit_header.html" %} -<div class="row"> - <div class="col-md-12"> - {% show_disclaimer "assembly_auth" %} + <div class="row"> + <div class="col-md-12"> + {% show_disclaimer "assembly_auth" %} - <div class="card border-default"> - <div class="card-header bg-default"> - {% trans 'Assembly__authentication' %} - </div> - <div class="card-body"> - <p>{% trans 'Assembly__authentication__introduction' %}</p> + <div class="card border-default"> + <div class="card-header bg-default">{% trans 'Assembly__authentication' %}</div> + <div class="card-body"> + <p>{% trans 'Assembly__authentication__introduction' %}</p> - <p>{% trans 'Assembly__technical_user' %}: {% if assembly.technical_user_id is None %}<span class="text-info">{% trans 'Assembly__technical_user__none_yet' %}</span>{% else %}<span class="text-success">{% trans 'Assembly__technical_user__present' %}</span>{% endif %}</p> + <p> + {% trans 'Assembly__technical_user' %}: + {% if assembly.technical_user_id is None %} + <span class="text-info">{% trans 'Assembly__technical_user__none_yet' %}</span> + {% else %} + <span class="text-success">{% trans 'Assembly__technical_user__present' %}</span> + {% endif %} + </p> - <form class="form" action="{% url 'backoffice:assembly-auth-gettoken' assembly=assembly.pk %}" method="POST">{% csrf_token %} - <input type="submit" class="btn btn-sm btn-{% if assembly.technical_user_id is None %}primary{% else %}secondary{% endif %}" value="{% trans "Assembly__authentication__gettoken" %}"> - </form> + <form class="form" + action="{% url 'backoffice:assembly-auth-gettoken' assembly=assembly.pk %}" + method="POST"> + {% csrf_token %} + <input type="submit" + class="btn btn-sm btn-{% if assembly.technical_user_id is None %}primary{% else %}secondary{% endif %}" + value="{% trans "Assembly__authentication__gettoken" %}"> + </form> + </div> </div> - </div> </form> </div> </div> @@ -34,9 +44,7 @@ <div class="row mt-3 pb-10rem"> <div class="col-md-12"> <div class="card border-primary"> - <div class="card-header bg-primary text-white"> - {% trans 'authentication__applications' %} - </div> + <div class="card-header bg-primary text-white">{% trans 'authentication__applications' %}</div> <div class="card-body"> <table class="table table-striped table-hover"> <thead> @@ -48,36 +56,41 @@ </thead> <tbody> {% for app in applications %} - <tr> - <td><a href="{% url 'backoffice:assembly-auth-app' assembly=assembly.pk pk=app.id %}">{{ app.name }}</a></td> - <td>{{ app.client_type }}</td> - <td>{{ app.authorization_grant_type }}</td> - </tr> + <tr> + <td> + <a href="{% url 'backoffice:assembly-auth-app' assembly=assembly.pk pk=app.id %}">{{ app.name }}</a> + </td> + <td>{{ app.client_type }}</td> + <td>{{ app.authorization_grant_type }}</td> + </tr> {% endfor %} </tbody> </table> </div> <div class="card-footer"> - <form class="row row-cols-lg-auto g-3 align-items-center" action="{% url 'backoffice:assembly-auth' assembly=assembly.pk %}" method="POST">{% csrf_token %} + <form class="row row-cols-lg-auto g-3 align-items-center" + action="{% url 'backoffice:assembly-auth' assembly=assembly.pk %}" + method="POST"> + {% csrf_token %} <div class="col-12 form-floating"> - {% render_field form.name class+="form-control" %} - <label for="id_name">{% trans "Assembly__authentication-name" %}</label> + {% render_field form.name class+="form-control" %} + <label for="id_name">{% trans "Assembly__authentication-name" %}</label> </div> <div class="col-12 form-floating"> - {% render_field form.client_type class+="form-control" %} - <label for="id_client_type">{% trans "Assembly__authentication-client_type" %}</label> + {% render_field form.client_type class+="form-control" %} + <label for="id_client_type">{% trans "Assembly__authentication-client_type" %}</label> </div> <div class="col-12 form-floating"> - {% render_field form.grant_type class+="form-control" %} - <label for="id_grant_type">{% trans "Assembly__authentication-grant_type" %}</label> + {% render_field form.grant_type class+="form-control" %} + <label for="id_grant_type">{% trans "Assembly__authentication-grant_type" %}</label> </div> <div class="col-12"> - <button type="submit" class="btn btn-sm btn-primary">{% trans "Assembly__authentication__newapp" %}</button> + <button type="submit" class="btn btn-sm btn-primary">{% trans "Assembly__authentication__newapp" %}</button> </div> </form> </div> </div> - </form> - </div> + </form> +</div> </div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/assembly_auth_app.html b/src/backoffice/templates/backoffice/assembly_auth_app.html index f1fef72ef6cb9451bae1e2526c7fb3f0226fe329..edf4418deb0aa80fdc268edeb013114e52465637 100644 --- a/src/backoffice/templates/backoffice/assembly_auth_app.html +++ b/src/backoffice/templates/backoffice/assembly_auth_app.html @@ -2,36 +2,29 @@ {% load django_bootstrap5 %} {% load i18n %} -{% block title %} -{{ object.name }} | {{ assembly.name }} | {{ conference.name }} -{% endblock %} +{% block title %}{{ object.name }} | {{ assembly.name }} | {{ conference.name }}{% endblock %} {% block content %} -{% include "backoffice/assembly_edit_header.html" %} + {% include "backoffice/assembly_edit_header.html" %} -{% show_disclaimer "assembly_auth" %} + {% show_disclaimer "assembly_auth" %} -{% if not assembly.is_public %} -<div class="alert alert-warning"> - {% trans "Assembly__authentication__nonpublicassembly" %} -</div> -{% endif %} + {% if not assembly.is_public %} + <div class="alert alert-warning">{% trans "Assembly__authentication__nonpublicassembly" %}</div> + {% endif %} -<div class="row"> - <div class="col-md-12"> - <form action="" method="POST">{% csrf_token %} - <div class="card border-default"> - <div class="card-header bg-default"> - {{ object.name }} - </div> - <div class="card-body"> - {% bootstrap_form form %} - </div> - <div class="card-footer"> - <button type="submit" class="btn btn-primary">{% trans "save" %}</button> - </div> + <div class="row"> + <div class="col-md-12"> + <form action="" method="POST"> + {% csrf_token %} + <div class="card border-default"> + <div class="card-header bg-default">{{ object.name }}</div> + <div class="card-body">{% bootstrap_form form %}</div> + <div class="card-footer"> + <button type="submit" class="btn btn-primary">{% trans "save" %}</button> + </div> + </div> + </form> </div> - </form> </div> -</div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/assembly_badge.html b/src/backoffice/templates/backoffice/assembly_badge.html index ce1c00b317f08f20f47da7d438d9621eef60146b..1d3e4b9ea8df5fff10c20e5c147c0986a86e942a 100644 --- a/src/backoffice/templates/backoffice/assembly_badge.html +++ b/src/backoffice/templates/backoffice/assembly_badge.html @@ -21,7 +21,8 @@ {% trans "Badge__create" %} {% else %} {% trans 'Badge' %} "{{ badge.name }}" - <a class="btn btn-primary float-end" href="{% hub_absolute 'plainui:badge' pk=badge.id %}">{% trans "public_link" %}</a> + <a class="btn btn-primary float-end" + href="{% hub_absolute 'plainui:badge' pk=badge.id %}">{% trans "public_link" %}</a> {% endif %} </div> <div class="card-body"> diff --git a/src/backoffice/templates/backoffice/assembly_badge_renewed.html b/src/backoffice/templates/backoffice/assembly_badge_renewed.html index 5b2e3c5a1e2b572009fbd4e8eeb0f75c25243cba..f7b5714fda709e4bfbc447d4eb4fc09179e43f40 100644 --- a/src/backoffice/templates/backoffice/assembly_badge_renewed.html +++ b/src/backoffice/templates/backoffice/assembly_badge_renewed.html @@ -1,26 +1,23 @@ {% extends 'backoffice/base.html' %} {% load i18n %} -{% block title %} -{{ badge.name }} | {{ assembly.name }} | {{ conference.name }} -{% endblock %} +{% block title %}{{ badge.name }} | {{ assembly.name }} | {{ conference.name }}{% endblock %} {% block content %} -{% include "backoffice/assembly_edit_header.html" %} + {% include "backoffice/assembly_edit_header.html" %} -<div class="row"> - <div class="col-md-12"> - <div class="card border-success"> - <div class="card-header bg-success text-white"> - {% trans 'Badge' %} "{{ badge.name }}" - </div> - <div class="card-body"> - {% trans 'Badge__issuing_token' %}: <code>{{ badge.issuing_token }}</code> - </div> - <div class="card-footer"> - <a href="{% url 'backoffice:assembly-badge' assembly=assembly.id pk=badge.pk %}" class="btn btn-success">{% trans 'back' %}</a> + <div class="row"> + <div class="col-md-12"> + <div class="card border-success"> + <div class="card-header bg-success text-white">{% trans 'Badge' %} "{{ badge.name }}"</div> + <div class="card-body"> + {% trans 'Badge__issuing_token' %}: <code>{{ badge.issuing_token }}</code> + </div> + <div class="card-footer"> + <a href="{% url 'backoffice:assembly-badge' assembly=assembly.id pk=badge.pk %}" + class="btn btn-success">{% trans 'back' %}</a> + </div> </div> </div> </div> -</div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/assembly_badge_token.html b/src/backoffice/templates/backoffice/assembly_badge_token.html index 1d999cab6b746f255b7691053a4ef61f567cbff0..53f32ae529f18d4109c85fe20c03264994852c24 100644 --- a/src/backoffice/templates/backoffice/assembly_badge_token.html +++ b/src/backoffice/templates/backoffice/assembly_badge_token.html @@ -70,7 +70,8 @@ <img class="w-100" src="{{ create_token_form.instance.qr_full.url }}" alt="Full QR Code to redeem token"> - <a href="{% hub_absolute 'plainui:badge_token' pk=create_token_form.instance.id %}" class="btn btn-info">{% trans "BadgeToken__show_badge_redeem_page" %}</a> + <a href="{% hub_absolute 'plainui:badge_token' pk=create_token_form.instance.id %}" + class="btn btn-info">{% trans "BadgeToken__show_badge_redeem_page" %}</a> </div> {% else %} <div class="container text-bg-danger">{% trans "BadgeToken__no_qr__introduction" %}</div> diff --git a/src/backoffice/templates/backoffice/assembly_badges.html b/src/backoffice/templates/backoffice/assembly_badges.html index 5259c843291004c2dce54aa42fc7928a5f212090..039191bcf153eac414bd1eaa27a9fd370e8d5f44 100644 --- a/src/backoffice/templates/backoffice/assembly_badges.html +++ b/src/backoffice/templates/backoffice/assembly_badges.html @@ -2,44 +2,66 @@ {% load i18n %} {% block title %} -{% trans "Badges" %} | {{ assembly.name }} | {{ conference.name }} + {% trans "Badges" %} | {{ assembly.name }} | {{ conference.name }} {% endblock %} {% block content %} -{% include "backoffice/assembly_edit_header.html" %} + {% include "backoffice/assembly_edit_header.html" %} -<div class="row"> - <div class="col-md-12"> - {% show_disclaimer 'assembly_badges' %} + <div class="row"> + <div class="col-md-12"> + {% show_disclaimer 'assembly_badges' %} - <div class="card border-default"> - <div class="card-header bg-default"> - {% trans 'Badges' %} - {% if can_manage %}<a href="{% url 'backoffice:assembly-create-badge' assembly=assembly.id %}" class="btn btn-sm btn-primary float-right">+</a>{% endif %} - </div> - <div class="card-body"> - <table class="table table-sm table-hover table-striped"> - <thead> - <tr> - <td>{% trans 'Badges__image' %}</td> - <td>Name</td> - <td>{% trans 'Badges__public' %}</td> - <td>{% trans 'Badges__mode' %}</td> - </tr> - </thead> - <tbody> - {% for badge in object_list %} - <tr class="{% if not badge.show_public %}text-muted{% endif %}"> - <td><img src="{% if badge.image %}{{ badge.image.url }}{% endif %}" width="32" height="32" alt=""></td> - <td><a href="{% url 'backoffice:assembly-badge' assembly=badge.issuing_assembly_id pk=badge.pk %}">{{ badge.name }}</a></td> - <td>{% if badge.show_public %}{% trans 'yes' %}{% else %}{% trans 'no' %}{% endif %}</td> - <td>{% if badge.is_achievement %}achievement{% else %}sticker{% endif %}</td> - </tr> - {% endfor %} - </tbody> - </table> + <div class="card border-default"> + <div class="card-header bg-default"> + {% trans 'Badges' %} + {% if can_manage %} + <a href="{% url 'backoffice:assembly-create-badge' assembly=assembly.id %}" + class="btn btn-sm btn-primary float-right">+</a> + {% endif %} + </div> + <div class="card-body"> + <table class="table table-sm table-hover table-striped"> + <thead> + <tr> + <td>{% trans 'Badges__image' %}</td> + <td>Name</td> + <td>{% trans 'Badges__public' %}</td> + <td>{% trans 'Badges__mode' %}</td> + </tr> + </thead> + <tbody> + {% for badge in object_list %} + <tr class="{% if not badge.show_public %}text-muted{% endif %}"> + <td> + <img src="{% if badge.image %}{{ badge.image.url }}{% endif %}" + width="32" + height="32" + alt=""> + </td> + <td> + <a href="{% url 'backoffice:assembly-badge' assembly=badge.issuing_assembly_id pk=badge.pk %}">{{ badge.name }}</a> + </td> + <td> + {% if badge.show_public %} + {% trans 'yes' %} + {% else %} + {% trans 'no' %} + {% endif %} + </td> + <td> + {% if badge.is_achievement %} + achievement + {% else %} + sticker + {% endif %} + </td> + </tr> + {% endfor %} + </tbody> + </table> + </div> </div> </div> </div> -</div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/assembly_basicdata.html b/src/backoffice/templates/backoffice/assembly_basicdata.html index 8deec39f4eebff154be0e31c6460a9c1e5f08624..0d1aae39e50fb9f72896bdd775c2ea0c48678586 100644 --- a/src/backoffice/templates/backoffice/assembly_basicdata.html +++ b/src/backoffice/templates/backoffice/assembly_basicdata.html @@ -3,114 +3,115 @@ {% load widget_tweaks %} <div class="form-group row"> - <div class="col-sm-9"> - <label class="form-label" for="id_name" title="{{ form.name.help_text }}">{{ form.name.label_tag }}</label> - {% render_field form.name class+="form-control" title=form.name.help_text %} - </div> - <div class="col-sm-3"> - <label class="form-label" for="id_slug" title="{{ form.slug.help_text }}">{{ form.slug.label_tag }}</label> - {% render_field form.slug class+="form-control" title=form.slug.help_text %} - </div> + <div class="col-sm-9"> + <label class="form-label" for="id_name" title="{{ form.name.help_text }}">{{ form.name.label_tag }}</label> + {% render_field form.name class+="form-control" title=form.name.help_text %} + </div> + <div class="col-sm-3"> + <label class="form-label" for="id_slug" title="{{ form.slug.help_text }}">{{ form.slug.label_tag }}</label> + {% render_field form.slug class+="form-control" title=form.slug.help_text %} + </div> </div> <div class="form-group row"> - {% with conference.get_single_supported_assembly_type as c_ssat %} + {% with conference.get_single_supported_assembly_type as c_ssat %} {% if c_ssat == None %} - <div class="col-sm-2"> + <div class="col-sm-2"> {% if conference.support_assembly_physical %} - <label class="form-label" for="id_is_physical">{{ form.is_physical.label_tag }}</label> - {% render_field form.is_physical class+="form-control" title=form.is_physical.help_text %} + <label class="form-label" for="id_is_physical">{{ form.is_physical.label_tag }}</label> + {% render_field form.is_physical class+="form-control" title=form.is_physical.help_text %} {% endif %} - </div> - <div class="col-sm-2"> + </div> + <div class="col-sm-2"> {% if conference.support_assembly_virtual %} - <label class="form-label" for="id_is_virtual">{{ form.is_virtual.label_tag }}</label> - {% render_field form.is_virtual class+="form-control" title=form.is_virtual.help_text %} + <label class="form-label" for="id_is_virtual">{{ form.is_virtual.label_tag }}</label> + {% render_field form.is_virtual class+="form-control" title=form.is_virtual.help_text %} {% endif %} - </div> - <div class="col-sm-2"> + </div> + <div class="col-sm-2"> {% if conference.support_assembly_remote %} - <label class="form-label" for="id_is_remote">{{ form.is_remote.label_tag }}</label> - {% render_field form.is_remote class+="form-control" title=form.is_remote.help_text %} + <label class="form-label" for="id_is_remote">{{ form.is_remote.label_tag }}</label> + {% render_field form.is_remote class+="form-control" title=form.is_remote.help_text %} {% endif %} - </div> + </div> {% else %} - <div class="col-sm-6 text-muted" title=" - {% if assembly.is_physical %}{% trans "Assembly__is_physical__help" %}{% endif %} - {% if assembly.is_virtual %}{% trans "Assembly__is_virtual__help" %}{% endif %} - {% if assembly.is_remote %}{% trans "Assembly__is_remote__help" %}{% endif %} - "></div> + <div class="col-sm-6 text-muted" + title=" {% if assembly.is_physical %}{% trans "Assembly__is_physical__help" %}{% endif %} {% if assembly.is_virtual %}{% trans "Assembly__is_virtual__help" %}{% endif %} {% if assembly.is_remote %}{% trans "Assembly__is_remote__help" %}{% endif %} "> + </div> {% endif %} - {% endwith %} - <div class="col-sm-{% if conference.support_channels %}3{% else %}6{% endif %}"> - <label class="form-label" for="id_state_assembly">{% trans 'Assembly__state_assembly' %}</label> - <div id="id_state_assembly">{{ form.instance.get_state_assembly_display }}</div> + {% endwith %} + <div class="col-sm-{% if conference.support_channels %}3{% else %}6{% endif %}"> + <label class="form-label" for="id_state_assembly">{% trans 'Assembly__state_assembly' %}</label> + <div id="id_state_assembly">{{ form.instance.get_state_assembly_display }}</div> + </div> + {% if conference.support_channels %} + <div class="col-sm-3"> + <label class="form-label" for="id_state_channel">{% trans 'Assembly__state_channel' %}</label> + <div id="id_state_channel">{{ form.instance.get_state_channel_display }}</div> </div> - {% if conference.support_channels %}<div class="col-sm-3"> - <label class="form-label" for="id_state_channel">{% trans 'Assembly__state_channel' %}</label> - <div id="id_state_channel">{{ form.instance.get_state_channel_display }}</div> - </div>{% endif %} + {% endif %} </div> <div class="form-group row"> - <div class="col-sm-12"> - <label class="form-label" for="id_banner_image" title="{{ form.banner_image.help_text }}">{{ form.banner_image.label_tag }}</label> - {% render_field form.banner_image class+="form-control" title=form.banner_image.help_text %} - </div> + <div class="col-sm-12"> + <label class="form-label" + for="id_banner_image" + title="{{ form.banner_image.help_text }}">{{ form.banner_image.label_tag }}</label> + {% render_field form.banner_image class+="form-control" title=form.banner_image.help_text %} + </div> </div> <div class="form-group row"> - <div class="col-sm-{% if conference.support_assembly_remote %}8{% else %}12{% endif %}"> - <label class="form-label" for="id_assembly_link" title="{{ form.assembly_link.help_text }}">{{ form.assembly_link.label_tag }}</label> - {% render_field form.assembly_link class+="form-control" title=form.assembly_link.help_text type="url" %} - </div> -{% if conference.support_assembly_remote %} + <div class="col-sm-{% if conference.support_assembly_remote %}8{% else %}12{% endif %}"> + <label class="form-label" + for="id_assembly_link" + title="{{ form.assembly_link.help_text }}">{{ form.assembly_link.label_tag }}</label> + {% render_field form.assembly_link class+="form-control" title=form.assembly_link.help_text type="url" %} + </div> + {% if conference.support_assembly_remote %} <div class="col-sm-4"> - <label class="form-label" for="id_assembly_location" title="{{ form.assembly_location.help_text }}">{{ form.assembly_location.label_tag }}</label> - {% render_field form.assembly_location class+="form-control" title=form.assembly_location.help_text rows=3 %} + <label class="form-label" + for="id_assembly_location" + title="{{ form.assembly_location.help_text }}">{{ form.assembly_location.label_tag }}</label> + {% render_field form.assembly_location class+="form-control" title=form.assembly_location.help_text rows=3 %} </div> -{% endif %} + {% endif %} </div> <div class="form-group row"> - <div class="col-sm-6"> - <label class="form-label" for="id_description_de">{{ form.description_de.label_tag }}</label> - {% render_field form.description_de class+="form-control" %} - </div> - <div class="col-sm-6"> - <label class="form-label" for="id_description_en">{{ form.description_en.label_tag }}</label> - {% render_field form.description_en class+="form-control" %} - </div> + <div class="col-sm-6"> + <label class="form-label" for="id_description_de">{{ form.description_de.label_tag }}</label> + {% render_field form.description_de class+="form-control" %} + </div> + <div class="col-sm-6"> + <label class="form-label" for="id_description_en">{{ form.description_en.label_tag }}</label> + {% render_field form.description_en class+="form-control" %} + </div> </div> {% with handled_base_fields='name,slug,is_physical,is_virtual,is_remote,banner_image,assembly_link,assembly_location,description_de,description_en,registration_details'|split:"," %} -{% for field in base_fields %} + {% for field in base_fields %} {% if field.name not in handled_base_fields %} - <div class="form-group row"> - <label class="col-sm-2 col-form-label" for="frm{{ field.name }}">{{ field.label_tag }}</label> - <div class="col-sm-10{% if field.disabled %} text-muted{% endif %}"> - {% if not field.disabled %} - {% render_field field class+="form-control" title=field.help_text %} - {% else %} - <input type="hidden" name="{{ field.name }}" value="{{ field.value }}">{% render_field field class+="form-control" disabled="disabled" %} - {% endif %} - {% if field.help_text %} - <small class="form-text text-muted">{{ field.help_text }}</small> - {% endif %} - {% for error in field.errors %} - <div class="invalid-feedback"> - {{ error }} + <div class="form-group row"> + <label class="col-sm-2 col-form-label" for="frm{{ field.name }}">{{ field.label_tag }}</label> + <div class="col-sm-10{% if field.disabled %} text-muted{% endif %}"> + {% if not field.disabled %} + {% render_field field class+="form-control" title=field.help_text %} + {% else %} + <input type="hidden" name="{{ field.name }}" value="{{ field.value }}"> + {% render_field field class+="form-control" disabled="disabled" %} + {% endif %} + {% if field.help_text %}<small class="form-text text-muted">{{ field.help_text }}</small>{% endif %} + {% for error in field.errors %}<div class="invalid-feedback">{{ error }}</div>{% endfor %} </div> - {% endfor %} </div> - </div> {% endif %} -{% endfor %} + {% endfor %} {% endwith %} <div class="form-group row text-muted"> - <div class="col-sm-12"> - <label class="form-label" for="id_registration_details">{{ form.registration_details.label_tag }}</label> - {% render_field form.registration_details class+="form-control" title=form.registration_details.help_text %} - </div> + <div class="col-sm-12"> + <label class="form-label" for="id_registration_details">{{ form.registration_details.label_tag }}</label> + {% render_field form.registration_details class+="form-control" title=form.registration_details.help_text %} + </div> </div> diff --git a/src/backoffice/templates/backoffice/assembly_create.html b/src/backoffice/templates/backoffice/assembly_create.html index 70cb3becc55bfbec0b38f3269708b1bb46f424d5..80fe1d5b5ec7d6be250275912b4abfabb34b2b04 100644 --- a/src/backoffice/templates/backoffice/assembly_create.html +++ b/src/backoffice/templates/backoffice/assembly_create.html @@ -3,22 +3,20 @@ {% load i18n %} {% block content %} -<div class="card"> - <div class="card-header"> - {% trans "assemblycreate_title" %} + <div class="card"> + <div class="card-header">{% trans "assemblycreate_title" %}</div> + {% if registration_closed %} + <div class="card-body border border-3 border-danger">{% trans "Assembly__registration__closed" %}</div> + {% else %} + <div class="card-body"> + <form action="{% url 'backoffice:assembly-create' %}" method="POST"> + {% csrf_token %} + {% bootstrap_form form %} + <button type="submit" + class="btn btn-primary" + {% if registration_closed %}disabled{% endif %}>{% trans "assemblycreate_submitbtn" %}</button> + </form> + </div> + {% endif %} </div> - {% if registration_closed %} - <div class="card-body border border-3 border-danger"> - {% trans "Assembly__registration__closed" %} - </div> - {% else %} - <div class="card-body"> - <form action="{% url 'backoffice:assembly-create' %}" method="POST"> - {% csrf_token %} - {% bootstrap_form form %} - <button type="submit" class="btn btn-primary"{% if registration_closed %} disabled{% endif %}>{% trans "assemblycreate_submitbtn" %}</button> - </form> - </div> - {% endif %} -</div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/assembly_detail.html b/src/backoffice/templates/backoffice/assembly_detail.html index 9ae3747639f8a0d4abefce12e075f59da4552d0b..e7aba0be0b7aec2349571f880ecf28732f0176a3 100644 --- a/src/backoffice/templates/backoffice/assembly_detail.html +++ b/src/backoffice/templates/backoffice/assembly_detail.html @@ -1,144 +1,171 @@ {% extends 'backoffice/base.html' %} {% load i18n %} -{% block title %} -{{ assembly.name }} | {{ conference.name }} -{% endblock %} +{% block title %}{{ assembly.name }} | {{ conference.name }}{% endblock %} {% block content %} -<div class="row"> - <div class="col-md-10"> - <div class="card border-primary"> - <div class="card-header bg-primary text-white"> - {% if assembly.is_official %}<span class="badge badge-light float-right">official</span>{% endif %} - {% if can_manage %}<span class="float-right"><a href="{% url 'backoffice:assembly-edit' pk=assembly.pk %}" class="btn btn-sm btn-light">{% trans "edit" %}</a></span>{% endif %} - {% if assembly.is_public %}<a class="float-right btn btn-sm btn-info me-2" href="{% hub_absolute 'plainui:assembly' assembly_slug=assembly.slug %}">{% trans 'public' %}</a>{% endif %} - {{ assembly.name }} - </div> - <div class="card-body"> - {% if assembly.parent != None %} - <p class="text-muted">{% trans "Assembly__parent" %}: <a href="{% url 'backoffice:assembly' pk=assembly.parent.pk %}">{{ assembly.parent.name }}</a></p> - {% endif %} + <div class="row"> + <div class="col-md-10"> + <div class="card border-primary"> + <div class="card-header bg-primary text-white"> + {% if assembly.is_official %}<span class="badge badge-light float-right">official</span>{% endif %} + {% if can_manage %} + <span class="float-right"><a href="{% url 'backoffice:assembly-edit' pk=assembly.pk %}" + class="btn btn-sm btn-light">{% trans "edit" %}</a></span> + {% endif %} + {% if assembly.is_public %} + <a class="float-right btn btn-sm btn-info me-2" + href="{% hub_absolute 'plainui:assembly' assembly_slug=assembly.slug %}">{% trans 'public' %}</a> + {% endif %} + {{ assembly.name }} + </div> + <div class="card-body"> + {% if assembly.parent != None %} + <p class="text-muted"> + {% trans "Assembly__parent" %}: <a href="{% url 'backoffice:assembly' pk=assembly.parent.pk %}">{{ assembly.parent.name }}</a> + </p> + {% endif %} - {% if assembly.assembly_link and assembly.assembly_link != '' %} - <p>{% trans "Assembly__assembly_link" %}: <a href="{{ assembly.assembly_link }}">{{ assembly.assembly_link }}</a></p> - {% endif %} + {% if assembly.assembly_link and assembly.assembly_link != '' %} + <p> + {% trans "Assembly__assembly_link" %}: <a href="{{ assembly.assembly_link }}">{{ assembly.assembly_link }}</a> + </p> + {% endif %} - <div id="description"> - {{ assembly.description_html|safe|default:"¯\_(ツ)_/¯" }} - </div> + <div id="description">{{ assembly.description_html|safe|default:"¯\_(ツ) _/¯" }}</div> - {% if assembly.public_contact != None and assembly.public_contact != '' %} - 📧 <a href="mailto:{{ assembly.public_contact }}">{{ assembly.public_contact }}</a> + {% if assembly.public_contact != None and assembly.public_contact != '' %} + 📧 <a href="mailto:{{ assembly.public_contact }}">{{ assembly.public_contact }}</a> + {% endif %} + </div> + {% if assembly.tags %} + <div class="card-footer d-inline-flex gap-1"> + {% for tag in assembly.tags.all %} + <a class="badge bg-primary rounded-pill py-2 px-3 text-decoration-none" + href="{% hub_absolute "plainui:tag" tag_slug=tag.slug %}">{{ tag.slug }}</a> + {% endfor %} + </div> {% endif %} </div> - {% if assembly.tags %} - <div class="card-footer d-inline-flex gap-1"> - {% for tag in assembly.tags.all %} - <a class="badge bg-primary rounded-pill py-2 px-3 text-decoration-none" href={% hub_absolute "plainui:tag" tag_slug=tag.slug %}>{{ tag.slug }}</a> - {% endfor %} - </div> - {% endif %} </div> - </div> - <div class="col-md-2"> - <div class="card"> - <div class="card-header text-center"><span title="{% trans 'Assembly__hierarchy' %}">{{ assembly.get_hierarchy_display }}</span></div> - <div class="card-body text-center"> - <p>{{ assembly.get_assembly_type_display }}</p> - <p>{% translate "Assembly__state_assembly" %}<br><span class="font-weight-bold{% if assembly.is_public %} text-success{% elif assembly.state_assembly == 'rejected' %} text-danger{% endif %}">{{ assembly.get_state_assembly_display }}</span></p> - {% if conference.support_channels %} - <p>{% translate "Assembly__state_channel" %}<br><span class="font-weight-bold{% if assembly.is_public %} text-success{% elif assembly.state_channel == 'rejected' %} text-danger{% endif %}">{{ assembly.get_state_channel_display }}</span></p> - {% endif %} + <div class="col-md-2"> + <div class="card"> + <div class="card-header text-center"> + <span title="{% trans 'Assembly__hierarchy' %}">{{ assembly.get_hierarchy_display }}</span> + </div> + <div class="card-body text-center"> + <p>{{ assembly.get_assembly_type_display }}</p> + <p> + {% translate "Assembly__state_assembly" %} + <br> + <span class="font-weight-bold{% if assembly.is_public %} text-success{% elif assembly.state_assembly == 'rejected' %} text-danger{% endif %}">{{ assembly.get_state_assembly_display }}</span> + </p> + {% if conference.support_channels %} + <p> + {% translate "Assembly__state_channel" %} + <br> + <span class="font-weight-bold{% if assembly.is_public %} text-success{% elif assembly.state_channel == 'rejected' %} text-danger{% endif %}">{{ assembly.get_state_channel_display }}</span> + </p> + {% endif %} + </div> </div> </div> </div> -</div> -{% if assembly.state_assembly == "planned" %} -<div class="row mt-3"> - <div class="col-md-12"> - <div class="card"> - <div class="card-header bg-warning">{% trans "Assembly__state_assembly-planned__hint" %}</div> - <div class="card-body">{% blocktrans %}Assembly__state_assembly-planned__description{% endblocktrans %}</div> + {% if assembly.state_assembly == "planned" %} + <div class="row mt-3"> + <div class="col-md-12"> + <div class="card"> + <div class="card-header bg-warning">{% trans "Assembly__state_assembly-planned__hint" %}</div> + <div class="card-body">{% blocktrans %}Assembly__state_assembly-planned__description{% endblocktrans %}</div> + </div> + </div> </div> - </div> -</div> -{% endif %} + {% endif %} -{% if staff_access %} -<div class="row mt-3"> - <div class="col-md-12"> - <div class="card"> - <div class="card-header">{% trans "Assembly__registration_details" %}</div> - <div class="card-body">{{ assembly.registration_details|default:'<span class="badge badge-secondary">-/-</span>' }}</div> + {% if staff_access %} + <div class="row mt-3"> + <div class="col-md-12"> + <div class="card"> + <div class="card-header">{% trans "Assembly__registration_details" %}</div> + <div class="card-body"> + {{ assembly.registration_details|default:'<span class="badge badge-secondary">-/-</span>' }} + </div> + </div> + </div> </div> - </div> -</div> -{% endif %} + {% endif %} -<div class="row mt-3"> - <div class="col-md-12"> - <div class="card"> - {% if assembly.banner_image %} - <div class="card-header">{{ assembly.banner_image_width }}x{{ assembly.banner_image_height }}px</div> - <div class="card-body"> - <img src="{{ assembly.banner_image.url }}" alt="Banner Image" class="img-fluid"> + <div class="row mt-3"> + <div class="col-md-12"> + <div class="card"> + {% if assembly.banner_image %} + <div class="card-header">{{ assembly.banner_image_width }}x{{ assembly.banner_image_height }}px</div> + <div class="card-body"> + <img src="{{ assembly.banner_image.url }}" + alt="Banner Image" + class="img-fluid"> + </div> + {% else %} + <div class="card-body">404 banner image :(</div> + {% endif %} </div> - {% else %} - <div class="card-body">404 banner image :(</div> - {% endif %} </div> </div> -</div> -<div class="row mt-3"> - {% if assembly.hierarchy == 'regular' %} - <div class="col-md-12"> - <div class="card"> - <div class="card-header">{% trans 'assembly_links' %}</div> - <div class="card-body"> - {% with la=assembly.linked_assemblies %} - {% if la|length > 0 %} - {% for linked in la %} - {% if staff_access %} - <a href="{% url 'backoffice:assembly' pk=linked.pk %}">{{ linked.name }}</a> + <div class="row mt-3"> + {% if assembly.hierarchy == 'regular' %} + <div class="col-md-12"> + <div class="card"> + <div class="card-header">{% trans 'assembly_links' %}</div> + <div class="card-body"> + {% with la=assembly.linked_assemblies %} + {% if la|length > 0 %} + {% for linked in la %} + {% if staff_access %} + <a href="{% url 'backoffice:assembly' pk=linked.pk %}">{{ linked.name }}</a> + {% else %} + {{ linked.name }} + {% endif %} + {% if not forloop.last %},{% endif %} + {% endfor %} + </ul> {% else %} - {{ linked.name }} - {% endif %}{% if not forloop.last %}, {% endif %} - {% endfor %} - </ul> - {% else %} - {% trans 'no_entries' %} - {% endif %} - {% endwith %} + {% trans 'no_entries' %} + {% endif %} + {% endwith %} + </div> </div> </div> - </div> {% else %} - <div class="col-md-12"> - <div class="card border-primary"> - <div class="card-header">{% trans 'assembly_children' %}</div> - <div class="card-body"> - {% if assembly.children.exists %} - <table class="table table-sm m-0"> - <thead> - <tr> - <th>Name</th> - <th>Beschreibung</th> - </tr> - </thead> - <tbody> - {% for child in assembly.children.all %} - <tr><td><a href="{% url 'backoffice:assembly' pk=child.pk %}">{{ child.name }}</a></td><td>{{ child.description|truncatechars:200 }}</td></tr> - {% endfor %} - </tbody> - </table> - {% else %} - -/- - {% endif %} + <div class="col-md-12"> + <div class="card border-primary"> + <div class="card-header">{% trans 'assembly_children' %}</div> + <div class="card-body"> + {% if assembly.children.exists %} + <table class="table table-sm m-0"> + <thead> + <tr> + <th>Name</th> + <th>Beschreibung</th> + </tr> + </thead> + <tbody> + {% for child in assembly.children.all %} + <tr> + <td> + <a href="{% url 'backoffice:assembly' pk=child.pk %}">{{ child.name }}</a> + </td> + <td>{{ child.description|truncatechars:200 }}</td> + </tr> + {% endfor %} + </tbody> + </table> + {% else %} + -/- + {% endif %} + </div> </div> - </div> {% endif %} </div> </div> diff --git a/src/backoffice/templates/backoffice/assembly_edit.html b/src/backoffice/templates/backoffice/assembly_edit.html index 5b4b655362053b94dea87fc5c3ee80c9d191b360..0fd1b72c3d76386ca93f0d28f6f5433d5c7840f7 100644 --- a/src/backoffice/templates/backoffice/assembly_edit.html +++ b/src/backoffice/templates/backoffice/assembly_edit.html @@ -4,139 +4,156 @@ {% load widget_tweaks %} {% block content %} -{% include "backoffice/assembly_edit_header.html" %} + {% include "backoffice/assembly_edit_header.html" %} -{% show_disclaimer "assembly_edit" %} + {% show_disclaimer "assembly_edit" %} -<form action="{% url 'backoffice:assembly-edit' pk=assembly.id %}" method="POST" enctype="multipart/form-data"> - {% csrf_token %} + <form action="{% url 'backoffice:assembly-edit' pk=assembly.id %}" + method="POST" + enctype="multipart/form-data"> + {% csrf_token %} -{% if form.errors %} -<div class="row"><div class="col-md-12"> - <div class="alert alert-danger"> - {{ form.errors }} - </div> -</div></div> -{% endif %} - -<div class="row"><div class="col-md-12"> -<div class="card mb-3"> - <div class="card-header"> - {% trans "assemblyedit_basicdata" %} - </div> - <div class="card-body"> - {% if assembly.basedata_readonly %} - <div class="alert alert-warning"{% if staff_access %} style="text-decoration: line-through;"{% endif %}>{% trans 'assemblyedit_readonlybasedata' %}</div> + {% if form.errors %} + <div class="row"> + <div class="col-md-12"> + <div class="alert alert-danger">{{ form.errors }}</div> + </div> + </div> {% endif %} - {% include "backoffice/assembly_basicdata.html" %} - </div> -</div> -</div> -</div> -{% if conference.additional_fields_schema %} -<div class="row"> -<div class="col-md-12"> - <div class="card mb-3"> - <div class="card-header"> - {% trans "assemblyedit_additionalfields" %} - </div> - <div class="card-body"> - {% include "backoffice/assembly_additionalfields.html" with schema=conference.get_additional_fields_schema data=assembly.registration_data %} + <div class="row"> + <div class="col-md-12"> + <div class="card mb-3"> + <div class="card-header">{% trans "assemblyedit_basicdata" %}</div> + <div class="card-body"> + {% if assembly.basedata_readonly %} + <div class="alert alert-warning" + {% if staff_access %}style="text-decoration: line-through;"{% endif %}> + {% trans 'assemblyedit_readonlybasedata' %} + </div> + {% endif %} + {% include "backoffice/assembly_basicdata.html" %} + </div> </div> + </div> </div> -</div> -</div> -{% endif %} -{% if conference.support_clusters and not assembly.is_cluster %} -<div class="row"><div class="col-md-12"> - <div class="card mb-3"> - <div class="card-header"> - {% trans 'assemblyedit_parent' %} - </div> + {% if conference.additional_fields_schema %} + <div class="row"> + <div class="col-md-12"> + <div class="card mb-3"> + <div class="card-header">{% trans "assemblyedit_additionalfields" %}</div> + <div class="card-body"> + {% include "backoffice/assembly_additionalfields.html" with schema=conference.get_additional_fields_schema data=assembly.registration_data %} + </div> + </div> + </div> + </div> + {% endif %} - <div class="card-body"> - <p> - {% trans 'assemblyedit_parent__intro' %} - </p> + {% if conference.support_clusters and not assembly.is_cluster %} + <div class="row"> + <div class="col-md-12"> + <div class="card mb-3"> + <div class="card-header">{% trans 'assemblyedit_parent' %}</div> - <div class="input-group"> - <label class="form-label" for="assembly_parent">{% trans 'assembly_parent' %}</label> - <select id="assembly_parent" name="parent_id"> - <option value=""{% if assembly.parent is None %} selected="selected"{% endif %}>-- {% trans 'none' %} --</option> - {% if assembly.parent is not None and assembly.parent.hierarchy == assembly.Hierarchy.CLUSTER_RESTRICTED %} - <option value="{{ assembly.parent.pk }}" selected="selected">{{ assembly.parent.name }}</option> - {% endif %} - {% for cluster in clusters %} - <option value="{{ cluster.pk }}"{% if assembly.parent.pk == cluster.pk %} selected="selected"{% endif %}>{{ cluster.name }}</option> - {% endfor %} - </select> - </div> - </div> - </div> -</div></div> -{% endif %} + <div class="card-body"> + <p>{% trans 'assemblyedit_parent__intro' %}</p> -<div class="row"> - <div class="col-md-6"> - <div class="card"> - {% if not assembly.is_cluster %} - <div class="card-header"> - {% trans 'assemblyedit_links' %} - <a href="{% url 'backoffice:assembly-editlinks' pk=assembly.pk %}" target="_blank" title="{% trans 'opensinnewpage' %}">({% trans 'edit' %})</a> - </div> - <div class="card-body"> - {% with la=assembly.linked_assemblies %} - {% if la|length > 0 %} - <ul> - {% for linked in la %} - <li><a href="{% url 'backoffice:assembly' pk=linked.pk %}" target="_blank">{{ linked.name }}</a></li> - {% endfor %} - </ul> - {% else %} - {% trans 'no_entries' %} - {% endif %} - {% endwith %} + <div class="input-group"> + <label class="form-label" for="assembly_parent">{% trans 'assembly_parent' %}</label> + + <select id="assembly_parent" name="parent_id"> + <option value="" + {% if assembly.parent is None %}selected="selected"{% endif %}> + -- {% trans 'none' %} -- + </option> + {% if assembly.parent is not None and assembly.parent.hierarchy == assembly.Hierarchy.CLUSTER_RESTRICTED %} + <option value="{{ assembly.parent.pk }}" selected="selected">{{ assembly.parent.name }}</option> + {% endif %} + {% for cluster in clusters %} + <option value="{{ cluster.pk }}" + {% if assembly.parent.pk == cluster.pk %}selected="selected"{% endif %}> + {{ cluster.name }} + </option> + {% endfor %} + </select> + </div> + </div> + </div> + </div> </div> - {% else %}{# assembly.is_cluster #} - <div class="card-header"> - {% trans 'assemblyedit_children' %} - <a href="{% url 'backoffice:assembly-editchildren' pk=assembly.pk %}" target="_blank" title="{% trans 'opensinnewpage' %}">({% trans 'edit' %})</a> + {% endif %} + + <div class="row"> + <div class="col-md-6"> + <div class="card"> + {% if not assembly.is_cluster %} + <div class="card-header"> + {% trans 'assemblyedit_links' %} + <a href="{% url 'backoffice:assembly-editlinks' pk=assembly.pk %}" + target="_blank" + title="{% trans 'opensinnewpage' %}">({% trans 'edit' %})</a> + </div> + <div class="card-body"> + {% with la=assembly.linked_assemblies %} + {% if la|length > 0 %} + <ul> + {% for linked in la %} + <li> + <a href="{% url 'backoffice:assembly' pk=linked.pk %}" target="_blank">{{ linked.name }}</a> + </li> + {% endfor %} + </ul> + {% else %} + {% trans 'no_entries' %} + {% endif %} + {% endwith %} + </div> + {% else %} + {# assembly.is_cluster #} + <div class="card-header"> + {% trans 'assemblyedit_children' %} + <a href="{% url 'backoffice:assembly-editchildren' pk=assembly.pk %}" + target="_blank" + title="{% trans 'opensinnewpage' %}">({% trans 'edit' %})</a> + </div> + <div class="card-body"> + {% with children=assembly.children.all %} + {% if children|length > 0 %} + <ul> + {% for child in children %} + <li> + <a href="{% url 'backoffice:assembly' pk=child.pk %}" target="_blank">{{ child.name }}</a> + </li> + {% endfor %} + </ul> + {% else %} + {% trans 'no_entries' %} + {% endif %} + {% endwith %} + </div> + {% endif %} + </div> </div> - <div class="card-body"> - {% with children=assembly.children.all %} - {% if children|length > 0 %} - <ul> - {% for child in children %} - <li><a href="{% url 'backoffice:assembly' pk=child.pk %}" target="_blank">{{ child.name }}</a></li> - {% endfor %} - </ul> - {% else %} - {% trans 'no_entries' %} - {% endif %} - {% endwith %} + <div class="col-md-6"> + <div class="card"> + <div class="card-header">Tags</div> + <div class="card-body"> + <input id="tags" + type="text" + name="tags" + value="{% for tag in assembly.sorted_tags %}{{ tag }}{% if not forloop.last %}, {% endif %}{% endfor %}"> + <small class="form-text text-muted">{% trans 'Assembly__tags__splitwithcomma' %}</small> + </div> + </div> </div> - {% endif %} </div> - </div> - <div class="col-md-6"> - <div class="card"> - <div class="card-header"> - Tags - </div> - <div class="card-body"> - <input id="tags" type="text" name="tags" value="{% for tag in assembly.sorted_tags %}{{ tag }}{% if not forloop.last %}, {% endif %}{% endfor %}"> - <small class="form-text text-muted">{% trans 'Assembly__tags__splitwithcomma' %}</small> + + <div class="row pb-5"> + <div class="col-md-12 text-right mb-5"> + <button type="submit" class="btn btn-primary">{% trans "assemblyedit_submitbtn" %}</button> </div> </div> - </div> -</div> - -<div class="row pb-5"> - <div class="col-md-12 text-right mb-5"> - <button type="submit" class="btn btn-primary">{% trans "assemblyedit_submitbtn" %}</button> - </div> -</div> -</form> + </form> {% endblock %} diff --git a/src/backoffice/templates/backoffice/assembly_edit_header.html b/src/backoffice/templates/backoffice/assembly_edit_header.html index dfdcdfabf39072bf7dcde4bfa0d25b144854adc4..645aa36b4d56dbec364c9d5ff6b733f3cd43d84f 100644 --- a/src/backoffice/templates/backoffice/assembly_edit_header.html +++ b/src/backoffice/templates/backoffice/assembly_edit_header.html @@ -1,6 +1,4 @@ {% load i18n %} {% if staff_mode %} -<div class="alert alert-info mb-3"> - {% trans "assemblyedit_staffmode" %} -</div> -{% endif %} \ No newline at end of file + <div class="alert alert-info mb-3">{% trans "assemblyedit_staffmode" %}</div> +{% endif %} diff --git a/src/backoffice/templates/backoffice/assembly_editchildren.html b/src/backoffice/templates/backoffice/assembly_editchildren.html index e325c1703ec39944f7ce7da8f61ad2ac9fe305e0..448c8c9d67c268364767baffdc7036a4b80174f5 100644 --- a/src/backoffice/templates/backoffice/assembly_editchildren.html +++ b/src/backoffice/templates/backoffice/assembly_editchildren.html @@ -4,64 +4,64 @@ {% load widget_tweaks %} {% block content %} -{% include "backoffice/assembly_edit_header.html" %} + {% include "backoffice/assembly_edit_header.html" %} -{% if form.errors %} -<div class="row"><div class="col-md-12"> - <div class="alert alert-danger"> - {{ form.errors }} - </div> -</div></div> -{% endif %} - -<div class="row"> - <div class="col-md-12"> - <div class="card mb-3"> - <div class="card-header"> - {% trans 'assemblyedit_addchild' %} + {% if form.errors %} + <div class="row"> + <div class="col-md-12"> + <div class="alert alert-danger">{{ form.errors }}</div> </div> - <div class="card-body"> - <form action="{% url 'backoffice:assembly-editchildren' pk=assembly.id %}" method="POST">{% csrf_token %} - <select class="form-control" name="add" required> - <option value="">({% trans 'please_select' %})</option> - {% for a in candidates %} - <option value="{{ a.pk }}">{{ a.name }}</option> - {% endfor %} - </select> - <button type="submit" class="btn btn-sm btn-secondary">{% trans 'add' %}</button> - </form> + </div> + {% endif %} + + <div class="row"> + <div class="col-md-12"> + <div class="card mb-3"> + <div class="card-header">{% trans 'assemblyedit_addchild' %}</div> + <div class="card-body"> + <form action="{% url 'backoffice:assembly-editchildren' pk=assembly.id %}" + method="POST"> + {% csrf_token %} + <select class="form-control" name="add" required> + <option value="">({% trans 'please_select' %})</option> + {% for a in candidates %}<option value="{{ a.pk }}">{{ a.name }}</option>{% endfor %} + </select> + <button type="submit" class="btn btn-sm btn-secondary">{% trans 'add' %}</button> + </form> + </div> </div> </div> </div> -</div> -<div class="row"> - <div class="col-md-12"> - <div class="card mb-3"> - <div class="card-header"> - {% trans 'assemblyedit_children' %} - </div> - <div class="card-body"> - {% with children=assembly.children.all %} - {% if children|length > 0 %} - <ul> - {% for child in children %} - <li> - {% if child.state_assembly == "hidden" %}<i class="bi bi-eye-slash" title='hidden'></i> {% endif %}<a href="{% url 'backoffice:assembly' pk=child.id %}">{{ child.name }}</a> - <form action="{% url 'backoffice:assembly-editchildren' pk=assembly.id %}" method="POST" style="display: inline;">{% csrf_token %} - <input type="hidden" name="delete" value="{{ child.pk }}"> - <button type="submit" class="btn btn-sm btn-secondary">{% trans 'delete' %}</button> - </form> - </li> - {% endfor %} - </ul> - {% else %} - {% trans 'no_entries' %} - {% endif %} - {% endwith %} + <div class="row"> + <div class="col-md-12"> + <div class="card mb-3"> + <div class="card-header">{% trans 'assemblyedit_children' %}</div> + <div class="card-body"> + {% with children=assembly.children.all %} + {% if children|length > 0 %} + <ul> + {% for child in children %} + <li> + {% if child.state_assembly == "hidden" %}<i class="bi bi-eye-slash" title='hidden'></i>{% endif %} + <a href="{% url 'backoffice:assembly' pk=child.id %}">{{ child.name }}</a> + <form action="{% url 'backoffice:assembly-editchildren' pk=assembly.id %}" + method="POST" + style="display: inline"> + {% csrf_token %} + <input type="hidden" name="delete" value="{{ child.pk }}"> + <button type="submit" class="btn btn-sm btn-secondary">{% trans 'delete' %}</button> + </form> + </li> + {% endfor %} + </ul> + {% else %} + {% trans 'no_entries' %} + {% endif %} + {% endwith %} + </div> </div> </div> </div> -</div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/assembly_editlinks.html b/src/backoffice/templates/backoffice/assembly_editlinks.html index 79111c38111c971d7ffa1b07d48c2f5d955df1e7..851f89ac7014ac28351ad6f3af13267b6f4171ed 100644 --- a/src/backoffice/templates/backoffice/assembly_editlinks.html +++ b/src/backoffice/templates/backoffice/assembly_editlinks.html @@ -4,65 +4,66 @@ {% load widget_tweaks %} {% block content %} -{% include "backoffice/assembly_edit_header.html" %} + {% include "backoffice/assembly_edit_header.html" %} -{% if form.errors %} -<div class="row"><div class="col-md-12"> - <div class="alert alert-danger"> - {{ form.errors }} - </div> -</div></div> -{% endif %} - -{% with links=assembly.linked_assemblies %} -<div class="row"> - <div class="col-md-12"> - <div class="card mb-3"> - <div class="card-header"> - {% trans 'assemblyedit_addlink' %} - </div> - <div class="card-body"> - <p>{% trans 'assemblyedit_links__intro' %}</p> - <form action="{% url 'backoffice:assembly-editlinks' pk=assembly.id %}" method="POST">{% csrf_token %} - <select class="form-control" name="add" required> - <option value="">({% trans 'please_select' %})</option> - {% for a in candidates %} - <option value="{{ a.pk }}"{% if a in links or a.pk == assembly.pk %} disabled{% endif %}>{{ a.name }}</option> - {% endfor %} - </select> - <button type="submit" class="btn btn-sm btn-secondary">{% trans 'add' %}</button> - </form> + {% if form.errors %} + <div class="row"> + <div class="col-md-12"> + <div class="alert alert-danger">{{ form.errors }}</div> </div> </div> - </div> -</div> + {% endif %} -<div class="row pb-10rem"> - <div class="col-md-12"> - <div class="card mb-3"> - <div class="card-header"> - {% trans 'assemblyedit_links' %} - </div> - <div class="card-body"> - {% if links|length > 0 %} - <ul> - {% for link in links %} - <li> - {{ link.name }} (Slug: {{ link.slug }}) - <form action="{% url 'backoffice:assembly-editlinks' pk=assembly.id %}" method="POST">{% csrf_token %} - <input type="hidden" name="delete" value="{{ link.pk }}"> - <button type="submit" class="btn btn-sm btn-secondary">{% trans 'delete' %}</button> + {% with links=assembly.linked_assemblies %} + <div class="row"> + <div class="col-md-12"> + <div class="card mb-3"> + <div class="card-header">{% trans 'assemblyedit_addlink' %}</div> + <div class="card-body"> + <p>{% trans 'assemblyedit_links__intro' %}</p> + <form action="{% url 'backoffice:assembly-editlinks' pk=assembly.id %}" + method="POST"> + {% csrf_token %} + <select class="form-control" name="add" required> + <option value="">({% trans 'please_select' %})</option> + {% for a in candidates %} + <option value="{{ a.pk }}" + {% if a in links or a.pk == assembly.pk %}disabled{% endif %}>{{ a.name }}</option> + {% endfor %} + </select> + <button type="submit" class="btn btn-sm btn-secondary">{% trans 'add' %}</button> </form> - </li> - {% endfor %} - </ul> - {% else %} - {% trans 'no_entries' %} - {% endif %} + </div> + </div> + </div> + </div> + + <div class="row pb-10rem"> + <div class="col-md-12"> + <div class="card mb-3"> + <div class="card-header">{% trans 'assemblyedit_links' %}</div> + <div class="card-body"> + {% if links|length > 0 %} + <ul> + {% for link in links %} + <li> + {{ link.name }} (Slug: {{ link.slug }}) + <form action="{% url 'backoffice:assembly-editlinks' pk=assembly.id %}" + method="POST"> + {% csrf_token %} + <input type="hidden" name="delete" value="{{ link.pk }}"> + <button type="submit" class="btn btn-sm btn-secondary">{% trans 'delete' %}</button> + </form> + </li> + {% endfor %} + </ul> + {% else %} + {% trans 'no_entries' %} + {% endif %} + </div> + </div> </div> </div> - </div> -</div> -{% endwith %} + {% endwith %} {% endblock %} diff --git a/src/backoffice/templates/backoffice/assembly_events.html b/src/backoffice/templates/backoffice/assembly_events.html index dcdb2e085552ce4d53d64ce6330dee18f03c2f49..0633ab752afb2025800b56499c1cb7b62a627374 100644 --- a/src/backoffice/templates/backoffice/assembly_events.html +++ b/src/backoffice/templates/backoffice/assembly_events.html @@ -3,16 +3,17 @@ {% load static %} {% block title %} -{% trans "Events" %} | {{ assembly.name }} | {{ conference.name }} + {% trans "Events" %} | {{ assembly.name }} | {{ conference.name }} {% endblock %} {% block htmlhead %} - <link rel="stylesheet" href="{% static 'vendor/datatables/datatables.min.css' %}"> + <link rel="stylesheet" + href="{% static 'vendor/datatables/datatables.min.css' %}"> {% endblock %} {% block scripts %} - <script src="{% static 'vendor/datatables/datatables.min.js' %}"></script> - <script> + <script src="{% static 'vendor/datatables/datatables.min.js' %}"></script> + <script> $(document).ready(function() { $('#events').DataTable({ pageLength: 100, @@ -42,40 +43,45 @@ } }); }); - </script> + </script> {% endblock %} {% block content %} -{% include "backoffice/assembly_edit_header.html" %} + {% include "backoffice/assembly_edit_header.html" %} -<div class="row"> - <div class="col-md-12"> - <div class="card border-default"> - <div class="card-header bg-default"> - {% trans 'Events' %} - {% if can_manage %} - <a href="{% url 'backoffice:assembly-create-event' assembly=assembly.id %}" class="btn btn-sm btn-primary float-right">+</a> - {% endif %} + <div class="row"> + <div class="col-md-12"> + <div class="card border-default"> + <div class="card-header bg-default"> + {% trans 'Events' %} + {% if can_manage %} + <a href="{% url 'backoffice:assembly-create-event' assembly=assembly.id %}" + class="btn btn-sm btn-primary float-right">+</a> + {% endif %} + </div> + <div class="card-body"> + <table class="table table-sm table-hover table-striped" id="events"> + <thead> + <tr> + <td>Name</td> + <td>Start</td> + </tr> + </thead> + <tbody> + {% for event in object_list %} + <tr class="{% if not event.is_public %}text-muted{% endif %}"> + <td> + <a href="{% url 'backoffice:assembly-event' assembly=assembly.pk pk=event.pk %}">{{ event.name|default:"???" }}</a> + </td> + <td> + {{ event.schedule_start|default:'<span class="badge badge-secondary">?</span>' }} + </td> + </tr> + {% endfor %} + </tbody> + </table> + </div> </div> - <div class="card-body"> - <table class="table table-sm table-hover table-striped" id="events"> - <thead> - <tr> - <td>Name</td> - <td>Start</td> - </tr> - </thead> - <tbody> - {% for event in object_list %} - <tr class="{% if not event.is_public %}text-muted{% endif %}"> - <td><a href="{% url 'backoffice:assembly-event' assembly=assembly.pk pk=event.pk %}">{{ event.name|default:"???" }}</a></td> - <td>{{ event.schedule_start|default:'<span class="badge badge-secondary">?</span>' }}</td> - </tr> - {% endfor %} - </tbody> - </table> - </div> - </div> </form> </div> </div> diff --git a/src/backoffice/templates/backoffice/assembly_list.html b/src/backoffice/templates/backoffice/assembly_list.html index febff09fc5befde70b027fbc273d0f41f3203f70..fe03a4a6d184a454e065bb4ed2640563a6f3f1c0 100644 --- a/src/backoffice/templates/backoffice/assembly_list.html +++ b/src/backoffice/templates/backoffice/assembly_list.html @@ -4,12 +4,13 @@ {% load static %} {% block htmlhead %} - <link rel="stylesheet" href="{% static 'vendor/datatables/datatables.min.css' %}"> + <link rel="stylesheet" + href="{% static 'vendor/datatables/datatables.min.css' %}"> {% endblock %} {% block scripts %} - <script src="{% static 'vendor/datatables/datatables.min.js' %}"></script> - <script> + <script src="{% static 'vendor/datatables/datatables.min.js' %}"></script> + <script> $(document).ready(function() { $('#assemblies').DataTable({ pageLength: 100, @@ -39,53 +40,79 @@ } }); }); - </script> + </script> {% endblock %} {% block content %} -<div class="card"> - <div class="card-header"><span class="text-muted">{% trans 'Assemblys' %}:</span> {{ mode_display }}</div> - <div class="card-body"> - -{% if filter_tag is not None %} - <div class="alert alert-info"> - {% trans "assemblies_filteredtag" %}: <strong>{{ filter_tag }}</strong> + <div class="card"> + <div class="card-header"> + <span class="text-muted">{% trans 'Assemblys' %}:</span> {{ mode_display }} </div> -{% endif %} + <div class="card-body"> + + {% if filter_tag is not None %} + <div class="alert alert-info"> + {% trans "assemblies_filteredtag" %}: <strong>{{ filter_tag }}</strong> + </div> + {% endif %} - <table class="table table-sm" id="assemblies"> - <thead> - <tr> - {% if conference.support_clusters %}<th>{% trans "Assembly__hierarchy-cluster" %}</th>{% endif %} - <th>{% trans "Assembly__name" %}</th> - <th title="{% trans "Assembly__is_official" %}">{% trans "Assembly__is_official__short" %}</th> - <th>{% trans "Assembly__state_assembly" %}</th> - {% if conference.support_channels %} - <th>{% trans "Assembly__state_channel" %}</th> - {% endif %} - <th>{% trans "Assembly__last_update" %}</th> - </tr> - </thead> - <tbody> - {% for assembly in object_list %} - <tr class="{% if conference.support_clusters and assembly.is_public_cluster %}font-weight-bold{% endif %}{% if not assembly.is_public %}text-muted{% endif %}"> - {% if conference.support_clusters %}<td>{{ assembly.is_cluster|yesno }}</td>{% endif %} - <td>{% spaceless %} - <a href="{% url 'backoffice:assemblyteam-detail' pk=assembly.pk %}">{{ assembly.name }}</a> - {% if assembly.user_can_edit %}<a href="{% url 'backoffice:assembly-edit' pk=assembly.id %}">✎</a>{% endif %} - {% endspaceless %}</td> - <td>{{ assembly.is_official|yesno }}</td> - <td class="{% if assembly.is_public_assembly %}text-success{% elif assembly.state_assembly == 'rejected' %}text-danger{% endif %}">{% if assembly.state_assembly != 'none' %}{{ assembly.get_state_assembly_display }}{% else %}-{% endif %}</td> - {% if conference.support_channels %} - <td class="{% if assembly.is_public_channel %}text-success{% elif assembly.state_channel == 'rejected' %}text-danger{% endif %}">{% if assembly.state_channel != 'none' %}{{ assembly.get_state_channel_display }}{% else %}-{% endif %}</td> - {% endif %} - <td>{% if assembly.last_update_assembly > assembly.last_update_staff %}<span title="{% trans "Assembly__last_update_assembly" %}">{{ assembly.last_update_assembly|naturaltime }}</span>{% else %}<span class="text-muted" title="{% trans "Assembly__last_update_staff" %}">{{ assembly.last_update_staff|naturaltime }}</span>{% endif %}</td> - </tr> - {% endfor %} - </tbody> - </table> + <table class="table table-sm" id="assemblies"> + <thead> + <tr> + {% if conference.support_clusters %} + <th>{% trans "Assembly__hierarchy-cluster" %}</th> + {% endif %} + <th>{% trans "Assembly__name" %}</th> + <th title="{% trans "Assembly__is_official" %}">{% trans "Assembly__is_official__short" %}</th> + <th>{% trans "Assembly__state_assembly" %}</th> + {% if conference.support_channels %} + <th>{% trans "Assembly__state_channel" %}</th> + {% endif %} + <th>{% trans "Assembly__last_update" %}</th> + </tr> + </thead> + <tbody> + {% for assembly in object_list %} + <tr class="{% if conference.support_clusters and assembly.is_public_cluster %}font-weight-bold{% endif %}{% if not assembly.is_public %}text-muted{% endif %}"> + {% if conference.support_clusters %}<td>{{ assembly.is_cluster|yesno }}</td>{% endif %} + <td> + {% spaceless %} + <a href="{% url 'backoffice:assemblyteam-detail' pk=assembly.pk %}">{{ assembly.name }}</a> + {% if assembly.user_can_edit %} + <a href="{% url 'backoffice:assembly-edit' pk=assembly.id %}">✎</a> + {% endif %} + {% endspaceless %} + </td> + <td>{{ assembly.is_official|yesno }}</td> + <td class="{% if assembly.is_public_assembly %}text-success{% elif assembly.state_assembly == 'rejected' %}text-danger{% endif %}"> + {% if assembly.state_assembly != 'none' %} + {{ assembly.get_state_assembly_display }} + {% else %} + - + {% endif %} + </td> + {% if conference.support_channels %} + <td class="{% if assembly.is_public_channel %}text-success{% elif assembly.state_channel == 'rejected' %}text-danger{% endif %}"> + {% if assembly.state_channel != 'none' %} + {{ assembly.get_state_channel_display }} + {% else %} + - + {% endif %} + </td> + {% endif %} + <td> + {% if assembly.last_update_assembly > assembly.last_update_staff %} + <span title="{% trans "Assembly__last_update_assembly" %}">{{ assembly.last_update_assembly|naturaltime }}</span> + {% else %} + <span class="text-muted" title="{% trans "Assembly__last_update_staff" %}">{{ assembly.last_update_staff|naturaltime }}</span> + {% endif %} + </td> + </tr> + {% endfor %} + </tbody> + </table> + </div> </div> -</div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/assembly_members.html b/src/backoffice/templates/backoffice/assembly_members.html index 6f724930325b76a1e92f67ee8da50c42bd71ff48..ab90c26efc608e31563a38d48a4b593f459d286d 100644 --- a/src/backoffice/templates/backoffice/assembly_members.html +++ b/src/backoffice/templates/backoffice/assembly_members.html @@ -3,91 +3,136 @@ {% load widget_tweaks %} {% block title %} -{% trans "Assembly__members" %} | {{ assembly.name }} | {{ conference.name }} + {% trans "Assembly__members" %} | {{ assembly.name }} | {{ conference.name }} {% endblock %} {% block content %} -{% include "backoffice/assembly_edit_header.html" %} + {% include "backoffice/assembly_edit_header.html" %} -<div class="row pb-10rem"> - <div class="col-md-12"> - <div class="card border-default"> - <div class="card-header bg-default"> - {% trans 'Assembly__members' %} - </div> - <div class="card-body"> - <p>{% trans 'Assembly__members__introduction' %}</p> - <form class="form-inline" action="{% url 'backoffice:assembly-members' pk=assembly.pk %}" method="POST">{% csrf_token %} - <table class="table table-sm table-hover table-striped"> - <thead> - <tr> - <th>Name</th> - {% if staff_mode %} - <th>Mail</th> - {% endif %} - <th title="{% trans 'AssemblyMember__is_representative' %}">R</th> - <th title="{% trans 'AssemblyMember__can_manage_assembly' %}">M</th> - {% if assembly.is_channel %} - <th title="{% trans 'AssemblyMember__is_content_coordinator' %}">C</th> - <th title="{% trans 'AssemblyMember__is_production_coordinator' %}">P</th> - {% endif %} - {% if assembly.is_assembly %} - <th title="{% trans 'AssemblyMember__is_technical_contact' %}">T</th> - {% endif %} - <th title="{% trans 'AssemblyMember__show_public' %}">S</th> - {% if can_manage %}<th>{% trans 'AssemblyMember__actions' %}</th>{% endif %} - </tr> - </thead> - <tbody> - {% for member in object_list %} - <tr class="{% if not member.show_public %}text-muted{% endif %}"> - <td>{{ member.member }}</td> - {% if staff_mode %} - <td> - {% for communication_channel in member.member.communication_channels.all %} - {% if communication_channel.channel == 'mail' and communication_channel.is_verified %} - {{ communication_channel.address }} + <div class="row pb-10rem"> + <div class="col-md-12"> + <div class="card border-default"> + <div class="card-header bg-default">{% trans 'Assembly__members' %}</div> + <div class="card-body"> + <p>{% trans 'Assembly__members__introduction' %}</p> + <form class="form-inline" + action="{% url 'backoffice:assembly-members' pk=assembly.pk %}" + method="POST"> + {% csrf_token %} + <table class="table table-sm table-hover table-striped"> + <thead> + <tr> + <th>Name</th> + {% if staff_mode %}<th>Mail</th>{% endif %} + <th title="{% trans 'AssemblyMember__is_representative' %}">R</th> + <th title="{% trans 'AssemblyMember__can_manage_assembly' %}">M</th> + {% if assembly.is_channel %} + <th title="{% trans 'AssemblyMember__is_content_coordinator' %}">C</th> + <th title="{% trans 'AssemblyMember__is_production_coordinator' %}">P</th> + {% endif %} + {% if assembly.is_assembly %} + <th title="{% trans 'AssemblyMember__is_technical_contact' %}">T</th> {% endif %} + <th title="{% trans 'AssemblyMember__show_public' %}">S</th> + {% if can_manage %} + <th>{% trans 'AssemblyMember__actions' %}</th> + {% endif %} + </tr> + </thead> + <tbody> + {% for member in object_list %} + <tr class="{% if not member.show_public %}text-muted{% endif %}"> + <td>{{ member.member }}</td> + {% if staff_mode %} + <td> + {% for communication_channel in member.member.communication_channels.all %} + {% if communication_channel.channel == 'mail' and communication_channel.is_verified %} + {{ communication_channel.address }} + {% endif %} + {% endfor %} + </td> + {% endif %} + <td> + {% if member.is_representative %} + R + {% else %} + - + {% endif %} + </td> + <td> + {% if member.can_manage_assembly %} + M + {% else %} + - + {% endif %} + </td> + {% if assembly.is_channel %} + <td> + {% if member.is_content_coordinator %} + C + {% else %} + - + {% endif %} + </td> + <td> + {% if member.is_production_coordinator %} + P + {% else %} + - + {% endif %} + </td> + {% endif %} + {% if assembly.is_assembly %} + <td> + {% if member.is_technical_contact %} + T + {% else %} + - + {% endif %} + </td> + {% endif %} + <td> + {% if member.show_public %} + S + {% else %} + - + {% endif %} + </td> + {% if can_manage %} + <td> + <a class="btn btn-outline-primary btn-sm" + href="{% url 'backoffice:assembly-members-edit' pk=assembly.id uname=member.member.username %}">{% trans 'Assembly__members__edit' %}</a> + <input type="submit" + class="btn btn-outline-secondary btn-sm" + name="{% if member.show_public %}hide{% else %}show{% endif %}-{{ member.member.id }}" + value="{% if member.show_public %}{% trans 'Assembly__members__hide' %}{% else %}{% trans 'Assembly__members__show' %}{% endif %}"> + <input type="submit" + class="btn btn-outline-danger btn-sm" + name="delete-{{ member.member.id }}" + value="{% trans 'Assembly__members__delete' %}"> + </td> + {% endif %} + </tr> {% endfor %} - </td> - {% endif %} - <td>{% if member.is_representative %}R{% else %}-{% endif %}</td> - <td>{% if member.can_manage_assembly %}M{% else %}-{% endif %}</td> - {% if assembly.is_channel %} - <td>{% if member.is_content_coordinator %}C{% else %}-{% endif %}</td> - <td>{% if member.is_production_coordinator %}P{% else %}-{% endif %}</td> - {% endif %} - {% if assembly.is_assembly %} - <td>{% if member.is_technical_contact %}T{% else %}-{% endif %}</td> - {% endif %} - <td>{% if member.show_public %}S{% else %}-{% endif %}</td> - {% if can_manage %}<td> - <a class="btn btn-outline-primary btn-sm" href="{% url 'backoffice:assembly-members-edit' pk=assembly.id uname=member.member.username %}">{% trans 'Assembly__members__edit' %}</a> - <input - type="submit" - class="btn btn-outline-secondary btn-sm" - name="{% if member.show_public %}hide{% else %}show{% endif %}-{{ member.member.id }}" - value="{% if member.show_public %}{% trans 'Assembly__members__hide' %}{% else %}{% trans 'Assembly__members__show' %}{% endif %}"> - <input type="submit" class="btn btn-outline-danger btn-sm" name="delete-{{ member.member.id }}" value="{% trans 'Assembly__members__delete' %}"> - </td>{% endif %} - </tr> - {% endfor %} - </tbody> - </table> - </form> - </div> -{% if can_manage %} - <div class="card-footer"> - <form class="form-inline" action="{% url 'backoffice:assembly-members-add' pk=assembly.pk %}" method="POST">{% csrf_token %} - <label class="visually-hidden" for="id_role">Role</label> - {% render_field form.role class+="form-control form-control-sm me-1" %} - <label class="visually-hidden" for="id_name">Name</label> - {% render_field form.name class+="form-control form-control-sm me-1" %} - <button type="submit" class="btn btn-sm btn-primary">{% trans 'Assembly__members__add' %}</button> - </form> + </tbody> + </table> + </form> + </div> + {% if can_manage %} + <div class="card-footer"> + <form class="form-inline" + action="{% url 'backoffice:assembly-members-add' pk=assembly.pk %}" + method="POST"> + {% csrf_token %} + <label class="visually-hidden" for="id_role">Role</label> + {% render_field form.role class+="form-control form-control-sm me-1" %} + <label class="visually-hidden" for="id_name">Name</label> + {% render_field form.name class+="form-control form-control-sm me-1" %} + <button type="submit" class="btn btn-sm btn-primary">{% trans 'Assembly__members__add' %}</button> + </form> + </div> + {% endif %} </div> -{% endif %} - </div> </form> </div> </div> diff --git a/src/backoffice/templates/backoffice/assembly_members_edit.html b/src/backoffice/templates/backoffice/assembly_members_edit.html index 72c6e4abfdd82a442596c956f78b729e17041b47..0b248e9ef8350f227cab823bff373709652cc9ac 100644 --- a/src/backoffice/templates/backoffice/assembly_members_edit.html +++ b/src/backoffice/templates/backoffice/assembly_members_edit.html @@ -5,47 +5,46 @@ {% block content %} -<form action="{% url 'backoffice:assembly-members-edit' pk=assembly.id uname=object.member.username %}" method="POST" enctype="multipart/form-data"> - {% csrf_token %} + <form action="{% url 'backoffice:assembly-members-edit' pk=assembly.id uname=object.member.username %}" + method="POST" + enctype="multipart/form-data"> + {% csrf_token %} -{% if form.errors %} -<div class="row"><div class="col-md-12"> - <div class="alert alert-danger"> - {{ form.errors }} - </div> -</div></div> -{% endif %} - -<div class="card mb-3"> - <div class="card-header"> - {{ assembly.name }} / <strong>{{ object.member.username }} - </div> - <div class="card-body"> - {% for field in form %} - <div class="form-group row"> - <label class="col-sm-2 col-form-label" for="frm{{ field.name }}">{{ field.label_tag }}</label> - <div class="col-sm-10{% if field.disabled %} text-muted{% endif %}"> - {% if not field.disabled %} - {% render_field field class+="form-check-input" %} - {% else %} - <input type="hidden" name="{{ field.name }}" value="{{ field.value }}">{{ field.value }} - {% endif %} - {% if field.help_text %} - <label class="form-check-label text-muted" for="{{ field.id_for_label }}">{{ field.help_text }}</label> - {% endif %} - {% for error in field.errors %} - <div class="invalid-feedback"> - {{ error }} + {% if form.errors %} + <div class="row"> + <div class="col-md-12"> + <div class="alert alert-danger">{{ form.errors }}</div> </div> + </div> + {% endif %} + + <div class="card mb-3"> + <div class="card-header"> + {{ assembly.name }} / <strong>{{ object.member.username }} + </div> + <div class="card-body"> + {% for field in form %} + <div class="form-group row"> + <label class="col-sm-2 col-form-label" for="frm{{ field.name }}">{{ field.label_tag }}</label> + <div class="col-sm-10{% if field.disabled %} text-muted{% endif %}"> + {% if not field.disabled %} + {% render_field field class+="form-check-input" %} + {% else %} + <input type="hidden" name="{{ field.name }}" value="{{ field.value }}"> + {{ field.value }} + {% endif %} + {% if field.help_text %} + <label class="form-check-label text-muted" for="{{ field.id_for_label }}">{{ field.help_text }}</label> + {% endif %} + {% for error in field.errors %}<div class="invalid-feedback">{{ error }}</div>{% endfor %} + </div> + </div> {% endfor %} </div> + <div class="card-footer text-right"> + <button type="submit" class="btn btn-primary">{% trans "assemblyedit_submitbtn" %}</button> + </div> </div> - {% endfor %} - </div> - <div class="card-footer text-right"> - <button type="submit" class="btn btn-primary">{% trans "assemblyedit_submitbtn" %}</button> - </div> -</div> -</form> + </form> {% endblock %} diff --git a/src/backoffice/templates/backoffice/assembly_room.html b/src/backoffice/templates/backoffice/assembly_room.html index 372233d8877e46cdda7aedccc6210e1646c03af2..958a2f8ccaff93d06dc1b467fe64434b629c6d28 100644 --- a/src/backoffice/templates/backoffice/assembly_room.html +++ b/src/backoffice/templates/backoffice/assembly_room.html @@ -3,9 +3,7 @@ {% load i18n %} {% load widget_tweaks %} -{% block title %} -{{ room.name }} | {{ assembly.name }} | {{ conference.name }} -{% endblock %} +{% block title %}{{ room.name }} | {{ assembly.name }} | {{ conference.name }}{% endblock %} {% block htmlhead %} <style type="text/css"> @@ -14,87 +12,112 @@ {% endblock %} {% block content %} -{% include "backoffice/assembly_edit_header.html" %} + {% include "backoffice/assembly_edit_header.html" %} -<div class="row mb-3"> - <div class="col-md-12"> - <form action="" method="POST">{% csrf_token %} - <div class="card border-default"> - <div class="card-header bg-default"> - {% if assembly.is_public %}<a class="float-right btn btn-sm btn-info" href="{% hub_absolute 'plainui:room' slug=room.slug %}">{% trans 'public' %}</a>{% endif %} - {% if room.id %}<span class="text-muted float-right me-2" style="font-size: 75%;">ID: <strong>{{ room.id }}</strong></span>{% endif %} - {% if room.name %}{% if room.room_type != 'project' %}{{ room.get_room_type_display }} {% trans 'Room' %}{% else %}{% trans 'Project' %}{% endif %} "{{ room.name }}"{% else %}<span class="badge badge-secondary">{% trans 'Room-new' %}</span>{% endif %} - </div> - {% if not link_edit %} - <div class="card-body"> - {% if legal_warning %}<div class="alert alert-warning">{{ legal_warning }}</div>{% endif %} + <div class="row mb-3"> + <div class="col-md-12"> + <form action="" method="POST"> + {% csrf_token %} + <div class="card border-default"> + <div class="card-header bg-default"> + {% if assembly.is_public %} + <a class="float-right btn btn-sm btn-info" + href="{% hub_absolute 'plainui:room' slug=room.slug %}">{% trans 'public' %}</a> + {% endif %} + {% if room.id %} + <span class="text-muted float-right me-2" style="font-size: 75%;">ID: <strong>{{ room.id }}</strong></span> + {% endif %} + {% if room.name %} + {% if room.room_type != 'project' %} + {{ room.get_room_type_display }} {% trans 'Room' %} + {% else %} + {% trans 'Project' %} + {% endif %} + "{{ room.name }}" + {% else %} + <span class="badge badge-secondary">{% trans 'Room-new' %}</span> + {% endif %} + </div> + {% if not link_edit %} + <div class="card-body"> + {% if legal_warning %}<div class="alert alert-warning">{{ legal_warning }}</div>{% endif %} - {% bootstrap_form form %} + {% bootstrap_form form %} + </div> + {% if can_manage %} + <div class="card-footer"> + <button type="submit" class="btn btn-primary">{% trans "save" %}</button> + </div> + {% endif %} + {% endif %} </div> - {% if can_manage %} - <div class="card-footer"> - <button type="submit" class="btn btn-primary">{% trans "save" %}</button> - </div> - {% endif %} - {% endif %} + </form> </div> - </form> </div> -</div> -{% if supports_links %} -<div class="row mb-3"> - <div class="col-md-12"> - <div class="card border-default"> - <div class="card-header bg-default"> - {% trans 'Room__links' %} - </div> - <div class="card-body"> - <p>{% trans 'RoomLink__introduction' %}</p> - <table class="table table-hover table-sm"> - <!--thead> + {% if supports_links %} + <div class="row mb-3"> + <div class="col-md-12"> + <div class="card border-default"> + <div class="card-header bg-default">{% trans 'Room__links' %}</div> + <div class="card-body"> + <p>{% trans 'RoomLink__introduction' %}</p> + <table class="table table-hover table-sm"> + <!--thead> <tr> <th>Link</th><th> </th> </tr> - </thead--> - <tbody> - {% for link in room.links.all %} - <tr> - <td title="{{ link.link }}">{{ link.get_link_type_display }}: "{{ link.name }}"</td> - <td>{% if can_manage %} - <form class="form form-inline" action="{% url 'backoffice:roomlink-remove' assembly=assembly.id room=room.id %}" method="POST">{% csrf_token %} - <input type="hidden" name="link" value="{{ link.id }}"> - <button type="submit" class="btn btn-sm btn-secondary">{% trans "delete" %}</button> - </form> - {% endif %}</td> - </tr> - {% empty %} - <tr><td colspan="2"><emph>{% trans 'Room__links__none' %}</emph></td></tr> - {% endfor %} - </tbody> - </table> - </div> -{% if can_manage %} - <div class="card-footer"> - <form class="form form-inline" action="{% url 'backoffice:roomlink-create' assembly=assembly.id room=room.id %}" method="POST">{% csrf_token %} - <label class="me-1" for="id_link_type">{% trans "RoomLink__link_type" %}:</label> - {% render_field createform.link_type class+="form-control form-control-sm me-3" %} - <label class="me-1" for="id_name">{% trans "RoomLink__name" %}:</label> - {% render_field createform.name class+="form-control form-control-sm me-3" %} - <label class="me-1" for="id_link">{% trans "RoomLink__link" %}:</label> - {% render_field createform.link class+="form-control form-control-sm me-3" %} - <button type="submit" class="btn btn-sm btn-primary">{% trans "save" %}</button> - </form> + </thead --> + <tbody> + {% for link in room.links.all %} + <tr> + <td title="{{ link.link }}">{{ link.get_link_type_display }}: "{{ link.name }}"</td> + <td> + {% if can_manage %} + <form class="form form-inline" + action="{% url 'backoffice:roomlink-remove' assembly=assembly.id room=room.id %}" + method="POST"> + {% csrf_token %} + <input type="hidden" name="link" value="{{ link.id }}"> + <button type="submit" class="btn btn-sm btn-secondary">{% trans "delete" %}</button> + </form> + {% endif %} + </td> + </tr> + {% empty %} + <tr> + <td colspan="2"> + <emph>{% trans 'Room__links__none' %}</emph> + </td> + </tr> + {% endfor %} + </tbody> + </table> + </div> + {% if can_manage %} + <div class="card-footer"> + <form class="form form-inline" + action="{% url 'backoffice:roomlink-create' assembly=assembly.id room=room.id %}" + method="POST"> + {% csrf_token %} + <label class="me-1" for="id_link_type">{% trans "RoomLink__link_type" %}:</label> + {% render_field createform.link_type class+="form-control form-control-sm me-3" %} + <label class="me-1" for="id_name">{% trans "RoomLink__name" %}:</label> + {% render_field createform.name class+="form-control form-control-sm me-3" %} + <label class="me-1" for="id_link">{% trans "RoomLink__link" %}:</label> + {% render_field createform.link class+="form-control form-control-sm me-3" %} + <button type="submit" class="btn btn-sm btn-primary">{% trans "save" %}</button> + </form> + </div> + {% endif %} + </div> </div> -{% endif %} </div> - </div> -</div> -{% endif %} + {% endif %} -{% if room.room_type == 'workadventure' %} + {% if room.room_type == 'workadventure' %} {% include 'backoffice/assembly_room_wa.html' %} -{% endif %} + {% endif %} {% if not link_edit %} {% include 'backoffice/assembly_room_mgmt.html' %} diff --git a/src/backoffice/templates/backoffice/assembly_room_mgmt.html b/src/backoffice/templates/backoffice/assembly_room_mgmt.html index fc38e2ee5d7ec4ebfe076a2c00d02ab3aebde245..0155660f737ec8a1e899bf0e509eed1db75c52e5 100644 --- a/src/backoffice/templates/backoffice/assembly_room_mgmt.html +++ b/src/backoffice/templates/backoffice/assembly_room_mgmt.html @@ -1,32 +1,52 @@ {% load i18n %} {% if can_manage %} - <div class="row mb-3"> - <div class="col-md-12"> - <div class="card border-danger"> - <div class="card-header bg-default text-danger"> - {% if room.room_type != 'project' %}{% trans 'Room__remove' %}{% else %}{% trans 'Project__remove' %}{% endif %} - </div> - <div class="card-body"> - {% if can_delete %} - <p> - {% if room.room_type != 'project' %}{% trans 'Room__remove__introduction' %}{% else %}{% trans 'Project__remove__introduction' %}{% endif %} - </p> - <form class="form" action="{% url 'backoffice:assembly-remove-room' assembly=assembly.id room=room.id %}" method="POST"> - {% csrf_token %} - <button type="submit" class="btn btn-sm btn-danger" onclick="return confirm('{% if room.room_type != 'project' %}{% trans 'Room__remove__confirm' %}{% else %}{% trans 'Project__remove__confirm' %}{% endif %}')"> - {% if room.room_type != 'project' %}{% trans 'Room__remove' %}{% else %}{% trans 'Project__remove' %}{% endif %}: {{ room.name }} - </button> - </form> - {% else %} - <p> - {% if room.room_type == 'project' %}{% trans 'Project__remove__notpossible' %} - {% elif room.room_type == 'hangar' %}{% trans 'Hangar__remove__notpossible' %} - {% else %}{% trans 'Room__remove__notpossible' %} - {% endif %} - </p> - {% endif %} - </div> - </div> + <div class="row mb-3"> + <div class="col-md-12"> + <div class="card border-danger"> + <div class="card-header bg-default text-danger"> + {% if room.room_type != 'project' %} + {% trans 'Room__remove' %} + {% else %} + {% trans 'Project__remove' %} + {% endif %} </div> + <div class="card-body"> + {% if can_delete %} + <p> + {% if room.room_type != 'project' %} + {% trans 'Room__remove__introduction' %} + {% else %} + {% trans 'Project__remove__introduction' %} + {% endif %} + </p> + <form class="form" + action="{% url 'backoffice:assembly-remove-room' assembly=assembly.id room=room.id %}" + method="POST"> + {% csrf_token %} + <button type="submit" + class="btn btn-sm btn-danger" + onclick="return confirm('{% if room.room_type != 'project' %}{% trans 'Room__remove__confirm' %}{% else %}{% trans 'Project__remove__confirm' %}{% endif %}')"> + {% if room.room_type != 'project' %} + {% trans 'Room__remove' %} + {% else %} + {% trans 'Project__remove' %} + {% endif %} + : {{ room.name }} + </button> + </form> + {% else %} + <p> + {% if room.room_type == 'project' %} + {% trans 'Project__remove__notpossible' %} + {% elif room.room_type == 'hangar' %} + {% trans 'Hangar__remove__notpossible' %} + {% else %} + {% trans 'Room__remove__notpossible' %} + {% endif %} + </p> + {% endif %} + </div> + </div> </div> -{% endif %} \ No newline at end of file + </div> +{% endif %} diff --git a/src/backoffice/templates/backoffice/assembly_room_wa.html b/src/backoffice/templates/backoffice/assembly_room_wa.html index 201a56cdc3775d0f8949e50a63587a1f6366afc6..eca89e3cba84d5bc80a975b090791d6ab3ed592c 100644 --- a/src/backoffice/templates/backoffice/assembly_room_wa.html +++ b/src/backoffice/templates/backoffice/assembly_room_wa.html @@ -4,110 +4,120 @@ {% load i18n %} {% load widget_tweaks %} -{% block title %} - {{ room.name }} | {{ assembly.name }} | {{ conference.name }} -{% endblock %} +{% block title %}{{ room.name }} | {{ assembly.name }} | {{ conference.name }}{% endblock %} {% block htmlhead %} - <style type="text/css"> + <style type="text/css"> div#description h3 { font-size: 100%; text-transform: uppercase; border-bottom: 1px solid #CCCCCC; } - </style> + </style> {% endblock %} {% block content %} - {% include "backoffice/assembly_edit_header.html" %} + {% include "backoffice/assembly_edit_header.html" %} - <div class="row mb-3"> - <div class="col-md-12"> - <div class="card border-default"> - <div class="card-header bg-default"> - {% if room.id %}<span class="text-muted float-right" style="font-size: 75%;">ID: <strong>{{ room.id }}</strong></span>{% endif %} - {% if room.name %}{{ room.get_room_type_display }} {% trans 'Room' %} "{{ room.name }}"{% endif %} - </div> - <div class="card-body"> - <div class="form-group row"> - <label for="txtRepoUrl" class="col-sm-2 col-form-label">{% trans 'Room-workadventure_backend_link' %}</label> - <input type="text" id="txtRepoUrl" class="col-sm-10 form-control-plaintext" readonly value="{{ room.backend_link }}"> - </div> - <div class="form-group row"> - <label for="txtRepoBranch" class="col-sm-2 col-form-label">{% trans 'Room-workadventure_backend_link_branch' %}</label> - <input type="text" id="txtRepoBranch" class="col-sm-10 form-control-plaintext" readonly value="{{ room.backend_link_branch }}"> - </div> - {% if room.backend_data.exit_url %} - <div class="form-group row"> - <label for="txtExitUrl" class="col-sm-2 col-form-label">{% trans 'Room-workadventure_backend_exit_url' %}</label> - <input type="text" id="txtExitUrl" class="col-sm-10 form-control-plaintext" readonly value="{{ room.backend_data.exit_url }}"> - </div> - {% endif %} - </div> + <div class="row mb-3"> + <div class="col-md-12"> + <div class="card border-default"> + <div class="card-header bg-default"> + {% if room.id %} + <span class="text-muted float-right" style="font-size: 75%;">ID: <strong>{{ room.id }}</strong></span> + {% endif %} + {% if room.name %} + {{ room.get_room_type_display }} {% trans 'Room' %} "{{ room.name }}" + {% endif %} + </div> + <div class="card-body"> + <div class="form-group row"> + <label for="txtRepoUrl" class="col-sm-2 col-form-label">{% trans 'Room-workadventure_backend_link' %}</label> + <input type="text" + id="txtRepoUrl" + class="col-sm-10 form-control-plaintext" + readonly + value="{{ room.backend_link }}"> + </div> + <div class="form-group row"> + <label for="txtRepoBranch" class="col-sm-2 col-form-label">{% trans 'Room-workadventure_backend_link_branch' %}</label> + <input type="text" + id="txtRepoBranch" + class="col-sm-10 form-control-plaintext" + readonly + value="{{ room.backend_link_branch }}"> + </div> + {% if room.backend_data.exit_url %} + <div class="form-group row"> + <label for="txtExitUrl" class="col-sm-2 col-form-label">{% trans 'Room-workadventure_backend_exit_url' %}</label> + <input type="text" + id="txtExitUrl" + class="col-sm-10 form-control-plaintext" + readonly + value="{{ room.backend_data.exit_url }}"> </div> - </form> + {% endif %} </div> - </div> + </div> + </form> + </div> +</div> - <div class="row mb-3"> - <div class="col-md-12"> - {% if wa_published.commitHash %} - <div class="card border-{% if wa_published.commitHash != wa_linter.commitHash %}warning{% else %}success{% endif %}"> - <div class="card-header bg-{% if wa_published.commitHash != wa_linter.commitHash %}warning{% else %}success{% endif %} text-white"> - {% trans "Room-workadventure_map-online__title" %} - </div> - <div class="card-body"> - <p> - {% trans "Room-workadventure_map-online" %} - <span title="{{ wa_published.timestamp }}">{{ wa_published.timestamp|naturaltime }}</span>, - Commit <code>{{ wa_published.commitHash }}</code> - </p> +<div class="row mb-3"> + <div class="col-md-12"> + {% if wa_published.commitHash %} + <div class="card border-{% if wa_published.commitHash != wa_linter.commitHash %}warning{% else %}success{% endif %}"> + <div class="card-header bg-{% if wa_published.commitHash != wa_linter.commitHash %}warning{% else %}success{% endif %} text-white"> + {% trans "Room-workadventure_map-online__title" %} + </div> + <div class="card-body"> + <p> + {% trans "Room-workadventure_map-online" %} + <span title="{{ wa_published.timestamp }}">{{ wa_published.timestamp|naturaltime }}</span>, + Commit <code>{{ wa_published.commitHash }}</code> + </p> - {% if wa_published.commitHash != wa_linter.commitHash %} - <p>{% trans "Room-workadventure_map-online__not_up2date_warning" %}</p> - {% endif %} - </div> - </div> - {% else %} - <div class="card border-danger"> - <div class="card-header bg-danger text-white"> - {% trans "Room-workadventure_map-offline__title" %} - </div> - <div class="card-body"> - {% trans "Room-workadventure_map-offline" %} - </div> - </div> - {% endif %} + {% if wa_published.commitHash != wa_linter.commitHash %} + <p>{% trans "Room-workadventure_map-online__not_up2date_warning" %}</p> + {% endif %} </div> - </div> + </div> + {% else %} + <div class="card border-danger"> + <div class="card-header bg-danger text-white">{% trans "Room-workadventure_map-offline__title" %}</div> + <div class="card-body">{% trans "Room-workadventure_map-offline" %}</div> + </div> + {% endif %} + </div> +</div> - <div class="row mb-3"> - <div class="col-md-12"> - {% if wa_linter.status == "danger" or wa_linter.status == "error" %} - <div class="card border-danger"> - <div class="card-header bg-default text-danger"> - {% elif wa_linter.status == "warning" %} - <div class="card border-warning"> - <div class="card-header bg-warning"> +<div class="row mb-3"> + <div class="col-md-12"> + {% if wa_linter.status == "danger" or wa_linter.status == "error" %} + <div class="card border-danger"> + <div class="card-header bg-default text-danger"> + {% elif wa_linter.status == "warning" %} + <div class="card border-warning"> + <div class="card-header bg-warning"> {% elif wa_linter.status == "info" %} - <div class="card border-primary"> - <div class="card-header bg-primary text-white"> - {% elif wa_linter.status == "pending" %} - <div class="card border-secondary"> + <div class="card border-primary"> + <div class="card-header bg-primary text-white"> + {% elif wa_linter.status == "pending" %} + <div class="card border-secondary"> <div class="card-header bg-default text-secondary"> - {% else %} - <div class="card"> - <div class="card-header"> - {% endif %} + {% else %} + <div class="card"> + <div class="card-header"> + {% endif %} {{ wa_linter.status_title }} - </div> - <div class="card-body"> + </div> + <div class="card-body"> <p>{{ wa_linter.status_text }}</p> {% include "backoffice/assembly_room_wa_linterblock.html" %} + </div> </div> + </div> </div> - </div> - </div> - {% include 'backoffice/assembly_room_mgmt.html' %} -{% endblock %} + {% include 'backoffice/assembly_room_mgmt.html' %} + {% endblock %} diff --git a/src/backoffice/templates/backoffice/assembly_room_wa_linterblock.html b/src/backoffice/templates/backoffice/assembly_room_wa_linterblock.html index 033e6e5df827ddfef82000bfd1717442bdb9f027..7a233f0e54a15fa478314a947987636a24667a0b 100644 --- a/src/backoffice/templates/backoffice/assembly_room_wa_linterblock.html +++ b/src/backoffice/templates/backoffice/assembly_room_wa_linterblock.html @@ -1,81 +1,114 @@ {% load humanize %} {% load i18n %} <p> -{% trans "Room-workadventure_linter-result" %} -<span title="{{ wa_linter.timestamp }}">{{ wa_linter.timestamp|naturaltime }}</span>, -Commit: <code>{{ wa_linter.commitHash }}</code> + {% trans "Room-workadventure_linter-result" %} + <span title="{{ wa_linter.timestamp }}">{{ wa_linter.timestamp|naturaltime }}</span>, + Commit: <code>{{ wa_linter.commitHash }}</code> </p> -{% for err in wa_linter.errors %} -<div class="alert alert-danger">{{ err }}</div> -{% endfor %} +{% for err in wa_linter.errors %}<div class="alert alert-danger">{{ err }}</div>{% endfor %} -{% if wa_linter.missingEntrypoints or wa_linter.exitGraph %} -<h2 class="border-bottom">Exits</h2> -{% endif %} +{% if wa_linter.missingEntrypoints or wa_linter.exitGraph %}<h2 class="border-bottom">Exits</h2>{% endif %} {% if wa_linter.missingEntrypoints %} -<ul> + <ul> {% for entry in wa_linter.missingEntrypoints %} - <li><span class="badge badge-{% if entry.depFatal %}danger{% else %}warning{% endif %}">{% if entry.depFatal %}MISSING{% else %}WARNING{% endif %}</span> - {% if entry.depFatal %}Map{% else %}Entrypoint{% endif %} <code>{{ entry.entrypoint }}</code> does not exist{% if not entry.depFatal %} (no layer with that name is a <code class="small text-muted">startLayer</code>){% endif %}, but is used as <code class="small text-muted">exitUrl</code> in {% for map in entry.neededBy %}<code class="small text-muted">{{ map }}</code>{% if not forloop.last %}, {% endif %}{% endfor %}. - </li> + <li> + <span class="badge badge-{% if entry.depFatal %}danger{% else %}warning{% endif %}"> + {% if entry.depFatal %} + MISSING + {% else %} + WARNING + {% endif %} + </span> + {% if entry.depFatal %} + Map + {% else %} + Entrypoint + {% endif %} + <code>{{ entry.entrypoint }}</code> does not exist + {% if not entry.depFatal %}(no layer with that name is a <code class="small text-muted">startLayer</code>){% endif %} + , but is used as <code class="small text-muted">exitUrl</code> in + {% for map in entry.neededBy %} + <code class="small text-muted">{{ map }}</code> + {% if not forloop.last %},{% endif %} + {% endfor %} + . + </li> {% endfor %} -</ul> + </ul> {% endif %} {% if wa_linter.exitGraph %} -<script src="{% static 'vendor/dot-wasm.js' %}"></script> -<script src="{% static 'vendor/d3/d3.js' %}"></script> -<script src="{% static 'vendor/d3/d3-graphviz.js' %}"></script> -<div id="exitgraph"></div> -<script> + <script src="{% static 'vendor/dot-wasm.js' %}"></script> + <script src="{% static 'vendor/d3/d3.js' %}"></script> + <script src="{% static 'vendor/d3/d3-graphviz.js' %}"></script> + <div id="exitgraph"></div> + <script> d3.select("#exitgraph") .graphviz() .dot("{{ wa_linter.exitGraph | escapejs }}") .render() -</script> + </script> {% endif %} {% if wa_linter.missingAssets %} -<h2 class="border-bottom">Assets</h2> -<ul> + <h2 class="border-bottom">Assets</h2> + <ul> {% for entry in wa_linter.missingAssets %} - <li><span class="badge badge-danger">MISSING</span> - File <code>{{ entry.asset }}</code> does not exist, but is referenced in {% for map in entry.neededBy %}<code class="small text-muted">{{ map }}</code>{% if not forloop.last %}, {% endif %}{% endfor %}. - </li> + <li> + <span class="badge badge-danger">MISSING</span> + File <code>{{ entry.asset }}</code> does not exist, but is referenced in + {% for map in entry.neededBy %} + <code class="small text-muted">{{ map }}</code> + {% if not forloop.last %},{% endif %} + {% endfor %} + . + </li> {% endfor %} -</ul> + </ul> {% endif %} {% if wa_linter.results %} -<h2 class="border-bottom">Maps</h2> -{% for map, infos in wa_linter.results.items %} -<h4 class="border-bottom"><code class="text-muted">{{ map }}</code></h4> -<div class="pl-3"> - {% for category, issues in infos.items %}{% if issues|length > 0 %} - <h5>{{ category }}</h5> - <ul> - {% if issues|is_dict %} - {% for issue, details in issues.items %} - <li><span class="badge badge-{% if details.level == "Suggestion" %}info{% elif details.level == "Error" or details.level == "Fatal" or details.level == "Forbidden" %}danger{% else %}{{ details.level|lower }}{% endif %}">{{ details.level|upper }}</span> - {{ issue }}<br> - in {{ category }}{% if not details.in|length == 1 %}s{% endif %}: {% for place in details.in %} <code class="small text-muted">{{ place }}</code>{% if not forloop.last %}, {% endif %}{% endfor %} - </li> - {% endfor %} - {% else %} - {% for item in issues %} - <li> - {% if item.level and item.msg %} - <span class="badge badge-{% if item.level == "Suggestion" %}info{% elif item.level == "Error" or item.level == "Fatal" or item.level == "Forbidden" %}danger{% else %}{{ item.level|lower }}{% endif %}">{{ item.level|upper }}</span> - {{ item.msg }} + <h2 class="border-bottom">Maps</h2> + {% for map, infos in wa_linter.results.items %} + <h4 class="border-bottom"> + <code class="text-muted">{{ map }}</code> + </h4> + <div class="pl-3"> + {% for category, issues in infos.items %} + {% if issues|length > 0 %} + <h5>{{ category }}</h5> + <ul> + {% if issues|is_dict %} + {% for issue, details in issues.items %} + <li> + <span class="badge badge-{% if details.level == "Suggestion" %}info{% elif details.level == "Error" or details.level == "Fatal" or details.level == "Forbidden" %}danger{% else %}{{ details.level|lower }}{% endif %}">{{ details.level|upper }}</span> + {{ issue }} + <br> + in {{ category }} + {% if not details.in|length == 1 %}s{% endif %} + : + {% for place in details.in %} + <code class="small text-muted">{{ place }}</code> + {% if not forloop.last %},{% endif %} + {% endfor %} + </li> + {% endfor %} {% else %} - <pre class="small text-muted">{{ item|json_indent }}</pre> + {% for item in issues %} + <li> + {% if item.level and item.msg %} + <span class="badge badge-{% if item.level == "Suggestion" %}info{% elif item.level == "Error" or item.level == "Fatal" or item.level == "Forbidden" %}danger{% else %}{{ item.level|lower }}{% endif %}">{{ item.level|upper }}</span> + {{ item.msg }} + {% else %} + <pre class="small text-muted">{{ item|json_indent }}</pre> + {% endif %} + </li> + {% endfor %} {% endif %} - </li> - {% endfor %} - {% endif %} - </ul> - {% endif %}{% endfor %} -</div> -{% endfor %} + </ul> + {% endif %} + {% endfor %} + </div> + {% endfor %} {% endif %} diff --git a/src/backoffice/templates/backoffice/assembly_vouchers.html b/src/backoffice/templates/backoffice/assembly_vouchers.html index 20979517d8e03756049ccec963b64b58f797de82..64ec81baad4f9e49999b017159c1c555831820d6 100644 --- a/src/backoffice/templates/backoffice/assembly_vouchers.html +++ b/src/backoffice/templates/backoffice/assembly_vouchers.html @@ -3,55 +3,56 @@ {% load widget_tweaks %} {% block title %} -{% trans "Vouchers" %} | {{ assembly.name }} | {{ conference.name }} + {% trans "Vouchers" %} | {{ assembly.name }} | {{ conference.name }} {% endblock %} {% block content %} -{% include "backoffice/assembly_edit_header.html" %} + {% include "backoffice/assembly_edit_header.html" %} -<div class="row mb-3"> - <div class="col-md-12"> - <div class="card border-default"> - <div class="card-header bg-default"> - {% trans 'Vouchers' %} - </div> - <div class="card-body"> - {% trans 'assemblyedit__vouchers__explaination' %} + <div class="row mb-3"> + <div class="col-md-12"> + <div class="card border-default"> + <div class="card-header bg-default">{% trans 'Vouchers' %}</div> + <div class="card-body">{% trans 'assemblyedit__vouchers__explaination' %}</div> </div> </div> </div> -</div> -{% for voucher in vouchers %} -<div class="row mb-3"> - <div class="col-md-12"> + {% for voucher in vouchers %} + <div class="row mb-3"> + <div class="col-md-12"> <div class="card border border-{% if voucher.contents == None or voucher.contents|length > 0 %}success{% else %}secondary{% endif %}"> - <div class="card-header{% if voucher.contents == None or voucher.contents|length > 0 %} bg-success text-white{% endif %}"> - {{ voucher.name }} - </div> - <div class="card-body{% if voucher.contents == None or voucher.contents|length > 0 %}{% else %} text-muted{% endif %}"> - <!-- {{ voucher.id }} --> - <div>{{ voucher.description }}</div> + <div class="card-header{% if voucher.contents == None or voucher.contents|length > 0 %} bg-success text-white{% endif %}"> + {{ voucher.name }} + </div> + <div class="card-body{% if voucher.contents == None or voucher.contents|length > 0 %}{% else %} text-muted{% endif %}"> + <!-- {{ voucher.id }} --> + <div>{{ voucher.description }}</div> - {% if voucher.contents == None %} - <div class="m-3 p-1 border border-light text-warning">{% trans 'assemblyedit__vouchers__hidden_data' %}</div> - {% else %} - {% for content in voucher.contents %} + {% if voucher.contents == None %} + <div class="m-3 p-1 border border-light text-warning">{% trans 'assemblyedit__vouchers__hidden_data' %}</div> + {% else %} + {% for content in voucher.contents %} <div class="m-3 p-1 border border-light"> - {% if voucher.data == 'text' %}{{ content }} - {% elif voucher.data == 'url' %}<a href="{{ content|urlencode }}" target="_blank">{{ content }}</a> - {% else %}<pre>{{ content }}</pre> - {% endif %} + {% if voucher.data == 'text' %} + {{ content }} + {% elif voucher.data == 'url' %} + <a href="{{ content|urlencode }}" target="_blank">{{ content }}</a> + {% else %} + <pre>{{ content }}</pre> + {% endif %} </div> - {% empty %} - <div class="m-3 p-1 border border-secondary text-muted font-italic">{% trans 'assemblyedit__vouchers__not_assigned' %}</div> - {% endfor %} - {% endif %} - </div> + {% empty %} + <div class="m-3 p-1 border border-secondary text-muted font-italic"> + {% trans 'assemblyedit__vouchers__not_assigned' %} + </div> + {% endfor %} + {% endif %} + </div> </div> + </div> </div> -</div> -{% endfor %} + {% endfor %} -<div class="pb-10rem"></div> + <div class="pb-10rem"></div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/assemblyteam_assembly_additionalfields.html b/src/backoffice/templates/backoffice/assemblyteam_assembly_additionalfields.html index 12f0dea044fbe27dd5388bd99029508fd2d76e94..6d71d5905345d88f6e497e0ffddba41cf43502fd 100644 --- a/src/backoffice/templates/backoffice/assemblyteam_assembly_additionalfields.html +++ b/src/backoffice/templates/backoffice/assemblyteam_assembly_additionalfields.html @@ -1,77 +1,115 @@ {% load i18n %} {% for field in schema %} -<div class="input-group mb-1 small"> - {% with value=data|get_item_or_original:field.key %} - <label class="col-sm-2 col-form-label pt-0 text-muted" for="fld{{ field.key }}">{{ field.caption|get_language_item|default:field.key }}</label> - <div class="col-sm-10"> - {% if field.help and field.type != 'boolean' and field.type != 'option' %} - <span class="form-text">{{ field.help|get_language_item }}</span> - {% endif %} + <div class="input-group mb-1 small"> + {% with value=data|get_item_or_original:field.key %} + <label class="col-sm-2 col-form-label pt-0 text-muted" + for="fld{{ field.key }}">{{ field.caption|get_language_item|default:field.key }}</label> + <div class="col-sm-10"> + {% if field.help and field.type != 'boolean' and field.type != 'option' %} + <span class="form-text">{{ field.help|get_language_item }}</span> + {% endif %} - {% if field.type == 'string' %} - {% if field.choices and field.choices|length > 0 %} - <input type="text" disabled readonly class="form-control-plaintext" value="{% spaceless %} - {% for choice, translation in field.choices.items %} - {% if choice == value %}{{ translation|get_language_item }}{% endif %} - {% endfor %} - {% endspaceless %}"> - {% else %} - <input type="text" disabled readonly class="form-control-plaintext" value="{{ value|default:'' }}"> - {% endif %} + {% if field.type == 'string' %} + {% if field.choices and field.choices|length > 0 %} + <input type="text" + disabled + readonly + class="form-control-plaintext" + value="{% spaceless %} {% for choice, translation in field.choices.items %} {% if choice == value %}{{ translation|get_language_item }}{% endif %} {% endfor %} {% endspaceless %}"> + {% else %} + <input type="text" + disabled + readonly + class="form-control-plaintext" + value="{{ value|default:'' }}"> + {% endif %} - {% elif field.type == 'option' %} - <div class="form-check"> - <input class="form-check-input af_option" disabled readonly id="fld{{ field.key }}_option" type="checkbox"{% if value != None %} checked="checked"{% endif %}> - <label class="form-check-label" for="fld{{ field.key }}_option">{{ field.help|get_language_item }}</label> - </div> + {% elif field.type == 'option' %} + <div class="form-check"> + <input class="form-check-input af_option" + disabled + readonly + id="fld{{ field.key }}_option" + type="checkbox" + {% if value != None %}checked="checked"{% endif %}> + <label class="form-check-label" for="fld{{ field.key }}_option">{{ field.help|get_language_item }}</label> + </div> - {% elif field.type == 'boolean' %} - <div class="form-check"> - <input class="form-check-input" disabled readonly id="fld{{ field.key }}" type="checkbox" {% if value %} checked="checked"{% endif %}> - <label class="form-check-label" for="fld{{ field.key }}">{{ field.help|get_language_item }}</label> - </div> + {% elif field.type == 'boolean' %} + <div class="form-check"> + <input class="form-check-input" + disabled + readonly + id="fld{{ field.key }}" + type="checkbox" + {% if value %}checked="checked"{% endif %}> + <label class="form-check-label" for="fld{{ field.key }}">{{ field.help|get_language_item }}</label> + </div> - {% elif field.type == 'choices' %} - {% for choice, translation in field.choices.items %} - <div class="form-check"> - <input class="form-check-input" disabled readonly type="radio" name="additional_fields[{{ field.key }}]" value="{{ choice }}" {% if choice == value %} checked="checked"{% endif %}{% if field.required %} required="required"{% endif %}> - <label class="form-check-label" for="fld{{ field.key }}_{{ choice }}"> - {{ translation|get_language_item }} - </label> - </div> - {% endfor %} + {% elif field.type == 'choices' %} + {% for choice, translation in field.choices.items %} + <div class="form-check"> + <input class="form-check-input" + disabled + readonly + type="radio" + name="additional_fields[{{ field.key }}]" + value="{{ choice }}" + {% if choice == value %}checked="checked"{% endif %} + {% if field.required %}required="required"{% endif %}> + <label class="form-check-label" for="fld{{ field.key }}_{{ choice }}">{{ translation|get_language_item }}</label> + </div> + {% endfor %} - {% elif field.type == 'date' %} - <div class="form-group" style="width: 11em;"> - <input class="form-control-plaintext" disabled readonly type="date" value="{{ value|default:"" }}"{% if field.min_value %} min="{{ field.min_value }}"{% endif %}{% if field.max_value %} max="{{ field.max_value }}"{% endif %}> - </div> + {% elif field.type == 'date' %} + <div class="form-group" style="width: 11em;"> + <input class="form-control-plaintext" + disabled + readonly + type="date" + value="{{ value|default:"" }}" + {% if field.min_value %}min="{{ field.min_value }}"{% endif %} + {% if field.max_value %}max="{{ field.max_value }}"{% endif %}> + </div> - {% elif field.type == 'integer' %} - <div class="input-group" style="width: 11em;"> - <input class="form-control-plaintext" disabled readonly type="number" step="1" pattern="\d+" value="{{ value|default:"" }}"{% if field.required %} required="required"{% endif %}{% if field.min_value %} min="{{ field.min_value }}"{% endif %}{% if field.max_value %} max="{{ field.max_value }}"{% endif %}> - {% if field.unit %}<div class="input-group-append"><div class="input-group-text">{{ field.unit }}</div></div>{% endif %} - </div> + {% elif field.type == 'integer' %} + <div class="input-group" style="width: 11em;"> + <input class="form-control-plaintext" + disabled + readonly + type="number" + step="1" + pattern="\d+" + value="{{ value|default:"" }}" + {% if field.required %}required="required"{% endif %} + {% if field.min_value %}min="{{ field.min_value }}"{% endif %} + {% if field.max_value %}max="{{ field.max_value }}"{% endif %}> + {% if field.unit %} + <div class="input-group-append"> + <div class="input-group-text">{{ field.unit }}</div> + </div> + {% endif %} + </div> - {% else %} - <span class="text-muted">{{ value }}</span> - {% endif %} + {% else %} + <span class="text-muted">{{ value }}</span> + {% endif %} - {% if field.type == 'option' and value != None %}<div id="fld{{field.key}}_container"> - {% if field.option_help %} - <small class="form-text text-muted">{{ field.option_help|get_language_item }}</small> - {% endif %} - <textarea class="form-control" disabled readonly id="fld{{ field.key }}">{{ value|default:'' }}</textarea> - </div> - {% endif %} + {% if field.type == 'option' and value != None %} + <div id="fld{{ field.key }}_container"> + {% if field.option_help %} + <small class="form-text text-muted">{{ field.option_help|get_language_item }}</small> + {% endif %} + <textarea class="form-control" disabled readonly id="fld{{ field.key }}">{{ value|default:'' }}</textarea> + </div> + {% endif %} - {% if field.required and value|default:'' == '' %} - <div id="fld{{field.key}}_required" class="invalid-feedback"> - {% trans "assembly_additionalfield_required" %} - </div> - {% endif %} + {% if field.required and value|default:'' == '' %} + <div id="fld{{ field.key }}_required" class="invalid-feedback">{% trans "assembly_additionalfield_required" %}</div> + {% endif %} + </div> + {% endwith %} </div> - {% endwith %} -</div> {% endfor %} diff --git a/src/backoffice/templates/backoffice/assemblyteam_assembly_detail.html b/src/backoffice/templates/backoffice/assemblyteam_assembly_detail.html index f6dfb91ad19e97c83a324957b211fdb33e958f8b..73fa7882daec3d6e8062bc390cf269c56bc4304a 100644 --- a/src/backoffice/templates/backoffice/assemblyteam_assembly_detail.html +++ b/src/backoffice/templates/backoffice/assemblyteam_assembly_detail.html @@ -5,263 +5,339 @@ {% load c3assemblies %} {% block content %} - <span class="float-end text-muted small"> - <span class="visually-hidden">ID: </span> - {{ object.id }} - </span> - <h1>{{ object.name }}</h1> + <span class="float-end text-muted small"> + <span class="visually-hidden">ID:</span> + {{ object.id }} + </span> + <h1>{{ object.name }}</h1> - <div class="row mb-3"> - <div class="col-md-8"> - <dl class="row"> - <dt class="col-sm-2">Slug:</dt> - <dd class="col-sm-10">{{ object.slug }}</dd> - {% if conference.support_clusters %} - <dt class="col-sm-2">{% trans "Assembly__hierarchy" %}:</dt> - <dd class="col-sm-10"> - <div class="dropdown me-2" aria-label="hierarchy selection"> - <button class="btn btn-sm btn-secondary dropdown-toggle" type="button" - data-bs-toggle="dropdown" aria-expanded="false"> - {{ object.get_hierarchy_display }} - </button> - <div class="dropdown-menu"> - {% for candidate, label in object.Hierarchy.choices %} - <a class="dropdown-item{% if candidate == object.hierarchy %} text-muted font-weight-bold{% endif %}" - {% if candidate == object.hierarchy %}disabled{% else %} - href="{% url 'backoffice:assemblyteam-edithierarchy' pk=object.id %}?value={{ candidate }}"{% endif %}> - {{ label }} - </a> - {% endfor %} - </div> - </div> - </dd> - <dt class="col-sm-2">{% trans "Assembly__parent" %}:</dt> - <dd class="col-sm-10">{% if object.parent_id %} - <a href="{% url 'backoffice:assemblyteam-detail' pk=object.parent_id %}"><abbr - title="{{ object.parent.name }}">{{ object.parent.slug }}</abbr></a>{% else %} - <span class="text-muted">-/-</span>{% endif %}</dd> - {% endif %} - <dt class="col-sm-2">{% trans "Assembly__is_official" %}:</dt> - <dd class="col-sm-10">{{ object.is_official|yesno }}</dd> - <dt class="col-sm-2">{% trans "Assembly__registration_details" %}:</dt> - <dd class="col-sm-10"><div class="border border-secondary-subtle p-1">{{ object.registration_details|default:"-/-" }}</div></dd> - {% if conference.additional_fields_schema %} - <dt class="col-sm-2">{% trans "Assembly__registration_data" %}</dt> - <dd class="col-sm-10"><div class="border border-secondary-subtle p-1"> - {% include "backoffice/assemblyteam_assembly_additionalfields.html" with schema=conference.get_additional_fields_schema data=object.registration_data %} - </div></dd> - {% endif %} - </dl> - - <div class="row"> - <div class="col-md-6"></div> + <div class="row mb-3"> + <div class="col-md-8"> + <dl class="row"> + <dt class="col-sm-2">Slug:</dt> + <dd class="col-sm-10"> + {{ object.slug }} + </dd> + {% if conference.support_clusters %} + <dt class="col-sm-2">{% trans "Assembly__hierarchy" %}:</dt> + <dd class="col-sm-10"> + <div class="dropdown me-2" aria-label="hierarchy selection"> + <button class="btn btn-sm btn-secondary dropdown-toggle" + type="button" + data-bs-toggle="dropdown" + aria-expanded="false">{{ object.get_hierarchy_display }}</button> + <div class="dropdown-menu"> + {% for candidate, label in object.Hierarchy.choices %} + <a class="dropdown-item{% if candidate == object.hierarchy %} text-muted font-weight-bold{% endif %}" + {% if candidate == object.hierarchy %}disabled{% else %} href="{% url 'backoffice:assemblyteam-edithierarchy' pk=object.id %}?value={{ candidate }}"{% endif %}> + {{ label }} + </a> + {% endfor %} + </div> </div> - </div> - <div class="col-md-4"> - <div class="row mb-3"> - <div class="col-md-8"> - <div class="card"> - <div class="card-header">{% trans "Assembly__state_assembly" %}</div> - <div class="card-body"> - <div class="dropdown text-center"> - <span - class="fs-4 {% if object.is_public_assembly %}text-success{% elif object.state_assembly == 'rejected' %}text-danger{% endif %}"> - {{ object.get_state_assembly_display }} - </span> - <btn class="btn btn-sm btn-primary dropdown-toggle" role="button" data-bs-toggle="dropdown"> - <i class="bi bi-pencil"></i> - </btn> + </dd> + <dt class="col-sm-2">{% trans "Assembly__parent" %}:</dt> + <dd class="col-sm-10"> + {% if object.parent_id %} + <a href="{% url 'backoffice:assemblyteam-detail' pk=object.parent_id %}"><abbr title="{{ object.parent.name }}">{{ object.parent.slug }}</abbr></a> + {% else %} + <span class="text-muted">-/-</span> + {% endif %} + </dd> + {% endif %} + <dt class="col-sm-2">{% trans "Assembly__is_official" %}:</dt> + <dd class="col-sm-10"> + {{ object.is_official|yesno }} + </dd> + <dt class="col-sm-2">{% trans "Assembly__registration_details" %}:</dt> + <dd class="col-sm-10"> + <div class="border border-secondary-subtle p-1">{{ object.registration_details|default:"-/-" }}</div> + </dd> + {% if conference.additional_fields_schema %} + <dt class="col-sm-2">{% trans "Assembly__registration_data" %}</dt> + <dd class="col-sm-10"> + <div class="border border-secondary-subtle p-1"> + {% include "backoffice/assemblyteam_assembly_additionalfields.html" with schema=conference.get_additional_fields_schema data=object.registration_data %} + </div> + </dd> + {% endif %} + </dl> - <ul class="dropdown-menu"> - {% if assembly.state_assembly == assembly.State.PLANNED %} - <li><a class="dropdown-item text-danger" role="button" - href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=registered"> - {% trans "assemblyedit_statebtn_registered" %} - </a></li> - <li><a class="dropdown-item text-danger" role="button" - href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=rejected"> - {% trans "assemblyedit_statebtn_reject" %} - </a></li> + <div class="row"> + <div class="col-md-6"></div> + </div> + </div> + <div class="col-md-4"> + <div class="row mb-3"> + <div class="col-md-8"> + <div class="card"> + <div class="card-header">{% trans "Assembly__state_assembly" %}</div> + <div class="card-body"> + <div class="dropdown text-center"> + <span class="fs-4 {% if object.is_public_assembly %}text-success{% elif object.state_assembly == 'rejected' %}text-danger{% endif %}"> + {{ object.get_state_assembly_display }} + </span> + <btn class="btn btn-sm btn-primary dropdown-toggle" role="button" data-bs-toggle="dropdown"> + <i class="bi bi-pencil"></i> + </btn> + + <ul class="dropdown-menu"> + {% if assembly.state_assembly == assembly.State.PLANNED %} + <li> + <a class="dropdown-item text-danger" + role="button" + href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=registered"> + {% trans "assemblyedit_statebtn_registered" %} + </a> + </li> + <li> + <a class="dropdown-item text-danger" + role="button" + href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=rejected"> + {% trans "assemblyedit_statebtn_reject" %} + </a> + </li> - {% elif assembly.state_assembly == assembly.State.REGISTERED %} - <li><a class="dropdown-item text-success" role="button" - href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=accepted"> - {% trans "assemblyedit_statebtn_accept" %} - </a></li> - <li><a class="dropdown-item text-danger" role="button" - href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=rejected"> - {% trans "assemblyedit_statebtn_reject" %} - </a></li> - <li><a class="dropdown-item text-secondary" role="button" - href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=hidden"> - {% trans "assemblyedit_statebtn_hidden" %} - </a></li> + {% elif assembly.state_assembly == assembly.State.REGISTERED %} + <li> + <a class="dropdown-item text-success" + role="button" + href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=accepted"> + {% trans "assemblyedit_statebtn_accept" %} + </a> + </li> + <li> + <a class="dropdown-item text-danger" + role="button" + href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=rejected"> + {% trans "assemblyedit_statebtn_reject" %} + </a> + </li> + <li> + <a class="dropdown-item text-secondary" + role="button" + href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=hidden"> + {% trans "assemblyedit_statebtn_hidden" %} + </a> + </li> - {% elif assembly.state_assembly == assembly.State.REJECTED %} - <li><a class="dropdown-item text-warning" role="button" - href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=registered"> - {% trans "assemblyedit_statebtn_rejected2registered" %} - </a></li> + {% elif assembly.state_assembly == assembly.State.REJECTED %} + <li> + <a class="dropdown-item text-warning" + role="button" + href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=registered"> + {% trans "assemblyedit_statebtn_rejected2registered" %} + </a> + </li> - {% else %} - {% if assembly.is_public %} - {% if assembly.state_assembly != 'placed' %} - <li><a class="dropdown-item text-secondary" role="button" - href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=placed"> - {% trans "assemblyedit_statebtn_placed" %} - </a></li> - {% endif %} - {% if assembly.state_assembly != 'arrived' %} - <li><a class="dropdown-item text-info" role="button" - href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=arrived"> - {% trans "assemblyedit_statebtn_arrived" %} - </a></li> - {% endif %} - {% if assembly.state_assembly != 'confirmed' %} - <li><a class="dropdown-item text-success" role="button" - href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=confirmed"> - {% trans "assemblyedit_statebtn_confirmed" %} - </a></li> - {% endif %} - {% endif %} + {% else %} + {% if assembly.is_public %} + {% if assembly.state_assembly != 'placed' %} + <li> + <a class="dropdown-item text-secondary" + role="button" + href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=placed"> + {% trans "assemblyedit_statebtn_placed" %} + </a> + </li> + {% endif %} + {% if assembly.state_assembly != 'arrived' %} + <li> + <a class="dropdown-item text-info" + role="button" + href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=arrived"> + {% trans "assemblyedit_statebtn_arrived" %} + </a> + </li> + {% endif %} + {% if assembly.state_assembly != 'confirmed' %} + <li> + <a class="dropdown-item text-success" + role="button" + href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=confirmed"> + {% trans "assemblyedit_statebtn_confirmed" %} + </a> + </li> + {% endif %} + {% endif %} - <li><a class="dropdown-item text-secondary" role="button" - href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=registered"> - {% trans "assemblyedit_statebtn_public2registered" %} - </a></li> - <li><a class="dropdown-item text-secondary" role="button" - href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=hidden"> - {% trans "assemblyedit_statebtn_hidden" %} - </a></li> + <li> + <a class="dropdown-item text-secondary" + role="button" + href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=registered"> + {% trans "assemblyedit_statebtn_public2registered" %} + </a> + </li> + <li> + <a class="dropdown-item text-secondary" + role="button" + href="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}?state=hidden"> + {% trans "assemblyedit_statebtn_hidden" %} + </a> + </li> - {% endif %} - </ul> - </div> - </div> + {% endif %} + </ul> + </div> </div> - </div> - <div class="col-md-4"> - <div class="card"> - <div class="card-header">Aktion</div> - <div class="card-body"> - <a role="button" class="btn btn-sm btn-light" title="{% trans "assemblyteam-editassembly" %}" - href="{% url 'backoffice:assembly-edit' pk=assembly.id %}"> - <i class="bi bi-pencil-square"></i> - </a> - <a role="button" class="btn btn-sm btn-light" title="{% trans "assemblyteam-message" %}" - href="{% url 'backoffice:assemblyteam-message' pk=assembly.id %}"> - <i class="bi bi-mailbox"></i> - </a> - </div> - </div> - </div> + </div> + </div> + <div class="col-md-4"> + <div class="card"> + <div class="card-header">Aktion</div> + <div class="card-body"> + <a role="button" + class="btn btn-sm btn-light" + title="{% trans "assemblyteam-editassembly" %}" + href="{% url 'backoffice:assembly-edit' pk=assembly.id %}"> + <i class="bi bi-pencil-square"></i> + </a> + <a role="button" + class="btn btn-sm btn-light" + title="{% trans "assemblyteam-message" %}" + href="{% url 'backoffice:assemblyteam-message' pk=assembly.id %}"> + <i class="bi bi-mailbox"></i> + </a> </div> + </div> + </div> + </div> - {% if conference.support_assembly_physical %} - <div class="card mb-3"> - <div class="card-header">Position</div> - <div class="card-body"> - {{ object.location_point }} - <a role="button" - class="btn btn-sm btn-{% if assembly.is_public %}primary{% else %}secondary{% endif %}" - href="{% url 'backoffice:assemblyteam-editposition' pk=assembly.id %}"> - <i class="bi bi-pencil"></i> - </a> - </div> - </div> - {% endif %} + {% if conference.support_assembly_physical %} + <div class="card mb-3"> + <div class="card-header">Position</div> + <div class="card-body"> + {{ object.location_point }} + <a role="button" + class="btn btn-sm btn-{% if assembly.is_public %}primary{% else %}secondary{% endif %}" + href="{% url 'backoffice:assemblyteam-editposition' pk=assembly.id %}"> + <i class="bi bi-pencil"></i> + </a> + </div> + </div> + {% endif %} - {% if latest_note %} - <div class="card mb-3 border-info"> - <div class="card-header bg-info text-bg-info"><i class="bi bi-chat-left-text"></i> {% trans "assemblyteam_lastnote" %}</div> - <div class="card-body"> - <p class="text-muted"> - <abbr title="{{ latest_note.timestamp }}">{{ latest_note.timestamp|naturaltime }}</abbr> - ({{ latest_note.user.username }}) - </p> - <a href="#latest_note" class="small">{{ latest_note.comment }}</a> - </div> - </div> - {% endif %} + {% if latest_note %} + <div class="card mb-3 border-info"> + <div class="card-header bg-info text-bg-info"> + <i class="bi bi-chat-left-text"></i> {% trans "assemblyteam_lastnote" %} + </div> + <div class="card-body"> + <p class="text-muted"> + <abbr title="{{ latest_note.timestamp }}">{{ latest_note.timestamp|naturaltime }}</abbr> + ({{ latest_note.user.username }}) + </p> + <a href="#latest_note" class="small">{{ latest_note.comment }}</a> + </div> </div> + {% endif %} </div> + </div> - <div class="row mb-3"> - <div class="col-md-12"> - <div class="card" id="logentries"> - <div class="card-header"> - <div class="d-inline-block float-end"> - <div class="btn-group d-none me-1" role="group" id="visible_logentries"> - <input type="radio" class="btn-check" name="visible_logentries" id="visible_logentries_all" autocomplete="off" checked> - <label class="btn btn-sm btn-outline-primary" for="visible_logentries_all">{% trans "assemblyteam_visiblelogentries_all" %}</label> + <div class="row mb-3"> + <div class="col-md-12"> + <div class="card" id="logentries"> + <div class="card-header"> + <div class="d-inline-block float-end"> + <div class="btn-group d-none me-1" role="group" id="visible_logentries"> + <input type="radio" + class="btn-check" + name="visible_logentries" + id="visible_logentries_all" + autocomplete="off" + checked> + <label class="btn btn-sm btn-outline-primary" for="visible_logentries_all"> + {% trans "assemblyteam_visiblelogentries_all" %} + </label> - <input type="radio" class="btn-check" name="visible_logentries" id="visible_logentries_msg" autocomplete="off"> - <label class="btn btn-sm btn-outline-primary" for="visible_logentries_msg">{% trans "assemblyteam_visiblelogentries_msg" %}</label> - </div> - <button class="btn btn-sm btn-primary" title="{% trans "assemblyteam_addcomment" %}" data-bs-toggle="modal" data-bs-target="#addCommentModal"><i class="bi bi-chat-left-text"></i></button> - </div> - {% trans 'Assembly__logentries' %} - </div> - <div class="card-body"> - {% for entry in object.logentries.all %} - <div class="mb-3 {% if entry.kind == entry.Kind.SYSTEM %}text-muted{% endif %} logentry" data-has-msg="{% if entry.comment %}y{% else %}n{% endif %}"> - {% if latest_note and latest_note.pk == entry.pk %}<a id="latest_note"></a>{% endif %} - <div class="border-bottom border-secondary mb-1{% if not entry.comment %} text-muted{% endif %}"> - <abbr title="{{ entry.timestamp }}">{{ entry.timestamp|naturaltime }}</abbr> - <span class="mx-1 badge bg-light text-bg-light border border-secondary-subtle"><i class="bi bi-person"></i> {{ entry.user.username }}</span> - <span class="text-muted">{{ entry.get_kind_display }}</span> - </div> - {% if entry.changes %} - <i class="bi bi-table float-start"></i> - <dl class="ms-4 mb-1 row small text-muted"> - {% for k, v in entry.changes.items %} - {% if k != "last_update_assembly" %} - <dt class="col-md-3">{{ k }}:</dt> - <dd class="col-md-9"> - {% if v|is_dict %} - <s class="fst-italic">{{ v.old }}</s> - {{ v.new }} - {% else %} - {{ v }} - {% endif %} - </dd> - {% endif %} - {% endfor %} - </dl> - {% endif %} - {% if entry.comment %} - <i class="bi bi-chat-left-text float-start"></i> - <div class="ms-4 border-1 bg-primary-subtle"> - {{ entry.comment }} - </div> - {% endif %} - </div> - {% endfor %} - </ul> - </div> + <input type="radio" + class="btn-check" + name="visible_logentries" + id="visible_logentries_msg" + autocomplete="off"> + <label class="btn btn-sm btn-outline-primary" for="visible_logentries_msg"> + {% trans "assemblyteam_visiblelogentries_msg" %} + </label> </div> + <button class="btn btn-sm btn-primary" + title="{% trans "assemblyteam_addcomment" %}" + data-bs-toggle="modal" + data-bs-target="#addCommentModal"> + <i class="bi bi-chat-left-text"></i> + </button> + </div> + {% trans 'Assembly__logentries' %} </div> + <div class="card-body"> + {% for entry in object.logentries.all %} + <div class="mb-3 {% if entry.kind == entry.Kind.SYSTEM %}text-muted{% endif %} logentry" + data-has-msg="{% if entry.comment %}y{% else %}n{% endif %}"> + {% if latest_note and latest_note.pk == entry.pk %}<a id="latest_note"></a>{% endif %} + <div class="border-bottom border-secondary mb-1{% if not entry.comment %} text-muted{% endif %}"> + <abbr title="{{ entry.timestamp }}">{{ entry.timestamp|naturaltime }}</abbr> + <span class="mx-1 badge bg-light text-bg-light border border-secondary-subtle"><i class="bi bi-person"></i> {{ entry.user.username }}</span> + <span class="text-muted">{{ entry.get_kind_display }}</span> + </div> + {% if entry.changes %} + <i class="bi bi-table float-start"></i> + <dl class="ms-4 mb-1 row small text-muted"> + {% for k, v in entry.changes.items %} + {% if k != "last_update_assembly" %} + <dt class="col-md-3">{{ k }}:</dt> + <dd class="col-md-9"> + {% if v|is_dict %} + <s class="fst-italic">{{ v.old }}</s> + {{ v.new }} + {% else %} + {{ v }} + {% endif %} + </dd> + {% endif %} + {% endfor %} + </dl> + {% endif %} + {% if entry.comment %} + <i class="bi bi-chat-left-text float-start"></i> + <div class="ms-4 border-1 bg-primary-subtle">{{ entry.comment }}</div> + {% endif %} + </div> + {% endfor %} + </ul> + </div> </div> + </div> +</div> -<div class="modal fade" id="addCommentModal" tabindex="-1" aria-labelledby="addCommentModalLabel" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header"> - <h1 class="modal-title fs-5" id="addCommentModalLabel">{% trans "assemblyteam_addcomment" %}</h1> - <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> - </div> - <div class="modal-body"> - <p>{% trans "assemblyteam_addcomment_help" %}</p> - <form id="addcomment" action="{% url 'backoffice:assemblyteam-detail' pk=object.pk %}" method="POST"> - {% csrf_token %} - <textarea name="comment" class="form-control" placeholder="" required></textarea> - </form> - </div> - <div class="modal-footer"> - <button class="btn btn-primary" form="addcomment"><i class="bi bi-chat-left-text"></i> {% trans "assemblyteam_addcomment_do" %}</button> - </div> - </div> +<div class="modal fade" + id="addCommentModal" + tabindex="-1" + aria-labelledby="addCommentModalLabel" + aria-hidden="true"> + <div class="modal-dialog"> + <div class="modal-content"> + <div class="modal-header"> + <h1 class="modal-title fs-5" id="addCommentModalLabel">{% trans "assemblyteam_addcomment" %}</h1> + <button type="button" + class="btn-close" + data-bs-dismiss="modal" + aria-label="Close"></button> + </div> + <div class="modal-body"> + <p>{% trans "assemblyteam_addcomment_help" %}</p> + <form id="addcomment" + action="{% url 'backoffice:assemblyteam-detail' pk=object.pk %}" + method="POST"> + {% csrf_token %} + <textarea name="comment" class="form-control" placeholder="" required></textarea> + </form> + </div> + <div class="modal-footer"> + <button class="btn btn-primary" form="addcomment"> + <i class="bi bi-chat-left-text"></i> {% trans "assemblyteam_addcomment_do" %} + </button> + </div> </div> + </div> </div> <script> diff --git a/src/backoffice/templates/backoffice/assemblyteam_edithierarchy.html b/src/backoffice/templates/backoffice/assemblyteam_edithierarchy.html index 1b3c40c535b328df62a1bf602aae8a827924201d..17d4b7507d22efeabeb95bad1fc0712b67156f99 100644 --- a/src/backoffice/templates/backoffice/assemblyteam_edithierarchy.html +++ b/src/backoffice/templates/backoffice/assemblyteam_edithierarchy.html @@ -4,37 +4,40 @@ {% load widget_tweaks %} {% block content %} -{% if form.errors %} -<div class="row"><div class="col-md-12"> - <div class="alert alert-danger"> - {{ form.errors }} - </div> -</div></div> -{% endif %} - -<div class="row"> - <div class="col-md-12"> - <div class="card mb-3"> - <div class="card-header"> - {% trans 'assemblyedit_hierarchy' %} + {% if form.errors %} + <div class="row"> + <div class="col-md-12"> + <div class="alert alert-danger">{{ form.errors }}</div> </div> - <div class="card-body"> - <form action="{% url 'backoffice:assemblyteam-edithierarchy' pk=assembly.id %}" method="POST">{% csrf_token %} - <input type="hidden" name="value" value="{{ new_value }}"> + </div> + {% endif %} + + <div class="row"> + <div class="col-md-12"> + <div class="card mb-3"> + <div class="card-header">{% trans 'assemblyedit_hierarchy' %}</div> + <div class="card-body"> + <form action="{% url 'backoffice:assemblyteam-edithierarchy' pk=assembly.id %}" + method="POST"> + {% csrf_token %} + <input type="hidden" name="value" value="{{ new_value }}"> <p>{% trans "Assembly__slug" %}: {{ assembly.slug }}</p> - <p>{% trans "Assembly__hierarchy" %}: <s class="text-danger">{{ assembly.get_hierarchy_display }}</s> <span class="text-success">{{ new_value_translated }}</span></p> + <p> + {% trans "Assembly__hierarchy" %}: <s class="text-danger">{{ assembly.get_hierarchy_display }}</s> <span class="text-success">{{ new_value_translated }}</span> + </p> <p>{% trans "assemblyteam_addcomment_field" %}:</p> - <textarea name="comment" class="form-control" placeholder="(optional)" autocomplete="off"></textarea> + <textarea name="comment" + class="form-control" + placeholder="(optional)" + autocomplete="off"></textarea> - <button type="submit" class="btn btn-sm btn-primary"> - {% trans "save" %} - </button> - </form> + <button type="submit" class="btn btn-sm btn-primary">{% trans "save" %}</button> + </form> + </div> </div> </div> </div> -</div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/assemblyteam_editposition.html b/src/backoffice/templates/backoffice/assemblyteam_editposition.html index af394b8dcd564f28d2f47d12e1e61db4d94fcd3f..520cf7b5ea3f12357d046854916a68b3324908f4 100644 --- a/src/backoffice/templates/backoffice/assemblyteam_editposition.html +++ b/src/backoffice/templates/backoffice/assemblyteam_editposition.html @@ -4,23 +4,23 @@ {% load widget_tweaks %} {% block content %} -{% if form.errors %} -<div class="row"><div class="col-md-12"> - <div class="alert alert-danger"> - {{ form.errors }} - </div> -</div></div> -{% endif %} - -<div class="row"> - <div class="col-md-12"> - <div class="card mb-3"> - <div class="card-header"> - {% trans 'assemblyedit_position' %} + {% if form.errors %} + <div class="row"> + <div class="col-md-12"> + <div class="alert alert-danger">{{ form.errors }}</div> </div> - <div class="card-body"> - <form action="{% url 'backoffice:assemblyteam-editposition' pk=assembly.id %}" method="POST">{% csrf_token %} - <input type="hidden" name="value" value="{{ new_value }}"> + </div> + {% endif %} + + <div class="row"> + <div class="col-md-12"> + <div class="card mb-3"> + <div class="card-header">{% trans 'assemblyedit_position' %}</div> + <div class="card-body"> + <form action="{% url 'backoffice:assemblyteam-editposition' pk=assembly.id %}" + method="POST"> + {% csrf_token %} + <input type="hidden" name="value" value="{{ new_value }}"> <p>{% trans "Assembly__slug" %}: {{ assembly.slug }}</p> <p>{% trans "Assembly__state_assembly" %}: {{ assembly.get_state_assembly_display }}</p> @@ -31,61 +31,84 @@ <div class="row mb-3"> <label class="col-sm-2 col-form-label text-muted" for="floor">{% trans "Assembly__location_floor" %}</label> <div class="col-sm-10"> - <input class="form-control" readonly type="text" name="location_floor" id="floor" value="{{ assembly.get_location_floor_index|default:"" }}"> - </div> + <input class="form-control" + readonly + type="text" + name="location_floor" + id="floor" + value="{{ assembly.get_location_floor_index|default:"" }}"> + </div> </div> <div class="row mb-3"> <label class="col-sm-2 col-form-label text-muted" for="poi">{% trans "Assembly__location_point" %}</label> <div class="col-sm-10"> - <input class="form-control" readonly type="text" name="location_point" id="poi" value="{{ map_location|default:"" }}"> - </div> + <input class="form-control" + readonly + type="text" + name="location_point" + id="poi" + value="{{ map_location|default:"" }}"> + </div> </div> <div class="row mb-3"> <label class="col-sm-2 col-form-label text-muted" for="areas">{% trans "Assembly__location_boundaries" %}</label> <div class="col-sm-10"> - <input class="form-control" readonly type="text" name="location_boundaries" id="areas" value="{{ map_boundaries|default:"" }}"> - </div> + <input class="form-control" + readonly + type="text" + name="location_boundaries" + id="areas" + value="{{ map_boundaries|default:"" }}"> + </div> </div> </div> {% if assembly.is_public %} - <!--div class="form-group"> + <!--div class="form-group"> <input type="checkbox" id=idInformAssembly" name="inform_assembly"> <label for="idInformAssembly">{% trans "assemblyedit_position_informassembly" %}</label> - </div--> + </div --> {% endif %} <p>{% trans "assemblyteam_addcomment_field" %}</p> - <textarea name="comment" class="form-control" placeholder="(optional)" autocomplete="off"></textarea> + <textarea name="comment" + class="form-control" + placeholder="(optional)" + autocomplete="off"></textarea> {% if assembly.is_placed %} - <button type="submit" class="btn btn-sm btn-primary" name="action" value="save"> - {% trans "assemblyedit_position_update" %} - </button> + <button type="submit" + class="btn btn-sm btn-primary" + name="action" + value="save">{% trans "assemblyedit_position_update" %}</button> - <button type="submit" class="btn btn-sm btn-danger" name="action" value="depublish"> - {% trans "assemblyedit_position_depublish" %} - </button> + <button type="submit" + class="btn btn-sm btn-danger" + name="action" + value="depublish">{% trans "assemblyedit_position_depublish" %}</button> {% elif assembly.is_public %} - <button type="submit" class="btn btn-sm btn-primary" name="action" value="publish"> - {% trans "assemblyedit_position_publish" %} - </button> + <button type="submit" + class="btn btn-sm btn-primary" + name="action" + value="publish">{% trans "assemblyedit_position_publish" %}</button> - <button type="submit" class="btn btn-sm btn-secondary" name="action" value="save"> - {% trans "assemblyedit_position_save_unpublished" %} - </button> + <button type="submit" + class="btn btn-sm btn-secondary" + name="action" + value="save">{% trans "assemblyedit_position_save_unpublished" %}</button> {% else %} - <button type="submit" class="btn btn-sm btn-danger" name="action" value="save"> - {% trans "assemblyedit_position_save_unaccepted" %} - </button> + <button type="submit" + class="btn btn-sm btn-danger" + name="action" + value="save">{% trans "assemblyedit_position_save_unaccepted" %}</button> {% endif %} - </form> + </form> + </div> </div> </div> </div> -</div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/assemblyteam_editstate.html b/src/backoffice/templates/backoffice/assemblyteam_editstate.html index f421dc38e4a36f18132ee931489ab72e466430f5..6f6b68c2ee5c008cf832c0848e21a4d11e0c4d48 100644 --- a/src/backoffice/templates/backoffice/assemblyteam_editstate.html +++ b/src/backoffice/templates/backoffice/assemblyteam_editstate.html @@ -4,37 +4,40 @@ {% load widget_tweaks %} {% block content %} -{% if form.errors %} -<div class="row"><div class="col-md-12"> - <div class="alert alert-danger"> - {{ form.errors }} - </div> -</div></div> -{% endif %} - -<div class="row"> - <div class="col-md-12"> - <div class="card mb-3"> - <div class="card-header"> - {% trans 'assemblyedit_state' %} + {% if form.errors %} + <div class="row"> + <div class="col-md-12"> + <div class="alert alert-danger">{{ form.errors }}</div> </div> - <div class="card-body"> - <form action="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}" method="POST">{% csrf_token %} - <input type="hidden" name="state" value="{{ new_value }}"> + </div> + {% endif %} + + <div class="row"> + <div class="col-md-12"> + <div class="card mb-3"> + <div class="card-header">{% trans 'assemblyedit_state' %}</div> + <div class="card-body"> + <form action="{% url 'backoffice:assemblyteam-editstate' pk=assembly.id %}" + method="POST"> + {% csrf_token %} + <input type="hidden" name="state" value="{{ new_value }}"> <p>{% trans "Assembly__slug" %}: {{ assembly.slug }}</p> - <p>{% trans "Assembly__state_assembly" %}: <s class="text-danger">{{ assembly.get_state_assembly_display }}</s> <span class="text-success">{{ new_value_translated }}</span></p> + <p> + {% trans "Assembly__state_assembly" %}: <s class="text-danger">{{ assembly.get_state_assembly_display }}</s> <span class="text-success">{{ new_value_translated }}</span> + </p> <p>{% trans "assemblyteam_addcomment_field" %}:</p> - <textarea name="comment" class="form-control" placeholder="(optional)" autocomplete="off"></textarea> + <textarea name="comment" + class="form-control" + placeholder="(optional)" + autocomplete="off"></textarea> - <button type="submit" class="btn btn-sm btn-primary"> - {% trans "save" %} - </button> - </form> + <button type="submit" class="btn btn-sm btn-primary">{% trans "save" %}</button> + </form> + </div> </div> </div> </div> -</div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/assemblyteam_message.html b/src/backoffice/templates/backoffice/assemblyteam_message.html index 79f5e1760d5584f60b125e7fd1fbfa21b83dd9dd..5f2475960226bd832a21bf150bdf9b7254255bee 100644 --- a/src/backoffice/templates/backoffice/assemblyteam_message.html +++ b/src/backoffice/templates/backoffice/assemblyteam_message.html @@ -4,100 +4,112 @@ {% load widget_tweaks %} {% block content %} - {% if form.errors %} - <div class="row"> - <div class="col-md-12"> - <div class="alert alert-danger"> - {{ form.errors }} - </div> - </div> - </div> - {% endif %} - + {% if form.errors %} <div class="row"> - <div class="col-md-12"> - <div class="card mb-3"> - <div class="card-header"> - {% trans 'assemblyedit_message' %} - </div> - <div class="card-body"> - <form action="{% url 'backoffice:assemblyteam-message' pk=assembly.id %}" - method="POST">{% csrf_token %} - <p>{% trans "Assembly__slug" %}: {{ assembly.slug }}</p> + <div class="col-md-12"> + <div class="alert alert-danger">{{ form.errors }}</div> + </div> + </div> + {% endif %} - <p>{% trans "assemblyedit_message_intro" %}</p> + <div class="row"> + <div class="col-md-12"> + <div class="card mb-3"> + <div class="card-header">{% trans 'assemblyedit_message' %}</div> + <div class="card-body"> + <form action="{% url 'backoffice:assemblyteam-message' pk=assembly.id %}" + method="POST"> + {% csrf_token %} + <p>{% trans "Assembly__slug" %}: {{ assembly.slug }}</p> - <div class="mb-3"> - <label for="asm_subj" class="form-label">{% trans 'subject' %}</label> - <input type="text" class="form-control" name="subject" - id="asm_subj" value="{{ subject }}"> - </div> + <p>{% trans "assemblyedit_message_intro" %}</p> - <div class="mb-3"> - <label for="asm_msg" class="form-label">{% trans 'message' %}</label> - <textarea class="form-control" name="message" id="asm_msg">{{ message }}</textarea> - </div> + <div class="mb-3"> + <label for="asm_subj" class="form-label">{% trans 'subject' %}</label> + <input type="text" + class="form-control" + name="subject" + id="asm_subj" + value="{{ subject }}"> + </div> - <button type="submit" class="btn btn-sm btn-primary"> - <i class="bi bi-eye"></i> {% trans "preview" %} - </button> - </form> - </div> + <div class="mb-3"> + <label for="asm_msg" class="form-label">{% trans 'message' %}</label> + <textarea class="form-control" name="message" id="asm_msg">{{ message }}</textarea> </div> + + <button type="submit" class="btn btn-sm btn-primary"> + <i class="bi bi-eye"></i> {% trans "preview" %} + </button> + </form> </div> + </div> </div> + </div> - {% if preview %} + {% if preview %} <div class="row"> - <div class="col-md-12"> - <div class="card mb-3"> - <div class="card-header"> - {% trans 'assemblyedit_message_preview' %} - </div> - <div class="card-body"> - {% trans 'subject' %}: <strong>{{ preview.subject }}</strong> + <div class="col-md-12"> + <div class="card mb-3"> + <div class="card-header">{% trans 'assemblyedit_message_preview' %}</div> + <div class="card-body"> + {% trans 'subject' %}: <strong>{{ preview.subject }}</strong> - <ul class="nav nav-tabs" id="myTab" role="tablist"> - <li class="nav-item" role="presentation"> - <button class="nav-link active" id="html-preview-tab" data-bs-toggle="tab" - data-bs-target="#html-tab-pane" type="button" role="tab" - aria-controls="html-tab-pane" - aria-selected="true"> - HTML - </button> - </li> - <li class="nav-item" role="presentation"> - <button class="nav-link" id="text-preview-tab" data-bs-toggle="tab" - data-bs-target="#text-tab-pane" type="button" role="tab" - aria-controls="text-tab-pane" aria-selected="false"> - Text - </button> - </li> - </ul> - <div class="tab-content" id="myTabContent"> - <div class="tab-pane fade show active" id="html-tab-pane" role="tabpanel" - aria-labelledby="html-preview-tab" tabindex="0"> - <div class="border border-top-0 p-3">{{ preview.html }}</div> - </div> - <div class="tab-pane fade" id="text-tab-pane" role="tabpanel" aria-labelledby="text-preview-tab" - tabindex="0"> - <pre class="border border-top-0 p-3">{{ preview.text }}</pre> - </div> + <ul class="nav nav-tabs" id="myTab" role="tablist"> + <li class="nav-item" role="presentation"> + <button class="nav-link active" + id="html-preview-tab" + data-bs-toggle="tab" + data-bs-target="#html-tab-pane" + type="button" + role="tab" + aria-controls="html-tab-pane" + aria-selected="true">HTML</button> + </li> + <li class="nav-item" role="presentation"> + <button class="nav-link" + id="text-preview-tab" + data-bs-toggle="tab" + data-bs-target="#text-tab-pane" + type="button" + role="tab" + aria-controls="text-tab-pane" + aria-selected="false">Text</button> + </li> + </ul> + <div class="tab-content" id="myTabContent"> + <div class="tab-pane fade show active" + id="html-tab-pane" + role="tabpanel" + aria-labelledby="html-preview-tab" + tabindex="0"> + <div class="border border-top-0 p-3">{{ preview.html }}</div> + </div> + <div class="tab-pane fade" + id="text-tab-pane" + role="tabpanel" + aria-labelledby="text-preview-tab" + tabindex="0"> + <pre class="border border-top-0 p-3">{{ preview.text }}</pre> + </div> - </div> - </div> - <div class="card-footer"> - <form action="{% url 'backoffice:assemblyteam-message' pk=assembly.id %}" method="POST"> - {% csrf_token %} - <input type="hidden" name="previewed" value="1"> - <input type="hidden" name="subject" value="{{ subject }}"> - <textarea class="d-none" readonly name="message">{{ message }}</textarea> - <button type="submit" class="btn btn-primary"><i class="bi bi-envelope-paper"></i> send it</button> - </form> - </div> </div> + </div> + <div class="card-footer"> + <form action="{% url 'backoffice:assemblyteam-message' pk=assembly.id %}" + method="POST"> + {% csrf_token %} + <input type="hidden" name="previewed" value="1"> + <input type="hidden" name="subject" value="{{ subject }}"> + <textarea class="d-none" readonly name="message">{{ message }}</textarea> + <button type="submit" class="btn btn-primary"> + <i class="bi bi-envelope-paper"></i> send it + </button> + </form> + </div> </div> + </div> </div> - {% endif %} + {% endif %} {% endblock %} diff --git a/src/backoffice/templates/backoffice/base.html b/src/backoffice/templates/backoffice/base.html index 0747e60e96a7c88db2ad2c888fbd5ac4c855b917..6f0571e4a156312c29ea037c18959ca339708c22 100644 --- a/src/backoffice/templates/backoffice/base.html +++ b/src/backoffice/templates/backoffice/base.html @@ -4,268 +4,338 @@ <!DOCTYPE html> <html> <head> - <title>{% block title %}{{ conference.slug }} {% trans "title_suffix" %}{% endblock %}</title> + <title> + {% block title %} + {{ conference.slug }} {% trans "title_suffix" %} + {% endblock %} + </title> <!-- FNORD --> - <link rel="stylesheet" type="text/css" href="{% static 'vendor/bootstrap5/bootstrap.min.css' %}"> - <link rel="stylesheet" type="text/css" href="{% static 'vendot/bootstrap-icons/bootstrap-icons.min.css' %}"> + <link rel="stylesheet" + type="text/css" + href="{% static 'vendor/bootstrap5/bootstrap.min.css' %}"> + <link rel="stylesheet" + type="text/css" + href="{% static 'vendot/bootstrap-icons/bootstrap-icons.min.css' %}"> <link rel="stylesheet" type="text/css" href="{% static 'backoffice.css' %}"> -{% if uses_map %}{% include "core/map_header.html" %}{% endif %} -{% block htmlhead %} -{% endblock %} + {% if uses_map %} + {% include "core/map_header.html" %} + {% endif %} + {% block htmlhead %}{% endblock %} </head> <body> <nav class="navbar navbar-expand-lg navbar-dark bg-dark"> <a class="navbar-brand" href="{% url 'backoffice:index' %}">{{ conference.slug }} {% trans "title_suffix" %}</a> - <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> + <button class="navbar-toggler" + type="button" + data-bs-toggle="collapse" + data-bs-target="#navbarSupportedContent" + aria-controls="navbarSupportedContent" + aria-expanded="false" + aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav me-auto"> <li class="nav-item"> - <a class="nav-link{% if active_page == 'home' %} active{% endif %}" href="{% url 'backoffice:index' %}">{% trans "nav_home" %}{% if active_page == 'home' %} <span class="visually-hidden">{{ activetab_srmarker }}</span>{% endif %}</a> + <a class="nav-link{% if active_page == 'home' %} active{% endif %}" + href="{% url 'backoffice:index' %}">{% trans "nav_home" %} + {% if active_page == 'home' %}<span class="visually-hidden">{{ activetab_srmarker }}</span>{% endif %} + </a> </li> {% if has_sos %} - <li class="nav-item"> - <a class="nav-link{% if active_page == 'sos' %} active{% endif %}" href="{% url 'backoffice:sos' %}">{% trans "nav_sos" %}{% if active_page == 'sos' %} <span class="visually-hidden">{{ activetab_srmarker }}</span>{% endif %}</a> - </li> + <li class="nav-item"> + <a class="nav-link{% if active_page == 'sos' %} active{% endif %}" + href="{% url 'backoffice:sos' %}">{% trans "nav_sos" %} + {% if active_page == 'sos' %}<span class="visually-hidden">{{ activetab_srmarker }}</span>{% endif %} + </a> + </li> {% endif %} {% if has_assemblies %} - <li class="nav-item"> - <a class="nav-link{% if active_page == 'assemblies' %} active{% endif %}" href="{% url 'backoffice:assemblies' %}">{% trans "nav_assemblies" %}{% if active_page == 'assemblies' %} <span class="visually-hidden">{{ activetab_srmarker }}</span>{% endif %}</a> - </li> - <li class="nav-item"> - <a class="nav-link{% if active_page == 'vouchers' %} active{% endif %}" href="{% url 'backoffice:vouchers' %}">{% trans "nav_vouchers" %}{% if active_page == 'vouchers' %} <span class="visually-hidden">{{ activetab_srmarker }}</span>{% endif %}</a> - </li> + <li class="nav-item"> + <a class="nav-link{% if active_page == 'assemblies' %} active{% endif %}" + href="{% url 'backoffice:assemblies' %}">{% trans "nav_assemblies" %} + {% if active_page == 'assemblies' %}<span class="visually-hidden">{{ activetab_srmarker }}</span>{% endif %} + </a> + </li> + <li class="nav-item"> + <a class="nav-link{% if active_page == 'vouchers' %} active{% endif %}" + href="{% url 'backoffice:vouchers' %}">{% trans "nav_vouchers" %} + {% if active_page == 'vouchers' %}<span class="visually-hidden">{{ activetab_srmarker }}</span>{% endif %} + </a> + </li> {% endif %} {% if has_channel %} - <li class="nav-item"> - <a class="nav-link{% if active_page == 'channels' %} active{% endif %}" href="{% url 'backoffice:channels' %}">{% trans "nav_channels" %}{% if active_page == 'channels' %} <span class="visually-hidden">{{ activetab_srmarker }}</span>{% endif %}</a> - </li> + <li class="nav-item"> + <a class="nav-link{% if active_page == 'channels' %} active{% endif %}" + href="{% url 'backoffice:channels' %}">{% trans "nav_channels" %} + {% if active_page == 'channels' %}<span class="visually-hidden">{{ activetab_srmarker }}</span>{% endif %} + </a> + </li> {% endif %} {% if has_map %} - <li class="nav-item"> - <a class="nav-link{% if active_page == 'map' %} active{% endif %}" href="{% url 'backoffice:map-poi-list' %}">{% trans "nav_map" %}{% if active_page == 'map' %} <span class="visually-hidden">{{ activetab_srmarker }}</span>{% endif %}</a> - </li> + <li class="nav-item"> + <a class="nav-link{% if active_page == 'map' %} active{% endif %}" + href="{% url 'backoffice:map-poi-list' %}">{% trans "nav_map" %} + {% if active_page == 'map' %}<span class="visually-hidden">{{ activetab_srmarker }}</span>{% endif %} + </a> + </li> {% endif %} {% if has_moderation %} - <li class="nav-item"> - <a class="nav-link{% if active_page == 'moderation' %} active{% endif %}" href="{% url 'backoffice:moderation' %}">{% trans "nav_moderation" %}{% if active_page == 'moderation' %} <span class="visually-hidden">{{ activetab_srmarker }}</span>{% endif %}</a> - </li> + <li class="nav-item"> + <a class="nav-link{% if active_page == 'moderation' %} active{% endif %}" + href="{% url 'backoffice:moderation' %}">{% trans "nav_moderation" %} + {% if active_page == 'moderation' %}<span class="visually-hidden">{{ activetab_srmarker }}</span>{% endif %} + </a> + </li> {% endif %} {% if has_conference_admin or has_assembly_registration_admin %} - <li class="nav-item"> - <a class="nav-link{% if active_page == 'conference_admin' %} active{% endif %}" href="{% url 'backoffice:conference-publication' conference.id %}">{% trans "nav_conference_admin" %}{% if active_page == 'conference_admin' %} <span class="visually-hidden">{{ activetab_srmarker }}</span>{% endif %}</a> - </li> + <li class="nav-item"> + <a class="nav-link{% if active_page == 'conference_admin' %} active{% endif %}" + href="{% url 'backoffice:conference-publication' conference.id %}">{% trans "nav_conference_admin" %} + {% if active_page == 'conference_admin' %}<span class="visually-hidden">{{ activetab_srmarker }}</span>{% endif %} + </a> + </li> {% endif %} {% if has_pages %} - <li class="nav-item"> - <a class="nav-link{% if active_page == 'wiki' %} active{% endif %}" href="{% url 'backoffice:wiki' %}">{% trans "nav_wiki" %}{% if active_page == 'wiki' %} <span class="visually-hidden">{{ activetab_srmarker }}</span>{% endif %}</a> - </li> + <li class="nav-item"> + <a class="nav-link{% if active_page == 'wiki' %} active{% endif %}" + href="{% url 'backoffice:wiki' %}">{% trans "nav_wiki" %} + {% if active_page == 'wiki' %}<span class="visually-hidden">{{ activetab_srmarker }}</span>{% endif %} + </a> + </li> {% endif %} {% if has_schedules %} - <li class="nav-item"> - <a class="nav-link{% if active_page == 'schedules' %} active{% endif %}" href="{% url 'backoffice:schedules' %}">{% trans "nav_schedules" %}{% if active_page == 'schedules' %} <span class="visually-hidden">{{ activetab_srmarker }}</span>{% endif %}</a> - </li> + <li class="nav-item"> + <a class="nav-link{% if active_page == 'schedules' %} active{% endif %}" + href="{% url 'backoffice:schedules' %}">{% trans "nav_schedules" %} + {% if active_page == 'schedules' %}<span class="visually-hidden">{{ activetab_srmarker }}</span>{% endif %} + </a> + </li> {% endif %} {% if has_workadventure %} - <li class="nav-item"> - <a class="nav-link{% if active_page == 'workadventure' %} active{% endif %}" href="{% url 'backoffice:workadventure' %}">{% trans "nav_workadventure" %}{% if active_page == 'workadventure' %} <span class="visually-hidden">{{ activetab_srmarker }}</span>{% endif %}</a> - </li> + <li class="nav-item"> + <a class="nav-link{% if active_page == 'workadventure' %} active{% endif %}" + href="{% url 'backoffice:workadventure' %}">{% trans "nav_workadventure" %} + {% if active_page == 'workadventure' %}<span class="visually-hidden">{{ activetab_srmarker }}</span>{% endif %} + </a> + </li> {% endif %} </ul> <ul class="navbar-nav"> {% if conferences|length > 1 or active_page == 'conferences' %} - <li class="nav-item{% if active_page == 'conferences' %} active{% endif %}"> - <a class="nav-link" href="{% url 'backoffice:conferences' %}" title="{% trans 'Conference__Selection' %}"> - {% trans 'Conferences' %} - </a> - </li> + <li class="nav-item{% if active_page == 'conferences' %} active{% endif %}"> + <a class="nav-link" + href="{% url 'backoffice:conferences' %}" + title="{% trans 'Conference__Selection' %}">{% trans 'Conferences' %}</a> + </li> {% endif %} <li class="nav-item dropdown"> {% get_current_language as LANGUAGE_CODE %} - <a class="nav-link dropdown-toggle" href="{% url 'backoffice:profile' %}" id="navbarLangDropdown" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> - {{ LANGUAGE_CODE }} - </a> - <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarLangDropdown"> + <a class="nav-link dropdown-toggle" + href="{% url 'backoffice:profile' %}" + id="navbarLangDropdown" + data-bs-toggle="dropdown" + aria-haspopup="true" + aria-expanded="false">{{ LANGUAGE_CODE }}</a> + <div class="dropdown-menu dropdown-menu-right" + aria-labelledby="navbarLangDropdown"> <form method="post" action="{% url 'set_language' %}"> {% csrf_token %} - <input type="hidden" name="next" value="{% firstof redirect_to request.path %}"> + <input type="hidden" + name="next" + value="{% firstof redirect_to request.path %}"> {% get_language_info_list for LANGUAGES as languages %} {% for language in languages %} - <button class="dropdown-item{% if language.code == LANGUAGE_CODE %} active{% endif %}" style="cursor: pointer" type="submit" name="language" value="{{language.code}}">{{ language.name_local }} ({{ language.code }})</button> + <button class="dropdown-item{% if language.code == LANGUAGE_CODE %} active{% endif %}" + style="cursor: pointer" + type="submit" + name="language" + value="{{ language.code }}">{{ language.name_local }} ({{ language.code }})</button> {% endfor %} </form> </div> </li> {% if user.is_authenticated %} - <li class="nav-item dropdown{% if active_page == 'profile' %} active{% endif %}"> - <a class="nav-link dropdown-toggle" href="{% url 'backoffice:profile' %}" id="navbarUserDropdown" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> - {{ user.get_full_name|default:user.username }} - </a> - <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarUserDropdown"> - <a class="dropdown-item" href="{% url 'backoffice:profile' %}">{% trans 'nav_profile' %}</a> - <a class="dropdown-item" href="{% url 'backoffice:password_change' %}">{% trans 'nav_change_password' %}</a> - <div class="dropdown-divider"></div> - <form action="{% url 'backoffice:logout' %}" method="post"> - {% csrf_token %} - <button class="dropdown-item">{% trans 'nav_logout' %}</button> - </form> - </div> - </li> + <li class="nav-item dropdown{% if active_page == 'profile' %} active{% endif %}"> + <a class="nav-link dropdown-toggle" + href="{% url 'backoffice:profile' %}" + id="navbarUserDropdown" + data-bs-toggle="dropdown" + aria-haspopup="true" + aria-expanded="false">{{ user.get_full_name|default:user.username }}</a> + <div class="dropdown-menu dropdown-menu-right" + aria-labelledby="navbarUserDropdown"> + <a class="dropdown-item" href="{% url 'backoffice:profile' %}">{% trans 'nav_profile' %}</a> + <a class="dropdown-item" href="{% url 'backoffice:password_change' %}">{% trans 'nav_change_password' %}</a> + <div class="dropdown-divider"></div> + <form action="{% url 'backoffice:logout' %}" method="post"> + {% csrf_token %} + <button class="dropdown-item">{% trans 'nav_logout' %}</button> + </form> + </div> + </li> {% else %} - <li class="nav-item"> - <a class="nav-link" href="{% url 'backoffice:login' %}">{% trans 'nav_login' %}</a> - </li> + <li class="nav-item"> + <a class="nav-link" href="{% url 'backoffice:login' %}">{% trans 'nav_login' %}</a> + </li> {% endif %} </ul> </div> </nav> -{% block fullcontent %} - <div class="wrapper"> - {% block sidebar %}{% if sidebar %} - <nav id="sidebar" class="list-group"> - {% if sidebar.back_link %} - <a class="list-group-item list-group-action back" style="border-bottom: none; border-radius: 0;" href="{{sidebar.back_link.link}}"> - ❮ {{ sidebar.back_link.caption }} - </a> - {% endif %} - {% if sidebar.title_link %} - <a href="{{ sidebar.title_link }}" class="list-group-item title" style="border-top: none; border-radius: 0;"><h3>{{ sidebar.title }}</h3></a> - {% else %} - <div class="list-group-item" style="border-top: none; border-radius: 0;"><h3>{{ sidebar.title }}</h3></div> - {% endif %} + {% block fullcontent %} + <div class="wrapper"> + {% block sidebar %} + {% if sidebar %} + <nav id="sidebar" class="list-group"> + {% if sidebar.back_link %} + <a class="list-group-item list-group-action back" + style="border-bottom: none; + border-radius: 0" + href="{{ sidebar.back_link.link }}">❮ {{ sidebar.back_link.caption }}</a> + {% endif %} + {% if sidebar.title_link %} + <a href="{{ sidebar.title_link }}" + class="list-group-item title" + style="border-top: none; + border-radius: 0"> + <h3>{{ sidebar.title }}</h3> + </a> + {% else %} + <div class="list-group-item" style="border-top: none; border-radius: 0;"> + <h3>{{ sidebar.title }}</h3> + </div> + {% endif %} - {% for item in sidebar.items %} - <div - class="list-group-item list-group-action {% if item.active %} active{% endif %}" - {% if item.active %}aria-current="true"{% endif %} - {% if item.children %} - aria-expanded="{% if item.expanded %}true{% else %}false{% endif %}" - data-bs-toggle="collapse" - data-bs-target=".sidebar{{ forloop.counter }}" - {% endif %} - > - {% if item.link %} - <a - href="{{ item.link }}" - class="d-block {{ item.class|join:' ' }}" - onclick="event.stopPropagation()" - > - {{ item.caption }} - </a> - {% else %} + {% for item in sidebar.items %} + <div class="list-group-item list-group-action {% if item.active %}active{% endif %}" + {% if item.active %}aria-current="true"{% endif %} + {% if item.children %} aria-expanded="{% if item.expanded %}true{% else %}false{% endif %} + " + data-bs-toggle="collapse" + data-bs-target=".sidebar{{ forloop.counter }}" + {% endif %}> + {% if item.link %} + <a href="{{ item.link }}" + class="d-block {{ item.class|join:' ' }}" + onclick="event.stopPropagation()">{{ item.caption }}</a> + {% else %} {{ item.caption }} - {% endif %} - {% if item.children or item.count != '' or item.add_link %} + {% endif %} + {% if item.children or item.count != '' or item.add_link %} {% if item.children %} - <a - href="#" - class="sidebar me-auto {{ item.class|join:' ' }} dropdown-toggle" - aria-expanded="{% if item.expanded %}true{% else %}false{% endif %}" - data-bs-toggle="collapse" - data-bs-target=".sidebar{{ forloop.counter }}"> - {% if item.count != '' %}<span class="badge text-bg-light ms-1">{{ item.count }}</span>{% else %} {% endif %} - </a> + <a href="#" + class="sidebar me-auto {{ item.class|join:' ' }} dropdown-toggle" + aria-expanded="{% if item.expanded %}true{% else %}false{% endif %}" + data-bs-toggle="collapse" + data-bs-target=".sidebar{{ forloop.counter }}"> + {% if item.count != '' %} + <span class="badge text-bg-light ms-1">{{ item.count }}</span> + {% else %} + + {% endif %} + </a> {% else %} <span class="me-auto"> - {% if item.count != '' %}<span class="badge text-bg-light ms-1">{{ item.count }}</span>{% else %} {% endif %} + {% if item.count != '' %} + <span class="badge text-bg-light ms-1">{{ item.count }}</span> + {% else %} + + {% endif %} </span> {% endif %} {% if item.add_link %} - <a - href="{{ item.add_link }}" - class="ms-1" - onclick="event.stopPropagation()" - > - <i class="bi bi-plus-circle"></i> - </a> + <a href="{{ item.add_link }}" + class="ms-1" + onclick="event.stopPropagation()"> + <i class="bi bi-plus-circle"></i> + </a> {% endif %} - {% endif %} - </div> + {% endif %} + </div> - {% if item.children %} - <div class="sidebar{{ forloop.counter }} collapse{% if item.expanded %} show{% endif %}"> - {% if item.link %} - <a - class="list-group-item list-group-action justify-content-between child {% if item.active %}active{% endif %}" - href="{{ item.link }}" - > - {% trans "All" %} - </a> + {% if item.children %} + <div class="sidebar{{ forloop.counter }} collapse{% if item.expanded %} show{% endif %}"> + {% if item.link %} + <a class="list-group-item list-group-action justify-content-between child {% if item.active %}active{% endif %}" + href="{{ item.link }}">{% trans "All" %}</a> + {% endif %} + {% for child in item.children %} + <a class="list-group-item list-group-action justify-content-between child {% if child.active %}active{% endif %}" + href="{{ child.link }}"> + <div>{{ child.caption }}</div> + {% if child.add_link %} + <a href="{{ child.add_link }}" + class="ms-1" + onclick="event.stopPropagation()"> + <i class="bi bi-plus-circle"></i> + </a> + {% endif %} + {% if child.count %}<span class="badge text-bg-light ms-1">{{ child.count }}</span>{% endif %} + </a> + {% endfor %} + </div> {% endif %} - {% for child in item.children %} - <a - class="list-group-item list-group-action justify-content-between child {% if child.active %} active{% endif %}" - href="{{ child.link }}" - > - <div>{{ child.caption }}</div> - {% if child.add_link %} - <a - href="{{ child.add_link }}" - class="ms-1" - onclick="event.stopPropagation()" - > - <i class="bi bi-plus-circle"></i> - </a>{% endif %} - {% if child.count %}<span class="badge text-bg-light ms-1">{{ child.count }}</span>{% endif %} - </a> - {% endfor %} - </div> - {% endif %} - {% endfor %} - </nav>{% endif %} - {% endblock %} + {% endfor %} + </nav> + {% endif %} + {% endblock %} - <div class="container{% if user.is_authenticated and conferencemember == None %} pb-10rem{% endif %}" style="margin-top: 1em;"> - {% if messages %} - <div id="messages"> - {% for message in messages %} - <div class="alert{% if message.tags %} alert-{% if message.tags == 'error' %}danger{% else %}{{ message.tags }}{% endif %}{% endif %}" role="alert"> - {{ message|safe }} - </div> - {% endfor %} - </div> - {% endif %} + <div class="container{% if user.is_authenticated and conferencemember == None %} pb-10rem{% endif %}" + style="margin-top: 1em"> + {% if messages %} + <div id="messages"> + {% for message in messages %} + <div class="alert{% if message.tags %} alert-{% if message.tags == 'error' %}danger{% else %}{{ message.tags }}{% endif %}{% endif %}" + role="alert">{{ message|safe }}</div> + {% endfor %} + </div> + {% endif %} - {% block content %} - {% endblock %} + {% block content %}{% endblock %} -{% block footer %} - {% if user.is_authenticated and conference.require_ticket and conferencemember == None %} - <!-- This is not very elegant but should do the job --> - <div class="alert alert-warning fixed-bottom mx-3"> - ⚠ {% trans "backoffice__not_a_conference_member" %} - </div> - {% endif %} -{% endblock %} - </div> - </div> -{% endblock %} + {% block footer %} + {% if user.is_authenticated and conference.require_ticket and conferencemember == None %} + <!-- This is not very elegant but should do the job --> + <div class="alert alert-warning fixed-bottom mx-3">⚠ {% trans "backoffice__not_a_conference_member" %}</div> + {% endif %} + {% endblock %} + </div> + </div> + {% endblock %} <script src="{% static 'jquery-3.7.1.min.js' %}"></script> <script src="{% static 'vendor/bootstrap5/bootstrap.bundle.min.js' %}"></script> -{% block scripts %} -{% endblock %} - <div class="legal-footer bg-dark p-1"><a class="link-light" href="https://legal.cccv.de/" rel="nofollow noreferrer noopener" target="_blank">Impressum - Datenschutzerklärung</a></div> + {% block scripts %}{% endblock %} + <div class="legal-footer bg-dark p-1"> + <a class="link-light" + href="https://legal.cccv.de/" + rel="nofollow noreferrer noopener" + target="_blank">Impressum - Datenschutzerklärung</a> + </div> <!-- Modal --> - <div class="modal fade" id="confirmationModal" tabindex="-1" aria-labelledby="confirmationModal" aria-hidden="true"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-header bg-warning" id="confirmationModalHeader"> - <h1 class="modal-title fs-5" id="confirmationModalLabel">Modal title</h1> - <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> - </div> - <div class="modal-body" id="confirmationModalBody"> - ... - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button> - <button type="button" class="btn btn-warning" id="confirmationModalSubmit">Save changes</button> + <div class="modal fade" + id="confirmationModal" + tabindex="-1" + aria-labelledby="confirmationModal" + aria-hidden="true"> + <div class="modal-dialog"> + <div class="modal-content"> + <div class="modal-header bg-warning" id="confirmationModalHeader"> + <h1 class="modal-title fs-5" id="confirmationModalLabel">Modal title</h1> + <button type="button" + class="btn-close" + data-bs-dismiss="modal" + aria-label="Close"></button> + </div> + <div class="modal-body" id="confirmationModalBody">...</div> + <div class="modal-footer"> + <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button> + <button type="button" class="btn btn-warning" id="confirmationModalSubmit">Save changes</button> + </div> </div> </div> </div> - </div> </body> </html> diff --git a/src/backoffice/templates/backoffice/conferences/publication_edit.html b/src/backoffice/templates/backoffice/conferences/publication_edit.html index 760369f3481bb2569b83b3ed8c903f2d5676f5c3..bd517d1fa7277dde1275a16ae1c6b23efcbebdb1 100644 --- a/src/backoffice/templates/backoffice/conferences/publication_edit.html +++ b/src/backoffice/templates/backoffice/conferences/publication_edit.html @@ -66,8 +66,7 @@ </div> <div class="flex-grow-1 px-3">{% blocktrans %}Conference__recall__introduction{% endblocktrans %}</div> <div class="d-inline-flex gap-2 align-items-start"> - <a class="float-end btn btn-info me-2" - href="{% url 'plainui:index' %}">{% trans 'public_link' %}</a> + <a class="float-end btn btn-info me-2" href="{% url 'plainui:index' %}">{% trans 'public_link' %}</a> <button class="btn btn-warning float-end" id="publishConference" formaction="{{ edit_url }}?recall=true">{% trans "Conference__recall__submit" %}</button> diff --git a/src/backoffice/templates/backoffice/conferences/selection.html b/src/backoffice/templates/backoffice/conferences/selection.html index 7ded69a53c29e49c6f777e9303393c1a7e4039fe..3725d38760352718103e21716eb940f852c8a390 100644 --- a/src/backoffice/templates/backoffice/conferences/selection.html +++ b/src/backoffice/templates/backoffice/conferences/selection.html @@ -9,9 +9,7 @@ {% if conferences %} <form action="{% url 'backoffice:conferences' %}" method="POST"> {% csrf_token %} - <p> - {% trans Conferences__selection__help %} - </p> + <p>{% trans Conferences__selection__help %}</p> <div class="mb-3"> <label class="form-label" for="conference">{% trans 'Conference' %}:</label> <select class="form-select" id="conference" name="conference_slug"> diff --git a/src/backoffice/templates/backoffice/event/list.html b/src/backoffice/templates/backoffice/event/list.html index c06583b6e36b1a5cff3b5305b61e2d239e870509..2000533e2fef44168e64fd2746cd210ff304df63 100644 --- a/src/backoffice/templates/backoffice/event/list.html +++ b/src/backoffice/templates/backoffice/event/list.html @@ -4,7 +4,8 @@ {% load static %} {% block htmlhead %} - <link rel="stylesheet" href="{% static 'vendor/datatables/datatables.min.css' %}"> + <link rel="stylesheet" + href="{% static 'vendor/datatables/datatables.min.css' %}"> {% endblock %} {% block scripts %} diff --git a/src/backoffice/templates/backoffice/index.html b/src/backoffice/templates/backoffice/index.html index 47e05f8eab3c64e93e9a3f47fe2134c69d773b38..d9aca7646da9f6ab4178624426d421865db2fc0e 100644 --- a/src/backoffice/templates/backoffice/index.html +++ b/src/backoffice/templates/backoffice/index.html @@ -3,61 +3,65 @@ {% block content %} -{% if conference and conference.welcome_text %} -<div class="card mb-3"> - {{ conference.welcome_text|safe }} -</div> -{% endif %} + {% if conference and conference.welcome_text %} + <div class="card mb-3">{{ conference.welcome_text|safe }}</div> + {% endif %} -{% if user.is_authenticated %} -<div class="card"> + {% if user.is_authenticated %} + <div class="card"> - <div class="card-header"> - {% trans "myassemblies" %} - </div> - <div class="card-body"> - <table class="table table-sm"> - <thead> - <tr> - <th>{% trans "assembly_name" %}</th> - <th>{% trans "assembly_state" %}</th> - </tr> - </thead> - <tbody> - {% for assembly in myassemblies %} - <tr> - <td><a href="{% url 'backoffice:assembly' pk=assembly.id %}">{{ assembly.name }}</a></td> + <div class="card-header">{% trans "myassemblies" %}</div> + <div class="card-body"> + <table class="table table-sm"> + <thead> + <tr> + <th>{% trans "assembly_name" %}</th> + <th>{% trans "assembly_state" %}</th> + </tr> + </thead> + <tbody> + {% for assembly in myassemblies %} + <tr> <td> - {{ assembly.get_state_assembly_display }} - {% if assembly.state_assembly == 'planned' %}<span class="text-danger font-weight-bold" title="{% trans "Assembly__state_assembly-planned__hint" %}">⚠</span>{% endif %} + <a href="{% url 'backoffice:assembly' pk=assembly.id %}">{{ assembly.name }}</a> </td> - </tr> - {% empty %} - <tr><td colspan="2">:-(</td></tr> - {% endfor %} - </tbody> - </table> - </div> - <div class="card-footer"> - {% if conference.is_open %} - <a class="btn btn-success" href="{% url 'backoffice:assembly-create' %}" style="float: right;"> - {% trans 'assemblycreate' %} - </a> - {% elif has_assemblies %} - <a class="btn btn-warning" href="{% url 'backoffice:assembly-create' %}" style="float: right;" title="{% trans 'assemblycreate_deadlineexceeded' %}"> - {% trans 'assemblycreate' %} - </a> - {% else %} - <button class="btn btn-success disabled" title="{% trans 'assemblycreate_deadlineexceeded' %}" style="float: right;"> - {% trans 'assemblycreate' %} - </button> - {% endif %} - </div> -</div> + <td> + {{ assembly.get_state_assembly_display }} + {% if assembly.state_assembly == 'planned' %} + <span class="text-danger font-weight-bold" + title="{% trans "Assembly__state_assembly-planned__hint" %}">⚠</span> + {% endif %} + </td> + </tr> + {% empty %} + <tr> + <td colspan="2">:-(</td> + </tr> + {% endfor %} + </tbody> + </table> + </div> + <div class="card-footer"> + {% if conference.is_open %} + <a class="btn btn-success" + href="{% url 'backoffice:assembly-create' %}" + style="float: right">{% trans 'assemblycreate' %}</a> + {% elif has_assemblies %} + <a class="btn btn-warning" + href="{% url 'backoffice:assembly-create' %}" + style="float: right" + title="{% trans 'assemblycreate_deadlineexceeded' %}">{% trans 'assemblycreate' %}</a> + {% else %} + <button class="btn btn-success disabled" + title="{% trans 'assemblycreate_deadlineexceeded' %}" + style="float: right">{% trans 'assemblycreate' %}</button> + {% endif %} + </div> + </div> -{% else %} + {% else %} -<p>{% trans "welcome_text" %}</p> + <p>{% trans "welcome_text" %}</p> -{% endif %} + {% endif %} {% endblock %} diff --git a/src/backoffice/templates/backoffice/login.html b/src/backoffice/templates/backoffice/login.html index bfe7b5c0508fcd891101fed90ba54d6b1698c85e..bf8d660c3af14295f383a707217c2d64cdebd333 100644 --- a/src/backoffice/templates/backoffice/login.html +++ b/src/backoffice/templates/backoffice/login.html @@ -3,35 +3,36 @@ {% load i18n %} {% block content %} -<div class="card-group mb-3"> - <div class="card card-light"> - <div class="card-header">Information</div> - <div class="card-body"> - <p class="font-weight-bold">{% trans 'login_introduction' %}</p> - <p>{% trans 'login_introduction2' %}</p> - </div> - </div> - <div class="card card-primary"> - <form class="form" action="{% url 'backoffice:login' %}" method="POST">{% csrf_token %} - <div class="card-header">Login</div> + <div class="card-group mb-3"> + <div class="card card-light"> + <div class="card-header">Information</div> <div class="card-body"> - <input type="hidden" name="next" value="{{next}}"> - {% bootstrap_form form layout="floating" %} - <div class="form-group" style="text-align: right;"> - <button class="btn btn-primary" type="submit">{% trans 'nav_login' %}</button> - </div> + <p class="font-weight-bold">{% trans 'login_introduction' %}</p> + <p>{% trans 'login_introduction2' %}</p> </div> - </form> + </div> + <div class="card card-primary"> + <form class="form" action="{% url 'backoffice:login' %}" method="POST"> + {% csrf_token %} + <div class="card-header">Login</div> + <div class="card-body"> + <input type="hidden" name="next" value="{{ next }}"> + {% bootstrap_form form layout="floating" %} + <div class="form-group" style="text-align: right;"> + <button class="btn btn-primary" type="submit">{% trans 'nav_login' %}</button> + </div> + </div> + </form> + </div> </div> -</div> -<div class="row"> - <div class="mx-auto"> - <a class="text-muted" href="{% url 'backoffice:signup' %}">{% trans 'registration_signup' %}</a> - </div> - <div class="mx-auto"> - <a class="text-muted" href="{% url 'backoffice:password_reset' %}">{% trans 'registration_password_reset_link' %}</a> - </div> + <div class="row"> + <div class="mx-auto"> + <a class="text-muted" href="{% url 'backoffice:signup' %}">{% trans 'registration_signup' %}</a> </div> + <div class="mx-auto"> + <a class="text-muted" href="{% url 'backoffice:password_reset' %}">{% trans 'registration_password_reset_link' %}</a> + </div> + </div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/map_floor_form.html b/src/backoffice/templates/backoffice/map_floor_form.html index 34975ed47b029b655afc71ff9df28aea862c5436..78b23a63fb518355f2a97328e2fcf0dfae809c11 100644 --- a/src/backoffice/templates/backoffice/map_floor_form.html +++ b/src/backoffice/templates/backoffice/map_floor_form.html @@ -2,42 +2,37 @@ {% load django_bootstrap5 %} {% load i18n %} -{% block title %} -{{ object.name }} -{% endblock %} +{% block title %}{{ object.name }}{% endblock %} {% block content %} -<div class="row mb-3"> - <div class="col-md-12"> - <form action="" method="POST" enctype="multipart/form-data">{% csrf_token %} - <div class="card border-default"> - <div class="card-header bg-default"> - {% if object.id %} - <span class="text-muted float-end text-end me-2" style="font-size: 50%;">ID: <strong>{{ object.id }}</strong></span> - {% trans 'MapFloor' %} "{{ object.name }}" - {% else %} - {% trans 'MapFloor' %} <i class="bi bi-plus-circle"></i> - {% endif %} - </div> - <div class="card-body"> - {% bootstrap_form_errors form layout='inline' %} + <div class="row mb-3"> + <div class="col-md-12"> + <form action="" method="POST" enctype="multipart/form-data"> + {% csrf_token %} + <div class="card border-default"> + <div class="card-header bg-default"> + {% if object.id %} + <span class="text-muted float-end text-end me-2" style="font-size: 50%;">ID: <strong>{{ object.id }}</strong></span> + {% trans 'MapFloor' %} "{{ object.name }}" + {% else %} + {% trans 'MapFloor' %} <i class="bi bi-plus-circle"></i> + {% endif %} + </div> + <div class="card-body"> + {% bootstrap_form_errors form layout='inline' %} - {% bootstrap_field form.index %} - <div class="row"> - <div class="col-md-6"> - {% bootstrap_field form.name_de %} - </div> - <div class="col-md-6"> - {% bootstrap_field form.name_en %} - </div> + {% bootstrap_field form.index %} + <div class="row"> + <div class="col-md-6">{% bootstrap_field form.name_de %}</div> + <div class="col-md-6">{% bootstrap_field form.name_en %}</div> + </div> + </div> + <div class="card-body"> + <button type="submit" class="btn btn-primary">{% trans "save" %}</button> </div> - </div> - <div class="card-body"> - <button type="submit" class="btn btn-primary">{% trans "save" %}</button> - </div> + </div> + </form> </div> - </form> </div> -</div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/map_floor_list.html b/src/backoffice/templates/backoffice/map_floor_list.html index 6a2c168a52124f3179048c1d8773110de238fc64..1cc076d01e98ae33a083ae5384576914177fa44c 100644 --- a/src/backoffice/templates/backoffice/map_floor_list.html +++ b/src/backoffice/templates/backoffice/map_floor_list.html @@ -4,12 +4,13 @@ {% load static %} {% block htmlhead %} - <link rel="stylesheet" href="{% static 'vendor/datatables/datatables.min.css' %}"> + <link rel="stylesheet" + href="{% static 'vendor/datatables/datatables.min.css' %}"> {% endblock %} {% block scripts %} - <script src="{% static 'vendor/datatables/datatables.min.js' %}"></script> - <script> + <script src="{% static 'vendor/datatables/datatables.min.js' %}"></script> + <script> $(document).ready(function() { $('#pois').DataTable({ pageLength: 100, @@ -39,35 +40,38 @@ } }); }); - </script> + </script> {% endblock %} {% block content %} -<div class="card"> - <div class="card-header"> - <a href="{% url 'backoffice:map-floor-create' %}" class="float-end btn btn-sm btn-primary"><i class="bi bi-plus-circle"></i> {% trans 'add' %}</a> + <div class="card"> + <div class="card-header"> + <a href="{% url 'backoffice:map-floor-create' %}" + class="float-end btn btn-sm btn-primary"><i class="bi bi-plus-circle"></i> {% trans 'add' %}</a> {% trans 'MapFloors' %} - </div> - <div class="card-body"> + </div> + <div class="card-body"> - <table class="table table-sm" id="pois"> - <thead> - <tr> - <th>{% trans "MapFloor__index" %}</th> - <th>{% trans "MapFloor__name" %}</th> - </tr> - </thead> - <tbody> - {% for floor in object_list %} - <tr> - <td>{{ floor.index }}</td> - <td><a href="{% url 'backoffice:map-floor-edit' pk=floor.pk %}">{{ floor.name }}</a></td> - </tr> - {% endfor %} - </tbody> - </table> + <table class="table table-sm" id="pois"> + <thead> + <tr> + <th>{% trans "MapFloor__index" %}</th> + <th>{% trans "MapFloor__name" %}</th> + </tr> + </thead> + <tbody> + {% for floor in object_list %} + <tr> + <td>{{ floor.index }}</td> + <td> + <a href="{% url 'backoffice:map-floor-edit' pk=floor.pk %}">{{ floor.name }}</a> + </td> + </tr> + {% endfor %} + </tbody> + </table> + </div> </div> -</div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/map_poi_form.html b/src/backoffice/templates/backoffice/map_poi_form.html index c09fd60bacc5f9a96e582debf55a248086e7b553..0326a9357c14631ac1daafecc71e97db298f2f99 100644 --- a/src/backoffice/templates/backoffice/map_poi_form.html +++ b/src/backoffice/templates/backoffice/map_poi_form.html @@ -2,56 +2,50 @@ {% load django_bootstrap5 %} {% load i18n %} -{% block title %} -{{ object.name }} -{% endblock %} +{% block title %}{{ object.name }}{% endblock %} {% block content %} -<div class="row mb-3"> - <div class="col-md-12"> - <form action="" method="POST" enctype="multipart/form-data">{% csrf_token %} - <div class="card border-default"> - <div class="card-header bg-default"> - {% if object.id %} - <span class="text-muted float-end text-end me-2" style="font-size: 50%;">ID: <strong>{{ object.id }}</strong></span> - {% trans 'MapPOI' %} "{{ object.name }}" - {% else %} - {% trans 'MapPOI' %} <i class="bi bi-plus-circle"></i> - {% endif %} - </div> - <div class="card-body"> - {% bootstrap_form_errors form layout='inline' %} - - {% bootstrap_field form.visible %} - {% bootstrap_field form.is_official %} - <div class="row"> - <div class="col-md-6"> - {% bootstrap_field form.name_de %} - </div> - <div class="col-md-6"> - {% bootstrap_field form.name_en %} - </div> - </div> - <div class="row"> - <div class="col-md-6"> - {% bootstrap_field form.description_de %} - </div> - <div class="col-md-6"> - {% bootstrap_field form.description_en %} - </div> + <div class="row mb-3"> + <div class="col-md-12"> + <form action="" method="POST" enctype="multipart/form-data"> + {% csrf_token %} + <div class="card border-default"> + <div class="card-header bg-default"> + {% if object.id %} + <span class="text-muted float-end text-end me-2" style="font-size: 50%;">ID: <strong>{{ object.id }}</strong></span> + {% trans 'MapPOI' %} "{{ object.name }}" + {% else %} + {% trans 'MapPOI' %} <i class="bi bi-plus-circle"></i> + {% endif %} </div> + <div class="card-body"> + {% bootstrap_form_errors form layout='inline' %} - {% bootstrap_field form.location_floor %} - {% include "core/map.html" with map_config=conference.map_config.backoffice poi_id="poi" areas_id="" %} - <input type="hidden" name="location_point" id="poi" value="{{ object.get_location_point_as_json }}"> + {% bootstrap_field form.visible %} + {% bootstrap_field form.is_official %} + <div class="row"> + <div class="col-md-6">{% bootstrap_field form.name_de %}</div> + <div class="col-md-6">{% bootstrap_field form.name_en %}</div> + </div> + <div class="row"> + <div class="col-md-6">{% bootstrap_field form.description_de %}</div> + <div class="col-md-6">{% bootstrap_field form.description_en %}</div> + </div> - </div> - <div class="card-body"> - <button type="submit" class="btn btn-primary">{% trans "save" %}</button> - </div> + {% bootstrap_field form.location_floor %} + {% include "core/map.html" with map_config=conference.map_config.backoffice poi_id="poi" areas_id="" %} + <input type="hidden" + name="location_point" + id="poi" + value="{{ object.get_location_point_as_json }}"> + + </div> + <div class="card-body"> + <button type="submit" class="btn btn-primary">{% trans "save" %}</button> + </div> + </div> + </form> </div> - </form> </div> -</div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/map_poi_list.html b/src/backoffice/templates/backoffice/map_poi_list.html index e06e958f12c3671ef141b8634a4bd6451168f1f7..e9f3a6bc435f7ce31f4348564fe1913115d47837 100644 --- a/src/backoffice/templates/backoffice/map_poi_list.html +++ b/src/backoffice/templates/backoffice/map_poi_list.html @@ -4,12 +4,13 @@ {% load static %} {% block htmlhead %} - <link rel="stylesheet" href="{% static 'vendor/datatables/datatables.min.css' %}"> + <link rel="stylesheet" + href="{% static 'vendor/datatables/datatables.min.css' %}"> {% endblock %} {% block scripts %} - <script src="{% static 'vendor/datatables/datatables.min.js' %}"></script> - <script> + <script src="{% static 'vendor/datatables/datatables.min.js' %}"></script> + <script> $(document).ready(function() { $('#pois').DataTable({ pageLength: 100, @@ -39,35 +40,38 @@ } }); }); - </script> + </script> {% endblock %} {% block content %} -<div class="card"> - <div class="card-header"> - <a href="{% url 'backoffice:map-poi-create' %}" class="float-end btn btn-sm btn-primary"><i class="bi bi-plus-circle"></i> {% trans 'add' %}</a> + <div class="card"> + <div class="card-header"> + <a href="{% url 'backoffice:map-poi-create' %}" + class="float-end btn btn-sm btn-primary"><i class="bi bi-plus-circle"></i> {% trans 'add' %}</a> {% trans 'MapPOIs' %} - </div> - <div class="card-body"> + </div> + <div class="card-body"> - <table class="table table-sm" id="pois"> - <thead> - <tr> - <th>{% trans "MapPOI__visible" %}</th> - <th>{% trans "MapPOI__name" %}</th> - </tr> - </thead> - <tbody> - {% for poi in object_list %} - <tr class="{% if not poi.visible %}text-muted{% endif %}"> - <td>{{ poi.visible|yesno }}</td> - <td><a href="{% url 'backoffice:map-poi-edit' pk=poi.pk %}">{{ poi.name }}</a></td> - </tr> - {% endfor %} - </tbody> - </table> + <table class="table table-sm" id="pois"> + <thead> + <tr> + <th>{% trans "MapPOI__visible" %}</th> + <th>{% trans "MapPOI__name" %}</th> + </tr> + </thead> + <tbody> + {% for poi in object_list %} + <tr class="{% if not poi.visible %}text-muted{% endif %}"> + <td>{{ poi.visible|yesno }}</td> + <td> + <a href="{% url 'backoffice:map-poi-edit' pk=poi.pk %}">{{ poi.name }}</a> + </td> + </tr> + {% endfor %} + </tbody> + </table> + </div> </div> -</div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/moderation_assembly-detail.html b/src/backoffice/templates/backoffice/moderation_assembly-detail.html index 1b27538235c4cebd4f25e7b79dd7d2efe2b43e7f..aac1196342e21deda40c5d0d11f72d14c90adc55 100644 --- a/src/backoffice/templates/backoffice/moderation_assembly-detail.html +++ b/src/backoffice/templates/backoffice/moderation_assembly-detail.html @@ -17,28 +17,47 @@ <div class="card-body"> <dl class="row"> <dt class="col-sm-3">Slug:</dt> - <dd class="col-sm-9">{{ object.slug }}</dd> + <dd class="col-sm-9"> + {{ object.slug }} + </dd> <dt class="col-sm-3">{% trans "Assembly__name" %}:</dt> - <dd class="col-sm-9">{{ object.name }}</dd> + <dd class="col-sm-9"> + {{ object.name }} + </dd> <dt class="col-sm-3">Typ:</dt> <dd class="col-sm-9"> - {% if object.is_physical %}{% trans "Assembly__is_physical" %}{% endif %} - {% if object.is_virtual %}{% trans "Assembly__is_virtual" %}{% endif %} - {% if object.is_remote %}{% trans "Assembly__is_remote" %}{% endif %} + {% if object.is_physical %} + {% trans "Assembly__is_physical" %} + {% endif %} + {% if object.is_virtual %} + {% trans "Assembly__is_virtual" %} + {% endif %} + {% if object.is_remote %} + {% trans "Assembly__is_remote" %} + {% endif %} </dd> {% if conference.support_clusters %} <dt class="col-sm-3">{% trans "Assembly__hierarchy" %}:</dt> - <dd class="col-sm-9">{{ object.get_hierarchy_display }}</dd> + <dd class="col-sm-9"> + {{ object.get_hierarchy_display }} + </dd> <dt class="col-sm-3">{% trans "Assembly__parent" %}:</dt> - <dd class="col-sm-9">{% if object.parent_id %} - <a href="{% url 'backoffice:moderation-assembly-detail' pk=object.parent_id %}"><abbr - title="{{ object.parent.name }}">{{ object.parent.slug }}</abbr></a>{% else %} - <span class="text-muted">-/-</span>{% endif %}</dd> + <dd class="col-sm-9"> + {% if object.parent_id %} + <a href="{% url 'backoffice:moderation-assembly-detail' pk=object.parent_id %}"><abbr title="{{ object.parent.name }}">{{ object.parent.slug }}</abbr></a> + {% else %} + <span class="text-muted">-/-</span> + {% endif %} + </dd> {% endif %} <dt class="col-sm-3">{% trans "Assembly__is_official" %}:</dt> - <dd class="col-sm-9">{{ object.is_official|yesno }}</dd> + <dd class="col-sm-9"> + {{ object.is_official|yesno }} + </dd> <dt class="col-sm-3">{% trans "Assembly__state_assembly" %}:</dt> - <dd class="col-sm-9">{{ object.get_state_assembly_display }}</dd> + <dd class="col-sm-9"> + {{ object.get_state_assembly_display }} + </dd> </dl> </div> </div> @@ -48,18 +67,20 @@ <div class="card-body"> <table class="table table-sm table-hover"> <thead> - <tr> - <th>User</th> - <th>Rollen</th> - </tr> + <tr> + <th>User</th> + <th>Rollen</th> + </tr> </thead> <tbody> - {% for member in object.members.all %} - <tr class="{% if member.is_representative %}fw-bold{% endif %}"> - <td><a href="{% url "backoffice:moderation-user-detail" pk=member.member.id %}">{{ member.member.username }}</a></td> - <td>{{ member.get_roles_display }}</td> - </tr> - {% endfor %} + {% for member in object.members.all %} + <tr class="{% if member.is_representative %}fw-bold{% endif %}"> + <td> + <a href="{% url "backoffice:moderation-user-detail" pk=member.member.id %}">{{ member.member.username }}</a> + </td> + <td>{{ member.get_roles_display }}</td> + </tr> + {% endfor %} </tbody> </table> </div> @@ -67,16 +88,24 @@ </div> <div class="col-md-3"> - <a class="d-block btn btn-outline-{% if event.is_public %}success{% else %}warning{% endif %} mb-3" href="{% hub_absolute 'plainui:assembly' assembly_slug=assembly.slug %}"> + <a class="d-block btn btn-outline-{% if event.is_public %}success{% else %}warning{% endif %} mb-3" + href="{% hub_absolute 'plainui:assembly' assembly_slug=assembly.slug %}"> {% trans "moderation__public_link" %} - {% if not assembly.is_public %}<br><small class="text-muted fst-italic">{% trans "moderation__notpublic" %}</small>{% endif %} + {% if not assembly.is_public %} + <br> + <small class="text-muted fst-italic">{% trans "moderation__notpublic" %}</small> + {% endif %} </a> <div class="card border-primary-subtle"> <div class="card-header bg-primary-subtle text-bg-primary">{% trans "nav_moderation" %}</div> <div class="card-body" id="moderation"> {% if object.is_public %} - <button class="mb-3 w-100 btn btn-outline-warning" data-action="hide" data-action-text="Assembly wird versteckt und ist öffentlich nicht mehr abrufbar. Muss vom Assembly-Team rückgängig gemacht werden."><i class="bi bi-eye-slash"></i> hide</button> + <button class="mb-3 w-100 btn btn-outline-warning" + data-action="hide" + data-action-text="Assembly wird versteckt und ist öffentlich nicht mehr abrufbar. Muss vom Assembly-Team rückgängig gemacht werden."> + <i class="bi bi-eye-slash"></i> hide + </button> {% else %} {% trans "moderation__assembly__cannotunhide" %} {% endif %} diff --git a/src/backoffice/templates/backoffice/moderation_assembly-item.html b/src/backoffice/templates/backoffice/moderation_assembly-item.html index d0935a2c3817d7f2b510b9d582299e8800cde121..b2a933c852dee083c5e850696d732fdbe8fa8826 100644 --- a/src/backoffice/templates/backoffice/moderation_assembly-item.html +++ b/src/backoffice/templates/backoffice/moderation_assembly-item.html @@ -1,12 +1,17 @@ {% load i18n %} <div class="card mb-1"> <div class="card-body"> - Assembly "<a href="{% url 'backoffice:moderation-assembly-detail' pk=assembly.pk %}" class="fw-bold">{{ assembly.slug }}</a>" <small>{{ assembly.name }}</small> + Assembly "<a href="{% url 'backoffice:moderation-assembly-detail' pk=assembly.pk %}" + class="fw-bold">{{ assembly.slug }}</a>" <small>{{ assembly.name }}</small> <br> <span class="text-{% if assembly.is_public %}success{% elif assembly.state_assembly != 'hidden' %}danger{% else %}secondary{% endif %}">{{ assembly.get_state_assembly_display }}</span> <br> - <span class="text-muted">Kontakte:</span>{% for u in assembly.get_all_orga_contacts %} <a href="{% url 'backoffice:moderation-user-detail' pk=u.pk %}"><i class="bi bi-person"></i>{{ u.username }}</a>{% endfor %}<br> + <span class="text-muted">Kontakte:</span> + {% for u in assembly.get_all_orga_contacts %} + <a href="{% url 'backoffice:moderation-user-detail' pk=u.pk %}"><i class="bi bi-person"></i>{{ u.username }}</a> + {% endfor %} + <br> </div> </div> diff --git a/src/backoffice/templates/backoffice/moderation_assembly-list.html b/src/backoffice/templates/backoffice/moderation_assembly-list.html index 9190e68d072d208add9ce8fe9c0a720624b1694e..6af9945be50ba011d61e28b9d7c5cfe716d54485 100644 --- a/src/backoffice/templates/backoffice/moderation_assembly-list.html +++ b/src/backoffice/templates/backoffice/moderation_assembly-list.html @@ -4,12 +4,13 @@ {% load static %} {% block htmlhead %} - <link rel="stylesheet" href="{% static 'vendor/datatables/datatables.min.css' %}"> + <link rel="stylesheet" + href="{% static 'vendor/datatables/datatables.min.css' %}"> {% endblock %} {% block scripts %} - <script src="{% static 'vendor/datatables/datatables.min.js' %}"></script> - <script> + <script src="{% static 'vendor/datatables/datatables.min.js' %}"></script> + <script> $(document).ready(function() { $('#assemblies').DataTable({ pageLength: 100, @@ -39,56 +40,88 @@ } }); }); - </script> + </script> {% endblock %} {% block content %} -<div class="card"> - <div class="card-header"><span class="text-muted">{% trans 'Assemblys' %}:</span> {{ mode_display }}</div> - <div class="card-body"> - -{% if filter_tag is not None %} - <div class="alert alert-info"> - {% trans "assemblies_filteredtag" %}: <strong>{{ filter_tag }}</strong> + <div class="card"> + <div class="card-header"> + <span class="text-muted">{% trans 'Assemblys' %}:</span> {{ mode_display }} </div> -{% endif %} + <div class="card-body"> + + {% if filter_tag is not None %} + <div class="alert alert-info"> + {% trans "assemblies_filteredtag" %}: <strong>{{ filter_tag }}</strong> + </div> + {% endif %} - <table class="table table-sm" id="assemblies"> - <thead> - <tr> - {% if conference.support_clusters %}<th>{% trans "Assembly__hierarchy-cluster" %}</th>{% endif %} - <th>{% trans "Assembly__slug" %}</th> - <th>{% trans "Assembly__name" %}</th> - <th title="{% trans "Assembly__is_official" %}">{% trans "Assembly__is_official__short" %}</th> - <th>{% trans "Assembly__state_assembly" %}</th> - {% if conference.support_channels %} - <th>{% trans "Assembly__state_channel" %}</th> - {% endif %} - <th>{% trans "Assembly__last_update" %}</th> - </tr> - </thead> - <tbody> - {% for assembly in object_list %} - <tr class="{% if conference.support_clusters and assembly.is_public_cluster %}font-weight-bold{% endif %}{% if not assembly.is_public %}text-muted{% endif %}"> - {% if conference.support_clusters %}<td>{{ assembly.is_cluster|yesno }}</td>{% endif %} - <td><a href="{% url 'backoffice:moderation-assembly-detail' pk=assembly.pk %}">{{ assembly.slug }}</a></td> - <td>{% spaceless %} - {{ assembly.name }} - {% if has_assemblies %}<a href="{% url 'backoffice:assemblyteam-detail' pk=assembly.pk %}" title="assembly team edit"><i class="bi bi-gear"></i></a>{% endif %} - {% if assembly.user_can_edit %}<a href="{% url 'backoffice:assembly-edit' pk=assembly.id %}" title="user edit"><i class="bi bi-pencil"></i></a>{% endif %} - {% endspaceless %}</td> - <td>{{ assembly.is_official|yesno }}</td> - <td class="{% if assembly.is_public_assembly %}text-success{% elif assembly.state_assembly == 'rejected' %}text-danger{% endif %}">{% if assembly.state_assembly != 'none' %}{{ assembly.get_state_assembly_display }}{% else %}-{% endif %}</td> - {% if conference.support_channels %} - <td class="{% if assembly.is_public_channel %}text-success{% elif assembly.state_channel == 'rejected' %}text-danger{% endif %}">{% if assembly.state_channel != 'none' %}{{ assembly.get_state_channel_display }}{% else %}-{% endif %}</td> - {% endif %} - <td>{% if assembly.last_update_assembly > assembly.last_update_staff %}<span title="{% trans "Assembly__last_update_assembly" %}">{{ assembly.last_update_assembly|naturaltime }}</span>{% else %}<span class="text-muted" title="{% trans "Assembly__last_update_staff" %}">{{ assembly.last_update_staff|naturaltime }}</span>{% endif %}</td> - </tr> - {% endfor %} - </tbody> - </table> + <table class="table table-sm" id="assemblies"> + <thead> + <tr> + {% if conference.support_clusters %} + <th>{% trans "Assembly__hierarchy-cluster" %}</th> + {% endif %} + <th>{% trans "Assembly__slug" %}</th> + <th>{% trans "Assembly__name" %}</th> + <th title="{% trans "Assembly__is_official" %}">{% trans "Assembly__is_official__short" %}</th> + <th>{% trans "Assembly__state_assembly" %}</th> + {% if conference.support_channels %} + <th>{% trans "Assembly__state_channel" %}</th> + {% endif %} + <th>{% trans "Assembly__last_update" %}</th> + </tr> + </thead> + <tbody> + {% for assembly in object_list %} + <tr class="{% if conference.support_clusters and assembly.is_public_cluster %}font-weight-bold{% endif %}{% if not assembly.is_public %}text-muted{% endif %}"> + {% if conference.support_clusters %}<td>{{ assembly.is_cluster|yesno }}</td>{% endif %} + <td> + <a href="{% url 'backoffice:moderation-assembly-detail' pk=assembly.pk %}">{{ assembly.slug }}</a> + </td> + <td> + {% spaceless %} + {{ assembly.name }} + {% if has_assemblies %} + <a href="{% url 'backoffice:assemblyteam-detail' pk=assembly.pk %}" + title="assembly team edit"><i class="bi bi-gear"></i></a> + {% endif %} + {% if assembly.user_can_edit %} + <a href="{% url 'backoffice:assembly-edit' pk=assembly.id %}" + title="user edit"><i class="bi bi-pencil"></i></a> + {% endif %} + {% endspaceless %} + </td> + <td>{{ assembly.is_official|yesno }}</td> + <td class="{% if assembly.is_public_assembly %}text-success{% elif assembly.state_assembly == 'rejected' %}text-danger{% endif %}"> + {% if assembly.state_assembly != 'none' %} + {{ assembly.get_state_assembly_display }} + {% else %} + - + {% endif %} + </td> + {% if conference.support_channels %} + <td class="{% if assembly.is_public_channel %}text-success{% elif assembly.state_channel == 'rejected' %}text-danger{% endif %}"> + {% if assembly.state_channel != 'none' %} + {{ assembly.get_state_channel_display }} + {% else %} + - + {% endif %} + </td> + {% endif %} + <td> + {% if assembly.last_update_assembly > assembly.last_update_staff %} + <span title="{% trans "Assembly__last_update_assembly" %}">{{ assembly.last_update_assembly|naturaltime }}</span> + {% else %} + <span class="text-muted" title="{% trans "Assembly__last_update_staff" %}">{{ assembly.last_update_staff|naturaltime }}</span> + {% endif %} + </td> + </tr> + {% endfor %} + </tbody> + </table> + </div> </div> -</div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/moderation_badge-detail.html b/src/backoffice/templates/backoffice/moderation_badge-detail.html index 9898124b83275a4348d69f7084ce80acfa49b402..0d8c1b7a910cb8b17e3dfa45a4bced20fcc26c8c 100644 --- a/src/backoffice/templates/backoffice/moderation_badge-detail.html +++ b/src/backoffice/templates/backoffice/moderation_badge-detail.html @@ -15,30 +15,40 @@ <div class="card-body"> <dl class="row"> <dt class="col-sm-3">{% trans "Badge__name" %}:</dt> - <dd class="col-sm-9">{{ object.name }}</dd> + <dd class="col-sm-9"> + {{ object.name }} + </dd> <dt class="col-sm-3">{% trans "Assembly" %}:</dt> - <dd class="col-sm-9">{% if object.issuing_assembly %}<a href="{% url "backoffice:moderation-assembly-detail" pk=object.issuing_assembly.id %}">{{ object.issuing_assembly.slug }}</a>{% else %}-/-{% endif %}</dd> + <dd class="col-sm-9"> + {% if object.issuing_assembly %} + <a href="{% url "backoffice:moderation-assembly-detail" pk=object.issuing_assembly.id %}">{{ object.issuing_assembly.slug }}</a> + {% else %} + -/- + {% endif %} + </dd> <dt class="col-sm-3">{% trans "Badge__state" %}:</dt> - <dd class="col-sm-9">{{ object.state }}</dd> + <dd class="col-sm-9"> + {{ object.state }} + </dd> <dt class="col-sm-3">{% trans "Badge__category" %}:</dt> - <dd class="col-sm-9">{{ object.category|default:"-" }}</dd> + <dd class="col-sm-9"> + {{ object.category|default:"-" }} + </dd> <dt class="col-sm-3">{% trans "Badge__location" %}:</dt> - <dd class="col-sm-9">{{ object.location|default:"-" }}</dd> + <dd class="col-sm-9"> + {{ object.location|default:"-" }} + </dd> </dl> </div> </div> <div class="card mb-3"> <div class="card-header">{% trans "Badge__description" %} (en)</div> - <div class="card-body"> - {{ object.description_html_en|safe }} - </div> + <div class="card-body">{{ object.description_html_en|safe }}</div> </div> <div class="card mb-3"> <div class="card-header">{% trans "Badge__description" %} (de)</div> - <div class="card-body"> - {{ object.description_html_de|safe }} - </div> + <div class="card-body">{{ object.description_html_de|safe }}</div> </div> {% if object.image %} @@ -58,9 +68,17 @@ <div class="card-header bg-primary-subtle text-bg-primary">{% trans "nav_moderation" %}</div> <div class="card-body" id="moderation"> {% if object.is_public %} - <button class="mb-3 w-100 btn btn-outline-warning" data-action="hide" data-action-text="Veröffentlichung wird zurück genommen. Diese Aktion kann vom Eigentümer der Veranstaltung selbst rückgängig gemacht werden."><i class="bi bi-eye-slash"></i> hide</button> + <button class="mb-3 w-100 btn btn-outline-warning" + data-action="hide" + data-action-text="Veröffentlichung wird zurück genommen. Diese Aktion kann vom Eigentümer der Veranstaltung selbst rückgängig gemacht werden."> + <i class="bi bi-eye-slash"></i> hide + </button> {% endif %} - <button class="mb-3 w-100 btn btn-outline-danger" data-action="delete" data-action-text="Veranstaltung vollständig entfernen. Diese Aktion kann nicht rückgängig gemacht werden!"><i class="bi bi-trash"></i> delete</button> + <button class="mb-3 w-100 btn btn-outline-danger" + data-action="delete" + data-action-text="Veranstaltung vollständig entfernen. Diese Aktion kann nicht rückgängig gemacht werden!"> + <i class="bi bi-trash"></i> delete + </button> </div> </div> </div> diff --git a/src/backoffice/templates/backoffice/moderation_badge-item.html b/src/backoffice/templates/backoffice/moderation_badge-item.html index 1c0643deea833724b6b372eecc70d5fa4eda41cd..f54844f9b42e62a4f56898c76ab0a29c1797b33d 100644 --- a/src/backoffice/templates/backoffice/moderation_badge-item.html +++ b/src/backoffice/templates/backoffice/moderation_badge-item.html @@ -2,7 +2,8 @@ {% load humanize %} <div class="card mb-1"> <div class="card-body"> - Badge <a href="{% url 'backoffice:moderation-badge-detail' pk=badge.id %}" class="fw-bold">#{{ badge.id }}</a> + Badge <a href="{% url 'backoffice:moderation-badge-detail' pk=badge.id %}" + class="fw-bold">#{{ badge.id }}</a> <small>{{ badge.name }}</small> <br> diff --git a/src/backoffice/templates/backoffice/moderation_badge-list.html b/src/backoffice/templates/backoffice/moderation_badge-list.html index 33c0225c86f8f13adf521cf5ac19e0c82d3fcd30..b4dee6ecf0f4e63fb45c48f74217a8b2eea44221 100644 --- a/src/backoffice/templates/backoffice/moderation_badge-list.html +++ b/src/backoffice/templates/backoffice/moderation_badge-list.html @@ -4,12 +4,13 @@ {% load static %} {% block htmlhead %} - <link rel="stylesheet" href="{% static 'vendor/datatables/datatables.min.css' %}"> + <link rel="stylesheet" + href="{% static 'vendor/datatables/datatables.min.css' %}"> {% endblock %} {% block scripts %} - <script src="{% static 'vendor/datatables/datatables.min.js' %}"></script> - <script> + <script src="{% static 'vendor/datatables/datatables.min.js' %}"></script> + <script> $(document).ready(function() { $('#badges').DataTable({ pageLength: 100, @@ -39,36 +40,42 @@ } }); }); - </script> + </script> {% endblock %} {% block content %} -<div class="card"> - <div class="card-header"><span class="text-muted">{% trans 'Badges' %}:</span> </div> - <div class="card-body"> + <div class="card"> + <div class="card-header"> + <span class="text-muted">{% trans 'Badges' %}:</span> + </div> + <div class="card-body"> - <table class="table table-sm" id="badges"> - <thead> - <tr> - <th>{% trans "Badge__category" %}</th> - <th>{% trans "Badge__name" %}</th> - <th>{% trans "Assembly" %}</th> - <th>{% trans "Badge__state" %}</th> - </tr> - </thead> - <tbody> - {% for entry in object_list %} - <tr class="{% if entry.hidden %}text-muted{% endif %}"> - <td>{{ entry.category }}</td> - <td><a href="{% url 'backoffice:moderation-badge-detail' pk=entry.pk %}">{{ entry.name }}</a></td> - <td><a href="{% url 'backoffice:moderation-assembly-detail' pk=entry.issuing_assembly.pk %}">{{ entry.issuing_assembly.slug }}</a></td> - <td>{{ entry.state }}</td> - </tr> - {% endfor %} - </tbody> - </table> + <table class="table table-sm" id="badges"> + <thead> + <tr> + <th>{% trans "Badge__category" %}</th> + <th>{% trans "Badge__name" %}</th> + <th>{% trans "Assembly" %}</th> + <th>{% trans "Badge__state" %}</th> + </tr> + </thead> + <tbody> + {% for entry in object_list %} + <tr class="{% if entry.hidden %}text-muted{% endif %}"> + <td>{{ entry.category }}</td> + <td> + <a href="{% url 'backoffice:moderation-badge-detail' pk=entry.pk %}">{{ entry.name }}</a> + </td> + <td> + <a href="{% url 'backoffice:moderation-assembly-detail' pk=entry.issuing_assembly.pk %}">{{ entry.issuing_assembly.slug }}</a> + </td> + <td>{{ entry.state }}</td> + </tr> + {% endfor %} + </tbody> + </table> + </div> </div> -</div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/moderation_base.html b/src/backoffice/templates/backoffice/moderation_base.html index d62d883d4de54516df7b6da6a4bf965e7a1f75b9..af6636cc0793346916a3415ec36d463a86fdc960 100644 --- a/src/backoffice/templates/backoffice/moderation_base.html +++ b/src/backoffice/templates/backoffice/moderation_base.html @@ -33,7 +33,10 @@ }); }); </script> - <form method="POST" action="" enctype="multipart/form-data" id="confirmForm"> + <form method="POST" + action="" + enctype="multipart/form-data" + id="confirmForm"> {% csrf_token %} <input type="hidden" name="action" value="" id="confirmAction"> </form> diff --git a/src/backoffice/templates/backoffice/moderation_board-detail.html b/src/backoffice/templates/backoffice/moderation_board-detail.html index 4597db0ec223c79e03596c3a75ea7ccef710cb0a..7396e8c2a8a446ef4b52d9063dae165c88d84d4d 100644 --- a/src/backoffice/templates/backoffice/moderation_board-detail.html +++ b/src/backoffice/templates/backoffice/moderation_board-detail.html @@ -15,30 +15,40 @@ <div class="card-body"> <dl class="row"> <dt class="col-sm-3">{% trans "BulletinBoardEntry__title" %}:</dt> - <dd class="col-sm-9">{{ object.title }}</dd> + <dd class="col-sm-9"> + {{ object.title }} + </dd> <dt class="col-sm-3">{% trans "BulletinBoardEntry__owner" %}:</dt> - <dd class="col-sm-9">{% if object.owner %}<a href="{% url "backoffice:moderation-user-detail" pk=object.owner.id %}">{{ object.owner.username }}</a>{% else %}-/-{% endif %}</dd> + <dd class="col-sm-9"> + {% if object.owner %} + <a href="{% url "backoffice:moderation-user-detail" pk=object.owner.id %}">{{ object.owner.username }}</a> + {% else %} + -/- + {% endif %} + </dd> <dt class="col-sm-3">{% trans "BulletinBoardEntry__timestamp" %}:</dt> - <dd class="col-sm-9">{{ object.timestamp }} ({{ object.timestamp|naturaltime }})</dd> + <dd class="col-sm-9"> + {{ object.timestamp }} ({{ object.timestamp|naturaltime }}) + </dd> <dt class="col-sm-3">{% trans "BulletinBoardEntry__is_public" %}:</dt> - <dd class="col-sm-9{% if object.hidden %} text-muted text-decoration-line-through{% endif %}">{{ object.is_public|yesno }}</dd> + <dd class="col-sm-9{% if object.hidden %} text-muted text-decoration-line-through{% endif %}"> + {{ object.is_public|yesno }} + </dd> <dt class="col-sm-3">{% trans "BulletinBoardEntry__hidden" %}:</dt> - <dd class="col-sm-9">{{ object.hidden|yesno }}</dd> + <dd class="col-sm-9"> + {{ object.hidden|yesno }} + </dd> </dl> </div> </div> <div class="card mb-3"> <div class="card-header">Text (en)</div> - <div class="card-body"> - {{ object.text_html_en|safe }} - </div> + <div class="card-body">{{ object.text_html_en|safe }}</div> </div> <div class="card mb-3"> <div class="card-header">Text (de)</div> - <div class="card-body"> - {{ object.text_html_de|safe }} - </div> + <div class="card-body">{{ object.text_html_de|safe }}</div> </div> </div> @@ -47,11 +57,23 @@ <div class="card-header bg-primary-subtle text-bg-primary">{% trans "nav_moderation" %}</div> <div class="card-body" id="moderation"> {% if not object.hidden %} - <button class="mb-3 w-100 btn btn-outline-warning" data-action="hide" data-action-text="Eintrag wird versteckt und ist öffentlich nicht mehr abrufbar, egal was der Eigentümer auswählt."><i class="bi bi-eye-slash"></i> hide</button> + <button class="mb-3 w-100 btn btn-outline-warning" + data-action="hide" + data-action-text="Eintrag wird versteckt und ist öffentlich nicht mehr abrufbar, egal was der Eigentümer auswählt."> + <i class="bi bi-eye-slash"></i> hide + </button> {% else %} - <button class="mb-3 w-100 btn btn-outline-warning" data-action="show" data-action-text="Der zuvor versteckte Eintrag wird wieder anzeigbar (abhängig davon, ob der Eigentümer diesen anzeigen möchte)."><i class="bi bi-eye"></i> show</button> + <button class="mb-3 w-100 btn btn-outline-warning" + data-action="show" + data-action-text="Der zuvor versteckte Eintrag wird wieder anzeigbar (abhängig davon, ob der Eigentümer diesen anzeigen möchte)."> + <i class="bi bi-eye"></i> show + </button> {% endif %} - <button class="mb-3 w-100 btn btn-outline-danger" data-action="delete" data-action-text="Eintrag vollständig entfernen. Diese Aktion kann nicht rückgängig gemacht werden!"><i class="bi bi-trash"></i> delete</button> + <button class="mb-3 w-100 btn btn-outline-danger" + data-action="delete" + data-action-text="Eintrag vollständig entfernen. Diese Aktion kann nicht rückgängig gemacht werden!"> + <i class="bi bi-trash"></i> delete + </button> </div> </div> </div> diff --git a/src/backoffice/templates/backoffice/moderation_board-item.html b/src/backoffice/templates/backoffice/moderation_board-item.html index 244da55041b7a1d22911288ca5ac84fd5ac81635..3a477a10ad791998f2429cc5585fa420e0d58761 100644 --- a/src/backoffice/templates/backoffice/moderation_board-item.html +++ b/src/backoffice/templates/backoffice/moderation_board-item.html @@ -2,7 +2,8 @@ {% load humanize %} <div class="card mb-1"> <div class="card-body"> - Board-Eintrag <a href="{% url 'backoffice:moderation-board-detail' pk=entry.id %}" class="fw-bold">#{{ entry.id }}</a> + Board-Eintrag <a href="{% url 'backoffice:moderation-board-detail' pk=entry.id %}" + class="fw-bold">#{{ entry.id }}</a> <small>{{ entry.title }}</small> <br> diff --git a/src/backoffice/templates/backoffice/moderation_board-list.html b/src/backoffice/templates/backoffice/moderation_board-list.html index 2096d213499118a47202db168c5d8b8101716960..9f1059007af9fc49b08c4ed0778f9130be1aef91 100644 --- a/src/backoffice/templates/backoffice/moderation_board-list.html +++ b/src/backoffice/templates/backoffice/moderation_board-list.html @@ -4,12 +4,13 @@ {% load static %} {% block htmlhead %} - <link rel="stylesheet" href="{% static 'vendor/datatables/datatables.min.css' %}"> + <link rel="stylesheet" + href="{% static 'vendor/datatables/datatables.min.css' %}"> {% endblock %} {% block scripts %} - <script src="{% static 'vendor/datatables/datatables.min.js' %}"></script> - <script> + <script src="{% static 'vendor/datatables/datatables.min.js' %}"></script> + <script> $(document).ready(function() { $('#entries').DataTable({ pageLength: 100, @@ -39,38 +40,44 @@ } }); }); - </script> + </script> {% endblock %} {% block content %} -<div class="card"> - <div class="card-header"><span class="text-muted">{% trans 'Events' %}:</span> {{ mode_display }}</div> - <div class="card-body"> + <div class="card"> + <div class="card-header"> + <span class="text-muted">{% trans 'Events' %}:</span> {{ mode_display }} + </div> + <div class="card-body"> - <table class="table table-sm" id="entries"> - <thead> - <tr> - <th>{% trans "BulletinBoardEntry__timestamp" %}</th> - <th>{% trans "BulletinBoardEntry__title" %}</th> - <th>{% trans "BulletinBoardEntry__owner" %}</th> - <th>{% trans "BulletinBoardEntry__is_public" %}</th> - <th>{% trans "BulletinBoardEntry__hidden" %}</th> - </tr> - </thead> - <tbody> - {% for entry in object_list %} - <tr class="{% if entry.hidden %}text-muted{% endif %}"> - <td>{{ entry.timestamp }}</td> - <td><a href="{% url 'backoffice:moderation-board-detail' pk=entry.pk %}">{{ entry.title }}</a></td> - <td><a href="{% url 'backoffice:moderation-user-detail' pk=entry.owner.pk %}">{{ entry.owner.username }}</a></td> - <td>{{ entry.is_public|yesno }}</td> - <td>{{ entry.hidden|yesno }}</td> - </tr> - {% endfor %} - </tbody> - </table> + <table class="table table-sm" id="entries"> + <thead> + <tr> + <th>{% trans "BulletinBoardEntry__timestamp" %}</th> + <th>{% trans "BulletinBoardEntry__title" %}</th> + <th>{% trans "BulletinBoardEntry__owner" %}</th> + <th>{% trans "BulletinBoardEntry__is_public" %}</th> + <th>{% trans "BulletinBoardEntry__hidden" %}</th> + </tr> + </thead> + <tbody> + {% for entry in object_list %} + <tr class="{% if entry.hidden %}text-muted{% endif %}"> + <td>{{ entry.timestamp }}</td> + <td> + <a href="{% url 'backoffice:moderation-board-detail' pk=entry.pk %}">{{ entry.title }}</a> + </td> + <td> + <a href="{% url 'backoffice:moderation-user-detail' pk=entry.owner.pk %}">{{ entry.owner.username }}</a> + </td> + <td>{{ entry.is_public|yesno }}</td> + <td>{{ entry.hidden|yesno }}</td> + </tr> + {% endfor %} + </tbody> + </table> + </div> </div> -</div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/moderation_event-detail.html b/src/backoffice/templates/backoffice/moderation_event-detail.html index 35d7db8786f6379500fb88a1bec9de8c1e2e314f..4ff4dc0754e615ab2f26f69e4693df4e7486b95b 100644 --- a/src/backoffice/templates/backoffice/moderation_event-detail.html +++ b/src/backoffice/templates/backoffice/moderation_event-detail.html @@ -16,23 +16,41 @@ <div class="card-body"> <dl class="row"> <dt class="col-sm-3">UUID:</dt> - <dd class="col-sm-9">{{ object.pk }}</dd> + <dd class="col-sm-9"> + {{ object.pk }} + </dd> <dt class="col-sm-3">Slug:</dt> - <dd class="col-sm-9">{{ object.slug }}</dd> + <dd class="col-sm-9"> + {{ object.slug }} + </dd> <dt class="col-sm-3">Name:</dt> - <dd class="col-sm-9">{{ object.name }}</dd> + <dd class="col-sm-9"> + {{ object.name }} + </dd> <dt class="col-sm-3">{% trans "Event__is_public" %}:</dt> - <dd class="col-sm-9">{{ object.is_public|yesno }}</dd> + <dd class="col-sm-9"> + {{ object.is_public|yesno }} + </dd> <dt class="col-sm-3">{% trans "Event__kind" %}:</dt> - <dd class="col-sm-9">{{ object.get_kind_display }}</dd> + <dd class="col-sm-9"> + {{ object.get_kind_display }} + </dd> <dt class="col-sm-3">{% trans "Event__schedule_start" %}:</dt> - <dd class="col-sm-9">{{ object.schedule_start }}</dd> + <dd class="col-sm-9"> + {{ object.schedule_start }} + </dd> <dt class="col-sm-3">{% trans "Event__schedule_duration" %}:</dt> - <dd class="col-sm-9">{{ object.schedule_duration|naturaltimespan }}</dd> + <dd class="col-sm-9"> + {{ object.schedule_duration|naturaltimespan }} + </dd> <dt class="col-sm-3">{% trans "Event__schedule_end" %}:</dt> - <dd class="col-sm-9">{{ object.schedule_end }}</dd> + <dd class="col-sm-9"> + {{ object.schedule_end }} + </dd> <dt class="col-sm-3">{% trans "Event__language" %}:</dt> - <dd class="col-sm-9">{{ object.language|default:"-/-" }}</dd> + <dd class="col-sm-9"> + {{ object.language|default:"-/-" }} + </dd> </dl> </div> </div> @@ -42,58 +60,93 @@ <div class="card-body"> <dl class="row"> <dt class="col-sm-3">{% trans "Event__is_imported" %}:</dt> - <dd class="col-sm-9">{% if object.is_imported %}<span class="text-warning"><i class="bi bi-lightning-fill"></i> {{ 1|yesno|upper }}</span>{% else %}<span class="text-success">{{ false|yesno }}{% endif %}</dd> - <dt class="col-sm-3">{% trans "Event__assembly" %}:</dt> - <dd class="col-sm-9">{% if object.assembly %}<a href="{% url "backoffice:moderation-assembly-detail" pk=object.assembly_id %}">{{ object.assembly.slug }}</a>{% else %}-/-{% endif %}</dd> - <dt class="col-sm-3">{% trans "Event__room" %}:</dt> - <dd class="col-sm-9">{{ object.room|default:"-/-" }}</dd> - <dt class="col-sm-3">{% trans "Event__track" %}:</dt> - <dd class="col-sm-9">{{ object.track|default:"-/-" }}</dd> - <dt class="col-sm-3">{% trans "Event__owner" %}:</dt> - <dd class="col-sm-9">{% if object.owner %}<a href="{% url "backoffice:moderation-user-detail" pk=object.owner.id %}">{{ object.owner.username }}</a>{% else %}-/-{% endif %}</dd> - <dt class="col-sm-3">{% trans "Event__public_speakers" %}:</dt> - <dd class="col-sm-9">{% for speaker in object.public_speakers %}- <a href="{% url "backoffice:moderation-user-detail" pk=speaker.participant.id %}" title="{{ speaker.participant.username }}">{{ speaker.participant.get_display_name }}</a><br>{% empty %}-/-{% endfor %}</dd> - </dl> + <dd class="col-sm-9"> + {% if object.is_imported %} + <span class="text-warning"><i class="bi bi-lightning-fill"></i> {{ 1|yesno|upper }}</span> + {% else %} + <span class="text-success">{{ false|yesno }} + {% endif %} + </dd> + <dt class="col-sm-3">{% trans "Event__assembly" %}:</dt> + <dd class="col-sm-9"> + {% if object.assembly %} + <a href="{% url "backoffice:moderation-assembly-detail" pk=object.assembly_id %}">{{ object.assembly.slug }}</a> + {% else %} + -/- + {% endif %} + </dd> + <dt class="col-sm-3">{% trans "Event__room" %}:</dt> + <dd class="col-sm-9"> + {{ object.room|default:"-/-" }} + </dd> + <dt class="col-sm-3">{% trans "Event__track" %}:</dt> + <dd class="col-sm-9"> + {{ object.track|default:"-/-" }} + </dd> + <dt class="col-sm-3">{% trans "Event__owner" %}:</dt> + <dd class="col-sm-9"> + {% if object.owner %} + <a href="{% url "backoffice:moderation-user-detail" pk=object.owner.id %}">{{ object.owner.username }}</a> + {% else %} + -/- + {% endif %} + </dd> + <dt class="col-sm-3">{% trans "Event__public_speakers" %}:</dt> + <dd class="col-sm-9"> + {% for speaker in object.public_speakers %} + - <a href="{% url "backoffice:moderation-user-detail" pk=speaker.participant.id %}" + title="{{ speaker.participant.username }}">{{ speaker.participant.get_display_name }}</a> + <br> + {% empty %}-/- + {% endfor %} + </dd> + </dl> + </div> </div> - </div> - <div class="card mb-3"> - <div class="card-header">{% trans "Event__abstract" %}</div> - <div class="card-body"> - {{ event.abstract }} + <div class="card mb-3"> + <div class="card-header">{% trans "Event__abstract" %}</div> + <div class="card-body">{{ event.abstract }}</div> </div> - </div> - <div class="card mb-3"> - <div class="card-header">{% trans "Event__description" %} (de)</div> - <div class="card-body"> - {{ event.description_html_de|safe }} + <div class="card mb-3"> + <div class="card-header">{% trans "Event__description" %} (de)</div> + <div class="card-body">{{ event.description_html_de|safe }}</div> </div> - </div> - <div class="card mb-3"> - <div class="card-header">{% trans "Event__description" %} (en)</div> - <div class="card-body"> - {{ event.description_html_en|safe }} + <div class="card mb-3"> + <div class="card-header">{% trans "Event__description" %} (en)</div> + <div class="card-body">{{ event.description_html_en|safe }}</div> </div> - </div> - </div> - <div class="col-md-3"> - <a class="d-block btn btn-outline-{% if event.is_public %}success{% else %}warning{% endif %} mb-3" href="{% hub_absolute 'plainui:event' event_slug=event.slug %}"> - {% trans "moderation__public_link" %} - {% if not event.is_public %}<br><small class="text-muted fst-italic">{% trans "moderation__notpublic" %}</small>{% endif %} - </a> - - <div class="card border-primary-subtle"> - <div class="card-header bg-primary-subtle text-bg-primary">{% trans "nav_moderation" %}</div> - <div class="card-body" id="moderation"> - {% if object.is_public %} - <button class="mb-3 w-100 btn btn-outline-warning" data-action="hide" data-action-text="Veröffentlichung wird zurück genommen. Diese Aktion kann vom Eigentümer der Veranstaltung selbst rückgängig gemacht werden."><i class="bi bi-eye-slash"></i> hide</button> + </div> + <div class="col-md-3"> + <a class="d-block btn btn-outline-{% if event.is_public %}success{% else %}warning{% endif %} mb-3" + href="{% hub_absolute 'plainui:event' event_slug=event.slug %}"> + {% trans "moderation__public_link" %} + {% if not event.is_public %} + <br> + <small class="text-muted fst-italic">{% trans "moderation__notpublic" %}</small> {% endif %} - <button class="mb-3 w-100 btn btn-outline-danger" data-action="delete" data-action-text="Veranstaltung vollständig entfernen. Diese Aktion kann nicht rückgängig gemacht werden!"><i class="bi bi-trash"></i> delete</button> + </a> + + <div class="card border-primary-subtle"> + <div class="card-header bg-primary-subtle text-bg-primary">{% trans "nav_moderation" %}</div> + <div class="card-body" id="moderation"> + {% if object.is_public %} + <button class="mb-3 w-100 btn btn-outline-warning" + data-action="hide" + data-action-text="Veröffentlichung wird zurück genommen. Diese Aktion kann vom Eigentümer der Veranstaltung selbst rückgängig gemacht werden."> + <i class="bi bi-eye-slash"></i> hide + </button> + {% endif %} + <button class="mb-3 w-100 btn btn-outline-danger" + data-action="delete" + data-action-text="Veranstaltung vollständig entfernen. Diese Aktion kann nicht rückgängig gemacht werden!"> + <i class="bi bi-trash"></i> delete + </button> + </div> </div> </div> </div> - </div> -{% endblock %} + {% endblock %} diff --git a/src/backoffice/templates/backoffice/moderation_event-item.html b/src/backoffice/templates/backoffice/moderation_event-item.html index ab1d8b4a88dbc68b94ff9fefaba02a945245842a..05132ee4ef98193f4c63845726083aed5a68d043 100644 --- a/src/backoffice/templates/backoffice/moderation_event-item.html +++ b/src/backoffice/templates/backoffice/moderation_event-item.html @@ -2,15 +2,25 @@ {% load c3assemblies %} <div class="card mb-1"> <div class="card-body"> - Event "<a href="{% url 'backoffice:moderation-event-detail' pk=event.pk %}" class="fw-bold">{{ event.slug }}</a>" <small>{{ event.name }}</small><br> + Event "<a href="{% url 'backoffice:moderation-event-detail' pk=event.pk %}" + class="fw-bold">{{ event.slug }}</a>" <small>{{ event.name }}</small> + <br> <i class="bi bi-clock"></i> {{ event.schedule_start }} .. {{ event.schedule_end }} ({{ event.schedule_duration|naturaltimespan }}) - {% if event.is_public %}<span class="text-success">{% trans "Event__is_public" %}</span>{% else %}<span class="text-danger">{% trans "Event__is_not_public" %}</span>{% endif %} + {% if event.is_public %} + <span class="text-success">{% trans "Event__is_public" %}</span> + {% else %} + <span class="text-danger">{% trans "Event__is_not_public" %}</span> + {% endif %} <br> <span class="text-muted">{{ event.get_kind_display }}</span> - {% if event.owner %}<a href="{% url 'backoffice:moderation-user-detail' pk=event.owner.pk %}"><i class="bi bi-person"></i>{{ event.owner.username }}</a> {% endif %} - {% if event.assembly %}<a href="{% url 'backoffice:moderation-assembly-detail' pk=event.assembly.pk %}"><i class="bi bi-person-arms-up"></i>{{ event.assembly.slug }}</a> {% endif %} + {% if event.owner %} + <a href="{% url 'backoffice:moderation-user-detail' pk=event.owner.pk %}"><i class="bi bi-person"></i>{{ event.owner.username }}</a> + {% endif %} + {% if event.assembly %} + <a href="{% url 'backoffice:moderation-assembly-detail' pk=event.assembly.pk %}"><i class="bi bi-person-arms-up"></i>{{ event.assembly.slug }}</a> + {% endif %} <br> </div> </div> diff --git a/src/backoffice/templates/backoffice/moderation_index.html b/src/backoffice/templates/backoffice/moderation_index.html index 7ad0987531390506a22380efa4c5fada4e419f0b..07778d35b5f1355c2e024cc9b5c81e415c0c6194 100644 --- a/src/backoffice/templates/backoffice/moderation_index.html +++ b/src/backoffice/templates/backoffice/moderation_index.html @@ -11,8 +11,15 @@ <div class="card-body"> <form action="{% url "backoffice:moderation" %}" method="GET"> <div class="input-group"> - <input type="text" class="form-control" name="q" placeholder="URL or query text" value="{{ query }}" autocomplete="off"> - <button class="btn btn-outline-secondary" type="submit"><i class="bi bi-search"></i> {% trans "search" %}</button> + <input type="text" + class="form-control" + name="q" + placeholder="URL or query text" + value="{{ query }}" + autocomplete="off"> + <button class="btn btn-outline-secondary" type="submit"> + <i class="bi bi-search"></i> {% trans "search" %} + </button> </div> </form> </div> @@ -22,36 +29,36 @@ {% if query %} <div class="row mb-3"> - <div class="col-sm-12"> - <div class="card"> - <div class="card-header"> - Suche nach <code>{{ query }}</code> - </div> - <div class="card-body"> - {% for assembly in results.assemblies %} - {% include "backoffice/moderation_assembly-item.html" %} - {% endfor %} - {% for event in results.events %} - {% include "backoffice/moderation_event-item.html" %} - {% endfor %} - {% for badge in results.badges %} - {% include "backoffice/moderation_badge-item.html" %} - {% endfor %} - {% for entry in results.board %} - {% include "backoffice/moderation_board-item.html" %} - {% endfor %} - {% for project in results.project %} - {% include "backoffice/moderation_project-item.html" %} - {% endfor %} - {% for page in results.wiki %} - {% include "backoffice/moderation_wiki-item.html" %} - {% endfor %} - {% for user in results.users %} - {% include "backoffice/moderation_user-item.html" %} - {% endfor %} + <div class="col-sm-12"> + <div class="card"> + <div class="card-header"> + Suche nach <code>{{ query }}</code> + </div> + <div class="card-body"> + {% for assembly in results.assemblies %} + {% include "backoffice/moderation_assembly-item.html" %} + {% endfor %} + {% for event in results.events %} + {% include "backoffice/moderation_event-item.html" %} + {% endfor %} + {% for badge in results.badges %} + {% include "backoffice/moderation_badge-item.html" %} + {% endfor %} + {% for entry in results.board %} + {% include "backoffice/moderation_board-item.html" %} + {% endfor %} + {% for project in results.project %} + {% include "backoffice/moderation_project-item.html" %} + {% endfor %} + {% for page in results.wiki %} + {% include "backoffice/moderation_wiki-item.html" %} + {% endfor %} + {% for user in results.users %} + {% include "backoffice/moderation_user-item.html" %} + {% endfor %} + </div> </div> </div> </div> - </div> {% endif %} {% endblock %} diff --git a/src/backoffice/templates/backoffice/moderation_project-detail.html b/src/backoffice/templates/backoffice/moderation_project-detail.html index c2ae1b1b91009a335a0bfdd2639c13b3d6dd84bd..2a516e05650bb254970eee6265381a64bf7baa2e 100644 --- a/src/backoffice/templates/backoffice/moderation_project-detail.html +++ b/src/backoffice/templates/backoffice/moderation_project-detail.html @@ -15,37 +15,59 @@ <div class="card-body"> <dl class="row"> <dt class="col-sm-3">{% trans "Project__name" %}:</dt> - <dd class="col-sm-9">{{ object.name }}</dd> + <dd class="col-sm-9"> + {{ object.name }} + </dd> <dt class="col-sm-3">{% trans "Assembly" %}:</dt> - <dd class="col-sm-9">{% if object.assembly %}<a href="{% url "backoffice:moderation-assembly-detail" pk=object.assembly.id %}">{{ object.assembly.slug }}</a>{% else %}-/-{% endif %}</dd> + <dd class="col-sm-9"> + {% if object.assembly %} + <a href="{% url "backoffice:moderation-assembly-detail" pk=object.assembly.id %}">{{ object.assembly.slug }}</a> + {% else %} + -/- + {% endif %} + </dd> <dt class="col-sm-3">{% trans "Owner" %}:</dt> - <dd class="col-sm-9">{% if object.owner %}<a href="{% url "backoffice:moderation-user-detail" pk=object.owner.id %}">{{ object.owner.slug }}</a>{% else %}-/-{% endif %}</dd> + <dd class="col-sm-9"> + {% if object.owner %} + <a href="{% url "backoffice:moderation-user-detail" pk=object.owner.id %}">{{ object.owner.slug }}</a> + {% else %} + -/- + {% endif %} + </dd> <dt class="col-sm-3">{% trans "Project__type" %}:</dt> - <dd class="col-sm-9">{% if project.assembly %}{% trans "AssemblyProject" %}{% else %}{% trans "SelfOrganizedProject" %}{% endif %}</dd> + <dd class="col-sm-9"> + {% if project.assembly %} + {% trans "AssemblyProject" %} + {% else %} + {% trans "SelfOrganizedProject" %} + {% endif %} + </dd> <dt class="col-sm-3">{% trans "Project__state" %}:</dt> - <dd class="col-sm-9">{{ object.get_state_display }}</dd> + <dd class="col-sm-9"> + {{ object.get_state_display }} + </dd> <dt class="col-sm-3">{% trans "Project__location" %}:</dt> - <dd class="col-sm-9">{{ object.location|default:"-" }}</dd> + <dd class="col-sm-9"> + {{ object.location|default:"-" }} + </dd> </dl> </div> </div> <div class="card mb-3"> <div class="card-header">{% trans "Project__description" %} (en)</div> - <div class="card-body"> - {{ object.description_html_en|safe }} - </div> + <div class="card-body">{{ object.description_html_en|safe }}</div> </div> <div class="card mb-3"> <div class="card-header">{% trans "Project__description" %} (de)</div> - <div class="card-body"> - {{ object.description_html_de|safe }} - </div> + <div class="card-body">{{ object.description_html_de|safe }}</div> </div> {% if object.banner_image %} <div class="card mb-3"> - <div class="card-header">{% trans "Project__image" %} [{{ object.banner_image_width }}x{{ object.banner_image_height }}px]</div> + <div class="card-header"> + {% trans "Project__image" %} [{{ object.banner_image_width }}x{{ object.banner_image_height }}px] + </div> <div class="card-body"> <img src="{{ object.banner_image.url }}"> </div> @@ -59,15 +81,31 @@ <div class="card border-primary-subtle"> <div class="card-header bg-primary-subtle text-bg-primary">{% trans "nav_moderation" %}</div> <div class="card-body" id="moderation"> - {% if object.is_public%} - <button class="mb-3 w-100 btn btn-outline-warning" data-action="hide" data-action-text="Projekt vor der Öffentlichkeit verstecken. Diese Aktion kann vom Eigentümer rückgängig gemacht werden."><i class="bi bi-eye-slash"></i> hide</button> + {% if object.is_public %} + <button class="mb-3 w-100 btn btn-outline-warning" + data-action="hide" + data-action-text="Projekt vor der Öffentlichkeit verstecken. Diese Aktion kann vom Eigentümer rückgängig gemacht werden."> + <i class="bi bi-eye-slash"></i> hide + </button> {% endif %} {% if object.blocked %} - <button class="mb-3 w-100 btn btn-outline-success" data-action="unblock" data-action-text="Projekt wird wieder für die Anzeige freigeschaltet."><i class="bi bi-check-circle"></i> unblock</button> + <button class="mb-3 w-100 btn btn-outline-success" + data-action="unblock" + data-action-text="Projekt wird wieder für die Anzeige freigeschaltet."> + <i class="bi bi-check-circle"></i> unblock + </button> {% else %} - <button class="mb-3 w-100 btn btn-outline-warning" data-action="block" data-action-text="Projekt vor der Öffentlichkeit verstecken. Diese Aktion kann nur vom Modeartions-Team zurückgenommen werden."><i class="bi bi-ban"></i> block</button> + <button class="mb-3 w-100 btn btn-outline-warning" + data-action="block" + data-action-text="Projekt vor der Öffentlichkeit verstecken. Diese Aktion kann nur vom Modeartions-Team zurückgenommen werden."> + <i class="bi bi-ban"></i> block + </button> {% endif %} - <button class="mb-3 w-100 btn btn-outline-danger" data-action="delete" data-action-text="Projekt vollständig entfernen. Diese Aktion kann nicht rückgängig gemacht werden!"><i class="bi bi-trash"></i> delete</button> + <button class="mb-3 w-100 btn btn-outline-danger" + data-action="delete" + data-action-text="Projekt vollständig entfernen. Diese Aktion kann nicht rückgängig gemacht werden!"> + <i class="bi bi-trash"></i> delete + </button> </div> </div> </div> diff --git a/src/backoffice/templates/backoffice/moderation_project-item.html b/src/backoffice/templates/backoffice/moderation_project-item.html index 4bee67f13da56db557ac0c75504863ea913cdf6b..cbfb92edfee2e17df77da928883cddb7ea49e79c 100644 --- a/src/backoffice/templates/backoffice/moderation_project-item.html +++ b/src/backoffice/templates/backoffice/moderation_project-item.html @@ -2,13 +2,20 @@ {% load humanize %} <div class="card mb-1"> <div class="card-body"> - Project <a href="{% url 'backoffice:moderation-project-detail' pk=project.id %}" class="fw-bold">#{{ project.id }}</a> + Project <a href="{% url 'backoffice:moderation-project-detail' pk=project.id %}" + class="fw-bold">#{{ project.id }}</a> <small>{{ project.name }}</small> <br> <span class="text-muted">{% trans "Project__state" %}:</span> <span class="text-{% if project.blocked %}danger{% elif project.is_public %}success{% else %}warning{% endif %}">{{ project.get_state_display }}</span> <div class="vr"></div> - <span class="text-muted">{% trans "Project__type" %}:</span> {% if project.assembly %}{% trans "AssemblyProject" %}{% else %}{% trans "SelfOrganizedProject" %}{% endif %}</span> - <br> - </div> + <span class="text-muted">{% trans "Project__type" %}:</span> + {% if project.assembly %} + {% trans "AssemblyProject" %} + {% else %} + {% trans "SelfOrganizedProject" %} + {% endif %} + </span> + <br> +</div> </div> diff --git a/src/backoffice/templates/backoffice/moderation_user-detail.html b/src/backoffice/templates/backoffice/moderation_user-detail.html index 77bc599934d957b6a7dfd7097e252379b3e353c8..15d7a0e3e3668dd95e72f3e3a42d1be43c3fe5c1 100644 --- a/src/backoffice/templates/backoffice/moderation_user-detail.html +++ b/src/backoffice/templates/backoffice/moderation_user-detail.html @@ -15,27 +15,52 @@ <div class="card-body"> <dl class="row"> <dt class="col-sm-3">{% trans "PlatformUser__type" %}:</dt> - <dd class="col-sm-9"><span class="text-{% if object.user_type == 'human' %}success{% else %}warning{% endif %}">{{ object.get_user_type_display }}</span></dd> + <dd class="col-sm-9"> + <span class="text-{% if object.user_type == 'human' %}success{% else %}warning{% endif %}">{{ object.get_user_type_display }}</span> + </dd> <dt class="col-sm-3">ID:</dt> - <dd class="col-sm-9">{{ object.id }}</dd> + <dd class="col-sm-9"> + {{ object.id }} + </dd> <dt class="col-sm-3">UUID:</dt> - <dd class="col-sm-9">{{ object.uuid }}</dd> + <dd class="col-sm-9"> + {{ object.uuid }} + </dd> <dt class="col-sm-3">{% trans "username" %}:</dt> - <dd class="col-sm-9">{{ object.username|default:"-/-" }}</dd> + <dd class="col-sm-9"> + {{ object.username|default:"-/-" }} + </dd> <dt class="col-sm-3">{% trans "PlatformUser__display_name" %}:</dt> - <dd class="col-sm-9">{{ object.display_name|default:"-/-" }}</dd> + <dd class="col-sm-9"> + {{ object.display_name|default:"-/-" }} + </dd> <dt class="col-sm-3">{% trans "date joined" %}:</dt> - <dd class="col-sm-9">{{ object.date_joined }} ({{ object.date_joined|naturaltime }})</dd> + <dd class="col-sm-9"> + {{ object.date_joined }} ({{ object.date_joined|naturaltime }}) + </dd> <dt class="col-sm-3">{% trans "active" %}:</dt> - <dd class="col-sm-9"><span class="text-{% if object.is_active %}success{% else %}warning{% endif %}">{{ object.is_active|yesno }}</span></dd> + <dd class="col-sm-9"> + <span class="text-{% if object.is_active %}success{% else %}warning{% endif %}">{{ object.is_active|yesno }}</span> + </dd> <dt class="col-sm-3">{% trans "PlatformUser__shadow_banned" %}:</dt> - <dd class="col-sm-9"><span class="text-{% if object.shadow_banned %}warning{% else %}success{% endif %}">{{ object.shadow_banned|yesno }}</span></dd> + <dd class="col-sm-9"> + <span class="text-{% if object.shadow_banned %}warning{% else %}success{% endif %}">{{ object.shadow_banned|yesno }}</span> + </dd> <dt class="col-sm-3">OC / Staff:</dt> - <dd class="col-sm-9"><span class="text-{% if user_cm.is_staff %}warning{% else %}success{% endif %}">{{ user_cm.is_staff|yesno }}</span></dd> + <dd class="col-sm-9"> + <span class="text-{% if user_cm.is_staff %}warning{% else %}success{% endif %}">{{ user_cm.is_staff|yesno }}</span> + </dd> <dt class="col-sm-3">Rechte-Zuweisungen:</dt> <dd class="col-sm-9"> - {% if object.is_superuser %}• <i>ADMIN</i><br>{% endif %} - {% for grp in user_cm.permission_groups.all %}• {{ grp }}<br>{% empty %}-/-{% endfor %} + {% if object.is_superuser %} + • <i>ADMIN</i> + <br> + {% endif %} + {% for grp in user_cm.permission_groups.all %} + • {{ grp }} + <br> + {% empty %}-/- + {% endfor %} </dd> </dl> </div> @@ -44,15 +69,19 @@ <div class="card mb-3"> <div class="card-header">{% trans "BulletinBoardEntrys" %}</div> <div class="card-body"> - <ul>{% for entry in object.bulletin_board_entries.all %} - <li> - <a href="{% url "backoffice:moderation-board-detail" pk=entry.pk %}">{{ entry.title }}</a><br> - <small class="fw-bold">{{ entry.timestamp }} ({{ entry.timestamp|naturaltime }})</small><br> - <small>{{ entry.text }}</small> - </li> + <ul> + {% for entry in object.bulletin_board_entries.all %} + <li> + <a href="{% url "backoffice:moderation-board-detail" pk=entry.pk %}">{{ entry.title }}</a> + <br> + <small class="fw-bold">{{ entry.timestamp }} ({{ entry.timestamp|naturaltime }})</small> + <br> + <small>{{ entry.text }}</small> + </li> {% empty %} - <span class="text-muted">-/-</span> - {% endfor %}</ul> + <span class="text-muted">-/-</span> + {% endfor %} + </ul> </div> </div> @@ -62,14 +91,17 @@ <div class="card mb-3"> <div class="card-header">{% trans "Assemblys" %}</div> <div class="card-body"> - <ul>{% for amember in object.associated_assemblies.all %} - <li> - <a href="{% url "backoffice:moderation-assembly-detail" pk=amember.assembly.pk %}">{{ amember.assembly.slug }}</a><br> - <small>{{ amember.get_roles_display }}</small> - </li> - {% empty %} - <span class="text-muted">-/-</span> - {% endfor %}</ul> + <ul> + {% for amember in object.associated_assemblies.all %} + <li> + <a href="{% url "backoffice:moderation-assembly-detail" pk=amember.assembly.pk %}">{{ amember.assembly.slug }}</a> + <br> + <small>{{ amember.get_roles_display }}</small> + </li> + {% empty %} + <span class="text-muted">-/-</span> + {% endfor %} + </ul> </div> </div> </div> @@ -78,61 +110,88 @@ <div class="card mb-3"> <div class="card-header">{% trans "Events" %} (Eigentümer)</div> <div class="card-body"> - <ul>{% for e in object.owned_events.all %} - <li> - <a href="{% url "backoffice:moderation-event-detail" pk=e.pk %}">{{ e.name }}</a><br> - <small>{{ e.schedule_start }} .. {{ e.schedule_end }} ({{ e.schedule_duration|naturaltimespan }})</small> - </li> + <ul> + {% for e in object.owned_events.all %} + <li> + <a href="{% url "backoffice:moderation-event-detail" pk=e.pk %}">{{ e.name }}</a> + <br> + <small>{{ e.schedule_start }} .. {{ e.schedule_end }} ({{ e.schedule_duration|naturaltimespan }})</small> + </li> {% empty %} - <span class="text-muted">-/-</span> - {% endfor %}</ul> + <span class="text-muted">-/-</span> + {% endfor %} + </ul> </div> </div> </div> </div> - <div class="row"> - <div class="col-md-12"> + <div class="row"> + <div class="col-md-12"> <div class="card mb-3"> <div class="card-header">{% trans "Events" %} (beteiligt)</div> <div class="card-body"> - <ul>{% for e in object.events.all %} - <li> - <strong>{{ e.get_role_display }}</strong> - {% if e.is_accepted %}<span class="badge text-bg-success">{% trans "EventParticipant__is_accepted" %}</span> - {% else %}<span class="badge text-bg-warning text-decoration-line-through">{% trans "EventParticipant__is_accepted" %}</span> - {% endif %} - {% if e.is_public %}<span class="badge text-bg-success">{% trans "EventParticipant__is_public" %}</span> - {% else %}<span class="badge text-bg-warning text-decoration-line-through">{% trans "EventParticipant__is_public" %}</span> - {% endif %} - <a href="{% url "backoffice:moderation-event-detail" pk=e.event.pk %}">{{ e.event.name }}</a><br> - <small>{{ e.event.schedule_start }} .. {{ e.event.schedule_end }} ({{ e.event.schedule_duration|naturaltimespan }})</small> - </li> + <ul> + {% for e in object.events.all %} + <li> + <strong>{{ e.get_role_display }}</strong> + {% if e.is_accepted %} + <span class="badge text-bg-success">{% trans "EventParticipant__is_accepted" %}</span> + {% else %} + <span class="badge text-bg-warning text-decoration-line-through">{% trans "EventParticipant__is_accepted" %}</span> + {% endif %} + {% if e.is_public %} + <span class="badge text-bg-success">{% trans "EventParticipant__is_public" %}</span> + {% else %} + <span class="badge text-bg-warning text-decoration-line-through">{% trans "EventParticipant__is_public" %}</span> + {% endif %} + <a href="{% url "backoffice:moderation-event-detail" pk=e.event.pk %}">{{ e.event.name }}</a> + <br> + <small>{{ e.event.schedule_start }} .. {{ e.event.schedule_end }} ({{ e.event.schedule_duration|naturaltimespan }})</small> + </li> {% empty %} - <span class="text-muted">-/-</span> - {% endfor %}</ul> + <span class="text-muted">-/-</span> + {% endfor %} + </ul> </div> </div> </div> - </div> + </div> </div> <div class="col-md-3"> <div class="card border-primary-subtle mb-3"> <div class="card-header bg-primary-subtle text-bg-primary">{% trans "nav_moderation" %}</div> <div class="card-body" id="moderation"> - <!--a class="d-block mb-3 btn btn-outline-primary" href=""><i class="bi bi-envelope"></i> message</a--> + <!--a class="d-block mb-3 btn btn-outline-primary" href=""><i class="bi bi-envelope"></i> message</a --> {% if object.is_active %} - <button class="mb-3 w-100 btn btn-outline-danger" data-action="block" data-action-text="Nutzer wird geblockt und aktive Sessions beendet."><i class="bi bi-sign-stop-fill"></i> block</button> + <button class="mb-3 w-100 btn btn-outline-danger" + data-action="block" + data-action-text="Nutzer wird geblockt und aktive Sessions beendet."> + <i class="bi bi-sign-stop-fill"></i> block + </button> {% else %} - <button class="mb-3 w-100 btn btn-outline-danger" data-action="unblock" data-action-text="Der aktuell geblockte User darf sich wieder anmelden. Bitte darauf achten, dass min. eine verifizierte Adresse existiert!"><i class="bi bi-rocket-takeoff"></i> unblock</button> + <button class="mb-3 w-100 btn btn-outline-danger" + data-action="unblock" + data-action-text="Der aktuell geblockte User darf sich wieder anmelden. Bitte darauf achten, dass min. eine verifizierte Adresse existiert!"> + <i class="bi bi-rocket-takeoff"></i> unblock + </button> {% endif %} {% if not object.shadow_banned %} - <button class="mb-3 w-100 btn btn-outline-warning" data-action="ban" data-action-text="Board-Beiträge des Nutzers werden diesem zwar noch dargestellt aber anderen nicht mehr."><i class="bi bi-emoji-dizzy"></i> shadowban</button> + <button class="mb-3 w-100 btn btn-outline-warning" + data-action="ban" + data-action-text="Board-Beiträge des Nutzers werden diesem zwar noch dargestellt aber anderen nicht mehr."> + <i class="bi bi-emoji-dizzy"></i> shadowban + </button> {% else %} - <button class="mb-3 w-100 btn btn-outline-warning" data-action="unban" data-action-text="Restriktion des Shadowbans wird aufgehoben. Achtung, zuvor unterdrückte Beiträge dieses Users werden damit sichtbar!"><i class="bi bi-sunglasses"></i> unban</button> + <button class="mb-3 w-100 btn btn-outline-warning" + data-action="unban" + data-action-text="Restriktion des Shadowbans wird aufgehoben. Achtung, zuvor unterdrückte Beiträge dieses Users werden damit sichtbar!"> + <i class="bi bi-sunglasses"></i> unban + </button> {% endif %} - <a class="mb-3 w-100 btn btn-outline-primary" href="{% url "backoffice:moderation-user-rename" pk=object.pk %}"><i class="bi bi-mask"></i> rename</a> + <a class="mb-3 w-100 btn btn-outline-primary" + href="{% url "backoffice:moderation-user-rename" pk=object.pk %}"><i class="bi bi-mask"></i> rename</a> </div> </div> @@ -141,11 +200,13 @@ <div class="card-body"> <div class="row"> <div class="col-md-6 text-center"> - {{ object.sent_messages.count }}<br> + {{ object.sent_messages.count }} + <br> sent </div> <div class="col-md-6 text-center"> - {{ object.received_messages.count }}<br> + {{ object.received_messages.count }} + <br> received </div> </div> @@ -155,13 +216,18 @@ <div class="card mb-3"> <div class="card-header">verifizierte Adressen</div> <div class="card-body"> - <ul>{% for addr in object.get_all_verified_addresses %} - <li><code>{{ addr }}</code></li> - {% empty %} - </ul><span class="text-danger"> + <ul> + {% for addr in object.get_all_verified_addresses %} + <li> + <code>{{ addr }}</code> + </li> + {% empty %} + </ul> + <span class="text-danger"> <i class="bi bi-exclamation-triangle"></i> KEINE verifizierten Adressen, ggf. E-Mail-Bestätigung noch nicht durchlaufen!</span> <ul> - {% endfor %}</ul> + {% endfor %} + </ul> </div> </div> diff --git a/src/backoffice/templates/backoffice/moderation_user-item.html b/src/backoffice/templates/backoffice/moderation_user-item.html index 05dc57661d06e04afc8bec341faec782430f1331..5971e52979fba29b9bd7b41ee5f09b47b043c99a 100644 --- a/src/backoffice/templates/backoffice/moderation_user-item.html +++ b/src/backoffice/templates/backoffice/moderation_user-item.html @@ -2,10 +2,15 @@ {% load humanize %} <div class="card mb-1"> <div class="card-body"> - User <a href="{% url 'backoffice:moderation-user-detail' pk=user.pk %}" class="fw-bold"><code>{{ user.username }}</code> "{{ user.display_name }}"</a> + User <a href="{% url 'backoffice:moderation-user-detail' pk=user.pk %}" + class="fw-bold"><code>{{ user.username }}</code> "{{ user.display_name }}"</a> <br> - {% if user.is_active %}<span class="text-success">{% trans "active" %}</span>{% else %}<span class="text-danger">{% trans "not active" %}</span>{% endif %} + {% if user.is_active %} + <span class="text-success">{% trans "active" %}</span> + {% else %} + <span class="text-danger">{% trans "not active" %}</span> + {% endif %} <span class="text-muted">{% trans "PlatformUser__registration" %}:</span> <abbr title="{{ user.date_joined }}">{{ user.date_joined|naturaltime }}</abbr> </div> </div> diff --git a/src/backoffice/templates/backoffice/moderation_user-list.html b/src/backoffice/templates/backoffice/moderation_user-list.html index aab6fd746759b0607a99a9ad002a34847c8333e0..d1c9a25ff4c212a07d02fdf1c00d2052b9fd94f0 100644 --- a/src/backoffice/templates/backoffice/moderation_user-list.html +++ b/src/backoffice/templates/backoffice/moderation_user-list.html @@ -4,12 +4,13 @@ {% load static %} {% block htmlhead %} - <link rel="stylesheet" href="{% static 'vendor/datatables/datatables.min.css' %}"> + <link rel="stylesheet" + href="{% static 'vendor/datatables/datatables.min.css' %}"> {% endblock %} {% block scripts %} - <script src="{% static 'vendor/datatables/datatables.min.js' %}"></script> - <script> + <script src="{% static 'vendor/datatables/datatables.min.js' %}"></script> + <script> $(document).ready(function() { $('#users').DataTable({ pageLength: 100, @@ -39,36 +40,40 @@ } }); }); - </script> + </script> {% endblock %} {% block content %} -<div class="card"> - <div class="card-header"><span class="text-muted">{% trans 'Events' %}:</span> {{ mode_display }}</div> - <div class="card-body"> + <div class="card"> + <div class="card-header"> + <span class="text-muted">{% trans 'Events' %}:</span> {{ mode_display }} + </div> + <div class="card-body"> - <table class="table table-sm" id="users"> - <thead> - <tr> - <th>{% trans "username" %}</th> - <th>{% trans "PlatformUser__type" %}</th> - <th>{% trans "active" %}</th> - <th>UUID</th> - </tr> - </thead> - <tbody> - {% for user in object_list %} - <tr class="{% if not user.is_active %}text-muted{% endif %}"> - <td><a href="{% url 'backoffice:moderation-user-detail' pk=user.pk %}">{{ user.username }}</a></td> - <td>{{ user.get_user_type_display }}</td> - <td>{{ user.is_active|yesno }}</td> - <td>{{ user.uuid }}</td> - </tr> - {% endfor %} - </tbody> - </table> + <table class="table table-sm" id="users"> + <thead> + <tr> + <th>{% trans "username" %}</th> + <th>{% trans "PlatformUser__type" %}</th> + <th>{% trans "active" %}</th> + <th>UUID</th> + </tr> + </thead> + <tbody> + {% for user in object_list %} + <tr class="{% if not user.is_active %}text-muted{% endif %}"> + <td> + <a href="{% url 'backoffice:moderation-user-detail' pk=user.pk %}">{{ user.username }}</a> + </td> + <td>{{ user.get_user_type_display }}</td> + <td>{{ user.is_active|yesno }}</td> + <td>{{ user.uuid }}</td> + </tr> + {% endfor %} + </tbody> + </table> + </div> </div> -</div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/moderation_user-rename.html b/src/backoffice/templates/backoffice/moderation_user-rename.html index d7c577b0946e061c4904b40fa870f27f0e97b2e1..44fb778ded65abe5606865a223bf2f4f2f33a4ac 100644 --- a/src/backoffice/templates/backoffice/moderation_user-rename.html +++ b/src/backoffice/templates/backoffice/moderation_user-rename.html @@ -9,15 +9,24 @@ <div class="col-md-12"> <div class="card border-primary"> <div class="card-header bg-primary"> - <a href="{% url 'backoffice:moderation-user-detail' pk=object.pk %}" class="text-bg-primary"><< zurück</a> + <a href="{% url 'backoffice:moderation-user-detail' pk=object.pk %}" + class="text-bg-primary"><< zurück</a> </div> <div class="card-body"> - <form action="{% url 'backoffice:moderation-user-rename' pk=object.pk %}" method="POST" class="form">{% csrf_token %} + <form action="{% url 'backoffice:moderation-user-rename' pk=object.pk %}" + method="POST" + class="form"> + {% csrf_token %} Username: <strong>{{ object.username }}</strong> <div class="form-group"> <label for="idNewName">change to:</label> - <input type="text" id="idNewName" class="form-control" name="new_name" value="" placeholder="{{ object.username }}"> + <input type="text" + id="idNewName" + class="form-control" + name="new_name" + value="" + placeholder="{{ object.username }}"> </div> <button type="submit" class="btn btn-primary">Rename user</button> @@ -27,4 +36,4 @@ </div> </div> -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/src/backoffice/templates/backoffice/moderation_wiki-detail.html b/src/backoffice/templates/backoffice/moderation_wiki-detail.html index 674dcd5bf660479543e6a38abf80e2a8514d4f73..c98923e27fb53ef1e2b584aaa879a955ca471f5f 100644 --- a/src/backoffice/templates/backoffice/moderation_wiki-detail.html +++ b/src/backoffice/templates/backoffice/moderation_wiki-detail.html @@ -15,19 +15,33 @@ <div class="card-body"> <dl class="row"> <dt class="col-sm-3">UUID:</dt> - <dd class="col-sm-9">{{ object.pk }}</dd> + <dd class="col-sm-9"> + {{ object.pk }} + </dd> <dt class="col-sm-3">Slug:</dt> - <dd class="col-sm-9">{{ object.slug }}</dd> + <dd class="col-sm-9"> + {{ object.slug }} + </dd> <dt class="col-sm-3">{% trans "StaticPage__title" %}:</dt> - <dd class="col-sm-9">{{ object.title }}</dd> + <dd class="col-sm-9"> + {{ object.title }} + </dd> <dt class="col-sm-3">{% trans "StaticPage__protection" %}:</dt> - <dd class="col-sm-9">{{ object.get_protection_display }}</dd> + <dd class="col-sm-9"> + {{ object.get_protection_display }} + </dd> <dt class="col-sm-3">{% trans "StaticPage__privacy" %}:</dt> - <dd class="col-sm-9">{{ object.get_privacy_display }}</dd> + <dd class="col-sm-9"> + {{ object.get_privacy_display }} + </dd> <dt class="col-sm-3">{% trans "StaticPage__remove_html" %}:</dt> - <dd class="col-sm-9"><span class="text-{% if object.remove_html %}success{% else %}danger{% endif %}">{{ object.remove_html|yesno }}</span></dd> + <dd class="col-sm-9"> + <span class="text-{% if object.remove_html %}success{% else %}danger{% endif %}">{{ object.remove_html|yesno }}</span> + </dd> <dt class="col-sm-3">{% trans "StaticPage__sanitize_html" %}:</dt> - <dd class="col-sm-9"><span class="text-{% if object.sanitize_html %}success{% else %}danger{% endif %}">{{ object.sanitize_html|yesno }}</span></dd> + <dd class="col-sm-9"> + <span class="text-{% if object.sanitize_html %}success{% else %}danger{% endif %}">{{ object.sanitize_html|yesno }}</span> + </dd> </dl> </div> </div> @@ -41,9 +55,7 @@ <div class="card mb-3"> <div class="card-header">{% trans "StaticPage__body" %} (rendered)</div> - <div class="card-body"> - {{ object.body_html|safe }} - </div> + <div class="card-body">{{ object.body_html|safe }}</div> </div> </div> @@ -52,14 +64,30 @@ <div class="card-header bg-primary-subtle text-bg-primary">{% trans "nav_moderation" %}</div> <div class="card-body" id="moderation"> {% if object.is_public_readable %} - <button class="mb-3 w-100 btn btn-outline-warning" data-action="hide" data-action-text="Öffentlichen Zugriff blockieren, Lesezugriff erfordert dann explizite Namespace-Rechte."><i class="bi bi-eye-slash"></i> hide</button> + <button class="mb-3 w-100 btn btn-outline-warning" + data-action="hide" + data-action-text="Öffentlichen Zugriff blockieren, Lesezugriff erfordert dann explizite Namespace-Rechte."> + <i class="bi bi-eye-slash"></i> hide + </button> {% endif %} {% if object.is_public_writeable %} - <button class="mb-3 w-100 btn btn-outline-warning" data-action="protect" data-action-text="Schreibschutz der Seite aktivieren, Seite bleibt aber öffentlich lesbar. Schreibzugriff über Namespace-Rechte."><i class="bi bi-shield"></i> protect</button> + <button class="mb-3 w-100 btn btn-outline-warning" + data-action="protect" + data-action-text="Schreibschutz der Seite aktivieren, Seite bleibt aber öffentlich lesbar. Schreibzugriff über Namespace-Rechte."> + <i class="bi bi-shield"></i> protect + </button> {% else %} - <button class="mb-3 w-100 btn btn-outline-warning" data-action="unprotect" data-action-text="Schreibschutz der Seite entfernen, Seite ist wieder für alle bearbeitbar."><i class="bi bi-shield-slash"></i> unprotect</button> + <button class="mb-3 w-100 btn btn-outline-warning" + data-action="unprotect" + data-action-text="Schreibschutz der Seite entfernen, Seite ist wieder für alle bearbeitbar."> + <i class="bi bi-shield-slash"></i> unprotect + </button> {% endif %} - <button class="mb-3 w-100 btn btn-outline-danger" data-action="delete" data-action-text="Wiki-Seite vollständig entfernen. Diese Aktion kann nicht rückgängig gemacht werden!"><i class="bi bi-trash"></i> delete</button> + <button class="mb-3 w-100 btn btn-outline-danger" + data-action="delete" + data-action-text="Wiki-Seite vollständig entfernen. Diese Aktion kann nicht rückgängig gemacht werden!"> + <i class="bi bi-trash"></i> delete + </button> </div> </div> </div> diff --git a/src/backoffice/templates/backoffice/moderation_wiki-item.html b/src/backoffice/templates/backoffice/moderation_wiki-item.html index 2e464e0afb89c64f98ef9e5868815d3b7f500d35..68318f905c572f0f5738afef229c5c9b40702824 100644 --- a/src/backoffice/templates/backoffice/moderation_wiki-item.html +++ b/src/backoffice/templates/backoffice/moderation_wiki-item.html @@ -2,8 +2,11 @@ {% load humanize %} <div class="card mb-1"> <div class="card-body"> - Wiki-Seite "<a href="{% url 'backoffice:moderation-wiki-detail' pk=page.pk %}" class="fw-bold">{{ page.slug }}</a>" - {% if page.language %}<span class="text-muted">(<abbrev title="{% trans "StaticPage__language" %}">{{ page.language }}</abbrev>)</span>{% endif %} + Wiki-Seite "<a href="{% url 'backoffice:moderation-wiki-detail' pk=page.pk %}" + class="fw-bold">{{ page.slug }}</a>" + {% if page.language %} + <span class="text-muted">(<abbrev title="{% trans "StaticPage__language" %}">{{ page.language }}</abbrev>)</span> + {% endif %} <small>{{ page.title }}</small> <br> diff --git a/src/backoffice/templates/backoffice/moderation_wiki-list.html b/src/backoffice/templates/backoffice/moderation_wiki-list.html index 6ce049c3489837d675220aeb1366d460aa5436f0..7227c98dc44f459982fb02c4ca2d75a36b3d55be 100644 --- a/src/backoffice/templates/backoffice/moderation_wiki-list.html +++ b/src/backoffice/templates/backoffice/moderation_wiki-list.html @@ -4,12 +4,13 @@ {% load static %} {% block htmlhead %} - <link rel="stylesheet" href="{% static 'vendor/datatables/datatables.min.css' %}"> + <link rel="stylesheet" + href="{% static 'vendor/datatables/datatables.min.css' %}"> {% endblock %} {% block scripts %} - <script src="{% static 'vendor/datatables/datatables.min.js' %}"></script> - <script> + <script src="{% static 'vendor/datatables/datatables.min.js' %}"></script> + <script> $(document).ready(function() { $('#pages').DataTable({ pageLength: 100, @@ -39,38 +40,42 @@ } }); }); - </script> + </script> {% endblock %} {% block content %} -<div class="card"> - <div class="card-header"><span class="text-muted">{% trans 'StaticPages' %}:</span> {{ mode_display }}</div> - <div class="card-body"> + <div class="card"> + <div class="card-header"> + <span class="text-muted">{% trans 'StaticPages' %}:</span> {{ mode_display }} + </div> + <div class="card-body"> - <table class="table table-sm" id="pages"> - <thead> - <tr> - <th>{% trans "StaticPage__slug" %}</th> - <th>{% trans "StaticPage__language" %}</th> - <th>{% trans "StaticPage__privacy" %}</th> - <th>{% trans "StaticPage__protection" %}</th> - <th>UUID</th> - </tr> - </thead> - <tbody> - {% for page in object_list %} - <tr> - <td>{{ page.slug }}</td> - <td>{{ page.language|default:"*" }}</td> - <td>{{ page.get_privacy_display }}</td> - <td>{{ page.get_protection_display }}</td> - <td><a href="{% url 'backoffice:moderation-wiki-detail' pk=page.pk %}">{{ page.pk }}</a></td> - </tr> - {% endfor %} - </tbody> - </table> + <table class="table table-sm" id="pages"> + <thead> + <tr> + <th>{% trans "StaticPage__slug" %}</th> + <th>{% trans "StaticPage__language" %}</th> + <th>{% trans "StaticPage__privacy" %}</th> + <th>{% trans "StaticPage__protection" %}</th> + <th>UUID</th> + </tr> + </thead> + <tbody> + {% for page in object_list %} + <tr> + <td>{{ page.slug }}</td> + <td>{{ page.language|default:"*" }}</td> + <td>{{ page.get_privacy_display }}</td> + <td>{{ page.get_protection_display }}</td> + <td> + <a href="{% url 'backoffice:moderation-wiki-detail' pk=page.pk %}">{{ page.pk }}</a> + </td> + </tr> + {% endfor %} + </tbody> + </table> + </div> </div> -</div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/profile.html b/src/backoffice/templates/backoffice/profile.html index 2cd83c9f58fb007973478b49b730e7a67f66a939..f0c08361a989532fbe1e7314de0b2bf76ce61881 100644 --- a/src/backoffice/templates/backoffice/profile.html +++ b/src/backoffice/templates/backoffice/profile.html @@ -2,13 +2,11 @@ {% load i18n %} {% block content %} -<form action="{% url 'backoffice:logout' %}" method="post"> - {% csrf_token %} - <button class="btn btn-secondary float-end" role="button"> - {% trans 'nav_logout' %} - </button> -</form> + <form action="{% url 'backoffice:logout' %}" method="post"> + {% csrf_token %} + <button class="btn btn-secondary float-end" role="button">{% trans 'nav_logout' %}</button> + </form> -<p>Hi {{ user.get_full_name|default:user.username }}!</p> -<p>Hier gibt es derzeit nichts einzustellen. / There is nothing to be configured here right now.</p> + <p>Hi {{ user.get_full_name|default:user.username }}!</p> + <p>Hier gibt es derzeit nichts einzustellen. / There is nothing to be configured here right now.</p> {% endblock %} diff --git a/src/backoffice/templates/backoffice/project/create_edit.html b/src/backoffice/templates/backoffice/project/create_edit.html index 2a59c4f6bc965f0f8ef6ca7658d5e824b999e5f0..725bb7071debe6323aece84875d276edf55c1d05 100644 --- a/src/backoffice/templates/backoffice/project/create_edit.html +++ b/src/backoffice/templates/backoffice/project/create_edit.html @@ -144,8 +144,8 @@ {% include 'backoffice/link/link_display.html' with links=project.links %} {% trans 'Project__submit' as button_text %} <div class="card-footer"> - {% bootstrap_button button_text button_type="submit" button_class="btn-primary float-end" %} - </div> + {% bootstrap_button button_text button_type="submit" button_class="btn-primary float-end" %} + </div> </div> </form> diff --git a/src/backoffice/templates/backoffice/project/list.html b/src/backoffice/templates/backoffice/project/list.html index 8a14c32168d0f050f6484f7c9b34d7841b88ce6b..38f55689360400e6508eafb2752a45653dec7d64 100644 --- a/src/backoffice/templates/backoffice/project/list.html +++ b/src/backoffice/templates/backoffice/project/list.html @@ -10,7 +10,8 @@ {% endblock title %} {% block htmlhead %} - <link rel="stylesheet" href="{% static 'vendor/datatables/datatables.min.css' %}"> + <link rel="stylesheet" + href="{% static 'vendor/datatables/datatables.min.css' %}"> {% endblock htmlhead %} {% block scripts %} diff --git a/src/backoffice/templates/backoffice/room-new.html b/src/backoffice/templates/backoffice/room-new.html index 80bd8d08d848e20c9b000e27c16ebe284949b2ef..f7f4d2348ab97f250c78fe2f1bb46198da9ec54c 100644 --- a/src/backoffice/templates/backoffice/room-new.html +++ b/src/backoffice/templates/backoffice/room-new.html @@ -2,150 +2,178 @@ {% load django_bootstrap5 %} {% load i18n %} -{% block title %} -room++ | {{ assembly.name }} | {{ conference.name }} -{% endblock %} +{% block title %}room++ | {{ assembly.name }} | {{ conference.name }}{% endblock %} {% block content %} -{% include "backoffice/assembly_edit_header.html" %} + {% include "backoffice/assembly_edit_header.html" %} -<div class="row"> + <div class="row"> - <div class="col-md-12"> - <h1> - <a href="{% url 'backoffice:assembly' pk=assembly.id %}" class="text-muted">{{ assembly.name }}</a>: + <div class="col-md-12"> + <h1> + <a href="{% url 'backoffice:assembly' pk=assembly.id %}" + class="text-muted">{{ assembly.name }}</a>: {% trans 'Room-new' %} - </h1> - </div> - - <div class="col-md-12 mt-3"> - {% show_disclaimer 'room_new' %} - - {% if room_type is None %} - <div class="row row-cols-1 row-cols-md-2 g-4"> + </h1> + </div> - {# WorkAdventure #} - {% if support_wa %} - <div class="col"><div class="card {% if rooms_available.workadventure %}border-primary{% else %}border-default{% endif %}"> - <div class="card-body"> - <h5 class="card-title {% if rooms_available.workadventure %}text-primary{% else %}text-default{% endif %}">{% trans 'Room-new-workadventure' %}</h5> - <p class="card-text">{% trans 'Room-new-workadventure__help' %}</p> - </div> - <div class="card-footer"> - {% if rooms_available.workadventure %} - <a class="btn btn-sm btn-primary" href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=workadventure">{% trans 'Room-new-workadventure__create' %}</a> - {% else %} - <span class="text-muted" style="font-size: 90%;">{% trans 'Room-new-workadventure__unavailable' %}</span> + <div class="col-md-12 mt-3"> + {% show_disclaimer 'room_new' %} + + {% if room_type is None %} + <div class="row row-cols-1 row-cols-md-2 g-4"> + + {# WorkAdventure #} + {% if support_wa %} + <div class="col"> + <div class="card {% if rooms_available.workadventure %}border-primary{% else %}border-default{% endif %}"> + <div class="card-body"> + <h5 class="card-title {% if rooms_available.workadventure %}text-primary{% else %}text-default{% endif %}"> + {% trans 'Room-new-workadventure' %} + </h5> + <p class="card-text">{% trans 'Room-new-workadventure__help' %}</p> + </div> + <div class="card-footer"> + {% if rooms_available.workadventure %} + <a class="btn btn-sm btn-primary" + href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=workadventure">{% trans 'Room-new-workadventure__create' %}</a> + {% else %} + <span class="text-muted" style="font-size: 90%;">{% trans 'Room-new-workadventure__unavailable' %}</span> + {% endif %} + </div> + </div> + </div> {% endif %} - </div> - </div></div> - {% endif %} - {# BigBlueButton #} - {% if support_bbb %} - <div class="col"><div class="card"> - <div class="card-body {% if rooms_available.bbb %}border-primary{% else %}border-default{% endif %}"> - <h5 class="card-title {% if rooms_available.bbb %}text-primary{% else %}text-default{% endif %}">{% trans 'Room-new-bbb' %}</h5> - <p class="card-text">{% trans 'Room-new-bbb__help' %}</p> - </div> - <div class="card-footer"> - {% if rooms_available.bbb %} - <a class="btn btn-sm btn-primary" href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=bbb">{% trans 'Room-new-bbb__create' %}</a> - {% else %} - <span class="text-muted" style="font-size: 90%;">{% trans 'Room-new-bbb__unavailable' %}</span> + {# BigBlueButton #} + {% if support_bbb %} + <div class="col"> + <div class="card"> + <div class="card-body {% if rooms_available.bbb %}border-primary{% else %}border-default{% endif %}"> + <h5 class="card-title {% if rooms_available.bbb %}text-primary{% else %}text-default{% endif %}"> + {% trans 'Room-new-bbb' %} + </h5> + <p class="card-text">{% trans 'Room-new-bbb__help' %}</p> + </div> + <div class="card-footer"> + {% if rooms_available.bbb %} + <a class="btn btn-sm btn-primary" + href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=bbb">{% trans 'Room-new-bbb__create' %}</a> + {% else %} + <span class="text-muted" style="font-size: 90%;">{% trans 'Room-new-bbb__unavailable' %}</span> + {% endif %} + </div> + </div> + </div> {% endif %} - </div> - </div></div> - {% endif %} - {# Hangar #} - {% if support_hangar %} - <div class="col"><div class="card"> - <div class="card-body {% if rooms_available.hangar %}border-primary{% else %}border-default{% endif %}"> - <h5 class="card-title {% if rooms_available.hangar %}text-primary{% else %}text-default{% endif %}">{% trans 'Room-new-hangar' %}</h5> - <p class="card-text">{% trans 'Room-new-hangar__help' %}</p> - </div> - <div class="card-footer"> - {% if rooms_available.hangar %} - <a class="btn btn-sm btn-primary" href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=hangar">{% trans 'Room-new-hangar__create' %}</a> - {% else %} - <span class="text-muted" style="font-size: 90%;">{% trans 'Room-new-hangar__unavailable' %}</span> + {# Hangar #} + {% if support_hangar %} + <div class="col"> + <div class="card"> + <div class="card-body {% if rooms_available.hangar %}border-primary{% else %}border-default{% endif %}"> + <h5 class="card-title {% if rooms_available.hangar %}text-primary{% else %}text-default{% endif %}"> + {% trans 'Room-new-hangar' %} + </h5> + <p class="card-text">{% trans 'Room-new-hangar__help' %}</p> + </div> + <div class="card-footer"> + {% if rooms_available.hangar %} + <a class="btn btn-sm btn-primary" + href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=hangar">{% trans 'Room-new-hangar__create' %}</a> + {% else %} + <span class="text-muted" style="font-size: 90%;">{% trans 'Room-new-hangar__unavailable' %}</span> + {% endif %} + </div> + </div> + </div> {% endif %} </div> - </div></div> - {% endif %} - </div>{# /row, open a new row #} - <div class="row row-cols-1 row-cols-md-2 g-4 mt-4"> - - {# Lecture Hall #} - <div class="col"><div class="card"> - <div class="card-body border-default"> - <h5 class="card-title text-default">{% trans 'Room-new-lecturehall' %}</h5> - <p class="card-text">{% trans 'Room-new-lecturehall__help' %}</p> - </div> - <div class="card-footer"> - {% if rooms_available.lecturehall %} - <a class="btn btn-sm btn-primary" href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=lecturehall">{% trans 'Room-new-lecturehall__create' %}</a> - {% else %} - <span class="text-muted" style="font-size: 90%;">{% trans 'Room-new-lecturehall__unavailable' %}</span> - {% endif %} - </div> - </div></div> + {# /row, open a new row #} + <div class="row row-cols-1 row-cols-md-2 g-4 mt-4"> + + {# Lecture Hall #} + <div class="col"> + <div class="card"> + <div class="card-body border-default"> + <h5 class="card-title text-default">{% trans 'Room-new-lecturehall' %}</h5> + <p class="card-text">{% trans 'Room-new-lecturehall__help' %}</p> + </div> + <div class="card-footer"> + {% if rooms_available.lecturehall %} + <a class="btn btn-sm btn-primary" + href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=lecturehall">{% trans 'Room-new-lecturehall__create' %}</a> + {% else %} + <span class="text-muted" style="font-size: 90%;">{% trans 'Room-new-lecturehall__unavailable' %}</span> + {% endif %} + </div> + </div> + </div> + + {# Stage #} + <div class="col"> + <div class="card"> + <div class="card-body border-default"> + <h5 class="card-title text-default">{% trans 'Room-new-stage' %}</h5> + <p class="card-text">{% trans 'Room-new-stage__help' %}</p> + </div> + <div class="card-footer"> + {% if rooms_available.stage %} + <a class="btn btn-sm btn-primary" + href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=stage">{% trans 'Room-new-stage__create' %}</a> + {% else %} + <span class="text-muted" style="font-size: 90%;">{% trans 'Room-new-stage__unavailable' %}</span> + {% endif %} + </div> + </div> + </div> + + {# Workshop #} + <div class="col"> + <div class="card"> + <div class="card-body border-default"> + <h5 class="card-title text-default">{% trans 'Room-new-workshop' %}</h5> + <p class="card-text">{% trans 'Room-new-workshop__help' %}</p> + </div> + <div class="card-footer"> + {% if rooms_available.workshop %} + <a class="btn btn-sm btn-primary" + href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=workshop">{% trans 'Room-new-workshop__create' %}</a> + {% else %} + <span class="text-muted" style="font-size: 90%;">{% trans 'Room-new-workshop__unavailable' %}</span> + {% endif %} + </div> + </div> + </div> - {# Stage #} - <div class="col"><div class="card"> - <div class="card-body border-default"> - <h5 class="card-title text-default">{% trans 'Room-new-stage' %}</h5> - <p class="card-text">{% trans 'Room-new-stage__help' %}</p> </div> - <div class="card-footer"> - {% if rooms_available.stage %} - <a class="btn btn-sm btn-primary" href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=stage">{% trans 'Room-new-stage__create' %}</a> - {% else %} - <span class="text-muted" style="font-size: 90%;">{% trans 'Room-new-stage__unavailable' %}</span> - {% endif %} + <div class="text-center mt-4"> + <a class="text-muted" + href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=other">{% trans 'Room-new-other__create' %}</a> </div> - </div></div> - {# Workshop #} - <div class="col"><div class="card"> - <div class="card-body border-default"> - <h5 class="card-title text-default">{% trans 'Room-new-workshop' %}</h5> - <p class="card-text">{% trans 'Room-new-workshop__help' %}</p> + {% else %} + {# room_type is not None #} + + <div class="col"> + <div class="card border-default"> + <div class="card-header bg-default">{{ room_type|upper }}</div> + <div class="card-body"> + <form action="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}" + method="POST"> + {% csrf_token %} + <input type="hidden" name="type" value="{{ room_type }}"> + {% if legal_warning %}<div class="alert alert-warning">{{ legal_warning }}</div>{% endif %} + + {% bootstrap_form form %} + + <button type="submit" class="btn btn-primary">{% trans 'save' %}</button> + </form> + </div> + </div> </div> - <div class="card-footer"> - {% if rooms_available.workshop %} - <a class="btn btn-sm btn-primary" href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=workshop">{% trans 'Room-new-workshop__create' %}</a> - {% else %} - <span class="text-muted" style="font-size: 90%;">{% trans 'Room-new-workshop__unavailable' %}</span> - {% endif %} - </div> - </div></div> + {% endif %} </div> - <div class="text-center mt-4"> - <a class="text-muted" href="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}?type=other">{% trans 'Room-new-other__create' %}</a> - </div> - - {% else %}{# room_type is not None #} - - <div class="col"><div class="card border-default"> - <div class="card-header bg-default"> - {{ room_type|upper }} - </div> - <div class="card-body"> - <form action="{% url 'backoffice:assembly-create-room' assembly=assembly.id %}" method="POST">{% csrf_token %} - <input type="hidden" name="type" value="{{ room_type }}"> - {% if legal_warning %}<div class="alert alert-warning">{{ legal_warning }}</div>{% endif %} - - {% bootstrap_form form %} - - <button type="submit" class="btn btn-primary">{% trans 'save' %}</button> - </form> - </div> - </div></div> - - {% endif %} - </div> -</div> + </div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/schedule_source-confirm_delete.html b/src/backoffice/templates/backoffice/schedule_source-confirm_delete.html index 77bf11399aff601c85c1e07cf6c3954c40aef5e8..7259f92593d82f2b9bfccf92b31340087e2c2d5f 100644 --- a/src/backoffice/templates/backoffice/schedule_source-confirm_delete.html +++ b/src/backoffice/templates/backoffice/schedule_source-confirm_delete.html @@ -5,33 +5,47 @@ {% block content %} -<h1>ScheduleSource {{ object.id }}</h1> + <h1>ScheduleSource {{ object.id }}</h1> -<div class="card mb-3"> - <div class="card-header">Assembly <code>{{ object.assembly_id }}</code></div> - <div class="card-body"> - <p>Slug: <strong>{{ object.assembly.slug }}</strong></p> - <p>Name: <strong>{{ object.assembly.name }}</strong></p> + <div class="card mb-3"> + <div class="card-header"> + Assembly <code>{{ object.assembly_id }}</code> + </div> + <div class="card-body"> + <p> + Slug: <strong>{{ object.assembly.slug }}</strong> + </p> + <p> + Name: <strong>{{ object.assembly.name }}</strong> + </p> + </div> </div> -</div> -<div class="card mb-3"> - <div class="card-header">Type <code>{{ object.import_type }}</code></div> - <div class="card-body"> - <p>URL: <code>{{ object.import_url_masked }}</code></p> - <p>Configuration: <code>{{ object.import_configuration_masked|json_indent }}</code></p> + <div class="card mb-3"> + <div class="card-header"> + Type <code>{{ object.import_type }}</code> + </div> + <div class="card-body"> + <p> + URL: <code>{{ object.import_url_masked }}</code> + </p> + <p> + Configuration: <code>{{ object.import_configuration_masked|json_indent }}</code> + </p> + </div> </div> -</div> -<div class="card mb-3 border-danger"> - <div class="card-header bg-danger text-white">CONFIRM</div> - <div class="card-body"> - <form method="POST" action="{% url 'backoffice:schedulesource-remove' pk=object.id %}"> - {% csrf_token %} + <div class="card mb-3 border-danger"> + <div class="card-header bg-danger text-white">CONFIRM</div> + <div class="card-body"> + <form method="POST" + action="{% url 'backoffice:schedulesource-remove' pk=object.id %}"> + {% csrf_token %} <button type="submit" class="btn btn-danger">yes, nuke it</button> - <a href="{% url 'backoffice:schedulesource-detail' pk=object.id %}" class="btn btn-outline-primary">no, back to safety</a> - </form> + <a href="{% url 'backoffice:schedulesource-detail' pk=object.id %}" + class="btn btn-outline-primary">no, back to safety</a> + </form> + </div> </div> -</div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/schedule_source-detail.html b/src/backoffice/templates/backoffice/schedule_source-detail.html index 888910f5232c3dddaac4d8fcf01b469053cae668..9845a5b28aa62a584290fe0fd4e3f2cfe2680b1c 100644 --- a/src/backoffice/templates/backoffice/schedule_source-detail.html +++ b/src/backoffice/templates/backoffice/schedule_source-detail.html @@ -4,100 +4,120 @@ {% block content %} -<h1>ScheduleSource on "<span title="{{ object.assembly.name }}">{{ object.assembly.slug }}</span>"</h1> + <h1> + ScheduleSource on "<span title="{{ object.assembly.name }}">{{ object.assembly.slug }}</span>" + </h1> -<div class="card mb-3"> - <div class="card-header"> - ID <code>{{ object.id }}</code> - <span class="float-right"> - <a href="{% url 'backoffice:schedulesource-edit' pk=object.id %}" class="btn btn-sm btn-outline-primary text-primary">edit</a> - <a href="{% url 'backoffice:schedulesource-remove' pk=object.id %}" class="btn btn-sm btn-outline-danger text-danger">delete</a> - </span> + <div class="card mb-3"> + <div class="card-header"> + ID <code>{{ object.id }}</code> + <span class="float-right"> + <a href="{% url 'backoffice:schedulesource-edit' pk=object.id %}" + class="btn btn-sm btn-outline-primary text-primary">edit</a> + <a href="{% url 'backoffice:schedulesource-remove' pk=object.id %}" + class="btn btn-sm btn-outline-danger text-danger">delete</a> + </span> + </div> + <div class="card-body"> + <p> + Assembly: <strong>{{ object.assembly|default:"<em>WILDCARD</em>" }}</strong> + </p> + <p> + Type: <strong>{{ object.import_type }}</strong> + </p> + <p> + URL: <code>{{ object.import_url_masked }}</code> + </p> + <p> + Frequency: <strong>{{ object.import_frequency|naturaltimespan }}</strong> + </p> + <p> + Timeout: <strong>{{ object.import_timeout|naturaltimespan }}</strong> + </p> + <p> + Last Import: <strong>{{ object.last_import|naturaltime|default:"(never)" }}</strong> Version: <strong>{{ object.last_import_version }}</strong> + </p> + <p> + Configuration: + <br> + <pre class="border"><code>{{ object.import_configuration_masked }}</code></pre> + </p> + </div> </div> - <div class="card-body"> - <p>Assembly: <strong>{{ object.assembly|default:"<em>WILDCARD</em>" }}</strong></p> - <p>Type: <strong>{{ object.import_type }}</strong></p> - <p>URL: <code>{{ object.import_url_masked }}</code></p> - <p>Frequency: <strong>{{ object.import_frequency|naturaltimespan }}</strong></p> - <p>Timeout: <strong>{{ object.import_timeout|naturaltimespan }}</strong></p> - <p>Last Import: <strong>{{ object.last_import|naturaltime|default:"(never)" }}</strong> Version: <strong>{{ object.last_import_version }}</strong></p> - <p>Configuration:<br><pre class="border"><code>{{ object.import_configuration_masked }}</code></pre></p> - </div> -</div> -<div class="card mb-3"> - <div class="card-header"> - <form action="{% url 'backoffice:schedulesource-import' pk=object.id %}" method="POST">{% csrf_token %} + <div class="card mb-3"> + <div class="card-header"> + <form action="{% url 'backoffice:schedulesource-import' pk=object.id %}" + method="POST"> + {% csrf_token %} <button type="submit" class="btn btn-sm btn-primary float-right">run an import NOW</button> - </form> - Imports - </div> - <div class="card-body"> - <table class="table table-sm table-hover"> - <thead> - <tr> - <th>State</th> - <th>Start</th> - <th>End</th> - <th>Summary</th> - <th> </th> - </tr> - </thead> - <tbody> - {% for import in imports %} - <tr class="{{ import.text_color_class }}"> - <td>{{ import.get_state_display }}</td> - <td title="{{ import.start }}">{{ import.start|naturaltime }}</td> - <td title="{{ import.end }}">{{ import.end|naturaltime }}</td> - <td>{{ import.summary|linebreaks|default:"" }}</td> - <td> - <a href="{% url 'backoffice:schedulesourceimport-detail' pk=import.id %}">Details</a> - </td> - </tr> - {% endfor %} - </tbody> -{% if has_more_imports %} - <tfoot> - <tr> - <td colspan="5"> + </form> + Imports + </div> + <div class="card-body"> + <table class="table table-sm table-hover"> + <thead> + <tr> + <th>State</th> + <th>Start</th> + <th>End</th> + <th>Summary</th> + <th> </th> + </tr> + </thead> + <tbody> + {% for import in imports %} + <tr class="{{ import.text_color_class }}"> + <td>{{ import.get_state_display }}</td> + <td title="{{ import.start }}">{{ import.start|naturaltime }}</td> + <td title="{{ import.end }}">{{ import.end|naturaltime }}</td> + <td>{{ import.summary|linebreaks|default:"" }}</td> + <td> + <a href="{% url 'backoffice:schedulesourceimport-detail' pk=import.id %}">Details</a> + </td> + </tr> + {% endfor %} + </tbody> + {% if has_more_imports %} + <tfoot> + <tr> + <td colspan="5"> <div class="alert alert-warning">List limited to 10 entries.</div> - </td> - </tr> - </tfoot> -{% endif %} - </table> + </td> + </tr> + </tfoot> + {% endif %} + </table> + </div> </div> -</div> -<div class="card mb-3"> - <div class="card-header">Mappings</div> - <div class="card-body"> - <table class="table table-sm table-hover"> - <thead> - <tr> - <th>Type</th> - <th>Source ID</th> - <th>Local ID</th> - <th>Skip</th> - <th> </th> - </tr> - </thead> - <tbody> - {% for mapping in object.mappings.all %} - <tr> - <td>{{ mapping.get_mapping_type_display }}</td> - <td>{{ mapping.source_id|default:"-" }}</td> - <td>{{ mapping.local_id|default:"-" }}</td> - <td>{{ mapping.skip|yesno }}</td> - <td> - - </td> - </tr> - {% endfor %} - </tbody> - </table> + <div class="card mb-3"> + <div class="card-header">Mappings</div> + <div class="card-body"> + <table class="table table-sm table-hover"> + <thead> + <tr> + <th>Type</th> + <th>Source ID</th> + <th>Local ID</th> + <th>Skip</th> + <th> </th> + </tr> + </thead> + <tbody> + {% for mapping in object.mappings.all %} + <tr> + <td>{{ mapping.get_mapping_type_display }}</td> + <td>{{ mapping.source_id|default:"-" }}</td> + <td>{{ mapping.local_id|default:"-" }}</td> + <td>{{ mapping.skip|yesno }}</td> + <td> </td> + </tr> + {% endfor %} + </tbody> + </table> + </div> </div> -</div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/schedule_source-form.html b/src/backoffice/templates/backoffice/schedule_source-form.html index c11c9bf36854c77b6db6598a21a5cebc2a4e24ea..cdae97b8359058c2b91a1a40dbe6a0477c315995 100644 --- a/src/backoffice/templates/backoffice/schedule_source-form.html +++ b/src/backoffice/templates/backoffice/schedule_source-form.html @@ -5,25 +5,32 @@ {% block content %} -<h1>ScheduleSource {{ object.id }}</h1> + <h1>ScheduleSource {{ object.id }}</h1> -<div class="card mb-3"> - <div class="card-header">Assembly <code>{{ object.assembly_id }}</code></div> - <div class="card-body"> - <p>Slug: <strong>{{ object.assembly.slug }}</strong></p> - <p>Name: <strong>{{ object.assembly.name }}</strong></p> + <div class="card mb-3"> + <div class="card-header"> + Assembly <code>{{ object.assembly_id }}</code> + </div> + <div class="card-body"> + <p> + Slug: <strong>{{ object.assembly.slug }}</strong> + </p> + <p> + Name: <strong>{{ object.assembly.name }}</strong> + </p> + </div> </div> -</div> -<div class="card mb-3 border-primary"> - <div class="card-header bg-primary text-white">Update</div> - <div class="card-body"> - <form method="POST" action="{% url 'backoffice:schedulesource-edit' pk=object.id %}"> - {% csrf_token %} - {% bootstrap_form form %} + <div class="card mb-3 border-primary"> + <div class="card-header bg-primary text-white">Update</div> + <div class="card-body"> + <form method="POST" + action="{% url 'backoffice:schedulesource-edit' pk=object.id %}"> + {% csrf_token %} + {% bootstrap_form form %} <button type="submit" class="btn btn-primary">save changes</button> - </form> + </form> + </div> </div> -</div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/schedule_source-list.html b/src/backoffice/templates/backoffice/schedule_source-list.html index 47d059f0487101fd1beed0149c75897bbd323351..8f8cc5c58f5d39028f176dca35f3dd9d5a295ee0 100644 --- a/src/backoffice/templates/backoffice/schedule_source-list.html +++ b/src/backoffice/templates/backoffice/schedule_source-list.html @@ -5,49 +5,66 @@ {% block content %} -<div class="card"> - <div class="card-header">Schedule Sources</div> - <div class="card-body"> - <table class="table table-sm table-hover"> - <thead> - <tr> - <th>ID</th> - <th>Assembly</th> - <th>Type</th> - <th>Frequency</th> - <th>Last Import</th> - <th> </th> - </tr> - </thead> - <tbody> - {% for src in object_list %} - <tr> - <td class="text-sm">{{ src.id }}</td> - <td>{% if src.assembly %}{{ src.assembly.slug }}{% else %}*{% endif %}</td> - <td>{{ src.import_type }}</td> - <td>{{ src.import_frequency|naturaltimespan }}</td> - <td>{{ src.last_import|naturaltime|default:"-" }}</td> - <td> - <a href="{% url 'backoffice:schedulesource-detail' pk=src.id %}">Details</a> - </td> - </tr> - {% endfor %} - <tr> + <div class="card"> + <div class="card-header">Schedule Sources</div> + <div class="card-body"> + <table class="table table-sm table-hover"> + <thead> + <tr> + <th>ID</th> + <th>Assembly</th> + <th>Type</th> + <th>Frequency</th> + <th>Last Import</th> + <th> </th> + </tr> + </thead> + <tbody> + {% for src in object_list %} + <tr> + <td class="text-sm">{{ src.id }}</td> + <td> + {% if src.assembly %} + {{ src.assembly.slug }} + {% else %} + * + {% endif %} + </td> + <td>{{ src.import_type }}</td> + <td>{{ src.import_frequency|naturaltimespan }}</td> + <td>{{ src.last_import|naturaltime|default:"-" }}</td> + <td> + <a href="{% url 'backoffice:schedulesource-detail' pk=src.id %}">Details</a> + </td> + </tr> + {% endfor %} + <tr> <form action="{% url "backoffice:schedulesource-add" %}" method="POST"> - {% csrf_token %} - <td> </td> - <td><input type="text" name="assembly_slug" placeholder="assembly slug" value=""></td> - <td><select name="import_type"><option value="">-/-</option>{% for t,tc in import_types.items %}<option value="{{ t }}" title="{{ tc }}">{{ t }}</option>{% endfor %}</select></td> - <td><input type="text" name="import_frequency" placeholder="1h || 15m || 1m || ..."></td> - <td colspan="2"> - <input type="text" name="import_url" placeholder="https://"> - <input type="submit" value="add" class="btn btn-primary"> - </td> + {% csrf_token %} + <td> </td> + <td> + <input type="text" name="assembly_slug" placeholder="assembly slug" value=""> + </td> + <td> + <select name="import_type"> + <option value="">-/-</option> + {% for t,tc in import_types.items %}<option value="{{ t }}" title="{{ tc }}">{{ t }}</option>{% endfor %} + </select> + </td> + <td> + <input type="text" + name="import_frequency" + placeholder="1h || 15m || 1m || ..."> + </td> + <td colspan="2"> + <input type="text" name="import_url" placeholder="https://"> + <input type="submit" value="add" class="btn btn-primary"> + </td> </form> - </tr> - </tbody> - </table> + </tr> + </tbody> + </table> + </div> </div> -</div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/schedule_source_import-detail.html b/src/backoffice/templates/backoffice/schedule_source_import-detail.html index 66e80322c4d9214e992e5d48b23e705d4a9d1bc6..beabaca8f049cd0b28b3a23852763b8c8112194e 100644 --- a/src/backoffice/templates/backoffice/schedule_source_import-detail.html +++ b/src/backoffice/templates/backoffice/schedule_source_import-detail.html @@ -4,7 +4,9 @@ {% block content %} - <h1>ScheduleSourceImport for "<span title="{{ object.schedule_source.assembly.name }}">{{ object.schedule_source.assembly.slug }}</span>"</h1> + <h1> + ScheduleSourceImport for "<span title="{{ object.schedule_source.assembly.name }}">{{ object.schedule_source.assembly.slug }}</span>" + </h1> <div class="card mb-3"> <div class="card-header"> @@ -12,38 +14,46 @@ Source <a href="{% url 'backoffice:schedulesource-detail' pk=object.schedule_source_id %}"><code>{{ object.schedule_source_id }}</code></a> </div> <div class="card-body"> - <p>State: <strong class="{{ object.text_color_class }}">{{ object.state }}</strong></p> - <p>Summary: <br/><strong>{{ object.summary|linebreaks }}</strong></p> - <p>Start: <strong title="{{ object.start }}">{{ object.start|naturaltime }}</strong></p> - <p>End: <strong title="{{ object.end }}">{{ object.end|naturaltime }}</strong></p> + <p> + State: <strong class="{{ object.text_color_class }}">{{ object.state }}</strong> + </p> + <p> + Summary: + <br /> + <strong>{{ object.summary|linebreaks }}</strong> + </p> + <p> + Start: <strong title="{{ object.start }}">{{ object.start|naturaltime }}</strong> + </p> + <p> + End: <strong title="{{ object.end }}">{{ object.end|naturaltime }}</strong> + </p> </div> </div> {% if object.errors %} <div class="card mb-3 border-warning"> - <div class="card-header text-bg-warning"> - Errors - </div> + <div class="card-header text-bg-warning">Errors</div> <table class="card-body table table-sm table-hover"> <thead> - <tr> - <th>Type</th> - <th>Action</th> - <th>Source ID</th> - <th>Local ID</th> - <th>Message</th> - </tr> - </thead> - <tbody> - {% for error in object.errors %} <tr> - <td>{{ error.action|default:"???" }}</td> - <td>{{ error.type|default:"???" }}</td> - <td>{{ error.source_id|default:"-/-" }}</td> - <td>{{ error.local_id|default:"-/-" }}</td> - <td>{{ error.message }}</td> + <th>Type</th> + <th>Action</th> + <th>Source ID</th> + <th>Local ID</th> + <th>Message</th> </tr> - {% endfor %} + </thead> + <tbody> + {% for error in object.errors %} + <tr> + <td>{{ error.action|default:"???" }}</td> + <td>{{ error.type|default:"???" }}</td> + <td>{{ error.source_id|default:"-/-" }}</td> + <td>{{ error.local_id|default:"-/-" }}</td> + <td>{{ error.message }}</td> + </tr> + {% endfor %} </tbody> </table> </div> @@ -51,28 +61,34 @@ {% if activity %} <div class="card mb-3 border-primary"> - <div class="card-header text-bg-primary"> - Activity - </div> + <div class="card-header text-bg-primary">Activity</div> <div class="card-body"> <table class="table table-sm table-hover"> <thead> - <tr> - <th>Type</th> - <th>Action</th> - <th>Source ID</th> - <th>Local ID</th> - </tr> - </thead> - <tbody> - {% for item in activity %} <tr> - <td class="{% if item.action == "seen" %}text-muted{% elif item.action == "error" %}text-danger{% elif item.action == "missing" or item.action == "removed" %}text-warning{% elif item.action == "added" %}text-success{% endif %}">{{ item.action|default:"???" }}</td> - <td class="{% if item.action == "seen" %}text-muted{% elif item.action == "error" %}text-danger{% elif item.action == "missing" or item.action == "removed" %}text-warning{% elif item.action == "added" %}text-success{% endif %}">{{ item.type|default:"???" }}</td> - <td class="{% if item.action == "seen" %}text-muted{% elif item.action == "error" %}text-danger{% elif item.action == "missing" or item.action == "removed" %}text-warning{% elif item.action == "added" %}text-success{% endif %}">{{ item.source_id|default:"-/-" }}</td> - <td class="{% if item.action == "seen" %}text-muted{% elif item.action == "error" %}text-danger{% elif item.action == "missing" or item.action == "removed" %}text-warning{% elif item.action == "added" %}text-success{% endif %}">{{ item.local_id|default:"-/-" }}</td> + <th>Type</th> + <th>Action</th> + <th>Source ID</th> + <th>Local ID</th> </tr> - {% endfor %} + </thead> + <tbody> + {% for item in activity %} + <tr> + <td class="{% if item.action == "seen" %}text-muted{% elif item.action == "error" %}text-danger{% elif item.action == "missing" or item.action == "removed" %}text-warning{% elif item.action == "added" %}text-success{% endif %}"> + {{ item.action|default:"???" }} + </td> + <td class="{% if item.action == "seen" %}text-muted{% elif item.action == "error" %}text-danger{% elif item.action == "missing" or item.action == "removed" %}text-warning{% elif item.action == "added" %}text-success{% endif %}"> + {{ item.type|default:"???" }} + </td> + <td class="{% if item.action == "seen" %}text-muted{% elif item.action == "error" %}text-danger{% elif item.action == "missing" or item.action == "removed" %}text-warning{% elif item.action == "added" %}text-success{% endif %}"> + {{ item.source_id|default:"-/-" }} + </td> + <td class="{% if item.action == "seen" %}text-muted{% elif item.action == "error" %}text-danger{% elif item.action == "missing" or item.action == "removed" %}text-warning{% elif item.action == "added" %}text-success{% endif %}"> + {{ item.local_id|default:"-/-" }} + </td> + </tr> + {% endfor %} </tbody> </table> </div> @@ -81,9 +97,8 @@ {% if object.data %} <div class="text-center"> - <a href="{% url 'backoffice:schedulesourceimport-detail-data' pk=object.pk %}" class="btn btn-outline-primary"> - data as JSON - </a> + <a href="{% url 'backoffice:schedulesourceimport-detail-data' pk=object.pk %}" + class="btn btn-outline-primary">data as JSON</a> </div> {% endif %} diff --git a/src/backoffice/templates/backoffice/schedules_index.html b/src/backoffice/templates/backoffice/schedules_index.html index f7ee8dc6dfd725e34b4fd33687e3b9cca68c2ae6..478a0c7c5570375da3fa47d5d3671e4f317a4f6d 100644 --- a/src/backoffice/templates/backoffice/schedules_index.html +++ b/src/backoffice/templates/backoffice/schedules_index.html @@ -5,67 +5,80 @@ {% block content %} <div class="mb-3 align-content-end"> - <a class="btn btn-primary" href="{% url 'backoffice:schedulesource-list' %}">{% trans "backoffice_schedules_tabularview" %}</a> + <a class="btn btn-primary" + href="{% url 'backoffice:schedulesource-list' %}">{% trans "backoffice_schedules_tabularview" %}</a> </div> <div class="row row-cols-1 row-cols-md-3 g-4"> {% for source in sources %} {% with source.latest_import as latest %} - <div class="col"> - <div class="card{% if source.has_running_import %} border-primary{% elif source.is_due %} border-warning{% elif latest.state == 'finished' %} border-success{% endif %}"> - <div class="card-header{% if source.has_running_import %} text-bg-primary{% elif source.is_due %} text-bg-warning{% elif latest.state == 'finished' %} text-bg-success{% endif %}"> - <a href="{% url 'backoffice:schedulesource-detail' pk=source.pk %}" class="float-end ms-3">Details</a> - {% if source.assembly %} - <abbr title="{% trans "Assembly" %}: {{ source.assembly.name }}">{{ source.assembly.slug }}</abbr> - {% else %} - <span title="Wildcard">*</span> - {% endif %} - </div> - <div class="card-body"> - <p> - <span class="text-muted small">{% trans "ScheduleSource__import_url" %} (<span title="{% trans "ScheduleSource__import_type" %}">{{ source.import_type }}</span>):</span><br> - {{ source.import_url_masked }} - </p> - <p> - <span class="text-muted small">{% trans "ScheduleSource__last_import" %}:</span><br> - {{ source.last_import|naturaltime|default:"-/-" }} - </p> - <p> - <span class="text-muted small">{% trans "ScheduleSource__import_frequency" %}:</span><br> - {% if source.frequency %}{{ source.frequency|naturaltimespan }} - {% else %}-/-{% endif %} - </p> - {% if source.has_running_import %} - <p class="text-primary"> - <i class="bi bi-house-gear"></i> {% trans "ScheduleSource__has_running_import" %} + <div class="col"> + <div class="card{% if source.has_running_import %} border-primary{% elif source.is_due %} border-warning{% elif latest.state == 'finished' %} border-success{% endif %}"> + <div class="card-header{% if source.has_running_import %} text-bg-primary{% elif source.is_due %} text-bg-warning{% elif latest.state == 'finished' %} text-bg-success{% endif %}"> + <a href="{% url 'backoffice:schedulesource-detail' pk=source.pk %}" + class="float-end ms-3">Details</a> + {% if source.assembly %} + <abbr title="{% trans "Assembly" %}: {{ source.assembly.name }}">{{ source.assembly.slug }}</abbr> + {% else %} + <span title="Wildcard">*</span> + {% endif %} + </div> + <div class="card-body"> + <p> + <span class="text-muted small">{% trans "ScheduleSource__import_url" %} (<span title="{% trans "ScheduleSource__import_type" %}">{{ source.import_type }}</span>):</span> + <br> + {{ source.import_url_masked }} </p> - {% elif source.is_due %} - <p class="text-warning"> - <i class="bi bi-clock-history"></i> {% trans "ScheduleSource__is_due" %} + <p> + <span class="text-muted small">{% trans "ScheduleSource__last_import" %}:</span> + <br> + {{ source.last_import|naturaltime|default:"-/-" }} </p> - {% endif %} - {% if latest.is_beyond_deadline %} - <p class="text-danger"> - <i class="bi bi-hourglass-bottom"></i> {% trans "ScheduleSource__beyond_deadline" %} + <p> + <span class="text-muted small">{% trans "ScheduleSource__import_frequency" %}:</span> + <br> + {% if source.frequency %} + {{ source.frequency|naturaltimespan }} + {% else %} + -/- + {% endif %} </p> + {% if source.has_running_import %} + <p class="text-primary"> + <i class="bi bi-house-gear"></i> {% trans "ScheduleSource__has_running_import" %} + </p> + {% elif source.is_due %} + <p class="text-warning"> + <i class="bi bi-clock-history"></i> {% trans "ScheduleSource__is_due" %} + </p> + {% endif %} + {% if latest.is_beyond_deadline %} + <p class="text-danger"> + <i class="bi bi-hourglass-bottom"></i> {% trans "ScheduleSource__beyond_deadline" %} + </p> + {% endif %} + </div> + {% if latest %} + <div class="card-footer"> + <p> + <a class="text-muted small fw-bold" + href="{% url 'backoffice:schedulesourceimport-detail' pk=latest.pk %}">{% trans "ScheduleSource__latest_import" %}</a> + <br> + <span class="text-muted small">{% trans "start" %}:</span> + <abbr title="{{ latest.start }}">{{ latest.start|naturaltime|default:"-/-" }}</abbr> + <br> + <span class="text-muted small">{% trans "end" %}:</span> + <abbr title="{{ latest.end }}">{{ latest.end|naturaltime|default:"-/-" }}</abbr> + <br> + <span class="text-muted small">{% trans "state" %}:</span> + {{ latest.get_state_display }} + <br> + </p> + </div> {% endif %} </div> - {% if latest %} - <div class="card-footer"> - <p> - <a class="text-muted small fw-bold" href="{% url 'backoffice:schedulesourceimport-detail' pk=latest.pk %}">{% trans "ScheduleSource__latest_import" %}</a><br> - <span class="text-muted small">{% trans "start" %}:</span> - <abbr title="{{ latest.start }}">{{ latest.start|naturaltime|default:"-/-" }}</abbr><br> - <span class="text-muted small">{% trans "end" %}:</span> - <abbr title="{{ latest.end }}">{{ latest.end|naturaltime|default:"-/-" }}</abbr><br> - <span class="text-muted small">{% trans "state" %}:</span> - {{ latest.get_state_display }}<br> - </p> - </div> - {% endif %} </div> - </div> {% endwith %} {% endfor %} diff --git a/src/backoffice/templates/backoffice/sos.html b/src/backoffice/templates/backoffice/sos.html index a4e2276f519aee9f144cf3c47857bb2c22eb070f..dc9b076bcd46cef96dce35e2d6af781d46980af5 100644 --- a/src/backoffice/templates/backoffice/sos.html +++ b/src/backoffice/templates/backoffice/sos.html @@ -7,7 +7,8 @@ {% endblock %} {% block htmlhead %} - <link rel="stylesheet" href="{% static 'vendor/datatables/datatables.min.css' %}"> + <link rel="stylesheet" + href="{% static 'vendor/datatables/datatables.min.css' %}"> {% endblock htmlhead %} {% block scripts %} diff --git a/src/backoffice/templates/backoffice/sos_create_edit.html b/src/backoffice/templates/backoffice/sos_create_edit.html index a075600877fb24f441c37ae22a5dc85263270723..2a4cd99e721387b75f9e12886231f866ecfa7864 100644 --- a/src/backoffice/templates/backoffice/sos_create_edit.html +++ b/src/backoffice/templates/backoffice/sos_create_edit.html @@ -75,7 +75,9 @@ <div class="card-body"> {% if event.is_public and not form.create %} <div class="alert alert-success d-flex"> - <div class="flex-grow-0 pe-3"><i class="bi bi-megaphone fs-1"></i></div> + <div class="flex-grow-0 pe-3"> + <i class="bi bi-megaphone fs-1"></i> + </div> <div class="flex-grow-1 px-3">{% blocktrans %}SoS__recall__introduction{% endblocktrans %}</div> <div class="d-inline-flex gap-2 align-items-start"> <a class="float-end btn btn-info me-2" @@ -87,9 +89,11 @@ </button> </div> </div> - {% elif not form.create %} + {% elif not form.create %} <div class="alert alert-warning d-flex"> - <div class="flex-grow-0 pe-3"><i class="bi bi-eye-slash fs-1"></i></div> + <div class="flex-grow-0 pe-3"> + <i class="bi bi-eye-slash fs-1"></i> + </div> <div class="flex-grow-1 px-3">{% blocktrans %}SoS__publish__introduction{% endblocktrans %}</div> <div class="d-inline-flex gap-2 align-items-start"> <button class="btn btn-primary float-end" @@ -112,50 +116,47 @@ {% endif %} {% endif %} - <input type="hidden" id="id_is_public" name="{{ form.is_public.name }}" value="{{ form.is_public.value }}"> + <input type="hidden" + id="id_is_public" + name="{{ form.is_public.name }}" + value="{{ form.is_public.value }}"> <p class="fw-bold border-bottom mb-3">{% trans "Event__edit-metadata" %}</p> <div class="row mb-3"> - <div class="col-md-9"> - {% bootstrap_field form.name %} - </div> - <div class="col-md-3"> - {% bootstrap_field form.language %} - </div> + <div class="col-md-9">{% bootstrap_field form.name %}</div> + <div class="col-md-3">{% bootstrap_field form.language %}</div> </div> <div class="row mb-3"> - <div class="col-md-6"> - {% bootstrap_field form.description_de %} - </div> - <div class="col-md-6"> - {% bootstrap_field form.description_en %} - </div> + <div class="col-md-6">{% bootstrap_field form.description_de %}</div> + <div class="col-md-6">{% bootstrap_field form.description_en %}</div> </div> <p class="fw-bold border-bottom mb-3">{% trans "Event__edit-publishing" %}</p> {% if event.is_public %} <div class="mb-3"> <div class="card border-primary-subtle"> - <div class="card-header small bg-primary-subtle"> - {% trans "Event__publisheddata-current" %} - </div> + <div class="card-header small bg-primary-subtle">{% trans "Event__publisheddata-current" %}</div> <div class="card-body small"> <div class="row"> <div class="col-md-3"> - {% trans "Event__schedule_start" %}<br> + {% trans "Event__schedule_start" %} + <br> <strong class="d-inline-block w-100 bg-light">{{ event.schedule_start }}</strong> </div> <div class="col-md-2"> - {% trans "Event__schedule_duration" %}<br> + {% trans "Event__schedule_duration" %} + <br> <strong class="d-inline-block w-100 bg-light">{{ event.schedule_duration }}</strong> </div> <div class="col-md-7"> {% if event.room %} - {% trans "Event__room" %}<br> + {% trans "Event__room" %} + <br> <strong class="d-inline-block w-100 bg-light">{{ event.room.name }}</strong> {% else %} - <strike>{% trans "Event__room" %}</strike> {% trans "Event__location" %}<br> + <strike>{% trans "Event__room" %}</strike> {% trans "Event__location" %} + <br> <strong class="d-inline-block w-100 bg-light">{{ event.location|default:"-/-" }}</strong> {% endif %} </div> @@ -166,39 +167,38 @@ {% endif %} <div class="row mb-0"> - <div class="col-md-4"> - {% bootstrap_field form.schedule_start %} - </div> + <div class="col-md-4">{% bootstrap_field form.schedule_start %}</div> <div class="col-md-8"> <label class="form-label" for="{{ form.room.id_label }}">{% trans "Event__room" %}</label> - <select name="room" class="form-select{% if form.room.errors %} is-invalid{% endif %}" id="{{ form.room.id_label }}"> - <option value=""{% if form.room.value is None %} selected aria-selected="true"{% endif %} class="fst-italic">-/- ({% trans "Event__room__none" %})</option> + <select name="room" + class="form-select{% if form.room.errors %} is-invalid{% endif %}" + id="{{ form.room.id_label }}"> + <option value="" + {% if form.room.value is None %}selected aria-selected="true"{% endif %} + class="fst-italic">-/- ({% trans "Event__room__none" %})</option> {% for r in form.fields.room.queryset %} - <option value="{{ r.id }}"{% if form.room.value|ensure_uuid == r.id %} selected aria-selected="true"{% endif %}> + <option value="{{ r.id }}" + {% if form.room.value|ensure_uuid == r.id %}selected aria-selected="true"{% endif %}> {{ r.name }} {% if r.assembly_id != event.assembly_id %}<span class="text-muted">({{ r.assembly.slug }})</span>{% endif %} </option> {% endfor %} </select> {% if form.room.errors %} - <div class="form-text text-danger">{% for e in form.room.errors %}{{ e }}{% endfor %}</div> + <div class="form-text text-danger"> + {% for e in form.room.errors %}{{ e }}{% endfor %} + </div> {% else %} - <div class="form-text">{% trans "Event__room__choose" %}</div> + <div class="form-text">{% trans "Event__room__choose" %}</div> {% endif %} </div> </div> <div class="row mb-3"> - <div class="col-md-4"> - {% bootstrap_field form.schedule_duration addon_after="Min." %} - </div> - <div class="col-md-8"> - {% bootstrap_field form.location %} - </div> + <div class="col-md-4">{% bootstrap_field form.schedule_duration addon_after="Min." %}</div> + <div class="col-md-8">{% bootstrap_field form.location %}</div> </div> <div class="row mb-3"> - <div class="col-md-8"> - {% bootstrap_field form.tags_list %} - </div> + <div class="col-md-8">{% bootstrap_field form.tags_list %}</div> </div> <button class="btn btn-primary" id="EventFormSubmit">{% trans 'SoS__submit' %}</button> </div> diff --git a/src/backoffice/templates/backoffice/vouchers-list.html b/src/backoffice/templates/backoffice/vouchers-list.html index 7e087a292df8fc2d98706af587fc42dceb82a940..c47ed349b9c5b85cee467335e18f51048566ddce 100644 --- a/src/backoffice/templates/backoffice/vouchers-list.html +++ b/src/backoffice/templates/backoffice/vouchers-list.html @@ -3,55 +3,60 @@ {% block content %} -<div class="card"> - <div class="card-body"> - search vouchers: - <form action="{% url 'backoffice:vouchers' %}" method="POST" class="form-inline">{% csrf_token %} - <input type="text" class="form-control" name="search" placeholder="voucher content" value="{{ search_term }}"> + <div class="card"> + <div class="card-body"> + search vouchers: + <form action="{% url 'backoffice:vouchers' %}" + method="POST" + class="form-inline"> + {% csrf_token %} + <input type="text" + class="form-control" + name="search" + placeholder="voucher content" + value="{{ search_term }}"> - <button type="submit" class="btn btn-primary mx-2">🔍</button> - </form> + <button type="submit" class="btn btn-primary mx-2">🔍</button> + </form> + </div> </div> -</div> -{% if object_list is not None %} -<div class="card mt-3"> - <div class="card-header"> - {{ search_term }} <span class="badge badge-primary">{{ object_list|length }}</span> + {% if object_list is not None %} + <div class="card mt-3"> + <div class="card-header"> + {{ search_term }} <span class="badge badge-primary">{{ object_list|length }}</span> + </div> + <table class="card-body table table-hover table-sm table-striped"> + <thead> + <tr> + <th>Voucher</th> + <th>Content</th> + <th>Target</th> + <th></th> + </tr> + </thead> + <tbody> + {% for obj in object_list %} + <tr {% if not obj.assigned %}style="text-decoration: line-through;"{% endif %}> + <td>{{ obj.voucher }}</td> + <td>{{ obj.content }}</td> + <td> + <a href=" {% if obj.assigned_assembly %} {% url 'backoffice:assembly' pk=obj.target.pk %} {% elif obj.assigned_user %} {% url 'backoffice:user-detail' pk=obj.assigned_user.pk %} {% endif %} ">{{ obj.target }}</a> + </td> + </td> + </tr> + {% endfor %} + </tbody> + {% if more_results %} + <tfoot> + <tr> + <td colspan="3"> + <span class="badge badge-warning" title="there are more results">...</span> + </td> + </tr> + </tfoot> + {% endif %} + </table> </div> - <table class="card-body table table-hover table-sm table-striped"> - <thead> - <tr> - <th>Voucher</th> - <th>Content</th> - <th>Target</th> - <th></th> - </tr> - </thead> - <tbody> - {% for obj in object_list %} - <tr{% if not obj.assigned %} style="text-decoration: line-through;"{% endif %}> - <td>{{ obj.voucher }}</td> - <td>{{ obj.content }}</td> - <td><a href=" - {% if obj.assigned_assembly %} - {% url 'backoffice:assembly' pk=obj.target.pk %} - {% elif obj.assigned_user %} - {% url 'backoffice:user-detail' pk=obj.assigned_user.pk %} - {% endif %} - ">{{ obj.target }}</a></td> - </td> - </tr> - {% endfor %} - </tbody> - {% if more_results %} - <tfoot> - <tr> - <td colspan="3"><span class="badge badge-warning" title="there are more results">...</span></td> - </tr> - </tfoot> - {% endif %} - </table> -</div> {% endif %} {% endblock %} diff --git a/src/backoffice/templates/backoffice/wa-index.html b/src/backoffice/templates/backoffice/wa-index.html index df3a6031163deec2ac5691ef0c457c8d73b5ba7c..c0c2e24e30d53418a25f687e6def35c0915ddc23 100644 --- a/src/backoffice/templates/backoffice/wa-index.html +++ b/src/backoffice/templates/backoffice/wa-index.html @@ -3,60 +3,76 @@ {% block content %} - <div class="card mb-3 border-primary"> - <div class="card-header bg-primary text-white"> - WorkAdventure Admin Actions - </div> - <div class="card-body"> - <h3>Backend (exneuland)</h3> - <form action="" method="POST"> - {% csrf_token %} - <input type="submit" name="push_backend_maps" value="push maps to backend" class="btn btn-secondary"> - </form> - <hr> - <form action="" method="POST"> - {% csrf_token %} - <input type="text" name="wa_session_id" placeholder="WorkAdventure 'user_uuid'" required> - <input type="submit" name="push_userinfo" value="push maps to backend" class="btn btn-secondary"> - </form> - </div> - <div class="card-body border-primary" style="border-top: 1px solid"> - <h3>MapService</h3> - <form action="" method="POST"> - {% csrf_token %} - <input id="cbForce" type="checkbox" name="force" value="1"><label for="cbForce">force (relint)</label> - <input type="submit" name="sync_maps" value="sync all maps now" class="btn btn-secondary"> - </form> - <hr> - <form action="" method="POST"> - {% csrf_token %} - <select name="loglevel" id="loglevel" required> - <option disabled selected value> -- select a loglevel -- </option> - <option value="trace">trace</option> - <option value="debug">debug</option> - <option value="info">info</option> - <option value="warn">warn</option> - <option value="error">error</option> - <option value="fatal">fatal</option> - <option value="panic">panic</option> - </select> - <input type="submit" name="mapservice_loglevel" value="set loglevel" class="btn btn-secondary"> - </form> + <div class="card mb-3 border-primary"> + <div class="card-header bg-primary text-white">WorkAdventure Admin Actions</div> + <div class="card-body"> + <h3>Backend (exneuland)</h3> + <form action="" method="POST"> + {% csrf_token %} + <input type="submit" + name="push_backend_maps" + value="push maps to backend" + class="btn btn-secondary"> + </form> + <hr> + <form action="" method="POST"> + {% csrf_token %} + <input type="text" + name="wa_session_id" + placeholder="WorkAdventure 'user_uuid'" + required> + <input type="submit" + name="push_userinfo" + value="push maps to backend" + class="btn btn-secondary"> + </form> + </div> + <div class="card-body border-primary" style="border-top: 1px solid"> + <h3>MapService</h3> + <form action="" method="POST"> + {% csrf_token %} + <input id="cbForce" type="checkbox" name="force" value="1"> + <label for="cbForce">force (relint)</label> + <input type="submit" + name="sync_maps" + value="sync all maps now" + class="btn btn-secondary"> + </form> + <hr> + <form action="" method="POST"> + {% csrf_token %} + <select name="loglevel" id="loglevel" required> + <option disabled selected value>-- select a loglevel --</option> + <option value="trace">trace</option> + <option value="debug">debug</option> + <option value="info">info</option> + <option value="warn">warn</option> + <option value="error">error</option> + <option value="fatal">fatal</option> + <option value="panic">panic</option> + </select> + <input type="submit" + name="mapservice_loglevel" + value="set loglevel" + class="btn btn-secondary"> + </form> - </div> </div> + </div> - {% if results %} - {% for caption, details in results.items %} - <div class="card mb-3 border-{% if details|get_item:'_errors' %}danger{% else %}success{% endif %}"> - <div class="card-header bg-{% if details|get_item:'_errors' %}danger{% else %}success{% endif %} text-white"> - {{ caption }} - </div> - <div class="card-body"> - {% if '_errors' in details %}{% for e in details|get_item:'_errors' %}<p class="text-danger">{{ e }}</p>{% endfor %}{% endif %} - <pre>{{ details|filter_dict:'_errors'|json_indent }}</pre> - </div> - </div> - {% endfor %} - {% endif %} + {% if results %} + {% for caption, details in results.items %} + <div class="card mb-3 border-{% if details|get_item:'_errors' %}danger{% else %}success{% endif %}"> + <div class="card-header bg-{% if details|get_item:'_errors' %}danger{% else %}success{% endif %} text-white"> + {{ caption }} + </div> + <div class="card-body"> + {% if '_errors' in details %} + {% for e in details|get_item:'_errors' %}<p class="text-danger">{{ e }}</p>{% endfor %} + {% endif %} + <pre>{{ details|filter_dict:'_errors'|json_indent }}</pre> + </div> + </div> + {% endfor %} + {% endif %} {% endblock %} diff --git a/src/backoffice/templates/backoffice/wa-map-detail.html b/src/backoffice/templates/backoffice/wa-map-detail.html index d6ad408a973340c6fd7b2a24701d62f0f12a2eb3..3e3af29d0375d8197eff43d390a57720bc0bfa6e 100644 --- a/src/backoffice/templates/backoffice/wa-map-detail.html +++ b/src/backoffice/templates/backoffice/wa-map-detail.html @@ -3,7 +3,7 @@ {% load i18n %} {% block scripts %} -<script> + <script> $(function() { function changeEdit(id) { $(id).attr('disabled', function(i, v) { return !v; }); @@ -20,178 +20,217 @@ $(function() { $('#form-repository').submit() }); }); -</script> + </script> {% endblock %} {% block content %} -<div class="card mt-3"> - <div class="card-header"> - WorkAdventure map "{{ object.name }}" - </div> - <div class="card-body pb-0"> - <div class="row mb-3"> - <span class="col-sm-2">ID</span> - <span class="col-sm-10">{{ object.id }}</span> - </div> + <div class="card mt-3"> + <div class="card-header">WorkAdventure map "{{ object.name }}"</div> + <div class="card-body pb-0"> + <div class="row mb-3"> + <span class="col-sm-2">ID</span> + <span class="col-sm-10">{{ object.id }}</span> + </div> - <div class="row mb-3"> - <span class="col-sm-2">Assembly</span> - <span class="col-sm-10">{{ object.assembly.slug }} <span class="text-muted">{{ object.assembly.name }}</span></span> - </div> + <div class="row mb-3"> + <span class="col-sm-2">Assembly</span> + <span class="col-sm-10">{{ object.assembly.slug }} <span class="text-muted">{{ object.assembly.name }}</span></span> + </div> - <div class="row mb-3"> - <span class="col-sm-2">Name</span> - <span class="col-sm-10">{{ object.name }}</span> - </div> + <div class="row mb-3"> + <span class="col-sm-2">Name</span> + <span class="col-sm-10">{{ object.name }}</span> + </div> - <div class="row mb-3"> - <span class="col-sm-2">Description</span> - <div class="col-sm-10">{{ object.description_html|default:"-" }}</div> - </div> + <div class="row mb-3"> + <span class="col-sm-2">Description</span> + <div class="col-sm-10">{{ object.description_html|default:"-" }}</div> + </div> - <div class="row mb-3"> - <span class="col-sm-2">Status</span> - <div class="col-sm-10 row"> - <div class="col-sm-4"> - <div class="card"> - <div class="card-header">Assembly</div> - <div class="card-body font-weight-bold"> - {% if object.assembly.is_public %}<span class="text-success">public</span>{% else %}<span class="text-error">not public</span>{% endif %} + <div class="row mb-3"> + <span class="col-sm-2">Status</span> + <div class="col-sm-10 row"> + <div class="col-sm-4"> + <div class="card"> + <div class="card-header">Assembly</div> + <div class="card-body font-weight-bold"> + {% if object.assembly.is_public %} + <span class="text-success">public</span> + {% else %} + <span class="text-error">not public</span> + {% endif %} + </div> </div> </div> - </div> - <div class="col-sm-4"> - <div class="card"> - <div class="card-header">Backend</div> - <div class="card-body font-weight-bold"> - {% include 'backoffice/_room_backend_status.html' %} + <div class="col-sm-4"> + <div class="card"> + <div class="card-header">Backend</div> + <div class="card-body font-weight-bold">{% include 'backoffice/_room_backend_status.html' %}</div> </div> </div> - </div> - <div class="col-sm-4"> - <div class="card"> - <div class="card-header">Map</div> - <div class="card-body font-weight-bold"> - {% include 'backoffice/_room_wa_map_status.html' %} + <div class="col-sm-4"> + <div class="card"> + <div class="card-header">Map</div> + <div class="card-body font-weight-bold">{% include 'backoffice/_room_wa_map_status.html' %}</div> </div> </div> </div> </div> - </div> - <div class="row mb-3"> - <span class="col-sm-2">Repository</span> - <div class="col-sm-10"> - <form class="form" id="form-repository" method="post" enctype="multipart/form-data" > - {% csrf_token %} - <div class="form-row"> - <div class="form-group col-md-6"> - <label class="visually-hidden" for="backend_link">URL</label> - <input type="text" class="input-repository form-control" name="backend_link" placeholder="Backend Link URL" value="{% if object.backend_link %}{{object.backend_link}}{% endif %}" disabled> - <small id="passwordHelpBlock" class="form-text text-muted"> - Backend Link URL - </small> - </div> - <div class="form-group col-md-3"> - <label class="visually-hidden" for="backend_link_branch">Branch</label> - <input type="text" class="input-repository form-control" name="backend_link_branch" placeholder="Backend Branch" value="{% if object.backend_link_branch %}{{object.backend_link_branch}}{% endif %}" disabled> - <small class="form-text text-muted"> - Backend Remote Branch - </small> + <div class="row mb-3"> + <span class="col-sm-2">Repository</span> + <div class="col-sm-10"> + <form class="form" + id="form-repository" + method="post" + enctype="multipart/form-data"> + {% csrf_token %} + <div class="form-row"> + <div class="form-group col-md-6"> + <label class="visually-hidden" for="backend_link">URL</label> + <input type="text" + class="input-repository form-control" + name="backend_link" + placeholder="Backend Link URL" + value="{% if object.backend_link %}{{ object.backend_link }}{% endif %}" + disabled> + <small id="passwordHelpBlock" class="form-text text-muted">Backend Link URL</small> + </div> + <div class="form-group col-md-3"> + <label class="visually-hidden" for="backend_link_branch">Branch</label> + <input type="text" + class="input-repository form-control" + name="backend_link_branch" + placeholder="Backend Branch" + value="{% if object.backend_link_branch %}{{ object.backend_link_branch }}{% endif %}" + disabled> + <small class="form-text text-muted">Backend Remote Branch</small> + </div> + <div class="form-group col-md-3"> + <a href="#" + role="button" + class="btn btn-primary md-2" + id="btn-repository-edit">Edit</a> + <a href="#" + role="button" + class="btn btn-success btn-repository-savecancel md-2" + id="btn-repository-save" + style="display:none">Save</a> + <a href="#" + role="button" + class="btn btn-light btn-repository-savecancel md-2" + id="btn-repository-cancel" + style="display:none">Cancel</a> + </div> </div> - <div class="form-group col-md-3"> - <a href="#" role="button" class="btn btn-primary md-2" id="btn-repository-edit">Edit</a> - <a href="#" role="button" class="btn btn-success btn-repository-savecancel md-2" id="btn-repository-save" style="display:none">Save</a> - <a href="#" role="button" class="btn btn-light btn-repository-savecancel md-2" id="btn-repository-cancel" style="display:none">Cancel</a> - </div> - </div> - </form> + </form> + </div> </div> - </div> - <div class="row mb-3"> - <span class="col-sm-2">Exit URL</span> - <div class="col-sm-10"> - <form class="form" id="form-exit-url" method="post" enctype="multipart/form-data" > - {% csrf_token %} - <div class="form-row"> - <div class="form-group col-md-9"> - <label class="visually-hidden" for="backend_exit_url">URL</label> - <input type="text" class="input-exit-url form-control" name="backend_exit_url" placeholder="Backend Exit URL" value="{% if object.backend_data.exit_url %}{{object.backend_data.exit_url}}{% endif %}"> - <small class="form-text text-muted"> - WorkAdventure URL to exit the user map to the lobby. - </small> + <div class="row mb-3"> + <span class="col-sm-2">Exit URL</span> + <div class="col-sm-10"> + <form class="form" + id="form-exit-url" + method="post" + enctype="multipart/form-data"> + {% csrf_token %} + <div class="form-row"> + <div class="form-group col-md-9"> + <label class="visually-hidden" for="backend_exit_url">URL</label> + <input type="text" + class="input-exit-url form-control" + name="backend_exit_url" + placeholder="Backend Exit URL" + value="{% if object.backend_data.exit_url %}{{ object.backend_data.exit_url }}{% endif %}"> + <small class="form-text text-muted">WorkAdventure URL to exit the user map to the lobby.</small> + </div> + <div class="form-group col-md-3"> + <input type="submit" + class="btn btn-success btn-exit-url-savecancel md-2" + id="btn-exit-url-save" + name="submit_backend_exit_url" + value="Save"> + </div> </div> - <div class="form-group col-md-3"> - <input type="submit" class="btn btn-success btn-exit-url-savecancel md-2" id="btn-exit-url-save" name="submit_backend_exit_url" value="Save"> - </div> - </div> - </form> + </form> + </div> </div> - </div> + </div> </div> -</div> -<div class="row"> + <div class="row"> <div class="col col-md-8"> - <div class="card mt-3"> - <div class="card-header"> - Map Service Data (Director) - </div> - <div class="card-body"> - <dl> - {% for k, v in room.director_data.items %} - <dt>{{ k }}</dt> - <dd>{% if k == "url" %}<a href="{{ v }}" target="_blank">{{ v }}</a> - {% elif k == "publishedSince" or k == "publishedScince" %}{{ v|from_unixtimestamp }} <span class="text-muted">({{ v|from_unixtimestamp|naturaltime }})</span> - {% else %}<code><pre>{{ v|json_indent }}</pre></code> - {% endif %}</dd> - {% endfor %} - </dl> - </div> + <div class="card mt-3"> + <div class="card-header">Map Service Data (Director)</div> + <div class="card-body"> + <dl> + {% for k, v in room.director_data.items %} + <dt>{{ k }}</dt> + <dd> + {% if k == "url" %} + <a href="{{ v }}" target="_blank">{{ v }}</a> + {% elif k == "publishedSince" or k == "publishedScince" %} + {{ v|from_unixtimestamp }} <span class="text-muted">({{ v|from_unixtimestamp|naturaltime }})</span> + {% else %} + <code><pre>{{ v|json_indent }}</pre></code> + {% endif %} + </dd> + {% endfor %} + </dl> </div> + </div> </div> <div class="col col-md-4"> - <div class="card mt-3"> - <div class="card-header"> - Actions - </div> - <div class="card-body"> - <form action="{% url 'backoffice:workadventure-map-newsession' pk=object.pk %}" method="POST">{% csrf_token %} - <input type="text" class="form-control" name="username" value="" placeholder="username (optional)" title="empty = you"> - <button type="submit" class="btn btn-secondary">create new session</button> - </form> - <hr> - <form action="{% url 'backoffice:workadventure-map-sync' pk=object.pk %}" method="POST">{% csrf_token %} - <input id="cbForce" type="checkbox" name="force" value="1"><label for="cbForce">force (relint)</label> - <button type="submit" class="btn btn-secondary">sync</button> - </form> - </div> + <div class="card mt-3"> + <div class="card-header">Actions</div> + <div class="card-body"> + <form action="{% url 'backoffice:workadventure-map-newsession' pk=object.pk %}" + method="POST"> + {% csrf_token %} + <input type="text" + class="form-control" + name="username" + value="" + placeholder="username (optional)" + title="empty = you"> + <button type="submit" class="btn btn-secondary">create new session</button> + </form> + <hr> + <form action="{% url 'backoffice:workadventure-map-sync' pk=object.pk %}" + method="POST"> + {% csrf_token %} + <input id="cbForce" type="checkbox" name="force" value="1"> + <label for="cbForce">force (relint)</label> + <button type="submit" class="btn btn-secondary">sync</button> + </form> </div> + </div> </div> -</div> + </div> -{% if wa_linter %} -<div class="row"> - <div class="col col-md-12"> + {% if wa_linter %} + <div class="row"> + <div class="col col-md-12"> <div class="card mt-3"> <div class="card-header bg-{{ wa_linter.status }}"> - <span class="float-right small bg-white p-1"> - preview from <a href="{% url 'backoffice:assembly-room' assembly=room.assembly.id pk=room.id %}" title="maybe 403 for u?">assembly backoffice room page</a> - </span> - {{ wa_linter.status_title }} + <span class="float-right small bg-white p-1"> + preview from <a href="{% url 'backoffice:assembly-room' assembly=room.assembly.id pk=room.id %}" + title="maybe 403 for u?">assembly backoffice room page</a> + </span> + {{ wa_linter.status_title }} </div> <div class="card-body"> - <p>{{ wa_linter.status_text }}</p> - {% include "backoffice/assembly_room_wa_linterblock.html" %} + <p>{{ wa_linter.status_text }}</p> + {% include "backoffice/assembly_room_wa_linterblock.html" %} </div> </div> + </div> </div> -</div> -{% endif %} + {% endif %} {% endblock %} diff --git a/src/backoffice/templates/backoffice/wa-map-list.html b/src/backoffice/templates/backoffice/wa-map-list.html index fb01261e8d87c689c266f313a85b230342db233d..dc283399dc8f696b3bdbbf8a54450a007dd81aff 100644 --- a/src/backoffice/templates/backoffice/wa-map-list.html +++ b/src/backoffice/templates/backoffice/wa-map-list.html @@ -3,12 +3,13 @@ {% load static %} {% block htmlhead %} - <link rel="stylesheet" href="{% static 'vendor/datatables/datatables.min.css' %}"> + <link rel="stylesheet" + href="{% static 'vendor/datatables/datatables.min.css' %}"> {% endblock %} {% block scripts %} - <script src="{% static 'vendor/datatables/datatables.min.js' %}"></script> - <script> + <script src="{% static 'vendor/datatables/datatables.min.js' %}"></script> + <script> $(document).ready(function() { $('#wa-maps').DataTable({ pageLength: 100, @@ -38,43 +39,46 @@ } }); }); - </script> + </script> {% endblock %} {% block content %} -{% if object_list is not None %} -<div class="card mt-3"> - <div class="card-header"> - WorkAdventure maps <span class="badge badge-primary">{{ object_list|length }}</span> - </div> - <table class="card-body table table-hover table-sm table-striped" id="wa-maps"> - <thead> - <tr> - <th>Assembly</th> - <th>Name</th> - <th>State</th> - <th>Occupants</th> - <th>Capacity</th> - </tr> - </thead> - <tbody> - {% for obj in object_list %} - <tr> - <td>{{ obj.assembly.name }}</td> - <td><a href="{% url 'backoffice:workadventure-map-detail' pk=obj.pk %}">{{ obj.name|default:"-?-" }}</a></td> - <td> - <span class="{% if obj.assembly.is_public_assembly %}text-success{% else %}text-danger{% endif %}">Assembly</span> - {% include 'backoffice/_room_backend_status.html' with object=obj backend_status_display="Backend" %} - {% include 'backoffice/_room_wa_map_status.html' with object=obj display="Map" %} - </td> - <td>{{ obj.occupants|default:"-" }}</td> - <td>{{ obj.capacity|default:"-" }}</td> - </tr> - {% endfor %} - </tbody> - </table> -</div> -{% endif %} + {% if object_list is not None %} + <div class="card mt-3"> + <div class="card-header"> + WorkAdventure maps <span class="badge badge-primary">{{ object_list|length }}</span> + </div> + <table class="card-body table table-hover table-sm table-striped" + id="wa-maps"> + <thead> + <tr> + <th>Assembly</th> + <th>Name</th> + <th>State</th> + <th>Occupants</th> + <th>Capacity</th> + </tr> + </thead> + <tbody> + {% for obj in object_list %} + <tr> + <td>{{ obj.assembly.name }}</td> + <td> + <a href="{% url 'backoffice:workadventure-map-detail' pk=obj.pk %}">{{ obj.name|default:"-?-" }}</a> + </td> + <td> + <span class="{% if obj.assembly.is_public_assembly %}text-success{% else %}text-danger{% endif %}">Assembly</span> + {% include 'backoffice/_room_backend_status.html' with object=obj backend_status_display="Backend" %} + {% include 'backoffice/_room_wa_map_status.html' with object=obj display="Map" %} + </td> + <td>{{ obj.occupants|default:"-" }}</td> + <td>{{ obj.capacity|default:"-" }}</td> + </tr> + {% endfor %} + </tbody> + </table> + </div> + {% endif %} {% endblock %} diff --git a/src/backoffice/templates/backoffice/wa-session-detail.html b/src/backoffice/templates/backoffice/wa-session-detail.html index 991669b9227a990782da6ef1f3080eb61c8d1e09..a981fafbab7bfa1a3cb98f3fcc22b64039c61aee 100644 --- a/src/backoffice/templates/backoffice/wa-session-detail.html +++ b/src/backoffice/templates/backoffice/wa-session-detail.html @@ -3,138 +3,152 @@ {% block content %} - <div class="card mt-3"> - <div class="card-header"> - <form method="POST" action="{% url 'backoffice:workadventure-session-delete' pk=object.id %}"> - {% csrf_token %} - <input type="hidden" name="terminate" value="1"> - <button class="btn btn-danger btn-sm ms-3 float-right" type="submit">terminate session</button> - </form> - <form method="POST" action="{% url 'backoffice:workadventure-session-delete' pk=object.id %}"> - {% csrf_token %} - <input type="hidden" name="terminate" value="0"> - <button class="btn btn-outline-danger btn-sm ms-3 float-right" type="submit">delete session</button> - </form> - WorkAdventure session {{ object.id }} + <div class="card mt-3"> + <div class="card-header"> + <form method="POST" + action="{% url 'backoffice:workadventure-session-delete' pk=object.id %}"> + {% csrf_token %} + <input type="hidden" name="terminate" value="1"> + <button class="btn btn-danger btn-sm ms-3 float-right" type="submit">terminate session</button> + </form> + <form method="POST" + action="{% url 'backoffice:workadventure-session-delete' pk=object.id %}"> + {% csrf_token %} + <input type="hidden" name="terminate" value="0"> + <button class="btn btn-outline-danger btn-sm ms-3 float-right" type="submit">delete session</button> + </form> + WorkAdventure session {{ object.id }} + </div> + <div class="card-body"> + + <div class="row mb-3"> + <span class="col-sm-2">User</span> + <span class="col-sm-10">{{ object.user }}</span> + </div> + + <div class="row mb-3"> + <span class="col-sm-2">Token</span> + <span class="col-sm-10"> + {% if object.token %} + {{ object.token }} + <a class="btn btn-secondary btn-sm" + href="{{ object.get_token_url }}" + {% if object.user != request.user %} onclick="return confirm('This session is not yours. Really really really sure?');"{% endif %}>use token</a> + {% else %} + <span class="text-muted" style="text-decoration: line-through;">{{ object.additional_data|get_item:"used_token" }}</span> + {% endif %} + </span> + </div> + + <div class="row mb-3"> + <span class="col-sm-2">Token Expiry</span> + <span class="col-sm-10">{{ object.token_expiry }}</span> + </div> + + <div class="row mb-3"> + <span class="col-sm-2">Room</span> + <span class="col-sm-10"> + <span title="{% trans 'Assembly' %}">{{ object.room.assembly }}</span> + > + <a href="{% url 'backoffice:workadventure-map-detail' pk=object.room_id %}">{{ object.room }}</a> + </span> + </div> + + <div class="row mb-3"> + <label class="form-label col-sm-2" for="roomMessages">Messages</label> + <div class="col-sm-10"> + <ul> + {% for msg in object.messages %}<li>{{ msg }}</li>{% endfor %} + </ul> </div> - <div class="card-body"> - - <div class="row mb-3"> - <span class="col-sm-2">User</span> - <span class="col-sm-10">{{ object.user }}</span> - </div> - - <div class="row mb-3"> - <span class="col-sm-2">Token</span> - <span class="col-sm-10"> - {% if object.token %} - {{ object.token }} - <a class="btn btn-secondary btn-sm" href="{{ object.get_token_url }}" - {% if object.user != request.user %} - onclick="return confirm('This session is not yours. Really really really sure?');"{% endif %}>use token</a> - {% else %} - <span class="text-muted" style="text-decoration: line-through;">{{ object.additional_data|get_item:"used_token" }}</span> - {% endif %} - </span> - </div> - - <div class="row mb-3"> - <span class="col-sm-2">Token Expiry</span> - <span class="col-sm-10">{{ object.token_expiry }}</span> - </div> + </div> - <div class="row mb-3"> - <span class="col-sm-2">Room</span> - <span class="col-sm-10"> - <span title="{% trans 'Assembly' %}">{{ object.room.assembly }}</span> - > - <a href="{% url 'backoffice:workadventure-map-detail' pk=object.room_id %}">{{ object.room }}</a> - </span> - </div> - - <div class="row mb-3"> - <label class="form-label col-sm-2" for="roomMessages">Messages</label> - <div class="col-sm-10"> - <ul>{% for msg in object.messages %} - <li>{{ msg }}</li>{% endfor %}</ul> - </div> - </div> + <div class="row mb-3"> + <label class="form-label col-sm-2" for="roomData">Additional Data</label> + <div class="col-sm-10"> + <pre><code>{{ object.additional_data|json_indent }}</code></pre> + </div> + </div> - <div class="row mb-3"> - <label class="form-label col-sm-2" for="roomData">Additional Data</label> - <div class="col-sm-10"> - <pre><code>{{ object.additional_data|json_indent }}</code></pre> - </div> - </div> + </div> + </div> + <div class="row"> + <div class="col col-md-6"> + <div class="card mt-3"> + <div class="card-header"> + <form method="POST" + action="{% url 'backoffice:workadventure-session-pushdata' pk=object.id %}"> + {% csrf_token %} + <button class="btn btn-sm btn-primary float-right" + type="submit" + title="push data to backend">push</button> + </form> + Export Data (as seen by WA backend) </div> - </div> + <div class="card-body"> + {% if exported_data %} + <pre><code>{{ exported_data }}</code></pre> + {% else %} + -/- + {% endif %} + </div> + </div> - <div class="row"> - <div class="col col-md-6"> - <div class="card mt-3"> - <div class="card-header"> - <form method="POST" action="{% url 'backoffice:workadventure-session-pushdata' pk=object.id %}"> - {% csrf_token %} - <button class="btn btn-sm btn-primary float-right" type="submit" title="push data to backend">push</button> - </form> - Export Data (as seen by WA backend) - </div> - <div class="card-body"> - {% if exported_data %} - <pre><code>{{ exported_data }}</code></pre> - {% else %} - -/- - {% endif %} - </div> + </div> + <div class="col col-md-6"> + <div class="card mt-3"> + <div class="card-header">Actions (no automatic push!)</div> + <div class="card-body"> + <form method="POST" + action="{% url 'backoffice:workadventure-session-addmsg' pk=object.id %}"> + {% csrf_token %} + + <div class="input-group mb-3"> + <input type="text" + class="form-control" + name="message" + placeholder="Enter text ..." + aria-label="Message to be added" + aria-describedby="btnAddMsg"> + <button class="btn btn-outline-secondary" type="submit" id="btnAddMsg">add message</button> </div> - - </div> - <div class="col col-md-6"> - <div class="card mt-3"> - <div class="card-header"> - Actions (no automatic push!) - </div> - <div class="card-body"> - <form method="POST" action="{% url 'backoffice:workadventure-session-addmsg' pk=object.id %}"> - {% csrf_token %} - - <div class="input-group mb-3"> - <input type="text" class="form-control" name="message" placeholder="Enter text ..." - aria-label="Message to be added" aria-describedby="btnAddMsg"> - <button class="btn btn-outline-secondary" type="submit" id="btnAddMsg">add message</button> - </div> - </form> - <hr> - - <form method="POST" action="{% url 'backoffice:workadventure-session-setdata' pk=object.id %}"> - {% csrf_token %} - - <div class="input-group mb-3"> - <input type="hidden" name="key" value="color"> - <input type="color" class="form-control" name="value" placeholder="hex color" - aria-label="color to set" aria-describedby="btnSetColor" - value="{{ exported_data_color }}"> - <button class="btn btn-outline-secondary" type="submit" id="btnSetColor">set nick color - </button> - </div> - </form> - <hr> - - <form method="POST" action="{% url 'backoffice:workadventure-session-setdata' pk=object.id %}"> - {% csrf_token %} - - <div class="input-group mb-3"> - <span class="input-group-text">key:</span> - <input type="text" class="form-control" name="key" placeholder="key"> - <span class="input-group-text">value:</span> - <input type="text" class="form-control" name="value" placeholder="value"> - <button class="btn btn-outline-secondary" type="submit" id="btnSetData">set data</button> - </div> - </form> - </div> + </form> + <hr> + + <form method="POST" + action="{% url 'backoffice:workadventure-session-setdata' pk=object.id %}"> + {% csrf_token %} + + <div class="input-group mb-3"> + <input type="hidden" name="key" value="color"> + <input type="color" + class="form-control" + name="value" + placeholder="hex color" + aria-label="color to set" + aria-describedby="btnSetColor" + value="{{ exported_data_color }}"> + <button class="btn btn-outline-secondary" type="submit" id="btnSetColor">set nick color</button> + </div> + </form> + <hr> + + <form method="POST" + action="{% url 'backoffice:workadventure-session-setdata' pk=object.id %}"> + {% csrf_token %} + + <div class="input-group mb-3"> + <span class="input-group-text">key:</span> + <input type="text" class="form-control" name="key" placeholder="key"> + <span class="input-group-text">value:</span> + <input type="text" class="form-control" name="value" placeholder="value"> + <button class="btn btn-outline-secondary" type="submit" id="btnSetData">set data</button> </div> + </form> </div> + </div> </div> + </div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/wa-session-list.html b/src/backoffice/templates/backoffice/wa-session-list.html index 5351bdc3a72453e7993ba3274c8ea0bebd50be87..6a2ed27ff401d8e8c060f2db223e3b1ffe248937 100644 --- a/src/backoffice/templates/backoffice/wa-session-list.html +++ b/src/backoffice/templates/backoffice/wa-session-list.html @@ -3,44 +3,49 @@ {% block content %} -<div class="card mt-3"> + <div class="card mt-3"> <div class="card-body"> - <form action="" method="GET" class="form-inline"> - <div class="form-group"> - <input type="text" class="form-control" name="q" value="{{ q|default:"" }}" placeholder="session id (user id), token or username"> - <button type="submit" class="btn btn-outline-secondary">🔍</button> - </div> - </form> + <form action="" method="GET" class="form-inline"> + <div class="form-group"> + <input type="text" + class="form-control" + name="q" + value="{{ q|default:"" }}" + placeholder="session id (user id), token or username"> + <button type="submit" class="btn btn-outline-secondary">🔍</button> + </div> + </form> </div> -</div> - -{% if object_list %} -<div class="card mt-3"> - <div class="card-header"> - WorkAdventure sessions: <code>{{ q }}</code> - <span class="badge badge-primary">{{ object_list|length }}</span> </div> - <table class="card-body table table-hover table-sm table-striped"> - <thead> - <tr> - <th>ID</th> - <th>User</th> - <th>TODO</th> - <th></th> - </tr> - </thead> - <tbody> - {% for obj in object_list %} - <tr> - <td><a href="{% url 'backoffice:workadventure-session-detail' pk=obj.id %}">{{ obj.id }}</a></td> - <td>{{ obj.user }}</td> - <td>-/-</td> - <td> - </td> - </tr> - {% endfor %} - </tbody> - </table> -</div> -{% endif %} + + {% if object_list %} + <div class="card mt-3"> + <div class="card-header"> + WorkAdventure sessions: <code>{{ q }}</code> + <span class="badge badge-primary">{{ object_list|length }}</span> + </div> + <table class="card-body table table-hover table-sm table-striped"> + <thead> + <tr> + <th>ID</th> + <th>User</th> + <th>TODO</th> + <th></th> + </tr> + </thead> + <tbody> + {% for obj in object_list %} + <tr> + <td> + <a href="{% url 'backoffice:workadventure-session-detail' pk=obj.id %}">{{ obj.id }}</a> + </td> + <td>{{ obj.user }}</td> + <td>-/-</td> + <td></td> + </tr> + {% endfor %} + </tbody> + </table> + </div> + {% endif %} {% endblock %} diff --git a/src/backoffice/templates/backoffice/wa-texture-form.html b/src/backoffice/templates/backoffice/wa-texture-form.html index fa928752d8acad62ea0ae54bc4fafc9266b67def..1a5c44ab39684da1af8c3cc98e4fea85c5907afd 100644 --- a/src/backoffice/templates/backoffice/wa-texture-form.html +++ b/src/backoffice/templates/backoffice/wa-texture-form.html @@ -4,93 +4,100 @@ {% block content %} - <div class="card mt-3"> - <div class="card-header"> - {% if object.id %} - <form action="{% url 'backoffice:workadventure-texture-remove' pk=object.id %}" method="POST"> - {% csrf_token %} - <button type="submit" class="btn btn-danger btn-sm float-right">delete</button> - </form> - {% endif %} - WorkAdventure Texture {{ object.id|default:"(NEW)" }} - </div> - <div class="card-body"> - <form action="" method="POST"> - {% csrf_token %} + <div class="card mt-3"> + <div class="card-header"> + {% if object.id %} + <form action="{% url 'backoffice:workadventure-texture-remove' pk=object.id %}" + method="POST"> + {% csrf_token %} + <button type="submit" class="btn btn-danger btn-sm float-right">delete</button> + </form> + {% endif %} + WorkAdventure Texture {{ object.id|default:"(NEW)" }} + </div> + <div class="card-body"> + <form action="" method="POST"> + {% csrf_token %} - {% bootstrap_form form %} + {% bootstrap_form form %} - <button type="submit" class="btn btn-primary">Speichern</button> - </form> - </div> + <button type="submit" class="btn btn-primary">Speichern</button> + </form> </div> + </div> - {% if object.pk %} - <div class="row mb-5"> - <div class="col col-md-4"> - <div class="card mt-3"> - <div class="card-header"> - assigned users - </div> - <div class="card-body"> - <form class="form-inline" action="{% url 'backoffice:workadventure-texture-user-assign' pk=object.id %}" method="POST">{% csrf_token %} - <input type="text" name="username" value="" placeholder="username" required> - <button type="submit" class="btn btn-sm btn-outline-success">assign</button> - </form> - <ul> - {% for u in object.assigned_conference_members.all %} - <li> - <form class="form-inline" action="{% url 'backoffice:workadventure-texture-user-remove' pk=object.id %}" method="POST"> - {% csrf_token %} - <input type="hidden" name="userid" value="{{ u.user_id }}"> - <label>{{ u.user.username }}</label> - <button type="submit" class="btn btn-sm btn-danger ms-3">del</button> - </form> - </li> - {% endfor %} - </ul> - </div> - </div> - </div> - <div class="col col-md-4"> - <div class="card mt-3"> - <div class="card-header"> - assigned assemblies - </div> - <div class="card-body"> - <form class="form-inline" action="{% url 'backoffice:workadventure-texture-assembly-assign' pk=object.id %}" method="POST">{% csrf_token %} - <input type="text" name="assembly_slug" value="" placeholder="assembly slug" required> - <button type="submit" class="btn btn-sm btn-outline-success">assign</button> - </form> - <ul> - {% for a in object.assigned_assemblies.all %} - <li> - <form class="form-inline" action="{% url 'backoffice:workadventure-texture-assembly-remove' pk=object.id %}" method="POST"> - {% csrf_token %} - <input type="hidden" name="assembly" value="{{ a.id }}"> - <label title="{{ a.name }}">{{ a.slug }}</label> - <button type="submit" class="btn btn-sm btn-danger ms-3">del</button> - </form> - </li> - {% endfor %} - </ul> - </div> - </div> - </div> - <div class="col col-md-4"> - <div class="card mt-3"> - <div class="card-header"> - assigned groups - </div> - <div class="card-body"> - <ul> - {% for g in object.assigned_groups.all %} - <li>{{ g.name }}</li> - {% endfor %} - </ul> - </div> - </div> - </div> + {% if object.pk %} + <div class="row mb-5"> + <div class="col col-md-4"> + <div class="card mt-3"> + <div class="card-header">assigned users</div> + <div class="card-body"> + <form class="form-inline" + action="{% url 'backoffice:workadventure-texture-user-assign' pk=object.id %}" + method="POST"> + {% csrf_token %} + <input type="text" name="username" value="" placeholder="username" required> + <button type="submit" class="btn btn-sm btn-outline-success">assign</button> + </form> + <ul> + {% for u in object.assigned_conference_members.all %} + <li> + <form class="form-inline" + action="{% url 'backoffice:workadventure-texture-user-remove' pk=object.id %}" + method="POST"> + {% csrf_token %} + <input type="hidden" name="userid" value="{{ u.user_id }}"> + <label>{{ u.user.username }}</label> + <button type="submit" class="btn btn-sm btn-danger ms-3">del</button> + </form> + </li> + {% endfor %} + </ul> + </div> + </div> + </div> + <div class="col col-md-4"> + <div class="card mt-3"> + <div class="card-header">assigned assemblies</div> + <div class="card-body"> + <form class="form-inline" + action="{% url 'backoffice:workadventure-texture-assembly-assign' pk=object.id %}" + method="POST"> + {% csrf_token %} + <input type="text" + name="assembly_slug" + value="" + placeholder="assembly slug" + required> + <button type="submit" class="btn btn-sm btn-outline-success">assign</button> + </form> + <ul> + {% for a in object.assigned_assemblies.all %} + <li> + <form class="form-inline" + action="{% url 'backoffice:workadventure-texture-assembly-remove' pk=object.id %}" + method="POST"> + {% csrf_token %} + <input type="hidden" name="assembly" value="{{ a.id }}"> + <label title="{{ a.name }}">{{ a.slug }}</label> + <button type="submit" class="btn btn-sm btn-danger ms-3">del</button> + </form> + </li> + {% endfor %} + </ul> + </div> </div> - {% endif %} + </div> + <div class="col col-md-4"> + <div class="card mt-3"> + <div class="card-header">assigned groups</div> + <div class="card-body"> + <ul> + {% for g in object.assigned_groups.all %}<li>{{ g.name }}</li>{% endfor %} + </ul> + </div> + </div> + </div> + </div> + {% endif %} {% endblock %} diff --git a/src/backoffice/templates/backoffice/wa-texture-list.html b/src/backoffice/templates/backoffice/wa-texture-list.html index 3f9e9e3feaed5551d44a67da89842a861ef7736e..a1bbd3a0897e21c6049b912410204f84f1f9c22d 100644 --- a/src/backoffice/templates/backoffice/wa-texture-list.html +++ b/src/backoffice/templates/backoffice/wa-texture-list.html @@ -2,34 +2,38 @@ {% load i18n %} {% block content %} - <div class="card mt-3"> - <div class="card-header"> - <a href="{% url 'backoffice:workadventure-texture-add' %}" class="btn btn-sm btn-secondary float-right">add</a> - WorkAdventure Textures - <span class="badge badge-primary">{{ object_list|length }}</span> - </div> - <table class="card-body table table-hover table-sm table-striped"> - <thead> - <tr> - <th>number</th> - <th>name</th> - <th>level</th> - <th>rights</th> - <th></th> - </tr> - </thead> - <tbody> - {% for obj in object_list %} - <tr> - <td><a href="{% url 'backoffice:workadventure-texture-edit' pk=obj.id %}">{{ obj.number }}</a></td> - <td><a href="{% url 'backoffice:workadventure-texture-edit' pk=obj.id %}">{{ obj.name }}</a></td> - <td>{{ obj.level }}</td> - <td>{{ obj.rights }}</td> - <td> - </td> - </tr> - {% endfor %} - </tbody> - </table> + <div class="card mt-3"> + <div class="card-header"> + <a href="{% url 'backoffice:workadventure-texture-add' %}" + class="btn btn-sm btn-secondary float-right">add</a> + WorkAdventure Textures + <span class="badge badge-primary">{{ object_list|length }}</span> </div> + <table class="card-body table table-hover table-sm table-striped"> + <thead> + <tr> + <th>number</th> + <th>name</th> + <th>level</th> + <th>rights</th> + <th></th> + </tr> + </thead> + <tbody> + {% for obj in object_list %} + <tr> + <td> + <a href="{% url 'backoffice:workadventure-texture-edit' pk=obj.id %}">{{ obj.number }}</a> + </td> + <td> + <a href="{% url 'backoffice:workadventure-texture-edit' pk=obj.id %}">{{ obj.name }}</a> + </td> + <td>{{ obj.level }}</td> + <td>{{ obj.rights }}</td> + <td></td> + </tr> + {% endfor %} + </tbody> + </table> + </div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/wiki_lock_list.html b/src/backoffice/templates/backoffice/wiki_lock_list.html index 943ad50f18de37eb627eeefb6758f30e6b1b0281..32f6c63b08d9f474a1e5af89ebf40f78c50d033d 100644 --- a/src/backoffice/templates/backoffice/wiki_lock_list.html +++ b/src/backoffice/templates/backoffice/wiki_lock_list.html @@ -28,7 +28,10 @@ }); }); </script> - <form method="POST" action="" enctype="multipart/form-data" id="dropLockForm"> + <form method="POST" + action="" + enctype="multipart/form-data" + id="dropLockForm"> {% csrf_token %} <input type="hidden" name="remove" value="" id="dropLockId"> </form> @@ -38,35 +41,41 @@ {% block content %} <div class="card mt-2"> - <div class="card-header"> - {% trans "Locks" %} - </div> - <div class="card-body"> - <table class="table table-sm" id="locks"> - <thead> - <tr> - <th>{% trans "StaticPage" %}</th> - <th>Timeout</th> - <th>User</th> - <th>UUID</th> - <th> </th> - </tr> - </thead> - <tbody> - {% for lock in object_list %} - <tr class="{% if not lock.is_valid %}text-decoration-line-through text-muted{% endif %}"> - <td><abbr title="{{ lock.content_object.title }}">{{ lock.content_object.slug }}</abbr> <span title="{% trans "StaticPage__language" %}">({{ lock.content_object.language|default:"*" }})</span></td> - <td><abbr title="{{ lock.timeout|date:"c" }}">{{ lock.timeout|naturaltime }}</abbr></td> - <td>{{ lock.lock_holder.username }}</td> - <td class="small">{{ lock.pk }}</td> - <td> - <button class="btn btn-sm btn-danger" data-action="drop" data-id="{{ lock.pk }}"><i class="bi bi-trash"></i></button> - </td> + <div class="card-header">{% trans "Locks" %}</div> + <div class="card-body"> + <table class="table table-sm" id="locks"> + <thead> + <tr> + <th>{% trans "StaticPage" %}</th> + <th>Timeout</th> + <th>User</th> + <th>UUID</th> + <th> </th> </tr> - {% endfor %} - </tbody> - </table> + </thead> + <tbody> + {% for lock in object_list %} + <tr class="{% if not lock.is_valid %}text-decoration-line-through text-muted{% endif %}"> + <td> + <abbr title="{{ lock.content_object.title }}">{{ lock.content_object.slug }}</abbr> <span title="{% trans "StaticPage__language" %}">({{ lock.content_object.language|default:"*" }})</span> + </td> + <td> + <abbr title="{{ lock.timeout|date:"c" }}">{{ lock.timeout|naturaltime }}</abbr> + </td> + <td>{{ lock.lock_holder.username }}</td> + <td class="small">{{ lock.pk }}</td> + <td> + <button class="btn btn-sm btn-danger" + data-action="drop" + data-id="{{ lock.pk }}"> + <i class="bi bi-trash"></i> + </button> + </td> + </tr> + {% endfor %} + </tbody> + </table> + </div> </div> -</div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/wiki_namespace_list.html b/src/backoffice/templates/backoffice/wiki_namespace_list.html index 18f9e60a48bf269ca6328550ae64262da26d1e7b..e2bcc6ef58ad5b526cabd63d5a6101a7edf932cf 100644 --- a/src/backoffice/templates/backoffice/wiki_namespace_list.html +++ b/src/backoffice/templates/backoffice/wiki_namespace_list.html @@ -4,27 +4,27 @@ {% block content %} <div class="card mt-2"> - <div class="card-header"> - {% trans "StaticPageNamespaces" %} - </div> - <div class="card-body"> - <table class="table table-sm"> - <thead> - <tr> - <th>{% trans "StaticPageNamespace__prefix" %}</th> - <th>{% trans "StaticPageNamespace__groups" %}</th> - </tr> - </thead> - <tbody> - {% for namespace in object_list %} + <div class="card-header">{% trans "StaticPageNamespaces" %}</div> + <div class="card-body"> + <table class="table table-sm"> + <thead> <tr> - <td>{{ namespace.prefix }}</td> - <td>{% for grp in namespace.groups %}<span class="badge bg-secondary mx-1">{{ grp }}</span>{% endfor %}</td> + <th>{% trans "StaticPageNamespace__prefix" %}</th> + <th>{% trans "StaticPageNamespace__groups" %}</th> </tr> - {% endfor %} - </tbody> - </table> + </thead> + <tbody> + {% for namespace in object_list %} + <tr> + <td>{{ namespace.prefix }}</td> + <td> + {% for grp in namespace.groups %}<span class="badge bg-secondary mx-1">{{ grp }}</span>{% endfor %} + </td> + </tr> + {% endfor %} + </tbody> + </table> + </div> </div> -</div> {% endblock %} diff --git a/src/backoffice/templates/backoffice/wiki_overview.html b/src/backoffice/templates/backoffice/wiki_overview.html index 465e01a19a25490df13b727f6037e12bdeecdd01..691974b62c54f40e8942833d5ead01474c6b4555 100644 --- a/src/backoffice/templates/backoffice/wiki_overview.html +++ b/src/backoffice/templates/backoffice/wiki_overview.html @@ -12,20 +12,20 @@ <table class="table table-sm table-hover table-striped"> <thead> - <tr> - <th>{% trans "StaticPageRevision__timestamp" %}</th> - <th>{% trans "StaticPage__slug" %}</th> - <th>{% trans "StaticPageRevision__author" %}</th> - </tr> - </thead> - <tbody> - {% for item in last_edits %} <tr> - <td title="{{ item.timestamp }}">{{ item.timestamp|naturaltime }}</td> - <td>{{ item.page.slug }}</td> - <td>{{ item.author }}</td> + <th>{% trans "StaticPageRevision__timestamp" %}</th> + <th>{% trans "StaticPage__slug" %}</th> + <th>{% trans "StaticPageRevision__author" %}</th> </tr> - {% endfor %} + </thead> + <tbody> + {% for item in last_edits %} + <tr> + <td title="{{ item.timestamp }}">{{ item.timestamp|naturaltime }}</td> + <td>{{ item.page.slug }}</td> + <td>{{ item.author }}</td> + </tr> + {% endfor %} </tbody> </table> diff --git a/src/backoffice/templates/backoffice/wiki_page_detail.html b/src/backoffice/templates/backoffice/wiki_page_detail.html index 3d3ea3f91f67d3f15190442bbd33d089b1d9b6ae..ca4cffe5255caad94aec71fe7a5c9d046c8d622d 100644 --- a/src/backoffice/templates/backoffice/wiki_page_detail.html +++ b/src/backoffice/templates/backoffice/wiki_page_detail.html @@ -4,72 +4,88 @@ {% block content %} -<form action="{% url 'backoffice:wiki-page-delete' pk=object.pk %}" method="POST" id="delete_page" onsubmit="return confirm('{% trans 'StaticPage--delete-confirm' %}')"> - {% csrf_token %} -</form> + <form action="{% url 'backoffice:wiki-page-delete' pk=object.pk %}" + method="POST" + id="delete_page" + onsubmit="return confirm('{% trans 'StaticPage--delete-confirm' %}')"> + {% csrf_token %} + </form> -<form action="{% url 'backoffice:wiki-page-detail' pk=object.pk %}" method="POST"> -{% csrf_token %} + <form action="{% url 'backoffice:wiki-page-detail' pk=object.pk %}" + method="POST"> + {% csrf_token %} -<div class="card"> - <div class="card-header">{% trans 'StaticPage' %} "{{ object.slug }}"</div> - <div class="card-body"> - <p>Revision: <strong>{{ object.newest_revision.revision }}</strong>{% if object.newest_revision.revision != object.public_version %} (public: {{ object.public_revision }}){% endif %}</p> - {% if form.errors %} - <div class="row"><div class="col-md-12"> - <div class="alert alert-danger"> - {{ form.errors }} + <div class="card"> + <div class="card-header">{% trans 'StaticPage' %} "{{ object.slug }}"</div> + <div class="card-body"> + <p> + Revision: <strong>{{ object.newest_revision.revision }}</strong> + {% if object.newest_revision.revision != object.public_version %}(public: {{ object.public_revision }}){% endif %} + </p> + {% if form.errors %} + <div class="row"> + <div class="col-md-12"> + <div class="alert alert-danger">{{ form.errors }}</div> + </div> + </div> + {% endif %} + {% bootstrap_form form %} </div> - </div></div> - {% endif %} - {% bootstrap_form form %} - </div> - <div class="card-footer text-right"> - <button type="submit" class="btn btn-danger" form="delete_page">{% trans "StaticPage--delete-page" %}</button> - <button type="submit" class="btn btn-primary">{% trans "assemblyedit_submitbtn" %}</button> - </div> -</div> -</form> + <div class="card-footer text-right"> + <button type="submit" class="btn btn-danger" form="delete_page">{% trans "StaticPage--delete-page" %}</button> + <button type="submit" class="btn btn-primary">{% trans "assemblyedit_submitbtn" %}</button> + </div> + </div> + </form> -<form method="POST" action="{% url 'backoffice:wiki-page-revision-delete' pk=object.pk %}" onsubmit="return confirm('{% trans 'StaticPageRevision--delete-confirm' %}')"> -{% csrf_token %} + <form method="POST" + action="{% url 'backoffice:wiki-page-revision-delete' pk=object.pk %}" + onsubmit="return confirm('{% trans 'StaticPageRevision--delete-confirm' %}')"> + {% csrf_token %} -<div class="card mt-2"> - <div class="card-header">{% trans 'StaticPage--revisions' %}</div> - <div class="card-body"> - <table class="table table-sm"> - <thead><tr> - <th>{% trans "StaticPageRevision--revision" %}</th> - <th>{% trans "StaticPageRevision--title" %}</th> - <th>{% trans "StaticPageRevision--author" %}</th> - <th>{% trans "StaticPageRevision--date" %}</th> - <th> </th> - </tr></thead> - <tbody> - {% for revision in revisions %} - <tr> - <td>{{ revision.revision }}</td> - <td>{{ revision.title }}</td> - <td>{{ revision.author | default:"-" }}</td> - <td>{{ revision.timestamp | date:"DATETIME_FORMAT" }}</td> - <td><button class="btn btn-danger btn-sm" type="submit" name="revision" value="{{ revision.revision }}">{% trans "StaticPageRevision--delete" %}</button></td> - </tr> - {% endfor %} - </tbody> - </table> - </div> -</div> -</form> + <div class="card mt-2"> + <div class="card-header">{% trans 'StaticPage--revisions' %}</div> + <div class="card-body"> + <table class="table table-sm"> + <thead> + <tr> + <th>{% trans "StaticPageRevision--revision" %}</th> + <th>{% trans "StaticPageRevision--title" %}</th> + <th>{% trans "StaticPageRevision--author" %}</th> + <th>{% trans "StaticPageRevision--date" %}</th> + <th> </th> + </tr> + </thead> + <tbody> + {% for revision in revisions %} + <tr> + <td>{{ revision.revision }}</td> + <td>{{ revision.title }}</td> + <td>{{ revision.author | default:"-" }}</td> + <td>{{ revision.timestamp | date:"DATETIME_FORMAT" }}</td> + <td> + <button class="btn btn-danger btn-sm" + type="submit" + name="revision" + value="{{ revision.revision }}">{% trans "StaticPageRevision--delete" %}</button> + </td> + </tr> + {% endfor %} + </tbody> + </table> + </div> + </div> + </form> -{% if object.public_revision > 0 %} -<div class="card mt-3"> - <div class="card-header">{% blocktranslate %}StaticPage--preview {{ object.public_revision }}{% endblocktranslate%}</div> - <div class="card-body"> - {{ object.body_html|safe }} - </div> -</div> -{% endif %} + {% if object.public_revision > 0 %} + <div class="card mt-3"> + <div class="card-header"> + {% blocktranslate %}StaticPage--preview {{ object.public_revision }}{% endblocktranslate%} + </div> + <div class="card-body">{{ object.body_html|safe }}</div> + </div> + {% endif %} {% endblock %} diff --git a/src/backoffice/templates/backoffice/wiki_page_list.html b/src/backoffice/templates/backoffice/wiki_page_list.html index 634fdf014f35815a4b8a46df580ba166d1642cc3..4c65bac0fd5cfcf92c6576898423b06ed1156247 100644 --- a/src/backoffice/templates/backoffice/wiki_page_list.html +++ b/src/backoffice/templates/backoffice/wiki_page_list.html @@ -4,38 +4,56 @@ {% block content %} -<div class="card"> - <div class="card-header"> - {% trans 'StaticPages' %} + <div class="card"> + <div class="card-header">{% trans 'StaticPages' %}</div> + <div class="card-body"> + <table class="table table-sm" id="pages"> + <thead> + <tr> + <th>{% trans "StaticPage__slug" %}</th> + <th>{% trans "StaticPage__title" %}</th> + <th>{% trans "StaticPage__language" %}</th> + <th>{% trans "StaticPage__privacy" %}</th> + <th>{% trans "StaticPage__protection" %}</th> + <th>{% trans "StaticPage__last_edited_by" %}</th> + <th>{% trans "StaticPage__last_edited_at" %}</th> + </tr> + </thead> + <tbody> + {% for page in object_list %} + <tr class="{% if page.public_revision == 0 %}text-dim{% endif %}"> + <td> + <a href="{% url 'backoffice:wiki-page-detail' pk=page.pk %}">{{ page.slug }}</a> + </td> + <td>{{ page.title }}</td> + <td>{{ page.language }}</td> + <td title="{{ page.get_privacy_display }}"> + {% if page.privacy == page.Privacy.NONE %} + 👁 + {% elif page.privacy == page.Privacy.CONFERENCE %} + 🎪 + {% elif page.privacy == page.Privacy.PERM %} + ⚙ + {% else %} + ? + {% endif %} + </td> + <td title="{{ page.get_protection_display }}"> + {% if page.protection == page.Protection.NONE %} + 👁 + {% elif page.protection == page.Protection.PERM %} + ⚙ + {% else %} + ? + {% endif %} + </td> + <td>{{ page.last_revision_details.author | default:"-" }}</td> + <td>{{ page.last_revision_details.timestamp | date:"DATETIME_FORMAT" }}</td> + </tr> + {% endfor %} + </tbody> + </table> + </div> </div> - <div class="card-body"> - <table class="table table-sm" id="pages"> - <thead> - <tr> - <th>{% trans "StaticPage__slug" %}</th> - <th>{% trans "StaticPage__title" %}</th> - <th>{% trans "StaticPage__language" %}</th> - <th>{% trans "StaticPage__privacy" %}</th> - <th>{% trans "StaticPage__protection" %}</th> - <th>{% trans "StaticPage__last_edited_by" %}</th> - <th>{% trans "StaticPage__last_edited_at" %}</th> - </tr> - </thead> - <tbody> - {% for page in object_list %} - <tr class="{% if page.public_revision == 0 %}text-dim{% endif %}"> - <td><a href="{% url 'backoffice:wiki-page-detail' pk=page.pk %}">{{ page.slug }}</a></td> - <td>{{ page.title }}</td> - <td>{{ page.language }}</td> - <td title="{{ page.get_privacy_display }}">{% if page.privacy == page.Privacy.NONE %}👁{% elif page.privacy == page.Privacy.CONFERENCE %}🎪{% elif page.privacy == page.Privacy.PERM %}⚙{% else %}?{% endif %}</td> - <td title="{{ page.get_protection_display }}">{% if page.protection == page.Protection.NONE %}👁{% elif page.protection == page.Protection.PERM %}⚙{% else %}?{% endif %}</td> - <td>{{ page.last_revision_details.author | default:"-" }}</td> - <td>{{ page.last_revision_details.timestamp | date:"DATETIME_FORMAT" }}</td> - </tr> - {% endfor %} - </tbody> - </table> - </div> -</div> {% endblock %} diff --git a/src/backoffice/templates/registration/change_password.html b/src/backoffice/templates/registration/change_password.html index 043d1ff772331524d6a7c893f1722dd111795cda..ba76a31ceef821cb3bbdaf0327f6cb70e061df73 100644 --- a/src/backoffice/templates/registration/change_password.html +++ b/src/backoffice/templates/registration/change_password.html @@ -3,10 +3,10 @@ {% load i18n %} {% block content %} - <h2>{% trans "registration_change_password_title" %}</h2> - <form action="{% url "backoffice:password_change" %}" method="post"> - {% csrf_token %} - {% bootstrap_form form %} - <button type="submit" class="btn btn-primary">{% trans "password_change_btn" %}</button> - </form> + <h2>{% trans "registration_change_password_title" %}</h2> + <form action="{% url "backoffice:password_change" %}" method="post"> + {% csrf_token %} + {% bootstrap_form form %} + <button type="submit" class="btn btn-primary">{% trans "password_change_btn" %}</button> + </form> {% endblock %} diff --git a/src/backoffice/templates/registration/change_password_done.html b/src/backoffice/templates/registration/change_password_done.html index 0013538f035a052e2a7fd1b823b2508e3b73f4df..a0783e22fedb03a365a30075266b8a468c3a9784 100644 --- a/src/backoffice/templates/registration/change_password_done.html +++ b/src/backoffice/templates/registration/change_password_done.html @@ -2,8 +2,8 @@ {% load i18n %} {% block content %} - <h2>{% trans "registration_change_password_done_title" %}</h2> - <div class="alert alert-success"> - <h3>{% trans "registration_change_password_done" %}</h3> - </div> -{% endblock %} \ No newline at end of file + <h2>{% trans "registration_change_password_done_title" %}</h2> + <div class="alert alert-success"> + <h3>{% trans "registration_change_password_done" %}</h3> + </div> +{% endblock %} diff --git a/src/backoffice/templates/registration/reset_password_complete.html b/src/backoffice/templates/registration/reset_password_complete.html index ab8e1e64c688f3d09e5c12f1bbd927a731d4c774..e576524a7aedf12ea80b56d87d13fe6d6f2340f1 100644 --- a/src/backoffice/templates/registration/reset_password_complete.html +++ b/src/backoffice/templates/registration/reset_password_complete.html @@ -6,4 +6,4 @@ <div class="alert alert-success"> <p>{% trans "registration_reset_password_complete" %}</p> </div> -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/src/backoffice/templates/registration/reset_password_confirm.html b/src/backoffice/templates/registration/reset_password_confirm.html index 60500850a80852d4aa94773e52d70f82784d72d7..878d9c33d09df2a60050ba2cae2832fce1c658ea 100644 --- a/src/backoffice/templates/registration/reset_password_confirm.html +++ b/src/backoffice/templates/registration/reset_password_confirm.html @@ -3,10 +3,10 @@ {% load i18n %} {% block content %} - <h2>{% trans "registration_reset_password_confirm_title" %}</h2> - <form method="post"> - {% csrf_token %} - {% bootstrap_form form %} - <button type="submit" class="btn btn-primary">{% trans "password_reset_btn" %}</button> - </form> + <h2>{% trans "registration_reset_password_confirm_title" %}</h2> + <form method="post"> + {% csrf_token %} + {% bootstrap_form form %} + <button type="submit" class="btn btn-primary">{% trans "password_reset_btn" %}</button> + </form> {% endblock %} diff --git a/src/backoffice/templates/registration/reset_password_done.html b/src/backoffice/templates/registration/reset_password_done.html index 3b42c0594947bbda67ac7876466d85aa1855e539..85897abf0444d2116bb9633a4949b9d2762748d8 100644 --- a/src/backoffice/templates/registration/reset_password_done.html +++ b/src/backoffice/templates/registration/reset_password_done.html @@ -7,4 +7,4 @@ <h3>{% trans "registration_reset_password_done" %}</h3> <p>{% trans "registration_reset_password_mailsent" %}</p> </div> -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/src/backoffice/templates/registration/signup_done.html b/src/backoffice/templates/registration/signup_done.html index af1919c55763b7f86a2b092ab6526ba61194bf90..1334d6279e3f5e114ab198e71a088e0d68b1c48e 100644 --- a/src/backoffice/templates/registration/signup_done.html +++ b/src/backoffice/templates/registration/signup_done.html @@ -7,4 +7,4 @@ <h3>{% trans "registration_signup_done" %}</h3> <p>{% trans "registration_signup_mailsent" %}</p> </div> -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/src/core/templates/core/assembly_notification.html b/src/core/templates/core/assembly_notification.html index 14281577dd16694bdf0cd7b16a02593ae06ae82a..bfd1bd3eed6b19508f4bf5450413ac19dadc3e3c 100644 --- a/src/core/templates/core/assembly_notification.html +++ b/src/core/templates/core/assembly_notification.html @@ -1,15 +1,17 @@ <!DOCTYPE html> <html> -<head><title>{{ subject }}</title></head> -<body> -<h1>Nachricht zu Assembly "{{ assembly.slug }}"</h1> + <head> + <title>{{ subject }}</title> + </head> + <body> + <h1>Nachricht zu Assembly "{{ assembly.slug }}"</h1> -<div style="background-color: #f0f0f0; border: 2px solid #0a58ca; border-width: 2px 0; padding: 1em; color: black;"> -{{ message_html }} -</div> + <div style="background-color: #f0f0f0; + border: 2px solid #0a58ca; + border-width: 2px 0; + padding: 1em; + color: black">{{ message_html }}</div> -{% if conference.mail_footer %} -{{ conference.mail_footer_html }} -{% endif %} -</body> + {% if conference.mail_footer %}{{ conference.mail_footer_html }}{% endif %} + </body> </html> diff --git a/src/core/templates/core/directmessage.html b/src/core/templates/core/directmessage.html index 74cc76069af3cb3567db73bfdfb62452985730ed..fff718c1e3000807049067d90182c9e85a30f59b 100644 --- a/src/core/templates/core/directmessage.html +++ b/src/core/templates/core/directmessage.html @@ -1,16 +1,28 @@ <!DOCTYPE html5> <html> -<body> -{% if conference != None %} - <h1>{% if sender != None %}Nachricht von <emph>{{ sender }}</emph> via {{ conference.slug|upper }}{% else %}{{ conference.name }} System-Nachricht:{% endif %}</h1> -{% else %} - <h1>{% if sender != None %}Nachricht von <emph>{{ sender }}</emph>:{% else %}System-Nachricht:{% endif %}</h1> -{% endif %} + <body> + {% if conference != None %} + <h1> + {% if sender != None %} + Nachricht von <emph>{{ sender }}</emph> via {{ conference.slug|upper }} + {% else %} + {{ conference.name }} System-Nachricht: + {% endif %} + </h1> + {% else %} + <h1> + {% if sender != None %} + Nachricht von <emph>{{ sender }}</emph>: + {% else %} + System-Nachricht: + {% endif %} + </h1> + {% endif %} -<pre style="background-color: #FCFCCC;"> + <pre style="background-color: #FCFCCC;"> {{ message }} </pre> -{{ conference.mail_footer_html }} -</body> + {{ conference.mail_footer_html }} + </body> </html> diff --git a/src/core/templates/core/map.html b/src/core/templates/core/map.html index 07440628f640a330c892f205db14c1d1c6be7a83..0a0c3bfb1c65a8d85918d86014bfb75d755683ab 100644 --- a/src/core/templates/core/map.html +++ b/src/core/templates/core/map.html @@ -6,9 +6,7 @@ <div class="d-block mb-3"> <div id="{{ mapid }}" style="width: 100%; min-height: 35em;"></div> </div> - {% with mapstyleid=mapid|add:"_style" %} - {{ map_config.style|json_script:mapstyleid }} - {% endwith %} + {% with mapstyleid=mapid|add:"_style" %}{{ map_config.style|json_script:mapstyleid }}{% endwith %} <script> window.addEventListener("load", function () { const initial_floor_idx = {% if floor_id %}document.getElementById('{{ floor_id }}').value{% else %}null{% endif %}; diff --git a/src/core/templates/oauth2_provider/authorize.html b/src/core/templates/oauth2_provider/authorize.html index a86fd6dddd02ec559a6965afbc0ce2f1e4b7e734..bc572959503aeaeb3b0bc7fd78decae1cee11954 100644 --- a/src/core/templates/oauth2_provider/authorize.html +++ b/src/core/templates/oauth2_provider/authorize.html @@ -1,8 +1,8 @@ <!DOCTYPE html> <html> - <head> - <title>Hub SSO</title> - <style> + <head> + <title>Hub SSO</title> + <style> .block-center { max-width: 500px; padding: 19px 29px 29px; @@ -24,51 +24,54 @@ box-shadow: 0 1px 2px rgba(0,0,0,.05); } #banner img { width: 2em; } - </style> - </head> - <body> -{% load i18n %} - <div class="block-center" id="banner"> - {{ conference.logo_html }} - Single Sign On - </div> + </style> + </head> + <body> + {% load i18n %} + <div class="block-center" id="banner"> + {{ conference.logo_html }} + Single Sign On + </div> - <div class="block-center"> - {% if not error %} - <form id="authorizationForm" method="post"> - <h3 class="block-center-heading">{{ user.username }}, {% trans "SSO__authorize" %} {{ application.name }}?</h3> - {% csrf_token %} + <div class="block-center"> + {% if not error %} + <form id="authorizationForm" method="post"> + <h3 class="block-center-heading">{{ user.username }}, {% trans "SSO__authorize" %} {{ application.name }}?</h3> + {% csrf_token %} - {% for field in form %} - {% if field.is_hidden %} - {{ field }} - {% endif %} - {% endfor %} + {% for field in form %} + {% if field.is_hidden %}{{ field }}{% endif %} + {% endfor %} - <p>{% trans 'SSO__authorize_scopes' %}</p> - <ul> - {% for scope in scopes_descriptions %} - <li>{{ scope }}</li> - {% endfor %} - </ul> + <p>{% trans 'SSO__authorize_scopes' %}</p> + <ul> + {% for scope in scopes_descriptions %}<li>{{ scope }}</li>{% endfor %} + </ul> - {{ form.errors }} - {{ form.non_field_errors }} + {{ form.errors }} + {{ form.non_field_errors }} - <p>{% trans 'SSO__redirecting_to' %} <code>{{ redirect_uri }}</code></p> + <p> + {% trans 'SSO__redirecting_to' %} <code>{{ redirect_uri }}</code> + </p> - <div class="control-group"> - <div class="controls"> - <input type="submit" class="btn btn-large" value="{% trans 'SSO__authorize_abort' %}"/> - <input type="submit" class="btn btn-large btn-primary" name="allow" value="{% trans 'SSO__authorize_accept' %}"/> - </div> - </div> - </form> + <div class="control-group"> + <div class="controls"> + <input type="submit" + class="btn btn-large" + value="{% trans 'SSO__authorize_abort' %}" /> + <input type="submit" + class="btn btn-large btn-primary" + name="allow" + value="{% trans 'SSO__authorize_accept' %}" /> + </div> + </div> + </form> - {% else %} - <h2>Error: {{ error.error }}</h2> - <p>{{ error.description }}</p> - {% endif %} - </div> - </body> -</html> \ No newline at end of file + {% else %} + <h2>Error: {{ error.error }}</h2> + <p>{{ error.description }}</p> + {% endif %} + </div> + </body> +</html> diff --git a/src/core/templates/oauth2_provider/out-of-band-display-token.html b/src/core/templates/oauth2_provider/out-of-band-display-token.html index a602aa1da93f0b970618e6c03abc26e697fc4399..fe86066a829fdec2f66f9b738b47cca03a86faac 100644 --- a/src/core/templates/oauth2_provider/out-of-band-display-token.html +++ b/src/core/templates/oauth2_provider/out-of-band-display-token.html @@ -1,8 +1,8 @@ <!DOCTYPE html> <html> - <head> - <title>Hub SSO</title> - <style> + <head> + <title>Hub SSO</title> + <style> .block-center { max-width: 500px; padding: 19px 29px 29px; @@ -26,29 +26,35 @@ #banner img { width: 2em; } #token { font-family: monospace; } .hidden { display: none; } - </style> - <script> + </style> + <script> document.addEventListener("DOMContentLoaded", function(){ document.querySelector('#token').innerHTML = new URLSearchParams(window.location.hash.slice(1)).get("access_token"); document.querySelector('#msg-script').classList.remove("hidden"); document.querySelector('#msg-noscript').classList.add("hidden"); }); - </script> - </head> - <body> -{% load i18n %} - <div class="block-center" id="banner"> - {{ conference.logo_html }} - Single Sign On - </div> + </script> + </head> + <body> + {% load i18n %} + <div class="block-center" id="banner"> + {{ conference.logo_html }} + Single Sign On + </div> - <div class="block-center"> - <p id="msg-noscript">{% trans "SSO__out_of_band_noscript" %}<p> - <div id="msg-script" class="hidden"> - <p>{% trans "SSO__out_of_band" %}<p> - <p>Token: <span id="token"></span></p> + <div class="block-center"> + <p id="msg-noscript"> + {% trans "SSO__out_of_band_noscript" %} + <p> + <div id="msg-script" class="hidden"> + <p> + {% trans "SSO__out_of_band" %} + <p> + <p> + Token: <span id="token"></span> + </p> + </div> </div> - </div> - </body> -</html> + </body> + </html> diff --git a/src/core/templates/registration/core_password_reset_email.html b/src/core/templates/registration/core_password_reset_email.html index d33d854609d37ccbfc61b608f77588229df292b0..fe47cabd298ea46cc0dcc275ccfaa52335b1ac36 100644 --- a/src/core/templates/registration/core_password_reset_email.html +++ b/src/core/templates/registration/core_password_reset_email.html @@ -1,14 +1,14 @@ {% load i18n %} {% autoescape off %} -{% trans 'Hello' %} {{ user.get_full_name|default:user.username }}, -{% blocktranslate with site_name_safe=site_name|safe %} + {% trans 'Hello' %} {{ user.get_full_name|default:user.username }}, + {% blocktranslate with site_name_safe=site_name|safe %} You're receiving this email because you requested a password reset for your user account at {{ site_name_safe }}. Please use the following link and choose a new password: {% endblocktranslate %} -{% block reset_link %} -{{ protocol }}://{{ domain }}{% url reset_url uidb64=uid token=token %} -{% endblock reset_link %} -{% blocktranslate %} + {% block reset_link %} + {{ protocol }}://{{ domain }}{% url reset_url uidb64=uid token=token %} + {% endblock reset_link %} + {% blocktranslate %} Your username, in case you’ve forgotten: {{ user.username}} If you have not requested a new password or didn't expect this mail please simply ignore it. diff --git a/src/core/templates/registration/registration_email.html b/src/core/templates/registration/registration_email.html index 0acd4080473d6e078056ec7263e248507c2e58bf..77cc6da9d592ba9f2b46b2dffdedbf9dc9b7aa8e 100644 --- a/src/core/templates/registration/registration_email.html +++ b/src/core/templates/registration/registration_email.html @@ -1,13 +1,13 @@ {% load i18n %} {% autoescape off %} -{% trans 'Hello' %} {{ user.get_full_name|default:user.username }}, -{% blocktranslate %} + {% trans 'Hello' %} {{ user.get_full_name|default:user.username }}, + {% blocktranslate %} You're receiving this email because you requested to create an account at "{{ site_name }}". To complete the registration please use the following link: {% endblocktranslate %} -{{ protocol }}://{{ domain }}{% url activation_url uid_b64=uid channel_id=cid token=token %} + {{ protocol }}://{{ domain }}{% url activation_url uid_b64=uid channel_id=cid token=token %} -{% blocktranslate %} + {% blocktranslate %} If you did not register for an account, you may ignore this message. Looking forward to having you at the event! diff --git a/src/core/templates/rest_framework/api.html b/src/core/templates/rest_framework/api.html index 45c76e25fca1f61e2b94d491c9c1cbc847d9dbe0..651a6d0cc6151920084539e9a56ea1b65b40a031 100644 --- a/src/core/templates/rest_framework/api.html +++ b/src/core/templates/rest_framework/api.html @@ -1,11 +1,12 @@ {% extends "rest_framework/base.html" %} {% block title %} - {% if name %}{{ name }} – {% endif %}HUB API + {% if name %}{{ name }} –{% endif %} + HUB API {% endblock %} {% block branding %} -<a class='navbar-brand' rel="nofollow" href="{% hub_absolute "api:index" %}"> - Hub API -</a> + <a class='navbar-brand' + rel="nofollow" + href="{% hub_absolute "api:index" %}">Hub API</a> {% endblock %} diff --git a/src/core/templates/rest_framework/login.html b/src/core/templates/rest_framework/login.html index 0de8784fab357b1e6c8a7de4eb4b55d9e51b4f7e..63fb13f25cbed599c83d2666afb757cd1c86585a 100644 --- a/src/core/templates/rest_framework/login.html +++ b/src/core/templates/rest_framework/login.html @@ -1,4 +1,2 @@ {% extends "rest_framework/login_base.html" %} -{% block branding %} - <h3 style="margin: 0 0 20px;">HUB API</h3> -{% endblock %} +{% block branding %}<h3 style="margin: 0 0 20px;">HUB API</h3>{% endblock %} diff --git a/src/plainui/jinja2/plainui/assemblies.html.j2 b/src/plainui/jinja2/plainui/assemblies.html.j2 index 06edf6a82f049880a61d9cfcad76ace34187c81a..bf0861b951a74d27e35f03f7ee7db562dec831cd 100644 --- a/src/plainui/jinja2/plainui/assemblies.html.j2 +++ b/src/plainui/jinja2/plainui/assemblies.html.j2 @@ -6,39 +6,34 @@ {% import "plainui/components/nav.html.j2" as navMacro with context %} {% import "plainui/components/wiki.html.j2" as wikiMacro with context %} -{% block title %}{{conf.name}} - {{ _("Assemblies") }}{% endblock %} +{% block title %}{{ conf.name }} - {{ _("Assemblies") }}{% endblock %} {% block content %} - {{ navMacro.top_nav(_("Assemblies")) }} + {{ navMacro.top_nav(_("Assemblies") ) }} - <div class="hub-vlayout"> - <div class="hub-row hub-row-equal-height"> - {{ wikiMacro.card( - '_intro_assemblies', - class='hub-col-remaining' - ) }} - {{ wikiMacro.card( - '_intro_assemblies_events', - class='hub-col-325px', - button_label=_("Explore Assembly Events Button"), - button_link=url('plainui:assemblies_events') - ) }} - </div> + <div class="hub-vlayout"> + <div class="hub-row hub-row-equal-height"> + {{ wikiMacro.card('_intro_assemblies', + class='hub-col-remaining') }} + {{ wikiMacro.card('_intro_assemblies_events', + class='hub-col-325px', + button_label=_("Explore Assembly Events Button") , + button_link=url('plainui:assemblies_events') + ) }} + </div> - <div class="m-0 p-0"> - <h2 class="hub-section-title">{{ _("upcoming events") }}</h2> - <div> - {{ list_events.slider(events_upcoming, is_favorite_events ) }} - </div> - </div> + <div class="m-0 p-0"> + <h2 class="hub-section-title">{{ _("upcoming events") }}</h2> + <div>{{ list_events.slider(events_upcoming, is_favorite_events) }}</div> + </div> - <div class="m-0 p-0"> - <h2 class="hub-section-title">{{ _("Assemblies") }}</h2> - <div> - {# Idea / TODO: Maybe list of assemblies which hosting the running / upcoming events? #} - {{ list_assm.list(assemblies, my_favorite_assemblies, pagination=true, view_name='plainui:assemblies', metadata=true) }} - </div> + <div class="m-0 p-0"> + <h2 class="hub-section-title">{{ _("Assemblies") }}</h2> + <div> + {# Idea / TODO: Maybe list of assemblies which hosting the running / upcoming events? #} + {{ list_assm.list(assemblies, my_favorite_assemblies, pagination=true, view_name='plainui:assemblies', metadata=true) }} </div> - </div> + </div> + {% endblock %} diff --git a/src/plainui/jinja2/plainui/assemblies_all.html.j2 b/src/plainui/jinja2/plainui/assemblies_all.html.j2 index d8cab35b07d4b9e0241f7a4080a7828275063bad..fd68c118920e3cbadef3b564bc98f4915058ed04 100644 --- a/src/plainui/jinja2/plainui/assemblies_all.html.j2 +++ b/src/plainui/jinja2/plainui/assemblies_all.html.j2 @@ -3,12 +3,12 @@ {% extends "plainui/base.html.j2" %} -{% block title %}{{conf.name}} - {{ _("all assemblies") }}{% endblock %} +{% block title %}{{ conf.name }} - {{ _("all assemblies") }}{% endblock %} {% block content %} - {{ navMacro.top_nav(_("all assemblies")) }} + {{ navMacro.top_nav(_("all assemblies") ) }} - {# actually we don't need a filter here. but maybe coming. + {# actually we don't need a filter here. but maybe coming. <div class="mb-2"> <div class="float-right"> {% if qfilter != "official" %} @@ -34,12 +34,12 @@ </div> #} - <div> - <h2 class="bg-secondary text-center text-dark m-0 px-3 py-1">{{ _("all assemblies") }}</h2> - <div class="px-3 pb-3"> - {{ list_assm.list(assemblies, my_favorite_assemblies, pagination=true, view_name='plainui:assemblies_all', metadata=true) }} - </div> + <div> + <h2 class="bg-secondary text-center text-dark m-0 px-3 py-1">{{ _("all assemblies") }}</h2> + <div class="px-3 pb-3"> + {{ list_assm.list(assemblies, my_favorite_assemblies, pagination=true, view_name='plainui:assemblies_all', metadata=true) }} </div> + </div> - <hr class="hub-spacer"> + <hr class="hub-spacer"> {% endblock %} diff --git a/src/plainui/jinja2/plainui/assemblies_events.html.j2 b/src/plainui/jinja2/plainui/assemblies_events.html.j2 index 53a9cb90f3d4bb18460e54fb778ea3df1b5b53fc..6e3b6b35d7b8dbc4825b6203ec65d230e1f9cf04 100644 --- a/src/plainui/jinja2/plainui/assemblies_events.html.j2 +++ b/src/plainui/jinja2/plainui/assemblies_events.html.j2 @@ -3,26 +3,22 @@ {% extends "plainui/base.html.j2" %} -{% block title %}{{conf.name}} - {{ _("assembly events") }}{% endblock %} +{% block title %}{{ conf.name }} - {{ _("assembly events") }}{% endblock %} {% block content %} - {{ navMacro.top_nav(_("assembly events")) }} + {{ navMacro.top_nav(_("assembly events") ) }} - <div class="p-0"> - <h2 class="bg-secondary text-center text-dark m-0 px-3 py-1">{{ _("Running and Upcoming Events") }}</h2> - <div class="p-3"> - {{ list_events.slider(events_upcoming, is_favorite_events ) }} - </div> - </div> + <div class="p-0"> + <h2 class="bg-secondary text-center text-dark m-0 px-3 py-1">{{ _("Running and Upcoming Events") }}</h2> + <div class="p-3">{{ list_events.slider(events_upcoming, is_favorite_events) }}</div> + </div> - <hr class="hub-spacer"> + <hr class="hub-spacer"> - <div class="p-0"> - <h2 class="bg-secondary text-center text-dark m-0 px-3 py-1">{{ _("All Assemblies Events") }}</h2> - <div class="p-3"> - {{ list_events.list(events_from_assemblies, is_favorite_events ) }} - </div> - </div> + <div class="p-0"> + <h2 class="bg-secondary text-center text-dark m-0 px-3 py-1">{{ _("All Assemblies Events") }}</h2> + <div class="p-3">{{ list_events.list(events_from_assemblies, is_favorite_events) }}</div> + </div> - <hr class="hub-spacer"> + <hr class="hub-spacer"> {% endblock %} diff --git a/src/plainui/jinja2/plainui/assembly.html.j2 b/src/plainui/jinja2/plainui/assembly.html.j2 index 783732755f781dfe0a826a3d2e32eac933edf50e..27bf9477adbbb62f0efe75a9a23efd7010fc57a7 100644 --- a/src/plainui/jinja2/plainui/assembly.html.j2 +++ b/src/plainui/jinja2/plainui/assembly.html.j2 @@ -10,136 +10,121 @@ {% import "plainui/components/badge_elements.html.j2" as badge_elements with context %} {% import "plainui/components/nav.html.j2" as navMacro with context %} -{% block title %}{{conf.name}} - Assembly {{assembly.name}}{% endblock %} +{% block title %}{{ conf.name }} - Assembly {{ assembly.name }}{% endblock %} {% block content %} - {{ navMacro.top_nav(_("Assembly"), has_breadcrumbs=True) }} - <ol class="breadcrumb hub-breadcrumbs"> - <li class="breadcrumb-item"><a href="{{ url('plainui:index') }}"> - {{ conf.name }} - </a></li> - <li class="breadcrumb-item"><a href="{{ url('plainui:assemblies') }}">{{ _("assemblies") }}</a></li> - {% if assembly.parent %} - <li class="breadcrumb-item"><a href="{{ url('plainui:assembly', assembly_slug=assembly.parent.slug ) }}">{{ assembly.parent }}</a></li> - {% endif %} - </ol> - - <div class="hub-vlayout"> - <div class="hub-row mb-3"> - <div class="hub-col-remaining hub-card hub-vlayout"> - <h1 class="hub-head-main"> - {{ assembly.name }} - </h1> - {% if assembly.assembly_location %} - <div> - <i class="bi bi-geo-alt-fill"></i> - {{ assembly.assembly_location }} - </div> - {% endif %} - {{ tagboxMacro.tagbox(assembly.public_tags) }} - {% if assembly.description != None and assembly.description != "" -%} - <div class="hub-text"> - {{- markdownMacro.markdown(markdown=assembly.description_html | safe, border=False) -}} - </div> - {% endif %} + {{ navMacro.top_nav(_("Assembly") , has_breadcrumbs=True) }} + <ol class="breadcrumb hub-breadcrumbs"> + <li class="breadcrumb-item"> + <a href="{{ url('plainui:index') }}">{{ conf.name }}</a> + </li> + <li class="breadcrumb-item"> + <a href="{{ url('plainui:assemblies') }}">{{ _("assemblies") }}</a> + </li> + {% if assembly.parent %} + <li class="breadcrumb-item"> + <a href="{{ url('plainui:assembly', assembly_slug=assembly.parent.slug) }}">{{ assembly.parent }}</a> + </li> + {% endif %} + </ol> - {% if assembly.assembly_link %} - {% set assembly_url = '/' + assembly.assembly_link if assembly.assembly_link.conference_internal else url('plainui:dereferrer', assembly.assembly_link) %} - <div class="hub-tags"> - {{ tagboxMacro.tag( - _("Website"), - icon="globe", - link=assembly_url, - style="secondary", - target=('_self' if assembly.assembly_link.conference_internal else '_blank'), - rel=('' if assembly.assembly_link.conference_internal else 'external') - ) }} - </div> - {% endif %} + <div class="hub-vlayout"> + <div class="hub-row mb-3"> + <div class="hub-col-remaining hub-card hub-vlayout"> + <h1 class="hub-head-main">{{ assembly.name }}</h1> + {% if assembly.assembly_location %} + <div> + <i class="bi bi-geo-alt-fill"></i> + {{ assembly.assembly_location }} </div> - {% if assembly.banner_image %} - <div class="hub-col-325px hub-card"> - {{ imageMacro.image(image=assembly.banner_image.url, alt=assembly.banner_image.name, title=assembly.banner_image.name) }} + {% endif %} + {{ tagboxMacro.tagbox(assembly.public_tags) }} + {% if assembly.description != None and assembly.description != "" -%} + <div class="hub-text">{{- markdownMacro.markdown(markdown=assembly.description_html | safe, border=False) -}}</div> + {% endif %} + + {% if assembly.assembly_link %} + {% set assembly_url = '/' + assembly.assembly_link if assembly.assembly_link.conference_internal else url('plainui:dereferrer', assembly.assembly_link) %} + <div class="hub-tags"> + {{ tagboxMacro.tag(_("Website") , + icon="globe", + link=assembly_url, + style="secondary", + target=('_self' if assembly.assembly_link.conference_internal else '_blank'), + rel=('' if assembly.assembly_link.conference_internal else 'external') + ) }} </div> - {% endif %} + {% endif %} + </div> + {% if assembly.banner_image %} + <div class="hub-col-325px hub-card"> + {{ imageMacro.image(image=assembly.banner_image.url, alt=assembly.banner_image.name, title=assembly.banner_image.name) }} </div> + {% endif %} + </div> - <div class="hub-vlayout-l"> - <div> - <h2 class="hub-section-title">{{_("Contacts")}}</h2> - {% if assembly.public_members %} - <div class="hub-tags"> - {%- for person in assembly.public_members %} - {{ tagboxMacro.user(person.member.display_name, link=url('plainui:user', user_slug=person.member.slug) if not archive_mode else None ) }} - {% endfor -%} - </div> - {% else %} - <div class="hub-empty-section"> - {{_(" no entries available")}} - </div> - {% endif %} + <div class="hub-vlayout-l"> + <div> + <h2 class="hub-section-title">{{ _("Contacts") }}</h2> + {% if assembly.public_members %} + <div class="hub-tags"> + {%- for person in assembly.public_members %} + {{ tagboxMacro.user(person.member.display_name, link=url('plainui:user', user_slug=person.member.slug) if not archive_mode else None ) }} + {% endfor -%} </div> + {% else %} + <div class="hub-empty-section">{{ _(" no entries available") }}</div> + {% endif %} + </div> - {% if assembly.is_cluster %} - <div> - <h2 class="hub-section-title">{{_("habitat members")}}</h2> - {% if assembly.public_children %} - {{ list_assemblies.list(assembly.public_children) }} - {% else %} - <div class="hub-empty-section"> - {{_(" no entries available")}} - </div> - {% endif %} - </div> + {% if assembly.is_cluster %} + <div> + <h2 class="hub-section-title">{{ _("habitat members") }}</h2> + {% if assembly.public_children %} + {{ list_assemblies.list(assembly.public_children) }} + {% else %} + <div class="hub-empty-section">{{ _(" no entries available") }}</div> {% endif %} + </div> + {% endif %} - <div> - <h2 class="hub-section-title">{{ _("assembly projects") }}</h2> - {% if assembly.public_projects %} - {{ list_projects.list(assembly.public_projects, is_favorite_projects) }} - {% else %} - <div class="hub-empty-section"> - {{_(" no entries available")}} - </div> - {% endif %} - </div> + <div> + <h2 class="hub-section-title">{{ _("assembly projects") }}</h2> + {% if assembly.public_projects %} + {{ list_projects.list(assembly.public_projects, is_favorite_projects) }} + {% else %} + <div class="hub-empty-section">{{ _(" no entries available") }}</div> + {% endif %} + </div> - <div> - <h2 class="hub-section-title">{{ _("assembly rooms") }}</h2> - {% set assembly_rooms = assembly.rooms.exclude(room_type='project') %} - {% if assembly_rooms %} - {{ list_rooms.list(assembly_rooms) }} - {% else %} - <div class="hub-empty-section"> - {{_(" no entries available")}} - </div> - {% endif %} - </div> + <div> + <h2 class="hub-section-title">{{ _("assembly rooms") }}</h2> + {% set assembly_rooms = assembly.rooms.exclude(room_type='project') %} + {% if assembly_rooms %} + {{ list_rooms.list(assembly_rooms) }} + {% else %} + <div class="hub-empty-section">{{ _(" no entries available") }}</div> + {% endif %} + </div> - <div> - <h2 class="hub-section-title">{{ _("assembly events") }}</h2> - {% if assembly.public_events %} - {{ list_events.list(assembly.public_events, is_favorite_events ) }} - {% else %} - <div class="hub-empty-section"> - {{_(" no entries available")}} - </div> - {% endif %} - </div> - <div> - <h2 class="hub-section-title">{{ _("assembly badges") }}</h2> - {% if assembly.public_badges %} - <div class="badges-gallery p-3"> - {% for badge_link in assembly.public_badges %} - {{ badge_elements.badge(badge_link) }} - {% endfor %} - </div> - {% else %} - <div class="hub-empty-section"> - {{_(" no entries available")}} - </div> - {% endif %} + <div> + <h2 class="hub-section-title">{{ _("assembly events") }}</h2> + {% if assembly.public_events %} + {{ list_events.list(assembly.public_events, is_favorite_events) }} + {% else %} + <div class="hub-empty-section">{{ _(" no entries available") }}</div> + {% endif %} + </div> + <div> + <h2 class="hub-section-title">{{ _("assembly badges") }}</h2> + {% if assembly.public_badges %} + <div class="badges-gallery p-3"> + {% for badge_link in assembly.public_badges %}{{ badge_elements.badge(badge_link) }}{% endfor %} </div> - </div> + {% else %} + <div class="hub-empty-section">{{ _(" no entries available") }}</div> + {% endif %} </div> + </div> + </div> {% endblock %} diff --git a/src/plainui/jinja2/plainui/badges/award.html.j2 b/src/plainui/jinja2/plainui/badges/award.html.j2 index 23d313c60d3b6409549c07a88151f85d071dc9ae..5363f7c01d6197dc228455e805f40ca49c8aed9b 100644 --- a/src/plainui/jinja2/plainui/badges/award.html.j2 +++ b/src/plainui/jinja2/plainui/badges/award.html.j2 @@ -10,10 +10,10 @@ {{ navMacro.top_nav(_("Badge") , has_breadcrumbs=true) }} <ol class="breadcrumb hub-breadcrumbs"> <li class="breadcrumb-item"> - <a href="{{ url("plainui:index") }}">{{ conf.name }}</a> + <a href="{{ url('plainui:index') }}">{{ conf.name }}</a> </li> <li class="breadcrumb-item"> - <a href="{{ url("plainui:badges") }}">{{ _("Badges") }}</a> + <a href="{{ url('plainui:badges') }}">{{ _("Badges") }}</a> </li> </ol> @@ -22,17 +22,11 @@ <div class="hub-hlayout-l hub-card text-center text-md-start"> <i class="bi bi-check-circle text-success mx-3" style="font-size: 5rem;"></i> <div class="hub-vlayout justify-content-center"> - <h3 class="mb-4 mb-md-0"> - {{ _("badge__award__title") }} - </h3> + <h3 class="mb-4 mb-md-0">{{ _("badge__award__title") }}</h3> <div> - <a class="hub-btn" href="{{ url("plainui:badges") }}"> - {{ _("badge__award__overview") }} - </a> + <a class="hub-btn" href="{{ url('plainui:badges') }}">{{ _("badge__award__overview") }}</a> {{ _("or") }} - <a class="hub-btn" href="{{ url("plainui:manage_badges") }}"> - {{ _("badge__award__manage") }} - </a> + <a class="hub-btn" href="{{ url('plainui:manage_badges') }}">{{ _("badge__award__manage") }}</a> </div> </div> </div> @@ -56,7 +50,7 @@ </div> <div class="hub-tags"> {{ tagMacros.secondary(badge.category.name, - icon=badge.category.symbol) }} + icon=badge.category.symbol) }} </div> </div> </div> @@ -68,5 +62,5 @@ {{ imageMacro.image(image=badge.image.url, alt=badge.image.name, title=badge.image.name) }} </div> {% endif %} -</div> + </div> {% endblock content %} diff --git a/src/plainui/jinja2/plainui/badges/detail.html.j2 b/src/plainui/jinja2/plainui/badges/detail.html.j2 index 81279bfa13f87de82805344d9a4a12be9b63c699..5becb1c0d027c98ef9fdc092b7d459c9b941e734 100644 --- a/src/plainui/jinja2/plainui/badges/detail.html.j2 +++ b/src/plainui/jinja2/plainui/badges/detail.html.j2 @@ -10,17 +10,13 @@ {% endblock title %} {% block content %} - {{ navMacro.top_nav(_("Badge"), has_breadcrumbs=true) }} + {{ navMacro.top_nav(_("Badge") , has_breadcrumbs=true) }} <ol class="breadcrumb hub-breadcrumbs"> <li class="breadcrumb-item"> - <a href="{{ url('plainui:index') }}"> - {{ conf.name }} - </a> + <a href="{{ url('plainui:index') }}">{{ conf.name }}</a> </li> <li class="breadcrumb-item"> - <a href="{{ url('plainui:badges') }}"> - {{ _("Badges") }} - </a> + <a href="{{ url('plainui:badges') }}">{{ _("Badges") }}</a> </li> </ol> @@ -31,9 +27,7 @@ <div class="hub-hlayout-l"> {{ badgeMacro.badge(badge) }} <div class="hub-vlayout"> - <h1 class="hub-head-main"> - {{ badge.name }} - </h1> + <h1 class="hub-head-main">{{ badge.name }}</h1> <div class="hub-tags"> {% if badge.location %} @@ -50,21 +44,17 @@ </div> <div class="hub-tags"> - {{ tagMacros.secondary( - badge.category.name, - icon=badge.category.symbol - ) }} + {{ tagMacros.secondary(badge.category.name, + icon=badge.category.symbol) }} </div> </div> </div> - <div class="hub-text"> - {{ badge.description_html | safe }} - </div> + <div class="hub-text">{{ badge.description_html | safe }}</div> </div> </div> {% if badge.image %} <div class="hub-col-325px hub-card"> - {{ imageMacro.image(image=badge.image.url, alt=badge.image.name, title=badge.image.name) }} + {{ imageMacro.image(image=badge.image.url, alt=badge.image.name, title=badge.image.name) }} </div> {% endif %} </div> diff --git a/src/plainui/jinja2/plainui/badges/list.html.j2 b/src/plainui/jinja2/plainui/badges/list.html.j2 index 0e139bd5490375121980c7cf0b2ebedf078ca3f8..388c8a0f97c2a878f09f020ea57e67f437a95214 100644 --- a/src/plainui/jinja2/plainui/badges/list.html.j2 +++ b/src/plainui/jinja2/plainui/badges/list.html.j2 @@ -6,146 +6,125 @@ {% import "plainui/components/form_elements.html.j2" as form_elements %} {% block title %} - {{ conf.name }} - Badges + {{ conf.name }} - Badges {% endblock title %} {% block content %} - {{ navMacro.top_nav(_("Badges")) }} + {{ navMacro.top_nav(_("Badges") ) }} - <div class="hub-vlayout"> - <div class="hub-row"> - {{ wikiMacro.card('_intro_badges', class="hub-col-remaining") }} - <div class="hub-card hub-col-325px"> - <h2 class="hub-section-title">{{ _("badge__redeem_badge__title") }}</h2> - {% if not archive_mode %} - <form - method="POST" - action="{{ url("plainui:manage_badges") }}{%- if request.GET.next -%}?next={{ request.GET.next }}{%- endif -%}" - > + <div class="hub-vlayout"> + <div class="hub-row"> + {{ wikiMacro.card('_intro_badges', class="hub-col-remaining") }} + <div class="hub-card hub-col-325px"> + <h2 class="hub-section-title">{{ _("badge__redeem_badge__title") }}</h2> + {% if not archive_mode %} + <form method="POST" + action="{{ url('plainui:manage_badges') }}{%- if request.GET.next -%}?next={{ request.GET.next }}{%- endif -%}"> <div class="flex flex-column"> {{ csrf_input }} {{ form_elements.render_form_fields(redeem_badge_form) }} - <input type="submit" class="btn btn-primary mb-2" value="{{ _("badge__redeem__submit_button") }}"> + <input type="submit" + class="btn btn-primary mb-2" + value="{{ _('badge__redeem__submit_button') }}"> {{ form_elements.errors(redeem_badge_form) }} </div> </form> <div class="d-flex justify-content-end"> - <a - href="{{ url('plainui:manage_badges') }}" - class="hub-btn" - > - {{ _("badge__manage") }} - </a> + <a href="{{ url('plainui:manage_badges') }}" class="hub-btn">{{ _("badge__manage") }}</a> </div> - {% else %} - {{ _('archivemode_notavailable') }} - {% endif %} - </div> - </div> - - <div class="hub-card hub-tags"> - {% if params.category or params.owned %} - <a - href="{{ url('plainui:badges') }}" - class="hub-tag hub-tag--outline" - > - {{ _("all") }} - </a> {% else %} - <div class="hub-tag" - > - {{ _("all") }} - </div> + {{ _("archivemode_notavailable") }} {% endif %} + </div> + </div> - <div class="hub-tag-divider"></div> + <div class="hub-card hub-tags"> + {% if params.category or params.owned %} + <a href="{{ url('plainui:badges') }}" class="hub-tag hub-tag--outline">{{ _("all") }}</a> + {% else %} + <div class="hub-tag">{{ _("all") }}</div> + {% endif %} - {% for category in categories %} - {{ tagbox.filter( - category.name, - 'category', - category.slug, - icon=category.symbol - ) }} - {% endfor %} + <div class="hub-tag-divider"></div> - {% if not archive_mode %} + {% for category in categories %} + {{ tagbox.filter(category.name, + 'category', + category.slug, + icon=category.symbol) }} + {% endfor %} + + {% if not archive_mode %} <div class="hub-tag-divider"></div> - {{ tagbox.filter(_("badge__tag__yours"), 'owned', 'true') }} - {{ tagbox.filter(_("badge__tag__missing"), 'owned', 'false') }} - {% endif %} - </div> + {{ tagbox.filter(_("badge__tag__yours") , 'owned', 'true') }} + {{ tagbox.filter(_("badge__tag__missing") , 'owned', 'false') }} + {% endif %} + </div> - <div class="hub-card"> - {% if object_list %} - <div class="hub-badges-gallery"> - {%- for badge in object_list %} - {{ badgeMacro.badge(badge) }} - {% endfor %} - </div> - {% else %} - <div class="hub-empty-section"> - {{_("badge__no_entries")}} - </div> - {% endif %} - </div> + <div class="hub-card"> + {% if object_list %} + <div class="hub-badges-gallery"> + {%- for badge in object_list %}{{ badgeMacro.badge(badge) }}{% endfor %} + </div> + {% else %} + <div class="hub-empty-section">{{ _("badge__no_entries") }}</div> + {% endif %} + </div> - <div class="hub-card"> - <div class="hub-hlayout align-items-center"> - {% if page_obj %} - <div class="pagination me-auto"> - <span class="step-links"> - {% if page_obj.has_previous() %} + <div class="hub-card"> + <div class="hub-hlayout align-items-center"> + {% if page_obj %} + <div class="pagination me-auto"> + <span class="step-links"> + {% if page_obj.has_previous() %} <a href="{{ update_parameters(params, 'page', 1) }}">« first</a> <a href="{{ update_parameters(params, 'page', page_obj.previous_page_number() ) }}">previous</a> - {% endif %} - <span class="current">Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.</span> - {% if page_obj.has_next() %} + {% endif %} + <span class="current">Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.</span> + {% if page_obj.has_next() %} <a href="{{ update_parameters(params, 'page', page_obj.next_page_number() ) }}">next</a> <a href="{{ update_parameters(params, 'page', page_obj.paginator.num_pages) }}">last »</a> - {% endif %} - </span> - </div> - {% else %} - <div class="pagination me-auto"> - {{ _("badge__pagination__all_entries") }} - </div> - {% endif %} - <div class="dropdown"> - <button class="btn btn-secondary dropdown-toggle" - type="button" - id="dropdownMenuButton1" - data-bs-toggle="dropdown" - aria-expanded="false">{{ params['paginate_by'] }}</button> - <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton1"> - <li> - <a class="dropdown-item" - href="{{ update_parameters(params, 'paginate_by', '10', ['page']) }}">10</a> - </li> - <li> - <a class="dropdown-item" - href="{{ update_parameters(params, 'paginate_by', '25', ['page']) }}">25</a> - </li> - <li> - <a class="dropdown-item" - href="{{ update_parameters(params, 'paginate_by', '50', ['page']) }}">50</a> - </li> - <li> - <a class="dropdown-item" - href="{{ update_parameters(params, 'paginate_by', '100', ['page']) }}">100</a> - </li> - <li> - <a class="dropdown-item" - href="{{ update_parameters(params, 'paginate_by', '200', ['page']) }}">200</a> - </li> - <li> - <a class="dropdown-item" - href="{{ update_parameters(params, 'paginate_by', 'all', ['page']) }}">All</a> - </li> - </ul> + {% endif %} + </span> </div> + {% else %} + <div class="pagination me-auto">{{ _("badge__pagination__all_entries") }}</div> + {% endif %} + <div class="dropdown"> + <button class="btn btn-secondary dropdown-toggle" + type="button" + id="dropdownMenuButton1" + data-bs-toggle="dropdown" + aria-expanded="false">{{ params['paginate_by'] }}</button> + <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton1"> + <li> + <a class="dropdown-item" + href="{{ update_parameters(params, 'paginate_by', '10', ['page']) }}">10</a> + </li> + <li> + <a class="dropdown-item" + href="{{ update_parameters(params, 'paginate_by', '25', ['page']) }}">25</a> + </li> + <li> + <a class="dropdown-item" + href="{{ update_parameters(params, 'paginate_by', '50', ['page']) }}">50</a> + </li> + <li> + <a class="dropdown-item" + href="{{ update_parameters(params, 'paginate_by', '100', ['page']) }}">100</a> + </li> + <li> + <a class="dropdown-item" + href="{{ update_parameters(params, 'paginate_by', '200', ['page']) }}">200</a> + </li> + <li> + <a class="dropdown-item" + href="{{ update_parameters(params, 'paginate_by', 'all', ['page']) }}">All</a> + </li> + </ul> </div> </div> </div> + </div> {% endblock content %} diff --git a/src/plainui/jinja2/plainui/badges/manage.html.j2 b/src/plainui/jinja2/plainui/badges/manage.html.j2 index 56f12aabfc064897a08692c9c017da9f9be331e7..a7c2ba96cbcf56641d2cfd2fda0018219a39b3de 100644 --- a/src/plainui/jinja2/plainui/badges/manage.html.j2 +++ b/src/plainui/jinja2/plainui/badges/manage.html.j2 @@ -11,10 +11,10 @@ {{ navMacro.top_nav(_("Manage Badges", has_breadcrumbs=True) ) }} <ol class="breadcrumb hub-breadcrumbs"> <li class="breadcrumb-item"> - <a href="{{ url("plainui:index") }}">{{ conf.name }}</a> + <a href="{{ url('plainui:index') }}">{{ conf.name }}</a> </li> <li class="breadcrumb-item"> - <a href="{{ url("plainui:userprofile") }}">{{ _("Profile") }}</a> + <a href="{{ url('plainui:userprofile') }}">{{ _("Profile") }}</a> </li> </ol> @@ -26,7 +26,7 @@ <div class="flex flex-column"> {{ csrf_input }} {{ form_elements.render_form_fields(redeem_badge_form) }} - <input type="submit" class="btn btn-primary mt-2" value="{{ _("Redeem") }}"> + <input type="submit" class="btn btn-primary mt-2" value="{{ _('Redeem') }}"> {{ form_elements.errors(redeem_badge_form) }} </div> </form> @@ -36,15 +36,11 @@ <h3 class="hub-section-title mb-4">{{ _("Pending Badges") }}</h3> <div> {% if not badges_not_accepted %} - <div class="hub-empty-section"> - {{ _("No badges are waiting for approval.") }} - </div> + <div class="hub-empty-section">{{ _("No badges are waiting for approval.") }}</div> {% endif %} {% for badge_link in badges_not_accepted %} {{ badge_elements.userBadgeForm(badge_link) }} - {% if not loop.last %} - <hr class="hub-spacer"> - {% endif %} + {% if not loop.last %}<hr class="hub-spacer">{% endif %} {% endfor %} </div> </div> @@ -55,9 +51,7 @@ {% if not badges_accepted %}<div class="row ">{{ _("No badges Accepted.") }}</div>{% endif %} {% for badge_link in badges_accepted %} {{ badge_elements.userBadgeForm(badge_link) }} - {% if not loop.last %} - <hr class="hub-spacer"> - {% endif %} + {% if not loop.last %}<hr class="hub-spacer">{% endif %} {% endfor %} </div> </div> diff --git a/src/plainui/jinja2/plainui/badges/token_detail.html.j2 b/src/plainui/jinja2/plainui/badges/token_detail.html.j2 index 3ef93e55604581ab5bace75429169d1ed09be75b..cf3230e8f6b5d748c984688671b3d8481a78aabb 100644 --- a/src/plainui/jinja2/plainui/badges/token_detail.html.j2 +++ b/src/plainui/jinja2/plainui/badges/token_detail.html.j2 @@ -9,25 +9,19 @@ {% endblock title %} {% block content %} - {{ navMacro.top_nav(_("BadgeToken")) }} + {{ navMacro.top_nav(_("BadgeToken") ) }} <div class="hub-card hub-vlayout-l"> - <div> - {{ _('BadgeToken__redeem__introduction') }} - </div> + <div>{{ _("BadgeToken__redeem__introduction") }}</div> <div class="hub-hlayout"> {{ badgeMacro.badge(token.badge, active=true) }} - {% if token_svg %} - <div class="flex-shrink-0"> - {{ token_svg | safe }} - </div> - {% endif %} + {% if token_svg %}<div class="flex-shrink-0">{{ token_svg | safe }}</div>{% endif %} <div class="text-break"> Get this badge by visiting - <a href="{{ hub_absolute('plainui:manage_badges') }}?redeem_token={{ object.token }}"> - {{ hub_absolute('plainui:manage_badges') }}?redeem_token={{ object.token }} + <a href="{{ hub_absolute("plainui:manage_badges") }}?redeem_token={{ object.token }}"> + {{ hub_absolute("plainui:manage_badges") }}?redeem_token={{ object.token }} </a> - or entering the token <code>{{ object.token }}</code> at <a href="{{ hub_absolute('plainui:manage_badges') }} ">{{ hub_absolute('plainui:manage_badges') }}</a> + or entering the token <code>{{ object.token }}</code> at <a href="{{ hub_absolute("plainui:manage_badges") }} ">{{ hub_absolute("plainui:manage_badges") }}</a> </div> </div> </div> diff --git a/src/plainui/jinja2/plainui/base.html.j2 b/src/plainui/jinja2/plainui/base.html.j2 index e745be6be562aa410f6361f129839a8f03be47bd..564f63e2e012084d9803e56b923edffe924ac5c3 100644 --- a/src/plainui/jinja2/plainui/base.html.j2 +++ b/src/plainui/jinja2/plainui/base.html.j2 @@ -4,91 +4,118 @@ {% import "plainui/components/alert.html.j2" as alert %} <!DOCTYPE html> -<html lang="{{ get_language() }}" class="no-js" data-bs-theme="{{ active_theme() }}"> - <head> - <meta charset="utf-8"> - <link rel="stylesheet" href="{{ static('plainui/%s.css' % (css_scope(),)) }}"> - <link rel="icon" href="{{ static('plainui/img/favicon.ico') }}" type="image/x-icon"> - <title>{% block title %}{% endblock %}</title> - <meta name="viewport" content="width=device-width, initial-scale=1"> - {% block head %}{% endblock %} - <link href="{{ static('vendor/map/leaflet.css') }}" rel='stylesheet' /> - <script src="{{ static('vendor/map/leaflet.js') }}"></script> - <link href="{{ static('vendor/map/leaflet.draw.css') }}" rel='stylesheet' /> - <script src="{{ static('vendor/map/leaflet.draw.js') }}"></script> - <script> +<html lang="{{ get_language() }}" + class="no-js" + data-bs-theme="{{ active_theme() }}"> + <head> + <meta charset="utf-8"> + <link rel="stylesheet" + href="{{ static('plainui/%s.css' % (css_scope() ,)) }}"> + <link rel="icon" + href="{{ static('plainui/img/favicon.ico') }}" + type="image/x-icon"> + <title> + {% block title %}{% endblock %} + </title> + <meta name="viewport" content="width=device-width, initial-scale=1"> + {% block head %}{% endblock %} + <link href="{{ static('vendor/map/leaflet.css') }}" rel='stylesheet' /> + <script src="{{ static('vendor/map/leaflet.js') }}"></script> + <link href="{{ static('vendor/map/leaflet.draw.css') }}" rel='stylesheet' /> + <script src="{{ static('vendor/map/leaflet.draw.js') }}"></script> + <script> document.addEventListener('DOMContentLoaded', (e) => { document.querySelector('html').classList.remove('no-js'); document.querySelector('html').classList.add('js'); }); - </script> - </head> - <body> -{%- block body -%} - <ul class="visually-hidden"> - <li> - <a href="#header">Zur Navigation</a> - </li> - <li> - <a href="#content">Zum Inhalt</a> - </li> - <li> - <a href="#footer">Zum Footer</a> - </li> - </ul> - <div class="d-flex"> - {{ nav.main_navbar() }} - <div class="hub-main container-fluid p-0 hub-bg-L04 overflow-y-scroll"> - {%- if browser_type(request) == 'ie' -%} - <div class="fixed-top alert bg-primary text-center" role="alert"> - <a href="https://www.getfirefox.com/" target="_blank" class="h2 bg-secondary text-dark">{{ _("Your Browser is broken. Get a better one here!") }}</a> - </div> - {%- endif -%} - {%- block fullpage -%} - <main class="container hub-content" id="content"> - {% if get_messages(request) or (conf and conf.global_notification) %} - <div id="messages"> - {% for message in get_messages(request) %} - {% if not message.tags %} - {% call alert.info() %} - {{ message }} - {% endcall %} - {% elif message.tags == 'error' %} - {% call alert.danger() %} - {{ message }} - {% endcall %} - {% else %} - {% call alert.alert(type=message.tags) %} - {{ message }} - {% endcall %} - {% endif %} - {% endfor -%} - </div> - {% endif %} - {%- block content %}{% endblock %} - </main> - {% endblock fullpage -%} - {%- block fullpage_add -%}{% endblock fullpage_add -%} - <footer id="footer" class="container px-3 py-5"> - <div class="d-lg-flex justify-content-between"> - <ul class="d-flex gap-3 list-unstyled"> - <li><a class="nav-link" title="{{ _("Contact Us") }}" href="https://help.ccc.de/">{{ _("Contact Us") }}</a></li> - <li><a class="nav-link" title="{{ _("Disclaimer") }}" href="https://legal.cccv.de">{{ _("Disclaimer") }}</a></li> - <li><a class="nav-link" title="{{ _("Principles") }}" href="https://help.ccc.de/principles.en.html.j2">{{ _("Principles") }}</a></li> - <li><a class="nav-link" title="{{ _("Helpful Teams") }}" href="{{ url( 'plainui:static_page', page_slug='start') }}#md-helpful-teams">{{ _("Helpful Teams") }}</a></li> - </ul> - <ul class="d-flex gap-2 list-unstyled"> - <li>{{ hbtns.share() }}</li> - <li>{{ hbtns.globe() }}</li> - </ul> - </div> - </footer> + </script> + </head> + <body> + {%- block body -%} + <ul class="visually-hidden"> + <li> + <a href="#header">Zur Navigation</a> + </li> + <li> + <a href="#content">Zum Inhalt</a> + </li> + <li> + <a href="#footer">Zum Footer</a> + </li> + </ul> + <div class="d-flex"> + {{ nav.main_navbar() }} + <div class="hub-main container-fluid p-0 hub-bg-L04 overflow-y-scroll"> + {%- if browser_type(request) == 'ie' -%} + <div class="fixed-top alert bg-primary text-center" role="alert"> + <a href="https://www.getfirefox.com/" + target="_blank" + class="h2 bg-secondary text-dark">{{ _("Your Browser is broken. Get a better one here!") }}</a> + </div> + {%- endif -%} + {%- block fullpage -%} + <main class="container hub-content" id="content"> + {% if get_messages(request) or (conf and conf.global_notification) %} + <div id="messages"> + {% for message in get_messages(request) %} + {% if not message.tags %} + {% call alert.info() %} + {{ message }} + {% endcall %} + {% elif message.tags == 'error' %} + {% call alert.danger() %} + {{ message }} + {% endcall %} + {% else %} + {% call alert.alert(type=message.tags) %} + {{ message }} + {% endcall %} + {% endif %} + {% endfor -%} + </div> + {% endif %} + {%- block content %}{% endblock %} + </main> + {% endblock fullpage -%} + {%- block fullpage_add -%} + {% endblock fullpage_add -%} + <footer id="footer" class="container px-3 py-5"> + <div class="d-lg-flex justify-content-between"> + <ul class="d-flex gap-3 list-unstyled"> + <li> + <a class="nav-link" + title="{{ _('Contact Us') }}" + href="https://help.ccc.de/">{{ _('Contact Us') }}</a> + </li> + <li> + <a class="nav-link" + title="{{ _('Disclaimer') }}" + href="https://legal.cccv.de">{{ _('Disclaimer') }}</a> + </li> + <li> + <a class="nav-link" + title="{{ _('Principles') }}" + href="https://help.ccc.de/principles.en.html.j2">{{ _('Principles') }}</a> + </li> + <li> + <a class="nav-link" + title="{{ _('Helpful Teams') }}" + href="{{ url('plainui:static_page', page_slug='start') }}#md-helpful-teams">{{ _('Helpful Teams') }}</a> + </li> + </ul> + <ul class="d-flex gap-2 list-unstyled"> + <li>{{ hbtns.share() }}</li> + <li>{{ hbtns.globe() }}</li> + </ul> </div> + </footer> </div> -{%- endblock body -%} - </body> - <script async src="{{ static('plainui/vendor/bootstrap5/bootstrap.bundle.min.js') }}" /></script> - <script> + </div> + {%- endblock body -%} + </body> + <script async + src="{{ static('plainui/vendor/bootstrap5/bootstrap.bundle.min.js') }}" /></script> + <script> setTimeout(() => { var options = { html: true, @@ -103,7 +130,7 @@ var exampleEl = document.getElementById('apps') var popover = new bootstrap.Popover(exampleEl, options) }, 500); - </script> - {%- block jstools -%}{%- endblock jstools -%} + </script> + {%- block jstools -%}{%- endblock jstools -%} -</html> + </html> diff --git a/src/plainui/jinja2/plainui/board.html.j2 b/src/plainui/jinja2/plainui/board.html.j2 index 2fa03e3922ecee990f2b0ce6a7a93727f8f54957..dd19dc08940a6b66cbb54fba1d60710a832649ce 100644 --- a/src/plainui/jinja2/plainui/board.html.j2 +++ b/src/plainui/jinja2/plainui/board.html.j2 @@ -3,86 +3,89 @@ {% extends "plainui/base.html.j2" %} -{% block title %}{{conf.name}} - {% if private %}{{ _("My Bulletin Board") }}{%else%}{{ _("Bulletin Board") }}{%endif%}{% endblock %} +{% block title %} + {{ conf.name }} - + {% if private %} + {{ _("My Bulletin Board") }} + {% else %} + {{ _("Bulletin Board") }} + {% endif %} +{% endblock %} {% block content %} - {% if private %}{{ navMacro.top_nav(_("My Bulletin Board")) }}{%else%}{{ navMacro.top_nav(_("Bulletin Board")) }}{%endif%} + {% if private %} + {{ navMacro.top_nav(_("My Bulletin Board") ) }} + {% else %} + {{ navMacro.top_nav(_("Bulletin Board") ) }} + {% endif %} - {% if not archive_mode %} + {% if not archive_mode %} <div class="my-3"> - <ul class="mb-0 list-unstyled d-flex justify-content-center"> - {% if current_user and not private %} - <li class="mb-3 mx-3"> - <a - href="{{ url('plainui:board_private') }}" - class="btn btn-secondary" - title="{{ _("My Bulletin Board") }}" - > - {{ _("My Bulletin Board") }} - </a> - </li> - {% else %} - <li class="mb-3 mx-3"> - <a - href="{{ url('plainui:board') }}" - class="btn btn-secondary" - title="{{ _("Public Bulletin Board") }}" - > - {{ _("Public Bulletin Board") }} - </a> - </li> - {% endif %} - <li class="mx-3"> - <a - href="{{ url('plainui:board_entry_new') }}" - class="btn btn-primary" - title="{{_("New Entry") }}" - > - {{ _("New Entry") }} - </a> - </li> - </ul> + <ul class="mb-0 list-unstyled d-flex justify-content-center"> + {% if current_user and not private %} + <li class="mb-3 mx-3"> + <a href="{{ url('plainui:board_private') }}" + class="btn btn-secondary" + title="{{ _('My Bulletin Board') }}">{{ _('My Bulletin Board') }}</a> + </li> + {% else %} + <li class="mb-3 mx-3"> + <a href="{{ url('plainui:board') }}" + class="btn btn-secondary" + title="{{ _('Public Bulletin Board') }}">{{ _('Public Bulletin Board') }}</a> + </li> + {% endif %} + <li class="mx-3"> + <a href="{{ url('plainui:board_entry_new') }}" + class="btn btn-primary" + title="{{ _('New Entry') }}">{{ _('New Entry') }}</a> + </li> + </ul> </div> - <form - method="POST" - id="delete_entry_form" - > - {{ csrf_input }} + <form method="POST" id="delete_entry_form"> + {{ csrf_input }} </form> <ul class="list-unstyled"> {%- for entry in board %} <li class="mb-5"> {% set item = { - "id": entry.id, - "title": entry.title, - "timestamp": entry.timestamp, - "text": entry.text_html, - "owner_name": entry.owner.display_name, - "owner_link": url('plainui:user', user_slug=entry.owner.slug), - "is_editable": current_user == entry.owner_id, - "edit_link": url('plainui:board_entry_edit', pk=entry.id), - "delete_form_id": "delete_entry_form", - "delete_link": url('plainui:board_entry_delete', pk=entry.id), - "is_private": not entry.is_public, - "detail_link": url('plainui:board_entry', pk=entry.id), - "report_link": url('plainui:report_content') ~ '?kind=board&kind_data=' ~ entry.id | urlencode ~ '&next=' ~ request.get_full_path() - } %} + "id": entry.id, + "title": entry.title, + "timestamp": entry.timestamp, + "text": entry.text_html, + "owner_name": entry.owner.display_name, + "owner_link": url('plainui:user', user_slug=entry.owner.slug), + "is_editable": current_user == entry.owner_id, + "edit_link": url('plainui:board_entry_edit', pk=entry.id), + "delete_form_id": "delete_entry_form", + "delete_link": url('plainui:board_entry_delete', pk=entry.id), + "is_private": not entry.is_public, + "detail_link": url('plainui:board_entry', pk=entry.id), + "report_link": url('plainui:report_content') ~ '?kind=board&kind_data=' ~ entry.id | urlencode ~ '&next=' ~ request.get_full_path() + } %} {{ tileBoardMacro.tile(item) }} - </li> - {% endfor -%} + </li> + {% endfor -%} </ul> <div class="my-3"> <ul class="mb-0 list-unstyled d-flex justify-content-center"> {% if page_obj.has_previous() %} - <li class="mb-3 mx-3"><a href="?page={{ page_obj.previous_page_number() }}" class="btn btn-secondary"> {{ _("board--paginage--previous") }}</a></li> + <li class="mb-3 mx-3"> + <a href="?page={{ page_obj.previous_page_number() }}" + class="btn btn-secondary">{{ _("board--paginage--previous") }}</a> + </li> {%- endif %} {% if page_obj.has_next() %} - <li class="mb-3 mx-3"><a href="?page={{ page_obj.next_page_number() }}" class="btn btn-primary"> {{ _("board--paginate--next") }}</a></li> + <li class="mb-3 mx-3"> + <a href="?page={{ page_obj.next_page_number() }}" + class="btn btn-primary">{{ _("board--paginate--next") }}</a> + </li> {%- endif %} </ul> </div> - {% else %}{# archive mode #} - {{ _('archivemode_notavailable') }} - {% endif %} + {% else %} + {# archive mode #} + {{ _("archivemode_notavailable") }} + {% endif %} {% endblock %} diff --git a/src/plainui/jinja2/plainui/board_edit.html.j2 b/src/plainui/jinja2/plainui/board_edit.html.j2 index 2b941359c0e802d77f518c6926ce52525fef351b..9e035b6baad51a2c735e02d578bf518deebfcf3b 100644 --- a/src/plainui/jinja2/plainui/board_edit.html.j2 +++ b/src/plainui/jinja2/plainui/board_edit.html.j2 @@ -1,32 +1,34 @@ {% import "plainui/components/form_elements.html.j2" as formElements %} {% extends "plainui/base.html.j2" %} -{% block title %}{{ conf.name }} - {{ _("Edit Board Entry") }}{% endblock title %} +{% block title %} + {{ conf.name }} - {{ _("Edit Board Entry") }} +{% endblock title %} {% block content %} - <form method="POST" - class="border my-11{% if form.errors %} border-danger{% endif %}"> - <h2 class="bg-secondary text-center text-dark m-0 px-3 py-1">{{ _("Edit Board Entry") }}</h2> - <div class="p-3"> - {{ csrf_input }} - {{ formElements.text(form, 'title') }} - {{ formElements.checkbox(form, 'is_public') }} - {{ formElements.translated_fields(form, 'text') }} - <ul class="d-flex pt-3 justify-content-center list-unstyled mb-0"> - <li class="mx-2"> - <button type="submit" class="btn btn-primary px-5">{{ _("Save") }}</button> - </li> - <li class="mx-2"> - <a href="{{ url('plainui:board') }}" - class="btn btn-dark" - title="{{ _('Public Bulletin Board') }}">{{ _("Public Bulletin Board") }}</a> - </li> - <li class="mx-2"> - <a href="{{ url('plainui:board_private') }}" - class="btn btn-dark" - title="{{ _('My Bulletin Board') }}">{{ _("My Bulletin Board") }}</a> - </li> - </ul> - {{ formElements.errors(form) }} - </div> - </form> - <hr class="hub-spacer"> -{% endblock content%} + <form method="POST" + class="border my-11{% if form.errors %} border-danger{% endif %}"> + <h2 class="bg-secondary text-center text-dark m-0 px-3 py-1">{{ _("Edit Board Entry") }}</h2> + <div class="p-3"> + {{ csrf_input }} + {{ formElements.text(form, 'title') }} + {{ formElements.checkbox(form, 'is_public') }} + {{ formElements.translated_fields(form, 'text') }} + <ul class="d-flex pt-3 justify-content-center list-unstyled mb-0"> + <li class="mx-2"> + <button type="submit" class="btn btn-primary px-5">{{ _("Save") }}</button> + </li> + <li class="mx-2"> + <a href="{{ url('plainui:board') }}" + class="btn btn-dark" + title="{{ _('Public Bulletin Board') }}">{{ _('Public Bulletin Board') }}</a> + </li> + <li class="mx-2"> + <a href="{{ url('plainui:board_private') }}" + class="btn btn-dark" + title="{{ _('My Bulletin Board') }}">{{ _('My Bulletin Board') }}</a> + </li> + </ul> + {{ formElements.errors(form) }} + </div> + </form> + <hr class="hub-spacer"> +{% endblock content %} diff --git a/src/plainui/jinja2/plainui/board_entry.html.j2 b/src/plainui/jinja2/plainui/board_entry.html.j2 index 4dc6be484801865f4c41d9bd7be23d1b2e4ed050..b3cebb4a4ddbb22f4ee07b4cdc51e1d16c06d653 100644 --- a/src/plainui/jinja2/plainui/board_entry.html.j2 +++ b/src/plainui/jinja2/plainui/board_entry.html.j2 @@ -4,30 +4,27 @@ {% import "plainui/components/tile_board.html.j2" as tileBoardMacro with context %} {% import "plainui/components/title.html.j2" as titleMacro %} {% block title %} - {{ conf.name }} - {{ entry.title }} + {{ conf.name }} - {{ entry.title }} {% endblock title %} {% block content %} - {{ navMacro.top_nav(entry.title) }} - <form - method="POST" - id="delete_entry_form" - > - {{ csrf_input }} - </form> - <article class="mb-11"> - {% set item = { - "id": entry.id, - "timestamp": entry.timestamp, - "text": entry.text_html, - "owner_name": entry.owner.display_name, - "owner_link": url('plainui:user', user_slug=entry.owner.slug), - "is_editable": current_user == entry.owner_id, - "edit_link": url('plainui:board_entry_edit', pk=entry.id), - "delete_form_id": "delete_entry_form", - "delete_link": url('plainui:board_entry_delete', pk=entry.id), - "is_private": not entry.is_public, - "full_text": true - } %} - {{ tileBoardMacro.tile(item) }} - </article> + {{ navMacro.top_nav(entry.title) }} + <form method="POST" id="delete_entry_form"> + {{ csrf_input }} + </form> + <article class="mb-11"> + {% set item = { + "id": entry.id, + "timestamp": entry.timestamp, + "text": entry.text_html, + "owner_name": entry.owner.display_name, + "owner_link": url('plainui:user', user_slug=entry.owner.slug), + "is_editable": current_user == entry.owner_id, + "edit_link": url('plainui:board_entry_edit', pk=entry.id), + "delete_form_id": "delete_entry_form", + "delete_link": url('plainui:board_entry_delete', pk=entry.id), + "is_private": not entry.is_public, + "full_text": true + } %} + {{ tileBoardMacro.tile(item) }} + </article> {% endblock content %} diff --git a/src/plainui/jinja2/plainui/channel_events.html.j2 b/src/plainui/jinja2/plainui/channel_events.html.j2 index 4fe06fd7428fa1cf6841849e645746361d90b6fe..380024e30b52235b790d8ec3215fae6ab7875e1b 100644 --- a/src/plainui/jinja2/plainui/channel_events.html.j2 +++ b/src/plainui/jinja2/plainui/channel_events.html.j2 @@ -3,123 +3,127 @@ {% import "plainui/components/list_events.html.j2" as listEventsMacro with context %} {% from "plainui/components/calendar.html.j2" import calendar with context %} {% block head %} - <script src="{{ static('plainui/js/player.js') }}"></script> - <script async src="{{ static('plainui/js/modal.js') }}"></script> + <script src="{{ static('plainui/js/player.js') }}"></script> + <script async src="{{ static('plainui/js/modal.js') }}"></script> {% endblock %} -{% block title %}{{conf.name}} - {{ _("Main Program") }}{% endblock %} +{% block title %}{{ conf.name }} - {{ _("Main Program") }}{% endblock %} {% block content %} - {{ titleMacro.title(title=_("Main Program")) }} + {{ titleMacro.title(title=_("Main Program") ) }} - <div class="d-flex flex-row-reverse p-3"> - <a href="{{ url('plainui:public_fahrplan') }}" target="_blank" role="button" class="btn btn-black"> - {{ _('Fahrplan in new Tab') }} - </a> - </div> - - {% for room in rooms_active %} - <div class="hub-event-overview border mb-3"> - <h3 class="bg-secondary px-3 py-1 text-dark h3 m-0 text-center"> - {{_("Room %(room)s", room=room.room.name)}} - </h3> - <div class="hub-event-overview-body p-2"> - <dl class="grid-list mb-0"> - <dt class="grid-list__item grid-list__item--title">{{ _("Event") }}</dt> - <dd class="grid-list__item grid-list__item--text"> - <p> - {{room.current_event.name}} - {% if room.current_event.language %} - <span class="fs-medium"> [{{ room.current_event.language | escape }}]</span> - {% endif %} - <br> - <a href="{{ url('plainui:room', slug=room.room.slug) }}" class="a a-bold">{{ _("participate") }}</a> // - <a class="a a-bold" href="{{ url('plainui:event', event_slug=room.current_event.slug ) }}">{{ _("details") }}</a> - </p> - </dd> - - <dt class="grid-list__item grid-list__item--title">{{ _("Time") }}</dt> - <dd class="grid-list__item grid-list__item--text"> - {{ room.current_event.schedule_start | strfdates }} {{ room.current_event.schedule_start | strftimehm }} - {{ room.current_event.schedule_end | strftimehm }} - </dd> + <div class="d-flex flex-row-reverse p-3"> + <a href="{{ url('plainui:public_fahrplan') }}" + target="_blank" + role="button" + class="btn btn-black">{{ _("Fahrplan in new Tab") }}</a> + </div> - <dt class="grid-list__item grid-list__item--title">{{ _("Abstract") }}</dt> - <dd class="grid-list__item grid-list__item--text"> - {% if room.current_event.abstract %} - {{ room.current_event.abstract | escape }} - {% else %} - - - {% endif %} - </dd> + {% for room in rooms_active %} + <div class="hub-event-overview border mb-3"> + <h3 class="bg-secondary px-3 py-1 text-dark h3 m-0 text-center">{{ _("Room %(room)s", room=room.room.name) }}</h3> + <div class="hub-event-overview-body p-2"> + <dl class="grid-list mb-0"> + <dt class="grid-list__item grid-list__item--title">{{ _("Event") }}</dt> + <dd class="grid-list__item grid-list__item--text"> + <p> + {{ room.current_event.name }} + {% if room.current_event.language %} + <span class="fs-medium">[{{ room.current_event.language | escape }}]</span> + {% endif %} + <br> + <a href="{{ url('plainui:room', slug=room.room.slug) }}" + class="a a-bold">{{ _("participate") }}</a> // + <a class="a a-bold" + href="{{ url('plainui:event', event_slug=room.current_event.slug) }}">{{ _("details") }}</a> + </p> + </dd> - <dt class="grid-list__item grid-list__item--title">{{ _("Speakers") }}</dt> - <dd class="grid-list__item grid-list__item--text"> - {{ room.current_event.get_all_speaker_names()| join(', ') | escape }} - </dd> - </dl> - {% if room.next_event %} - <div class="" > - <h3 class="py-1 text-white font-sans-serif h3 m-0 mb-2 bg-secondary text-dark text-center"> - {{ _("Upcoming") }} - </h3> - <dl class="mb-0"> - <dt class="grid-list__item grid-list__item--title">{{ _("Event") }}</dt> - <dd class="grid-list__item grid-list__item--text"> - <p>{{room.next_event.name}}<br> - <a href="{{ url('plainui:room', slug=room.room.slug) }}" class="a a-bold">{{ _("participate") }}</a> // - <a class="a a-bold" href="{{ url('plainui:event', event_slug=room.next_event.slug ) }}">{{ _("details") }}</a> - </p> - </dd> + <dt class="grid-list__item grid-list__item--title">{{ _("Time") }}</dt> + <dd class="grid-list__item grid-list__item--text"> + {{ room.current_event.schedule_start | strfdates }} {{ room.current_event.schedule_start | strftimehm }} - {{ room.current_event.schedule_end | strftimehm }} + </dd> - <dt class="grid-list__item grid-list__item--title">{{ _("Time") }}</dt> - <dd class="grid-list__item grid-list__item--text"> - {{ room.next_event.schedule_start | strfdates }} {{ room.next_event.schedule_start | strftimehm }} - {{ room.next_event.schedule_end | strftimehm }} - </dd> - </dl> - </div> + <dt class="grid-list__item grid-list__item--title">{{ _("Abstract") }}</dt> + <dd class="grid-list__item grid-list__item--text"> + {% if room.current_event.abstract %} + {{ room.current_event.abstract | escape }} + {% else %} + - {% endif %} - </div> - </div> - {% endfor %} - {% if rooms_active %} - <div class="d-flex m-0 mb-3 text-center w-100"> - <a href="{{ url('plainui:public_fahrplan') }}" target="_blank" role="button" class="mr-2 a a-bold"> - {{ _('Fahrplan in new Tab') }} - </a> - </div> - <hr class="hub-spacer"> - {% endif %} + </dd> - {% for room in rooms_inactive %} - <div class="hub-event-overview border mb-3"> - <h3 class="bg-secondary px-3 py-1 text-dark h3 m-0 text-center"> - {{_("Room %(room)s", room=room.room.name)}} - </h3> - <div class="hub-event-overview-body p-2"> - <div class="" > - <p>no running event</p> - </div> - {% if room.next_event %} - <div class="" > - <h3 class="py-1 text-white font-sans-serif h3 m-0 mb-2 bg-secondary text-dark text-center"> - {{ _("Upcoming") }} - </h3> - <dl class="mb-0"> - <dt class="grid-list__item grid-list__item--title">{{ _("Event") }}</dt> - <dd class="grid-list__item grid-list__item--text"> - <p>{{room.next_event.name}}<br> - <a href="{{ url('plainui:room', slug=room.room.slug) }}" class="a a-bold">{{ _("participate") }}</a> // - <a class="a a-bold" href="{{ url('plainui:event', event_slug=room.next_event.slug ) }}">{{ _("details") }}</a> - </p> - </dd> + <dt class="grid-list__item grid-list__item--title">{{ _("Speakers") }}</dt> + <dd class="grid-list__item grid-list__item--text"> + {{ room.current_event.get_all_speaker_names() | join(', ') | escape }} + </dd> + </dl> + {% if room.next_event %} + <div class=""> + <h3 class="py-1 text-white font-sans-serif h3 m-0 mb-2 bg-secondary text-dark text-center">{{ _("Upcoming") }}</h3> + <dl class="mb-0"> + <dt class="grid-list__item grid-list__item--title">{{ _("Event") }}</dt> + <dd class="grid-list__item grid-list__item--text"> + <p> + {{ room.next_event.name }} + <br> + <a href="{{ url('plainui:room', slug=room.room.slug) }}" + class="a a-bold">{{ _("participate") }}</a> // + <a class="a a-bold" + href="{{ url('plainui:event', event_slug=room.next_event.slug) }}">{{ _("details") }}</a> + </p> + </dd> - <dt class="grid-list__item grid-list__item--title">{{ _("Time") }}</dt> - <dd class="grid-list__item grid-list__item--text"> - {{ room.next_event.schedule_start | strfdates }} {{ room.next_event.schedule_start | strftimehm }} - {{ room.next_event.schedule_end | strftimehm }} - </dd> - </dl> - </div> - {% endif %} - </div> + <dt class="grid-list__item grid-list__item--title">{{ _("Time") }}</dt> + <dd class="grid-list__item grid-list__item--text"> + {{ room.next_event.schedule_start | strfdates }} {{ room.next_event.schedule_start | strftimehm }} - {{ room.next_event.schedule_end | strftimehm }} + </dd> + </dl> + </div> + {% endif %} + </div> + </div> + {% endfor %} + {% if rooms_active %} + <div class="d-flex m-0 mb-3 text-center w-100"> + <a href="{{ url('plainui:public_fahrplan') }}" + target="_blank" + role="button" + class="mr-2 a a-bold">{{ _("Fahrplan in new Tab") }}</a> + </div> + <hr class="hub-spacer"> + {% endif %} + + {% for room in rooms_inactive %} + <div class="hub-event-overview border mb-3"> + <h3 class="bg-secondary px-3 py-1 text-dark h3 m-0 text-center">{{ _("Room %(room)s", room=room.room.name) }}</h3> + <div class="hub-event-overview-body p-2"> + <div class=""> + <p>no running event</p> </div> - {% endfor %} + {% if room.next_event %} + <div class=""> + <h3 class="py-1 text-white font-sans-serif h3 m-0 mb-2 bg-secondary text-dark text-center">{{ _("Upcoming") }}</h3> + <dl class="mb-0"> + <dt class="grid-list__item grid-list__item--title">{{ _("Event") }}</dt> + <dd class="grid-list__item grid-list__item--text"> + <p> + {{ room.next_event.name }} + <br> + <a href="{{ url('plainui:room', slug=room.room.slug) }}" + class="a a-bold">{{ _("participate") }}</a> // + <a class="a a-bold" + href="{{ url('plainui:event', event_slug=room.next_event.slug) }}">{{ _("details") }}</a> + </p> + </dd> + + <dt class="grid-list__item grid-list__item--title">{{ _("Time") }}</dt> + <dd class="grid-list__item grid-list__item--text"> + {{ room.next_event.schedule_start | strfdates }} {{ room.next_event.schedule_start | strftimehm }} - {{ room.next_event.schedule_end | strftimehm }} + </dd> + </dl> + </div> + {% endif %} + </div> + </div> + {% endfor %} {% endblock %} diff --git a/src/plainui/jinja2/plainui/component_gallery.html.j2 b/src/plainui/jinja2/plainui/component_gallery.html.j2 index d780131bac80d7e51b9aa836ae32e214b296ff70..1c816456885c6a22051b66037422e749e68e7dd3 100644 --- a/src/plainui/jinja2/plainui/component_gallery.html.j2 +++ b/src/plainui/jinja2/plainui/component_gallery.html.j2 @@ -1,5 +1,5 @@ {% extends "plainui/base.html.j2" %} -{% import "plainui/components/title.html.j2" as titleMacro with context%} +{% import "plainui/components/title.html.j2" as titleMacro with context %} {% import "plainui/components/logo.html.j2" as logoMacro %} {% import "plainui/components/markdown.html.j2" as markdownMacro %} {% import "plainui/components/event_info.html.j2" as eventInfoMacro with context %} @@ -30,18 +30,31 @@ {% set event2 = {"id": "2", "name": "event example 2", "slug": "event_slug2", "banner_image": {"url": image_url}, "schedule_start": time1, "schedule_end": time2, "schedule_duration": duration, "description": "Lorem Ipsum ...", "language": "de", "assembly": assembly2 } %} {% set events = [ event1, event2, event1, event2 ] %} -{% set room1 = {"id": "8387a222-536d-4bb6-b15a-9b3688fda7d9", "name": "room example 1", "slug":"abc", "room_type": "bbb", "capacity": 42, "occupants": 23 } %} -{% set room2 = {"id": "8387a222-536d-4bb6-b15a-9b3688fda7a5", "name": "room example 2", "slug":"abcd", "room_type": "workshop", "capacity": 42 } %} +{% set room1 = { + "id": "8387a222-536d-4bb6-b15a-9b3688fda7d9", + "name": "room example 1", + "slug": "abc", + "room_type": "bbb", + "capacity": 42, + "occupants": 23 +} %} +{% set room2 = { + "id": "8387a222-536d-4bb6-b15a-9b3688fda7a5", + "name": "room example 2", + "slug": "abcd", + "room_type": "workshop", + "capacity": 42 +} %} {% set rooms = [ room1, room2 ] %} {% block content %} -<h1 class="my-5">Components Gallery</h1> -<dl> + <h1 class="my-5">Components Gallery</h1> + <dl> <dt class="h2 pb-3 mb-3 border-bottom">Logo</dt> <dd class="mb-10"> - {{ logoMacro.logo("#") }} + {{ logoMacro.logo("#") }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">Hub layout classes</dt> @@ -61,20 +74,20 @@ The layout is wrapped into rows on small screens. </p> <ul> - <li><code>hub-col-325px</code> can be applied to get a fixed-width column</li> - <li><code>hub-col-remaining</code> can be applied to use the remaining space</li> + <li> + <code>hub-col-325px</code> can be applied to get a fixed-width column + </li> + <li> + <code>hub-col-remaining</code> can be applied to use the remaining space + </li> </ul> <div class="hub-row mb-4"> - <div class="hub-col-325px border"> - fixed-width column - </div> - <div class="hub-col-remaining border"> - fills the remaining space - </div> + <div class="hub-col-325px border">fixed-width column</div> + <div class="hub-col-remaining border">fills the remaining space</div> </div> <p> - Use <code>hub-hlayout</code>, <code>hub-vlayout</code> or <code>hub-vlayout-l</code> for horizontal / vertical layouts with spacing. + Use <code>hub-hlayout</code>, <code>hub-vlayout</code> or <code>hub-vlayout-l</code> for horizontal / vertical layouts with spacing. </p> <div class="hub-hlayout border mb-3"> <div>hlayout-1</div> @@ -95,47 +108,49 @@ <dt class="h2 pb-3 mb-3 border-bottom">heroimage</dt> <dd class="mb-10"> - {{ imageMacro.image(image=image_url, alt="Alt Text", title="Title Text") }} + {{ imageMacro.image(image=image_url, alt="Alt Text", title="Title Text") }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">title</dt> <dd class="mb-10"> - {{ titleMacro.title(title="Fantastic Headline", fav_id="12345", fav_type="assembly", fav_is=true, sch_id="12345", sch_is=true, stream_url="url", report_url="url") }} + {{ titleMacro.title(title="Fantastic Headline", fav_id="12345", fav_type="assembly", fav_is=true, sch_id="12345", sch_is=true, stream_url="url", report_url="url") }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">Markdown</dt> <dd class="mb-10"> - {{ markdownMacro.markdown(markdown="Hello World") }} + {{ markdownMacro.markdown(markdown="Hello World") }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">Markdown Plain</dt> <dd class="mb-10"> - {{ markdownMacro.markdown_plain(markdown="Hello World") }} + {{ markdownMacro.markdown_plain(markdown="Hello World") }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">Event Info</dt> <dd class="mb-10"> - {{ eventInfoMacro.eventInfo(event=event1)}} + {{ eventInfoMacro.eventInfo(event=event1) }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">Slider</dt> <dd class="mb-10"> - {{ sliderMacro.slider(items=['eins', 'zwei', '3', '4']) }} + {{ sliderMacro.slider(items=['eins', 'zwei', '3', '4']) }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">Livestream</dt> <dd class="mb-10"> - {{ list_events.livestream({ + {{ list_events.livestream({ "room": "My Room", "stream_link": null, "voc_stream": null, "current_event": event1, "next_event": event2 - }) }} + }) }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">Resources box</dt> - <dd class="mb-10">{{ resboxMacro.resourcesbox("Resources title") }}</dd> + <dd class="mb-10"> + {{ resboxMacro.resourcesbox("Resources title") }} + </dd> <dt class="h2 pb-3 mb-3 border-bottom">Tags</dt> <dd class="mb-10"> @@ -151,160 +166,158 @@ {{ tagboxMacro.tag("style='outline-danger'", style="outline-danger") }} {{ tagboxMacro.tag("style='clear'", style="clear") }} {{ tagboxMacro.user("Peter") }} - {{ tagboxMacro.tag( - "long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_", - icon="fire" - ) }} + {{ tagboxMacro.tag("long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_long_tag_", + icon="fire") }} </div> </dd> <dt class="h2 pb-3 mb-3 border-bottom">Tagbox</dt> <dd class="mb-10"> - {{ tagboxMacro.tagbox(tags=[ + {{ tagboxMacro.tagbox(tags=[ { - "slug": "start" + "slug": "start" }, { - "slug": "end" + "slug": "end" } - ]) - }} + ]) + }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">Listbox</dt> <dd class="mb-10"> - {{listboxMacro.listbox(items=[{ + {{ listboxMacro.listbox(items=[{ "name": "Item 1", "link": "#", - }, - { + }, + { "name": "Item 2", "link": "#" - }]) }} + }]) }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">Assembly List</dt> <dd class="mb-10"> - {{ list_assm.list(assemblies, ['2']) }} + {{ list_assm.list(assemblies, ['2']) }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">Assembly Grid</dt> <dd class="mb-10"> - {{ list_assm.grid(assemblies, ['2']) }} + {{ list_assm.grid(assemblies, ['2']) }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">Assembly Slider</dt> <dd class="mb-10"> - {{ list_assm.slider(assemblies, ['2']) }} + {{ list_assm.slider(assemblies, ['2']) }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">Events List</dt> <dd class="mb-10"> - {{ list_events.list(events, ['1'] ) }} + {{ list_events.list(events, ['1']) }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">Events List Tiles</dt> <dd class="mb-10"> - {{ list_events.grid(events, ['1'] ) }} + {{ list_events.grid(events, ['1']) }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">Events List Slider</dt> <dd class="mb-10"> - {{ list_events.slider(events, ['1'] ) }} + {{ list_events.slider(events, ['1']) }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">Rooms List</dt> <dd class="mb-10"> - {{ list_rooms.list(rooms) }} + {{ list_rooms.list(rooms) }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">Tile Board</dt> <dd class="mb-10"> - {{tileBoardMacro.tile({ - "id": 1, - "title": "Item 1", - "timestamp": "2020-12-18 17:39:39.916726+00:00", - "text": "Hello World", - "owner_name": "Mia", - "owner_link": "#", - "is_editable": true, - "edit_link": "#", - "delete_form_id": "form-1", - "report_link": "#", - "detail_link": "#" - }) }} + {{ tileBoardMacro.tile({ + "id": 1, + "title": "Item 1", + "timestamp": "2020-12-18 17:39:39.916726+00:00", + "text": "Hello World", + "owner_name": "Mia", + "owner_link": "#", + "is_editable": true, + "edit_link": "#", + "delete_form_id": "form-1", + "report_link": "#", + "detail_link": "#" + }) }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">Three Cards</dt> <dd class="mb-10"> - {{threeCardsMacro.three_cards(cards=[{ + {{ threeCardsMacro.three_cards(cards=[{ "title": "Item 1", "text": "Lorem Ipsum", "link": { - "url": "#", - "text": "Link Text", - "type": "secondary" + "url": "#", + "text": "Link Text", + "type": "secondary" } - }, - { + }, + { "title": "Item 1", "text": "Lorem Ipsum" - }, - { + }, + { "title": "Item 1", "text": "Lorem Ipsum", "link": { - "url": "#", - "text": "Link Text", - "type": "assembly" + "url": "#", + "text": "Link Text", + "type": "assembly" + } } - } - ]) }} + ]) }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">Valid Form</dt> <dd class="mb-10"> - {{ formElementsMacro.text(form_valid, 'text') }} - {{ formElementsMacro.password(form_valid, 'password') }} - {{ formElementsMacro.checkbox(form_valid, 'checkbox') }} - {{ formElementsMacro.textarea(form_valid, 'textarea') }} - {{ formElementsMacro.errors(form_valid) }} + {{ formElementsMacro.text(form_valid, 'text') }} + {{ formElementsMacro.password(form_valid, 'password') }} + {{ formElementsMacro.checkbox(form_valid, 'checkbox') }} + {{ formElementsMacro.textarea(form_valid, 'textarea') }} + {{ formElementsMacro.errors(form_valid) }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">Invalid Form</dt> <dd class="mb-10"> - {{ formElementsMacro.text(form_invalid, 'text') }} - {{ formElementsMacro.password(form_invalid, 'password') }} - {{ formElementsMacro.checkbox(form_invalid, 'checkbox') }} - {{ formElementsMacro.textarea(form_invalid, 'textarea') }} - {{ formElementsMacro.errors(form_invalid) }} + {{ formElementsMacro.text(form_invalid, 'text') }} + {{ formElementsMacro.password(form_invalid, 'password') }} + {{ formElementsMacro.checkbox(form_invalid, 'checkbox') }} + {{ formElementsMacro.textarea(form_invalid, 'textarea') }} + {{ formElementsMacro.errors(form_invalid) }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">Functional Buttons</dt> <dd class="mb-10 d-flex"> - <span class="mr-auto"></span> - {{ fbtns.share("plainui:index") }} - {{ fbtns.fav(fav_id="1", fav_type="assembly", fav_is=true) }} - {{ fbtns.schedule(sch_id="2", sch_is=false) }} - {{ fbtns.stream(stream_url="URL") }} - {{ fbtns.report(report_url="URL") }} + <span class="mr-auto"></span> + {{ fbtns.share("plainui:index") }} + {{ fbtns.fav(fav_id="1", fav_type="assembly", fav_is=true) }} + {{ fbtns.schedule(sch_id="2", sch_is=false) }} + {{ fbtns.stream(stream_url="URL") }} + {{ fbtns.report(report_url="URL") }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">Valid Form rendered as form</dt> <dd class="mb-10"> - {{ formElementsMacro.render_form_fields(form_valid)}} - {{ formElementsMacro.errors(form_valid) }} + {{ formElementsMacro.render_form_fields(form_valid) }} + {{ formElementsMacro.errors(form_valid) }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">Invalid Form rendered as form</dt> <dd class="mb-10"> - {{ formElementsMacro.render_form_fields(form_invalid)}} - {{ formElementsMacro.errors(form_invalid) }} + {{ formElementsMacro.render_form_fields(form_invalid) }} + {{ formElementsMacro.errors(form_invalid) }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">Map</dt> <dd class="mb-10"> - {{ mapMacro.map(conf, poi=demo_map_startpos) }} + {{ mapMacro.map(conf, poi=demo_map_startpos) }} </dd> <dt class="h2 pb-3 mb-3 border-bottom">Alerts</dt> @@ -322,5 +335,5 @@ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. {% endcall %} </dd> -</dl> + </dl> {% endblock %} diff --git a/src/plainui/jinja2/plainui/components/alert.html.j2 b/src/plainui/jinja2/plainui/components/alert.html.j2 index e6ad0791d272e0c48f422491b20a3750d1003106..771e28fe8f81ff5e40e315a428e679854f326935 100644 --- a/src/plainui/jinja2/plainui/components/alert.html.j2 +++ b/src/plainui/jinja2/plainui/components/alert.html.j2 @@ -1,35 +1,33 @@ {% macro alert(type, class="") -%} -<div class="hub-alert hub-alert--{{ type }} {{ class }}"> - <div class="hub-alert__bar"></div> - <div role="alert"> - {{ caller() }} + <div class="hub-alert hub-alert--{{ type }} {{ class }}"> + <div class="hub-alert__bar"></div> + <div role="alert">{{ caller() }}</div> </div> -</div> {%- endmacro %} {% macro info(class="") -%} - {% set content=caller() %} + {% set content = caller() %} {% call alert("info", class=class) %} {{ content }} {% endcall %} {%- endmacro %} {% macro warning(class="") -%} - {% set content=caller() %} + {% set content = caller() %} {% call alert("warning", class=class) %} {{ content }} {% endcall %} {%- endmacro %} {% macro success(class="") -%} - {% set content=caller() %} + {% set content = caller() %} {% call alert("success", class=class) %} {{ content }} {% endcall %} {%- endmacro %} {% macro danger(class="") -%} - {% set content=caller() %} + {% set content = caller() %} {% call alert("danger", class=class) %} {{ content }} {% endcall %} diff --git a/src/plainui/jinja2/plainui/components/avatar.html.j2 b/src/plainui/jinja2/plainui/components/avatar.html.j2 index 959160115f244e70312d42bb26d2ab403788ce56..b759ca8c55a54b61d6cc310af48290376ab5237d 100644 --- a/src/plainui/jinja2/plainui/components/avatar.html.j2 +++ b/src/plainui/jinja2/plainui/components/avatar.html.j2 @@ -1,369 +1,1290 @@ {% macro avatar(user, scope="plattform") -%} - <figure class="col hub-avatar"> + <figure class="col hub-avatar"> {% if user and user.avatar_config and user.avatar_config != None %} - {{ wa(user.avatar_config) }} - {# {% elif user.avatar_url != None %} TODO: personal avatar if ever implemented #} - {% else %} - {{ no_avatar(scope) }} + {{ wa(user.avatar_config) }} + {# {% elif user.avatar_url != None %} TODO: personal avatar if ever implemented #} + {% else %} + {{ no_avatar(scope) }} {% endif %} - </figure> + </figure> {%- endmacro %} {% macro no_avatar(scope="plattform") -%} - <img class="hub-avatar__none" src="{{ static('plainui/img/hub-no-avatar-%s-active.png' % (scope,)) }}" alt="{{ _("Avatar image") }}"> + <img class="hub-avatar__none" + src="{{ static('plainui/img/hub-no-avatar-%s-active.png' % (scope,) ) }}" + alt="{{ _('Avatar image') }}"> {%- endmacro %} {% macro wa(avatar_config) %} - {% if avatar_config and avatar_config.custom and avatar_config.index and avatar_config.index < 0 %} - <div class="hub-avatar__wa-stacked"> - {% set color_resources = [ - {"name":"color_1", "img": "img/wa-avatar/customisation/character_color/character_color0.png"}, - {"name":"color_2", "img": "img/wa-avatar/customisation/character_color/character_color1.png"}, - {"name":"color_3", "img": "img/wa-avatar/customisation/character_color/character_color2.png"}, - {"name":"color_4", "img": "img/wa-avatar/customisation/character_color/character_color3.png"}, - {"name":"color_5", "img": "img/wa-avatar/customisation/character_color/character_color4.png"}, - {"name":"color_6", "img": "img/wa-avatar/customisation/character_color/character_color5.png"}, - {"name":"color_7", "img": "img/wa-avatar/customisation/character_color/character_color6.png"}, - {"name":"color_8", "img": "img/wa-avatar/customisation/character_color/character_color7.png"}, - {"name":"color_9", "img": "img/wa-avatar/customisation/character_color/character_color8.png"}, - {"name":"color_10", "img": "img/wa-avatar/customisation/character_color/character_color9.png"}, - {"name":"color_11", "img": "img/wa-avatar/customisation/character_color/character_color10.png"}, - {"name":"color_12", "img": "img/wa-avatar/customisation/character_color/character_color11.png"}, - {"name":"color_13", "img": "img/wa-avatar/customisation/character_color/character_color12.png"}, - {"name":"color_14", "img": "img/wa-avatar/customisation/character_color/character_color13.png"}, - {"name":"color_15", "img": "img/wa-avatar/customisation/character_color/character_color14.png"}, - {"name":"color_16", "img": "img/wa-avatar/customisation/character_color/character_color15.png"}, - {"name":"color_17", "img": "img/wa-avatar/customisation/character_color/character_color16.png"}, - {"name":"color_18", "img": "img/wa-avatar/customisation/character_color/character_color17.png"}, - {"name":"color_19", "img": "img/wa-avatar/customisation/character_color/character_color18.png"}, - {"name":"color_20", "img": "img/wa-avatar/customisation/character_color/character_color19.png"}, - {"name":"color_21", "img": "img/wa-avatar/customisation/character_color/character_color20.png"}, - {"name":"color_22", "img": "img/wa-avatar/customisation/character_color/character_color21.png"}, - {"name":"color_23", "img": "img/wa-avatar/customisation/character_color/character_color22.png"}, - {"name":"color_24", "img": "img/wa-avatar/customisation/character_color/character_color23.png"}, - {"name":"color_25", "img": "img/wa-avatar/customisation/character_color/character_color24.png"}, - {"name":"color_26", "img": "img/wa-avatar/customisation/character_color/character_color25.png"}, - {"name":"color_27", "img": "img/wa-avatar/customisation/character_color/character_color26.png"}, - {"name":"color_28", "img": "img/wa-avatar/customisation/character_color/character_color27.png"}, - {"name":"color_29", "img": "img/wa-avatar/customisation/character_color/character_color28.png"}, - {"name":"color_30", "img": "img/wa-avatar/customisation/character_color/character_color29.png"}, - {"name":"color_31", "img": "img/wa-avatar/customisation/character_color/character_color30.png"}, - {"name":"color_32", "img": "img/wa-avatar/customisation/character_color/character_color31.png"}, - {"name":"color_33", "img": "img/wa-avatar/customisation/character_color/character_color32.png"}, - {"name":"bodies_001", "img": "img/wa-avatar/customisation/character_color/bodies_001.png"}, - {"name":"bodies_002", "img": "img/wa-avatar/customisation/character_color/bodies_002.png"}, - {"name":"bodies_003", "img": "img/wa-avatar/customisation/character_color/bodies_003.png"}, - {"name":"bodies_004", "img": "img/wa-avatar/customisation/character_color/bodies_004.png"}, - {"name":"bodies_005", "img": "img/wa-avatar/customisation/character_color/bodies_005.png"}, - {"name":"bodies_006", "img": "img/wa-avatar/customisation/character_color/bodies_006.png"}, - {"name":"bodies_007", "img": "img/wa-avatar/customisation/character_color/bodies_007.png"}, - {"name":"bodies_008", "img": "img/wa-avatar/customisation/character_color/bodies_008.png"}, - {"name":"bodies_009", "img": "img/wa-avatar/customisation/character_color/bodies_009.png"}, - {"name":"bodies_010", "img": "img/wa-avatar/customisation/character_color/bodies_010.png"}, - {"name":"bodies_011", "img": "img/wa-avatar/customisation/character_color/bodies_011.png"}, - {"name":"bodies_012", "img": "img/wa-avatar/customisation/character_color/bodies_012.png"}, - {"name":"bodies_013", "img": "img/wa-avatar/customisation/character_color/bodies_013.png"}, - {"name":"bodies_014", "img": "img/wa-avatar/customisation/character_color/bodies_014.png"}, - {"name":"bodies_015", "img": "img/wa-avatar/customisation/character_color/bodies_015.png"}, - {"name":"bodies_016", "img": "img/wa-avatar/customisation/character_color/bodies_016.png"}, - {"name":"bodies_017", "img": "img/wa-avatar/customisation/character_color/bodies_017.png"}, - {"name":"old_01", "img": "img/wa-avatar/customisation/character_color/old_01.png"}, - {"name":"old_02", "img": "img/wa-avatar/customisation/character_color/old_02.png"}, - {"name":"old_03", "img": "img/wa-avatar/customisation/character_color/old_03.png"}, - {"name":"old_04", "img": "img/wa-avatar/customisation/character_color/old_04.png"}, - {"name":"old_05", "img": "img/wa-avatar/customisation/character_color/old_05.png"} - ] %} - - {% set eyes_resources = [ - {"name": "eyes_1", "img": "img/wa-avatar/customisation/character_eyes/character_eyes1.png"}, - {"name": "eyes_2", "img": "img/wa-avatar/customisation/character_eyes/character_eyes2.png"}, - {"name": "eyes_3", "img": "img/wa-avatar/customisation/character_eyes/character_eyes3.png"}, - {"name": "eyes_4", "img": "img/wa-avatar/customisation/character_eyes/character_eyes4.png"}, - {"name": "eyes_5", "img": "img/wa-avatar/customisation/character_eyes/character_eyes5.png"}, - {"name": "eyes_6", "img": "img/wa-avatar/customisation/character_eyes/character_eyes6.png"}, - {"name": "eyes_7", "img": "img/wa-avatar/customisation/character_eyes/character_eyes7.png"}, - {"name": "eyes_8", "img": "img/wa-avatar/customisation/character_eyes/character_eyes8.png"}, - {"name": "eyes_9", "img": "img/wa-avatar/customisation/character_eyes/character_eyes9.png"}, - {"name": "eyes_10", "img": "img/wa-avatar/customisation/character_eyes/character_eyes10.png"}, - {"name": "eyes_11", "img": "img/wa-avatar/customisation/character_eyes/character_eyes11.png"}, - {"name": "eyes_12", "img": "img/wa-avatar/customisation/character_eyes/character_eyes12.png"}, - {"name": "eyes_13", "img": "img/wa-avatar/customisation/character_eyes/character_eyes13.png"}, - {"name": "eyes_14", "img": "img/wa-avatar/customisation/character_eyes/character_eyes14.png"}, - {"name": "eyes_15", "img": "img/wa-avatar/customisation/character_eyes/character_eyes15.png"}, - {"name": "eyes_16", "img": "img/wa-avatar/customisation/character_eyes/character_eyes16.png"}, - {"name": "eyes_17", "img": "img/wa-avatar/customisation/character_eyes/character_eyes17.png"}, - {"name": "eyes_18", "img": "img/wa-avatar/customisation/character_eyes/character_eyes18.png"}, - {"name": "eyes_19", "img": "img/wa-avatar/customisation/character_eyes/character_eyes19.png"}, - {"name": "eyes_20", "img": "img/wa-avatar/customisation/character_eyes/character_eyes20.png"}, - {"name": "eyes_21", "img": "img/wa-avatar/customisation/character_eyes/character_eyes21.png"}, - {"name": "eyes_22", "img": "img/wa-avatar/customisation/character_eyes/character_eyes22.png"}, - {"name": "eyes_23", "img": "img/wa-avatar/customisation/character_eyes/character_eyes23.png"}, - {"name": "eyes_24", "img": "img/wa-avatar/customisation/character_eyes/character_eyes24.png"}, - {"name": "eyes_25", "img": "img/wa-avatar/customisation/character_eyes/character_eyes25.png"}, - {"name": "eyes_26", "img": "img/wa-avatar/customisation/character_eyes/character_eyes26.png"}, - {"name": "eyes_27", "img": "img/wa-avatar/customisation/character_eyes/character_eyes27.png"}, - {"name": "eyes_28", "img": "img/wa-avatar/customisation/character_eyes/character_eyes28.png"}, - {"name": "eyes_29", "img": "img/wa-avatar/customisation/character_eyes/character_eyes29.png"}, - {"name": "eyes_30", "img": "img/wa-avatar/customisation/character_eyes/character_eyes30.png"} - ] %} - - {% set hair_resources = [ - {"name":"hair_1", "img": "img/wa-avatar/customisation/character_hairs/character_hairs0.png"}, - {"name":"hair_2", "img": "img/wa-avatar/customisation/character_hairs/character_hairs1.png"}, - {"name":"hair_3", "img": "img/wa-avatar/customisation/character_hairs/character_hairs2.png"}, - {"name":"hair_4", "img": "img/wa-avatar/customisation/character_hairs/character_hairs3.png"}, - {"name":"hair_5", "img": "img/wa-avatar/customisation/character_hairs/character_hairs4.png"}, - {"name":"hair_6", "img": "img/wa-avatar/customisation/character_hairs/character_hairs5.png"}, - {"name":"hair_7", "img": "img/wa-avatar/customisation/character_hairs/character_hairs6.png"}, - {"name":"hair_8", "img": "img/wa-avatar/customisation/character_hairs/character_hairs7.png"}, - {"name":"hair_9", "img": "img/wa-avatar/customisation/character_hairs/character_hairs8.png"}, - {"name":"hair_10", "img": "img/wa-avatar/customisation/character_hairs/character_hairs9.png"}, - {"name":"hair_11", "img": "img/wa-avatar/customisation/character_hairs/character_hairs10.png"}, - {"name":"hair_12", "img": "img/wa-avatar/customisation/character_hairs/character_hairs11.png"}, - {"name":"hair_13", "img": "img/wa-avatar/customisation/character_hairs/character_hairs12.png"}, - {"name":"hair_14", "img": "img/wa-avatar/customisation/character_hairs/character_hairs13.png"}, - {"name":"hair_15", "img": "img/wa-avatar/customisation/character_hairs/character_hairs14.png"}, - {"name":"hair_16", "img": "img/wa-avatar/customisation/character_hairs/character_hairs15.png"}, - {"name":"hair_17", "img": "img/wa-avatar/customisation/character_hairs/character_hairs16.png"}, - {"name":"hair_18", "img": "img/wa-avatar/customisation/character_hairs/character_hairs17.png"}, - {"name":"hair_19", "img": "img/wa-avatar/customisation/character_hairs/character_hairs18.png"}, - {"name":"hair_20", "img": "img/wa-avatar/customisation/character_hairs/character_hairs19.png"}, - {"name":"hair_21", "img": "img/wa-avatar/customisation/character_hairs/character_hairs20.png"}, - {"name":"hair_22", "img": "img/wa-avatar/customisation/character_hairs/character_hairs21.png"}, - {"name":"hair_23", "img": "img/wa-avatar/customisation/character_hairs/character_hairs22.png"}, - {"name":"hair_24", "img": "img/wa-avatar/customisation/character_hairs/character_hairs23.png"}, - {"name":"hair_25", "img": "img/wa-avatar/customisation/character_hairs/character_hairs24.png"}, - {"name":"hair_26", "img": "img/wa-avatar/customisation/character_hairs/character_hairs25.png"}, - {"name":"hair_27", "img": "img/wa-avatar/customisation/character_hairs/character_hairs26.png"}, - {"name":"hair_28", "img": "img/wa-avatar/customisation/character_hairs/character_hairs27.png"}, - {"name":"hair_29", "img": "img/wa-avatar/customisation/character_hairs/character_hairs28.png"}, - {"name":"hair_30", "img": "img/wa-avatar/customisation/character_hairs/character_hairs29.png"}, - {"name":"hair_31", "img": "img/wa-avatar/customisation/character_hairs/character_hairs30.png"}, - {"name":"hair_32", "img": "img/wa-avatar/customisation/character_hairs/character_hairs31.png"}, - {"name":"hair_33", "img": "img/wa-avatar/customisation/character_hairs/character_hairs32.png"}, - {"name":"hair_34", "img": "img/wa-avatar/customisation/character_hairs/character_hairs33.png"}, - {"name":"hair_35", "img": "img/wa-avatar/customisation/character_hairs/character_hairs34.png"}, - {"name":"hair_36", "img": "img/wa-avatar/customisation/character_hairs/character_hairs35.png"}, - {"name":"hair_37", "img": "img/wa-avatar/customisation/character_hairs/character_hairs36.png"}, - {"name":"hair_38", "img": "img/wa-avatar/customisation/character_hairs/character_hairs37.png"}, - {"name":"hair_39", "img": "img/wa-avatar/customisation/character_hairs/character_hairs38.png"}, - {"name":"hair_40", "img": "img/wa-avatar/customisation/character_hairs/character_hairs39.png"}, - {"name":"hair_41", "img": "img/wa-avatar/customisation/character_hairs/character_hairs40.png"}, - {"name":"hair_42", "img": "img/wa-avatar/customisation/character_hairs/character_hairs41.png"}, - {"name":"hair_43", "img": "img/wa-avatar/customisation/character_hairs/character_hairs42.png"}, - {"name":"hair_44", "img": "img/wa-avatar/customisation/character_hairs/character_hairs43.png"}, - {"name":"hair_45", "img": "img/wa-avatar/customisation/character_hairs/character_hairs44.png"}, - {"name":"hair_46", "img": "img/wa-avatar/customisation/character_hairs/character_hairs45.png"}, - {"name":"hair_47", "img": "img/wa-avatar/customisation/character_hairs/character_hairs46.png"}, - {"name":"hair_48", "img": "img/wa-avatar/customisation/character_hairs/character_hairs47.png"}, - {"name":"hair_49", "img": "img/wa-avatar/customisation/character_hairs/character_hairs48.png"}, - {"name":"hair_50", "img": "img/wa-avatar/customisation/character_hairs/character_hairs49.png"}, - {"name":"hair_51", "img": "img/wa-avatar/customisation/character_hairs/character_hairs50.png"}, - {"name":"hair_52", "img": "img/wa-avatar/customisation/character_hairs/character_hairs51.png"}, - {"name":"hair_53", "img": "img/wa-avatar/customisation/character_hairs/character_hairs52.png"}, - {"name":"hair_54", "img": "img/wa-avatar/customisation/character_hairs/character_hairs53.png"}, - {"name":"hair_55", "img": "img/wa-avatar/customisation/character_hairs/character_hairs54.png"}, - {"name":"hair_56", "img": "img/wa-avatar/customisation/character_hairs/character_hairs55.png"}, - {"name":"hair_57", "img": "img/wa-avatar/customisation/character_hairs/character_hairs56.png"}, - {"name":"hair_58", "img": "img/wa-avatar/customisation/character_hairs/character_hairs57.png"}, - {"name":"hair_59", "img": "img/wa-avatar/customisation/character_hairs/character_hairs58.png"}, - {"name":"hair_60", "img": "img/wa-avatar/customisation/character_hairs/character_hairs59.png"}, - {"name":"hair_61", "img": "img/wa-avatar/customisation/character_hairs/character_hairs60.png"}, - {"name":"hair_62", "img": "img/wa-avatar/customisation/character_hairs/character_hairs61.png"}, - {"name":"hair_63", "img": "img/wa-avatar/customisation/character_hairs/character_hairs62.png"}, - {"name":"hair_64", "img": "img/wa-avatar/customisation/character_hairs/character_hairs63.png"}, - {"name":"hair_65", "img": "img/wa-avatar/customisation/character_hairs/character_hairs64.png"}, - {"name":"hair_66", "img": "img/wa-avatar/customisation/character_hairs/character_hairs65.png"}, - {"name":"hair_67", "img": "img/wa-avatar/customisation/character_hairs/character_hairs66.png"}, - {"name":"hair_68", "img": "img/wa-avatar/customisation/character_hairs/character_hairs67.png"}, - {"name":"hair_69", "img": "img/wa-avatar/customisation/character_hairs/character_hairs68.png"}, - {"name":"hair_70", "img": "img/wa-avatar/customisation/character_hairs/character_hairs69.png"}, - {"name":"hair_71", "img": "img/wa-avatar/customisation/character_hairs/character_hairs70.png"}, - {"name":"hair_72", "img": "img/wa-avatar/customisation/character_hairs/character_hairs71.png"}, - {"name":"hair_73", "img": "img/wa-avatar/customisation/character_hairs/character_hairs72.png"}, - {"name":"hair_74", "img": "img/wa-avatar/customisation/character_hairs/character_hairs73.png"} - ] %} - - {% set clothes_resources = [ - {"name":"clothes_1", "img": "img/wa-avatar/customisation/character_clothes/naked.png"}, - {"name":"clothes_1", "img": "img/wa-avatar/customisation/character_clothes/character_clothes0.png"}, - {"name":"clothes_2", "img": "img/wa-avatar/customisation/character_clothes/character_clothes1.png"}, - {"name":"clothes_3", "img": "img/wa-avatar/customisation/character_clothes/character_clothes2.png"}, - {"name":"clothes_4", "img": "img/wa-avatar/customisation/character_clothes/character_clothes3.png"}, - {"name":"clothes_5", "img": "img/wa-avatar/customisation/character_clothes/character_clothes4.png"}, - {"name":"clothes_6", "img": "img/wa-avatar/customisation/character_clothes/character_clothes5.png"}, - {"name":"clothes_7", "img": "img/wa-avatar/customisation/character_clothes/character_clothes6.png"}, - {"name":"clothes_8", "img": "img/wa-avatar/customisation/character_clothes/character_clothes7.png"}, - {"name":"clothes_9", "img": "img/wa-avatar/customisation/character_clothes/character_clothes8.png"}, - {"name":"clothes_10", "img": "img/wa-avatar/customisation/character_clothes/character_clothes9.png"}, - {"name":"clothes_11", "img": "img/wa-avatar/customisation/character_clothes/character_clothes10.png"}, - {"name":"clothes_12", "img": "img/wa-avatar/customisation/character_clothes/character_clothes11.png"}, - {"name":"clothes_13", "img": "img/wa-avatar/customisation/character_clothes/character_clothes12.png"}, - {"name":"clothes_14", "img": "img/wa-avatar/customisation/character_clothes/character_clothes13.png"}, - {"name":"clothes_15", "img": "img/wa-avatar/customisation/character_clothes/character_clothes14.png"}, - {"name":"clothes_16", "img": "img/wa-avatar/customisation/character_clothes/character_clothes15.png"}, - {"name":"clothes_17", "img": "img/wa-avatar/customisation/character_clothes/character_clothes16.png"}, - {"name":"clothes_18", "img": "img/wa-avatar/customisation/character_clothes/character_clothes17.png"}, - {"name":"clothes_19", "img": "img/wa-avatar/customisation/character_clothes/character_clothes18.png"}, - {"name":"clothes_20", "img": "img/wa-avatar/customisation/character_clothes/character_clothes19.png"}, - {"name":"clothes_21", "img": "img/wa-avatar/customisation/character_clothes/character_clothes20.png"}, - {"name":"clothes_22", "img": "img/wa-avatar/customisation/character_clothes/character_clothes21.png"}, - {"name":"clothes_23", "img": "img/wa-avatar/customisation/character_clothes/character_clothes22.png"}, - {"name":"clothes_24", "img": "img/wa-avatar/customisation/character_clothes/character_clothes23.png"}, - {"name":"clothes_25", "img": "img/wa-avatar/customisation/character_clothes/character_clothes24.png"}, - {"name":"clothes_26", "img": "img/wa-avatar/customisation/character_clothes/character_clothes25.png"}, - {"name":"clothes_27", "img": "img/wa-avatar/customisation/character_clothes/character_clothes26.png"}, - {"name":"clothes_28", "img": "img/wa-avatar/customisation/character_clothes/character_clothes27.png"}, - {"name":"clothes_29", "img": "img/wa-avatar/customisation/character_clothes/character_clothes28.png"}, - {"name":"clothes_30", "img": "img/wa-avatar/customisation/character_clothes/character_clothes29.png"}, - {"name":"clothes_31", "img": "img/wa-avatar/customisation/character_clothes/character_clothes30.png"}, - {"name":"clothes_32", "img": "img/wa-avatar/customisation/character_clothes/character_clothes31.png"}, - {"name":"clothes_33", "img": "img/wa-avatar/customisation/character_clothes/character_clothes32.png"}, - {"name":"clothes_34", "img": "img/wa-avatar/customisation/character_clothes/character_clothes33.png"}, - {"name":"clothes_35", "img": "img/wa-avatar/customisation/character_clothes/character_clothes34.png"}, - {"name":"clothes_36", "img": "img/wa-avatar/customisation/character_clothes/character_clothes35.png"}, - {"name":"clothes_37", "img": "img/wa-avatar/customisation/character_clothes/character_clothes36.png"}, - {"name":"clothes_38", "img": "img/wa-avatar/customisation/character_clothes/character_clothes37.png"}, - {"name":"clothes_39", "img": "img/wa-avatar/customisation/character_clothes/character_clothes38.png"}, - {"name":"clothes_40", "img": "img/wa-avatar/customisation/character_clothes/character_clothes39.png"}, - {"name":"clothes_41", "img": "img/wa-avatar/customisation/character_clothes/character_clothes40.png"}, - {"name":"clothes_42", "img": "img/wa-avatar/customisation/character_clothes/character_clothes41.png"}, - {"name":"clothes_43", "img": "img/wa-avatar/customisation/character_clothes/character_clothes42.png"}, - {"name":"clothes_44", "img": "img/wa-avatar/customisation/character_clothes/character_clothes43.png"}, - {"name":"clothes_45", "img": "img/wa-avatar/customisation/character_clothes/character_clothes44.png"}, - {"name":"clothes_46", "img": "img/wa-avatar/customisation/character_clothes/character_clothes45.png"}, - {"name":"clothes_47", "img": "img/wa-avatar/customisation/character_clothes/character_clothes46.png"}, - {"name":"clothes_48", "img": "img/wa-avatar/customisation/character_clothes/character_clothes47.png"}, - {"name":"clothes_49", "img": "img/wa-avatar/customisation/character_clothes/character_clothes48.png"}, - {"name":"clothes_50", "img": "img/wa-avatar/customisation/character_clothes/character_clothes49.png"}, - {"name":"clothes_51", "img": "img/wa-avatar/customisation/character_clothes/character_clothes50.png"}, - {"name":"clothes_52", "img": "img/wa-avatar/customisation/character_clothes/character_clothes51.png"}, - {"name":"clothes_53", "img": "img/wa-avatar/customisation/character_clothes/character_clothes52.png"}, - {"name":"clothes_54", "img": "img/wa-avatar/customisation/character_clothes/character_clothes53.png"}, - {"name":"clothes_55", "img": "img/wa-avatar/customisation/character_clothes/character_clothes54.png"}, - {"name":"clothes_56", "img": "img/wa-avatar/customisation/character_clothes/character_clothes55.png"}, - {"name":"clothes_57", "img": "img/wa-avatar/customisation/character_clothes/character_clothes56.png"}, - {"name":"clothes_58", "img": "img/wa-avatar/customisation/character_clothes/character_clothes57.png"}, - {"name":"clothes_59", "img": "img/wa-avatar/customisation/character_clothes/character_clothes58.png"}, - {"name":"clothes_60", "img": "img/wa-avatar/customisation/character_clothes/character_clothes59.png"}, - {"name":"clothes_61", "img": "img/wa-avatar/customisation/character_clothes/character_clothes60.png"}, - {"name":"clothes_62", "img": "img/wa-avatar/customisation/character_clothes/character_clothes61.png"}, - {"name":"clothes_63", "img": "img/wa-avatar/customisation/character_clothes/character_clothes62.png"}, - {"name":"clothes_64", "img": "img/wa-avatar/customisation/character_clothes/character_clothes63.png"}, - {"name":"clothes_65", "img": "img/wa-avatar/customisation/character_clothes/character_clothes64.png"}, - {"name":"clothes_66", "img": "img/wa-avatar/customisation/character_clothes/character_clothes65.png"}, - {"name":"clothes_67", "img": "img/wa-avatar/customisation/character_clothes/character_clothes66.png"}, - {"name":"clothes_68", "img": "img/wa-avatar/customisation/character_clothes/character_clothes67.png"}, - {"name":"clothes_69", "img": "img/wa-avatar/customisation/character_clothes/character_clothes68.png"}, - {"name":"clothes_70", "img": "img/wa-avatar/customisation/character_clothes/character_clothes69.png"}, - {"name":"red_stripes", "img": "img/wa-avatar/customisation/character_clothes/red_stripes.png"}, - {"name":"clothes_pride_shirt", "img": "img/wa-avatar/customisation/character_clothes/pride_shirt.png"}, - {"name":"clothes_black_hoodie", "img": "img/wa-avatar/customisation/character_clothes/black_hoodie.png"}, - {"name":"clothes_white_hoodie", "img": "img/wa-avatar/customisation/character_clothes/white_hoodie.png"}, - {"name":"clothes_engelbert", "img": "img/wa-avatar/customisation/character_clothes/engelbert.png"}, - {"name":"vest_yellow", "img": "img/wa-avatar/customisation/character_clothes/vest_yellow.png"}, - {"name":"vest_orange", "img": "img/wa-avatar/customisation/character_clothes/vest_orange.png"}, - {"name":"vest_red", "img": "img/wa-avatar/customisation/character_clothes/vest_red.png"}, - {"name":"vest_purple", "img": "img/wa-avatar/customisation/character_clothes/vest_purple.png"}, - {"name":"vest_blue", "img": "img/wa-avatar/customisation/character_clothes/vest_blue.png"}, - {"name":"vest_green", "img": "img/wa-avatar/customisation/character_clothes/vest_green.png"} - ] %} + {% if avatar_config and avatar_config.custom and avatar_config.index and avatar_config.index < 0 %} + <div class="hub-avatar__wa-stacked"> + {% set color_resources = [ + { + "name": "color_1", + "img": "img/wa-avatar/customisation/character_color/character_color0.png" + }, + { + "name": "color_2", + "img": "img/wa-avatar/customisation/character_color/character_color1.png" + }, + { + "name": "color_3", + "img": "img/wa-avatar/customisation/character_color/character_color2.png" + }, + { + "name": "color_4", + "img": "img/wa-avatar/customisation/character_color/character_color3.png" + }, + { + "name": "color_5", + "img": "img/wa-avatar/customisation/character_color/character_color4.png" + }, + { + "name": "color_6", + "img": "img/wa-avatar/customisation/character_color/character_color5.png" + }, + { + "name": "color_7", + "img": "img/wa-avatar/customisation/character_color/character_color6.png" + }, + { + "name": "color_8", + "img": "img/wa-avatar/customisation/character_color/character_color7.png" + }, + { + "name": "color_9", + "img": "img/wa-avatar/customisation/character_color/character_color8.png" + }, + { + "name": "color_10", + "img": "img/wa-avatar/customisation/character_color/character_color9.png" + }, + { + "name": "color_11", + "img": "img/wa-avatar/customisation/character_color/character_color10.png" + }, + { + "name": "color_12", + "img": "img/wa-avatar/customisation/character_color/character_color11.png" + }, + { + "name": "color_13", + "img": "img/wa-avatar/customisation/character_color/character_color12.png" + }, + { + "name": "color_14", + "img": "img/wa-avatar/customisation/character_color/character_color13.png" + }, + { + "name": "color_15", + "img": "img/wa-avatar/customisation/character_color/character_color14.png" + }, + { + "name": "color_16", + "img": "img/wa-avatar/customisation/character_color/character_color15.png" + }, + { + "name": "color_17", + "img": "img/wa-avatar/customisation/character_color/character_color16.png" + }, + { + "name": "color_18", + "img": "img/wa-avatar/customisation/character_color/character_color17.png" + }, + { + "name": "color_19", + "img": "img/wa-avatar/customisation/character_color/character_color18.png" + }, + { + "name": "color_20", + "img": "img/wa-avatar/customisation/character_color/character_color19.png" + }, + { + "name": "color_21", + "img": "img/wa-avatar/customisation/character_color/character_color20.png" + }, + { + "name": "color_22", + "img": "img/wa-avatar/customisation/character_color/character_color21.png" + }, + { + "name": "color_23", + "img": "img/wa-avatar/customisation/character_color/character_color22.png" + }, + { + "name": "color_24", + "img": "img/wa-avatar/customisation/character_color/character_color23.png" + }, + { + "name": "color_25", + "img": "img/wa-avatar/customisation/character_color/character_color24.png" + }, + { + "name": "color_26", + "img": "img/wa-avatar/customisation/character_color/character_color25.png" + }, + { + "name": "color_27", + "img": "img/wa-avatar/customisation/character_color/character_color26.png" + }, + { + "name": "color_28", + "img": "img/wa-avatar/customisation/character_color/character_color27.png" + }, + { + "name": "color_29", + "img": "img/wa-avatar/customisation/character_color/character_color28.png" + }, + { + "name": "color_30", + "img": "img/wa-avatar/customisation/character_color/character_color29.png" + }, + { + "name": "color_31", + "img": "img/wa-avatar/customisation/character_color/character_color30.png" + }, + { + "name": "color_32", + "img": "img/wa-avatar/customisation/character_color/character_color31.png" + }, + { + "name": "color_33", + "img": "img/wa-avatar/customisation/character_color/character_color32.png" + }, + { + "name": "bodies_001", + "img": "img/wa-avatar/customisation/character_color/bodies_001.png" + }, + { + "name": "bodies_002", + "img": "img/wa-avatar/customisation/character_color/bodies_002.png" + }, + { + "name": "bodies_003", + "img": "img/wa-avatar/customisation/character_color/bodies_003.png" + }, + { + "name": "bodies_004", + "img": "img/wa-avatar/customisation/character_color/bodies_004.png" + }, + { + "name": "bodies_005", + "img": "img/wa-avatar/customisation/character_color/bodies_005.png" + }, + { + "name": "bodies_006", + "img": "img/wa-avatar/customisation/character_color/bodies_006.png" + }, + { + "name": "bodies_007", + "img": "img/wa-avatar/customisation/character_color/bodies_007.png" + }, + { + "name": "bodies_008", + "img": "img/wa-avatar/customisation/character_color/bodies_008.png" + }, + { + "name": "bodies_009", + "img": "img/wa-avatar/customisation/character_color/bodies_009.png" + }, + { + "name": "bodies_010", + "img": "img/wa-avatar/customisation/character_color/bodies_010.png" + }, + { + "name": "bodies_011", + "img": "img/wa-avatar/customisation/character_color/bodies_011.png" + }, + { + "name": "bodies_012", + "img": "img/wa-avatar/customisation/character_color/bodies_012.png" + }, + { + "name": "bodies_013", + "img": "img/wa-avatar/customisation/character_color/bodies_013.png" + }, + { + "name": "bodies_014", + "img": "img/wa-avatar/customisation/character_color/bodies_014.png" + }, + { + "name": "bodies_015", + "img": "img/wa-avatar/customisation/character_color/bodies_015.png" + }, + { + "name": "bodies_016", + "img": "img/wa-avatar/customisation/character_color/bodies_016.png" + }, + { + "name": "bodies_017", + "img": "img/wa-avatar/customisation/character_color/bodies_017.png" + }, + { + "name": "old_01", + "img": "img/wa-avatar/customisation/character_color/old_01.png" + }, + { + "name": "old_02", + "img": "img/wa-avatar/customisation/character_color/old_02.png" + }, + { + "name": "old_03", + "img": "img/wa-avatar/customisation/character_color/old_03.png" + }, + { + "name": "old_04", + "img": "img/wa-avatar/customisation/character_color/old_04.png" + }, + { + "name": "old_05", + "img": "img/wa-avatar/customisation/character_color/old_05.png" + } + ] %} - {% set hats_resources = [ - {"name": "hats_1", "img": "img/wa-avatar/customisation/character_hats/character_hats1.png"}, - {"name": "hats_2", "img": "img/wa-avatar/customisation/character_hats/character_hats2.png"}, - {"name": "hats_3", "img": "img/wa-avatar/customisation/character_hats/character_hats3.png"}, - {"name": "hats_4", "img": "img/wa-avatar/customisation/character_hats/character_hats4.png"}, - {"name": "hats_5", "img": "img/wa-avatar/customisation/character_hats/character_hats5.png"}, - {"name": "hats_6", "img": "img/wa-avatar/customisation/character_hats/character_hats6.png"}, - {"name": "hats_7", "img": "img/wa-avatar/customisation/character_hats/character_hats7.png"}, - {"name": "hats_8", "img": "img/wa-avatar/customisation/character_hats/character_hats8.png"}, - {"name": "hats_9", "img": "img/wa-avatar/customisation/character_hats/character_hats9.png"}, - {"name": "hats_10", "img": "img/wa-avatar/customisation/character_hats/character_hats10.png"}, - {"name": "hats_11", "img": "img/wa-avatar/customisation/character_hats/character_hats11.png"}, - {"name": "hats_12", "img": "img/wa-avatar/customisation/character_hats/character_hats12.png"}, - {"name": "hats_13", "img": "img/wa-avatar/customisation/character_hats/character_hats13.png"}, - {"name": "hats_14", "img": "img/wa-avatar/customisation/character_hats/character_hats14.png"}, - {"name": "hats_15", "img": "img/wa-avatar/customisation/character_hats/character_hats15.png"}, - {"name": "hats_16", "img": "img/wa-avatar/customisation/character_hats/character_hats16.png"}, - {"name": "hats_17", "img": "img/wa-avatar/customisation/character_hats/character_hats17.png"}, - {"name": "hats_18", "img": "img/wa-avatar/customisation/character_hats/character_hats18.png"}, - {"name": "hats_19", "img": "img/wa-avatar/customisation/character_hats/character_hats19.png"}, - {"name": "hats_20", "img": "img/wa-avatar/customisation/character_hats/character_hats20.png"}, - {"name": "hats_21", "img": "img/wa-avatar/customisation/character_hats/character_hats21.png"}, - {"name": "hats_22", "img": "img/wa-avatar/customisation/character_hats/character_hats22.png"}, - {"name": "hats_23", "img": "img/wa-avatar/customisation/character_hats/character_hats23.png"}, - {"name": "hats_24", "img": "img/wa-avatar/customisation/character_hats/character_hats24.png"}, - {"name": "hats_25", "img": "img/wa-avatar/customisation/character_hats/character_hats25.png"}, - {"name": "hats_26", "img": "img/wa-avatar/customisation/character_hats/character_hats26.png"}, - {"name": "tinfoil_hat1", "img": "img/wa-avatar/customisation/character_hats/tinfoil_hat1.png"}, - {"name": "purple_hat", "img": "img/wa-avatar/customisation/character_hats/purple_hat.png"}, - {"name": "diving_mask1", "img": "img/wa-avatar/customisation/character_hats/diving_mask1.png"}, - {"name": "accessory_mask", "img": "img/wa-avatar/customisation/character_accessories/mask.png"}, - {"name": "sign-dont-talk", "img": "img/wa-avatar/customisation/character_accessories/sign-dont-talk.png"}, - {"name": "sign-talk", "img": "img/wa-avatar/customisation/character_accessories/sign-talk.png"} - ] %} + {% set eyes_resources = [ + { + "name": "eyes_1", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes1.png" + }, + { + "name": "eyes_2", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes2.png" + }, + { + "name": "eyes_3", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes3.png" + }, + { + "name": "eyes_4", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes4.png" + }, + { + "name": "eyes_5", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes5.png" + }, + { + "name": "eyes_6", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes6.png" + }, + { + "name": "eyes_7", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes7.png" + }, + { + "name": "eyes_8", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes8.png" + }, + { + "name": "eyes_9", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes9.png" + }, + { + "name": "eyes_10", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes10.png" + }, + { + "name": "eyes_11", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes11.png" + }, + { + "name": "eyes_12", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes12.png" + }, + { + "name": "eyes_13", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes13.png" + }, + { + "name": "eyes_14", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes14.png" + }, + { + "name": "eyes_15", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes15.png" + }, + { + "name": "eyes_16", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes16.png" + }, + { + "name": "eyes_17", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes17.png" + }, + { + "name": "eyes_18", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes18.png" + }, + { + "name": "eyes_19", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes19.png" + }, + { + "name": "eyes_20", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes20.png" + }, + { + "name": "eyes_21", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes21.png" + }, + { + "name": "eyes_22", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes22.png" + }, + { + "name": "eyes_23", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes23.png" + }, + { + "name": "eyes_24", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes24.png" + }, + { + "name": "eyes_25", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes25.png" + }, + { + "name": "eyes_26", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes26.png" + }, + { + "name": "eyes_27", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes27.png" + }, + { + "name": "eyes_28", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes28.png" + }, + { + "name": "eyes_29", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes29.png" + }, + { + "name": "eyes_30", + "img": "img/wa-avatar/customisation/character_eyes/character_eyes30.png" + } + ] %} - {% set accessories_resources = [ - {"name": "accessory_1", "img": "img/wa-avatar/customisation/character_accessories/character_accessories1.png"}, - {"name": "accessory_22", "img": "img/wa-avatar/customisation/character_accessories/character_accessories22.png"}, - {"name": "accessory_23", "img": "img/wa-avatar/customisation/character_accessories/character_accessories23.png"}, - {"name": "accessory_24", "img": "img/wa-avatar/customisation/character_accessories/character_accessories24.png"}, - {"name": "accessory_25", "img": "img/wa-avatar/customisation/character_accessories/character_accessories25.png"}, - {"name": "accessory_26", "img": "img/wa-avatar/customisation/character_accessories/character_accessories26.png"}, - {"name": "accessory_27", "img": "img/wa-avatar/customisation/character_accessories/character_accessories27.png"}, - {"name": "accessory_28", "img": "img/wa-avatar/customisation/character_accessories/character_accessories28.png"}, - {"name": "accessory_mate_bottle", "img": "img/wa-avatar/customisation/character_accessories/mate_bottle1.png"}, - {"name": "accessory_mask", "img": "img/wa-avatar/customisation/character_accessories/mask.png"}, - {"name": "wings_01", "img": "img/wa-avatar/customisation/character_accessories/wings_01.png"}, - {"name": "wings_02", "img": "img/wa-avatar/customisation/character_accessories/wings_02.png"}, - {"name": "wheelchair", "img": "img/wa-avatar/customisation/character_accessories/wheelchair.png"}, - {"name": "backpack", "img": "img/wa-avatar/customisation/character_accessories/backpack.png"}, - {"name": "ring", "img": "img/wa-avatar/customisation/character_accessories/ring.png"}, - {"name": "sign-dont-talk", "img": "img/wa-avatar/customisation/character_accessories/sign-dont-talk.png"}, - {"name": "sign-talk", "img": "img/wa-avatar/customisation/character_accessories/sign-talk.png"} - ] %} + {% set hair_resources = [ + { + "name": "hair_1", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs0.png" + }, + { + "name": "hair_2", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs1.png" + }, + { + "name": "hair_3", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs2.png" + }, + { + "name": "hair_4", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs3.png" + }, + { + "name": "hair_5", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs4.png" + }, + { + "name": "hair_6", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs5.png" + }, + { + "name": "hair_7", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs6.png" + }, + { + "name": "hair_8", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs7.png" + }, + { + "name": "hair_9", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs8.png" + }, + { + "name": "hair_10", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs9.png" + }, + { + "name": "hair_11", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs10.png" + }, + { + "name": "hair_12", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs11.png" + }, + { + "name": "hair_13", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs12.png" + }, + { + "name": "hair_14", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs13.png" + }, + { + "name": "hair_15", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs14.png" + }, + { + "name": "hair_16", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs15.png" + }, + { + "name": "hair_17", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs16.png" + }, + { + "name": "hair_18", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs17.png" + }, + { + "name": "hair_19", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs18.png" + }, + { + "name": "hair_20", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs19.png" + }, + { + "name": "hair_21", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs20.png" + }, + { + "name": "hair_22", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs21.png" + }, + { + "name": "hair_23", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs22.png" + }, + { + "name": "hair_24", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs23.png" + }, + { + "name": "hair_25", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs24.png" + }, + { + "name": "hair_26", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs25.png" + }, + { + "name": "hair_27", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs26.png" + }, + { + "name": "hair_28", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs27.png" + }, + { + "name": "hair_29", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs28.png" + }, + { + "name": "hair_30", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs29.png" + }, + { + "name": "hair_31", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs30.png" + }, + { + "name": "hair_32", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs31.png" + }, + { + "name": "hair_33", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs32.png" + }, + { + "name": "hair_34", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs33.png" + }, + { + "name": "hair_35", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs34.png" + }, + { + "name": "hair_36", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs35.png" + }, + { + "name": "hair_37", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs36.png" + }, + { + "name": "hair_38", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs37.png" + }, + { + "name": "hair_39", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs38.png" + }, + { + "name": "hair_40", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs39.png" + }, + { + "name": "hair_41", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs40.png" + }, + { + "name": "hair_42", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs41.png" + }, + { + "name": "hair_43", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs42.png" + }, + { + "name": "hair_44", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs43.png" + }, + { + "name": "hair_45", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs44.png" + }, + { + "name": "hair_46", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs45.png" + }, + { + "name": "hair_47", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs46.png" + }, + { + "name": "hair_48", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs47.png" + }, + { + "name": "hair_49", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs48.png" + }, + { + "name": "hair_50", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs49.png" + }, + { + "name": "hair_51", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs50.png" + }, + { + "name": "hair_52", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs51.png" + }, + { + "name": "hair_53", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs52.png" + }, + { + "name": "hair_54", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs53.png" + }, + { + "name": "hair_55", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs54.png" + }, + { + "name": "hair_56", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs55.png" + }, + { + "name": "hair_57", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs56.png" + }, + { + "name": "hair_58", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs57.png" + }, + { + "name": "hair_59", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs58.png" + }, + { + "name": "hair_60", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs59.png" + }, + { + "name": "hair_61", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs60.png" + }, + { + "name": "hair_62", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs61.png" + }, + { + "name": "hair_63", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs62.png" + }, + { + "name": "hair_64", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs63.png" + }, + { + "name": "hair_65", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs64.png" + }, + { + "name": "hair_66", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs65.png" + }, + { + "name": "hair_67", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs66.png" + }, + { + "name": "hair_68", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs67.png" + }, + { + "name": "hair_69", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs68.png" + }, + { + "name": "hair_70", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs69.png" + }, + { + "name": "hair_71", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs70.png" + }, + { + "name": "hair_72", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs71.png" + }, + { + "name": "hair_73", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs72.png" + }, + { + "name": "hair_74", + "img": "img/wa-avatar/customisation/character_hairs/character_hairs73.png" + } + ] %} - {% set body=[color_resources, eyes_resources, hair_resources, clothes_resources, hats_resources, accessories_resources, [], []] %} + {% set clothes_resources = [ + { + "name": "clothes_1", + "img": "img/wa-avatar/customisation/character_clothes/naked.png" + }, + { + "name": "clothes_1", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes0.png" + }, + { + "name": "clothes_2", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes1.png" + }, + { + "name": "clothes_3", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes2.png" + }, + { + "name": "clothes_4", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes3.png" + }, + { + "name": "clothes_5", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes4.png" + }, + { + "name": "clothes_6", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes5.png" + }, + { + "name": "clothes_7", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes6.png" + }, + { + "name": "clothes_8", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes7.png" + }, + { + "name": "clothes_9", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes8.png" + }, + { + "name": "clothes_10", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes9.png" + }, + { + "name": "clothes_11", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes10.png" + }, + { + "name": "clothes_12", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes11.png" + }, + { + "name": "clothes_13", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes12.png" + }, + { + "name": "clothes_14", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes13.png" + }, + { + "name": "clothes_15", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes14.png" + }, + { + "name": "clothes_16", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes15.png" + }, + { + "name": "clothes_17", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes16.png" + }, + { + "name": "clothes_18", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes17.png" + }, + { + "name": "clothes_19", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes18.png" + }, + { + "name": "clothes_20", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes19.png" + }, + { + "name": "clothes_21", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes20.png" + }, + { + "name": "clothes_22", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes21.png" + }, + { + "name": "clothes_23", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes22.png" + }, + { + "name": "clothes_24", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes23.png" + }, + { + "name": "clothes_25", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes24.png" + }, + { + "name": "clothes_26", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes25.png" + }, + { + "name": "clothes_27", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes26.png" + }, + { + "name": "clothes_28", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes27.png" + }, + { + "name": "clothes_29", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes28.png" + }, + { + "name": "clothes_30", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes29.png" + }, + { + "name": "clothes_31", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes30.png" + }, + { + "name": "clothes_32", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes31.png" + }, + { + "name": "clothes_33", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes32.png" + }, + { + "name": "clothes_34", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes33.png" + }, + { + "name": "clothes_35", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes34.png" + }, + { + "name": "clothes_36", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes35.png" + }, + { + "name": "clothes_37", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes36.png" + }, + { + "name": "clothes_38", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes37.png" + }, + { + "name": "clothes_39", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes38.png" + }, + { + "name": "clothes_40", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes39.png" + }, + { + "name": "clothes_41", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes40.png" + }, + { + "name": "clothes_42", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes41.png" + }, + { + "name": "clothes_43", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes42.png" + }, + { + "name": "clothes_44", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes43.png" + }, + { + "name": "clothes_45", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes44.png" + }, + { + "name": "clothes_46", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes45.png" + }, + { + "name": "clothes_47", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes46.png" + }, + { + "name": "clothes_48", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes47.png" + }, + { + "name": "clothes_49", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes48.png" + }, + { + "name": "clothes_50", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes49.png" + }, + { + "name": "clothes_51", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes50.png" + }, + { + "name": "clothes_52", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes51.png" + }, + { + "name": "clothes_53", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes52.png" + }, + { + "name": "clothes_54", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes53.png" + }, + { + "name": "clothes_55", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes54.png" + }, + { + "name": "clothes_56", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes55.png" + }, + { + "name": "clothes_57", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes56.png" + }, + { + "name": "clothes_58", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes57.png" + }, + { + "name": "clothes_59", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes58.png" + }, + { + "name": "clothes_60", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes59.png" + }, + { + "name": "clothes_61", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes60.png" + }, + { + "name": "clothes_62", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes61.png" + }, + { + "name": "clothes_63", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes62.png" + }, + { + "name": "clothes_64", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes63.png" + }, + { + "name": "clothes_65", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes64.png" + }, + { + "name": "clothes_66", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes65.png" + }, + { + "name": "clothes_67", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes66.png" + }, + { + "name": "clothes_68", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes67.png" + }, + { + "name": "clothes_69", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes68.png" + }, + { + "name": "clothes_70", + "img": "img/wa-avatar/customisation/character_clothes/character_clothes69.png" + }, + { + "name": "red_stripes", + "img": "img/wa-avatar/customisation/character_clothes/red_stripes.png" + }, + { + "name": "clothes_pride_shirt", + "img": "img/wa-avatar/customisation/character_clothes/pride_shirt.png" + }, + { + "name": "clothes_black_hoodie", + "img": "img/wa-avatar/customisation/character_clothes/black_hoodie.png" + }, + { + "name": "clothes_white_hoodie", + "img": "img/wa-avatar/customisation/character_clothes/white_hoodie.png" + }, + { + "name": "clothes_engelbert", + "img": "img/wa-avatar/customisation/character_clothes/engelbert.png" + }, + { + "name": "vest_yellow", + "img": "img/wa-avatar/customisation/character_clothes/vest_yellow.png" + }, + { + "name": "vest_orange", + "img": "img/wa-avatar/customisation/character_clothes/vest_orange.png" + }, + { + "name": "vest_red", + "img": "img/wa-avatar/customisation/character_clothes/vest_red.png" + }, + { + "name": "vest_purple", + "img": "img/wa-avatar/customisation/character_clothes/vest_purple.png" + }, + { + "name": "vest_blue", + "img": "img/wa-avatar/customisation/character_clothes/vest_blue.png" + }, + { + "name": "vest_green", + "img": "img/wa-avatar/customisation/character_clothes/vest_green.png" + } + ] %} - {% for part in avatar_config.custom %} - {% if body[loop.index0][part] %} - <figure class="hub-avatar__wa-multi" style="background: url({{ static('plainui/' ~ body[loop.index0][part].img) }});" alt="{{ _("Avatar image") }}"> - </figure> - {% endif %} - {% endfor %} - </div> - {% else %} - - {% set av_std = [ - {"name": "male1", "img": "img/wa-avatar/characters/pipoya/Male 01-1.png" }, - {"name": "male2", "img": "img/wa-avatar/characters/pipoya/Male 02-2.png" }, - {"name": "male3", "img": "img/wa-avatar/characters/pipoya/Male 03-4.png" }, - {"name": "male4", "img": "img/wa-avatar/characters/pipoya/Male 09-1.png" }, + {% set hats_resources = [ + { + "name": "hats_1", + "img": "img/wa-avatar/customisation/character_hats/character_hats1.png" + }, + { + "name": "hats_2", + "img": "img/wa-avatar/customisation/character_hats/character_hats2.png" + }, + { + "name": "hats_3", + "img": "img/wa-avatar/customisation/character_hats/character_hats3.png" + }, + { + "name": "hats_4", + "img": "img/wa-avatar/customisation/character_hats/character_hats4.png" + }, + { + "name": "hats_5", + "img": "img/wa-avatar/customisation/character_hats/character_hats5.png" + }, + { + "name": "hats_6", + "img": "img/wa-avatar/customisation/character_hats/character_hats6.png" + }, + { + "name": "hats_7", + "img": "img/wa-avatar/customisation/character_hats/character_hats7.png" + }, + { + "name": "hats_8", + "img": "img/wa-avatar/customisation/character_hats/character_hats8.png" + }, + { + "name": "hats_9", + "img": "img/wa-avatar/customisation/character_hats/character_hats9.png" + }, + { + "name": "hats_10", + "img": "img/wa-avatar/customisation/character_hats/character_hats10.png" + }, + { + "name": "hats_11", + "img": "img/wa-avatar/customisation/character_hats/character_hats11.png" + }, + { + "name": "hats_12", + "img": "img/wa-avatar/customisation/character_hats/character_hats12.png" + }, + { + "name": "hats_13", + "img": "img/wa-avatar/customisation/character_hats/character_hats13.png" + }, + { + "name": "hats_14", + "img": "img/wa-avatar/customisation/character_hats/character_hats14.png" + }, + { + "name": "hats_15", + "img": "img/wa-avatar/customisation/character_hats/character_hats15.png" + }, + { + "name": "hats_16", + "img": "img/wa-avatar/customisation/character_hats/character_hats16.png" + }, + { + "name": "hats_17", + "img": "img/wa-avatar/customisation/character_hats/character_hats17.png" + }, + { + "name": "hats_18", + "img": "img/wa-avatar/customisation/character_hats/character_hats18.png" + }, + { + "name": "hats_19", + "img": "img/wa-avatar/customisation/character_hats/character_hats19.png" + }, + { + "name": "hats_20", + "img": "img/wa-avatar/customisation/character_hats/character_hats20.png" + }, + { + "name": "hats_21", + "img": "img/wa-avatar/customisation/character_hats/character_hats21.png" + }, + { + "name": "hats_22", + "img": "img/wa-avatar/customisation/character_hats/character_hats22.png" + }, + { + "name": "hats_23", + "img": "img/wa-avatar/customisation/character_hats/character_hats23.png" + }, + { + "name": "hats_24", + "img": "img/wa-avatar/customisation/character_hats/character_hats24.png" + }, + { + "name": "hats_25", + "img": "img/wa-avatar/customisation/character_hats/character_hats25.png" + }, + { + "name": "hats_26", + "img": "img/wa-avatar/customisation/character_hats/character_hats26.png" + }, + { + "name": "tinfoil_hat1", + "img": "img/wa-avatar/customisation/character_hats/tinfoil_hat1.png" + }, + { + "name": "purple_hat", + "img": "img/wa-avatar/customisation/character_hats/purple_hat.png" + }, + { + "name": "diving_mask1", + "img": "img/wa-avatar/customisation/character_hats/diving_mask1.png" + }, + { + "name": "accessory_mask", + "img": "img/wa-avatar/customisation/character_accessories/mask.png" + }, + { + "name": "sign-dont-talk", + "img": "img/wa-avatar/customisation/character_accessories/sign-dont-talk.png" + }, + { + "name": "sign-talk", + "img": "img/wa-avatar/customisation/character_accessories/sign-talk.png" + } + ] %} - {"name": "male5", "img": "img/wa-avatar/characters/pipoya/Male 10-3.png" }, - {"name": "male6", "img": "img/wa-avatar/characters/pipoya/Male 17-2.png" }, - {"name": "male7", "img": "img/wa-avatar/characters/pipoya/Male 18-1.png" }, - {"name": "male8", "img": "img/wa-avatar/characters/pipoya/Male 16-4.png" }, + {% set accessories_resources = [ + { + "name": "accessory_1", + "img": "img/wa-avatar/customisation/character_accessories/character_accessories1.png" + }, + { + "name": "accessory_22", + "img": "img/wa-avatar/customisation/character_accessories/character_accessories22.png" + }, + { + "name": "accessory_23", + "img": "img/wa-avatar/customisation/character_accessories/character_accessories23.png" + }, + { + "name": "accessory_24", + "img": "img/wa-avatar/customisation/character_accessories/character_accessories24.png" + }, + { + "name": "accessory_25", + "img": "img/wa-avatar/customisation/character_accessories/character_accessories25.png" + }, + { + "name": "accessory_26", + "img": "img/wa-avatar/customisation/character_accessories/character_accessories26.png" + }, + { + "name": "accessory_27", + "img": "img/wa-avatar/customisation/character_accessories/character_accessories27.png" + }, + { + "name": "accessory_28", + "img": "img/wa-avatar/customisation/character_accessories/character_accessories28.png" + }, + { + "name": "accessory_mate_bottle", + "img": "img/wa-avatar/customisation/character_accessories/mate_bottle1.png" + }, + { + "name": "accessory_mask", + "img": "img/wa-avatar/customisation/character_accessories/mask.png" + }, + { + "name": "wings_01", + "img": "img/wa-avatar/customisation/character_accessories/wings_01.png" + }, + { + "name": "wings_02", + "img": "img/wa-avatar/customisation/character_accessories/wings_02.png" + }, + { + "name": "wheelchair", + "img": "img/wa-avatar/customisation/character_accessories/wheelchair.png" + }, + { + "name": "backpack", + "img": "img/wa-avatar/customisation/character_accessories/backpack.png" + }, + { + "name": "ring", + "img": "img/wa-avatar/customisation/character_accessories/ring.png" + }, + { + "name": "sign-dont-talk", + "img": "img/wa-avatar/customisation/character_accessories/sign-dont-talk.png" + }, + { + "name": "sign-talk", + "img": "img/wa-avatar/customisation/character_accessories/sign-talk.png" + } + ] %} - {"name": "Female1", "img": "img/wa-avatar/characters/pipoya/Female 01-1.png" }, - {"name": "Female2", "img": "img/wa-avatar/characters/pipoya/Female 02-2.png" }, - {"name": "Female3", "img": "img/wa-avatar/characters/pipoya/Female 03-4.png" }, - {"name": "Female4", "img": "img/wa-avatar/characters/pipoya/Female 09-1.png" }, + {% set body = [color_resources, eyes_resources, hair_resources, clothes_resources, hats_resources, accessories_resources, [], []] %} - {"name": "Female5", "img": "img/wa-avatar/characters/pipoya/Female 10-3.png" }, - {"name": "Female6", "img": "img/wa-avatar/characters/pipoya/Female 17-2.png" }, - {"name": "Female7", "img": "img/wa-avatar/characters/pipoya/Female 18-1.png" }, - {"name": "Female8", "img": "img/wa-avatar/characters/pipoya/Female 16-4.png" } - ] %} - {% if av_std[avatar_config.index] %} - <figure class="hub-avatar__wa-std" style="background: url({{ static('plainui/' ~ av_std[avatar_config.index].img) }});" alt="{{ _("Avatar image") }}"> - </figure> - {% else %} - {{ no_avatar() }} + {% for part in avatar_config.custom %} + {% if body[loop.index0][part] %} + <figure class="hub-avatar__wa-multi" + style="background: url({{ static('plainui/' ~ body[loop.index0][part].img) }})" + alt="{{ _('Avatar image') }}"> + </figure> {% endif %} + {% endfor %} + </div> + {% else %} + + {% set av_std = [ + { + "name": "male1", + "img": "img/wa-avatar/characters/pipoya/Male 01-1.png" + }, + { + "name": "male2", + "img": "img/wa-avatar/characters/pipoya/Male 02-2.png" + }, + { + "name": "male3", + "img": "img/wa-avatar/characters/pipoya/Male 03-4.png" + }, + { + "name": "male4", + "img": "img/wa-avatar/characters/pipoya/Male 09-1.png" + }, + { + "name": "male5", + "img": "img/wa-avatar/characters/pipoya/Male 10-3.png" + }, + { + "name": "male6", + "img": "img/wa-avatar/characters/pipoya/Male 17-2.png" + }, + { + "name": "male7", + "img": "img/wa-avatar/characters/pipoya/Male 18-1.png" + }, + { + "name": "male8", + "img": "img/wa-avatar/characters/pipoya/Male 16-4.png" + }, + { + "name": "Female1", + "img": "img/wa-avatar/characters/pipoya/Female 01-1.png" + }, + { + "name": "Female2", + "img": "img/wa-avatar/characters/pipoya/Female 02-2.png" + }, + { + "name": "Female3", + "img": "img/wa-avatar/characters/pipoya/Female 03-4.png" + }, + { + "name": "Female4", + "img": "img/wa-avatar/characters/pipoya/Female 09-1.png" + }, + { + "name": "Female5", + "img": "img/wa-avatar/characters/pipoya/Female 10-3.png" + }, + { + "name": "Female6", + "img": "img/wa-avatar/characters/pipoya/Female 17-2.png" + }, + { + "name": "Female7", + "img": "img/wa-avatar/characters/pipoya/Female 18-1.png" + }, + { + "name": "Female8", + "img": "img/wa-avatar/characters/pipoya/Female 16-4.png" + } + ] %} + {% if av_std[avatar_config.index] %} + <figure class="hub-avatar__wa-std" + style="background: url({{ static('plainui/' ~ av_std[avatar_config.index].img) }})" + alt="{{ _('Avatar image') }}"> + </figure> + {% else %} + {{ no_avatar() }} {% endif %} + {% endif %} diff --git a/src/plainui/jinja2/plainui/components/badge_elements.html.j2 b/src/plainui/jinja2/plainui/components/badge_elements.html.j2 index 4382a9bc4b54e7539630ae0477a225ca55456d54..f2cb8faf0b0ec1c536b7cc5bb213936cd51c3f9f 100644 --- a/src/plainui/jinja2/plainui/components/badge_elements.html.j2 +++ b/src/plainui/jinja2/plainui/components/badge_elements.html.j2 @@ -10,7 +10,10 @@ src="{{ badge_link.badge.image.url }}" data-holder-rendered="true"> {% else %} - <img class="card-img-top aspect-ratio-16by9" alt="Thumbnail Badge {{ badge_link.badge.name }}" src="{{ static("plainui/img/hub-no-avatar-plattform-active.png") }}" data-holder-rendered="true"> + <img class="card-img-top aspect-ratio-16by9" + alt="Thumbnail Badge {{ badge_link.badge.name }}" + src="{{ static('plainui/img/hub-no-avatar-plattform-active.png') }}" + data-holder-rendered="true"> {% endif %} </div> <div class="card-body card-text"> @@ -29,24 +32,20 @@ {% macro userBadgeForm(badge_form) -%} <div class="hub-hlayout"> - <div class="d-flex justify-content-center"> - {{ badge(badge_form.instance.badge, active=true) }} - </div> + <div class="d-flex justify-content-center">{{ badge(badge_form.instance.badge, active=true) }}</div> <form method="POST"> {{ csrf_input }} - {% if badge_form.instance.accepted_by_user %} - <button type="submit" - formaction="{{ url('plainui:manage_badges__revoke', pk=badge_form.instance.badge.id) }}" - class="card-link btn btn-warning">{{ _("Revoke Badge") }}</button> - {% else %} - <button type="submit" - formaction="{{ url('plainui:manage_badges__accept', pk=badge_form.instance.badge.id) }}" - class="card-link btn btn-success">{{ _("Accept Badge") }}</button> - {% endif %} + {% if badge_form.instance.accepted_by_user %} + <button type="submit" + formaction="{{ url('plainui:manage_badges__revoke', pk=badge_form.instance.badge.id) }}" + class="card-link btn btn-warning">{{ _("Revoke Badge") }}</button> + {% else %} + <button type="submit" + formaction="{{ url('plainui:manage_badges__accept', pk=badge_form.instance.badge.id) }}" + class="card-link btn btn-success">{{ _("Accept Badge") }}</button> + {% endif %} <input name="badge_id" hidden value="{{ badge_form.instance.badge.id }}"> - <div> - {{ form_elements.select(badge_form, 'visibility') }} - </div> + <div>{{ form_elements.select(badge_form, 'visibility') }}</div> <button type="submit" formaction="{{ url('plainui:manage_badges__update', pk=badge_form.instance.badge.id) }}" class="card-link btn btn-primary">{{ _("Save visibility") }}</button> @@ -56,22 +55,10 @@ {% macro badge(badge, active=false) -%} {% set badge_icon = badge.symbol or badge.category.symbol or 'question-lg' %} - <a - class="hub-badge {% if not active and badge.id not in owned_badges %}hub-badge--grey{% endif %}" - href="{{ url('plainui:badge', pk=badge.id) }}" - > + <a class="hub-badge {% if not active and badge.id not in owned_badges %}hub-badge--grey{% endif %}" + href="{{ url('plainui:badge', pk=badge.id) }}"> <i class="hub-badge__icon bi bi-{{ badge_icon }}"></i> - <div - class="hub-badge__name" - title="{{ badge.name }}" - > - {{ badge.name }} - </div> - <div - class="hub-badge__assembly" - title="{{ badge.issuing_assembly.name }}" - > - {{ badge.issuing_assembly.name }} - </div> + <div class="hub-badge__name" title="{{ badge.name }}">{{ badge.name }}</div> + <div class="hub-badge__assembly" title="{{ badge.issuing_assembly.name }}">{{ badge.issuing_assembly.name }}</div> </a> {%- endmacro %} diff --git a/src/plainui/jinja2/plainui/components/buttons.html.j2 b/src/plainui/jinja2/plainui/components/buttons.html.j2 index c17bd80b11336b618a8b096fd0b23f2f91ef9773..af194370d96d22f7c0e444b7dead85bac8695d47 100644 --- a/src/plainui/jinja2/plainui/components/buttons.html.j2 +++ b/src/plainui/jinja2/plainui/components/buttons.html.j2 @@ -1,8 +1,6 @@ {% macro primary(label, link, icon=None) -%} <a class="hub-btn" href="{{ link }}"> - {% if icon %} - <i class="bi bi-{{ icon }}"></i> - {% endif %} - {{ _('index__box-whatshappening__fahrplanlink') }} + {% if icon %}<i class="bi bi-{{ icon }}"></i>{% endif %} + {{ _("index__box-whatshappening__fahrplanlink") }} </a> {%- endmacro %} diff --git a/src/plainui/jinja2/plainui/components/calendar.html.j2 b/src/plainui/jinja2/plainui/components/calendar.html.j2 index b5a22c24d91e5c934d6be20238c3f5d786588585..54e7f40f9c2cee53638497af4bc8ccb9178116d6 100644 --- a/src/plainui/jinja2/plainui/components/calendar.html.j2 +++ b/src/plainui/jinja2/plainui/components/calendar.html.j2 @@ -2,109 +2,96 @@ {{ minutes * 6 }}px {%- endmacro %} {% macro calendar(events, my_favorite_events, msg_none=_("No entries available."), public=False) -%} -{% if not events -%} + {% if not events -%} {{ msg_none }} -{%- else -%} + {%- else -%} {% set time_steps = events.calendar_time_steps -%} {% set step_minutes = events.calendar_step_minutes -%} <div class="hub-fahrplan"> + {% for step in time_steps %} + <hr class="hub-calendar__divider" + style="top: {{ 56 + (loop.index0 * step_minutes * 6) }}px"> + {% endfor %} + <div class="hub-fahrplan__timeline"> + <h2 class="m-0 hub-fahrplan__timeline-title"> </h2> {% for step in time_steps %} - <hr - class="hub-calendar__divider" - style="top: {{ 56 + (loop.index0 * step_minutes * 6) }}px;" - > + <figure class="m-0 px-2" {{ 'id=day{}'.format(step.day) if (step.new_day or loop.first) }} style="height: {{ h(step_minutes) }}"> + {% if step.new_day %} + <span class="fw-bolder">{{ _('Day %(n)s', n=step.day) }}</span> + {% endif %} + <br> + {{ step.ts | strftimehm }} + </figure> {% endfor %} - <div class="hub-fahrplan__timeline"> - <h2 class="m-0 hub-fahrplan__timeline-title"> </h2> - {% for step in time_steps %} - <figure - class="m-0 px-2" {{ 'id=day{}'.format(step.day) if (step.new_day or loop.first) }} - style="height: {{ h(step_minutes) }}" - > - {% if step.new_day %} - <span class="fw-bolder">{{ _('Day %(n)s', n=step.day) }}</span> - {% endif %} - <br> - {{ step.ts | strftimehm }} - </figure> - {% endfor %} - </div> - {% for room, room_events in events.rooms_with_events %} - <div class="hub-fahrplan__room"> - {% if public %} - <h2 class="hub-calendar__column-title" title="{{ room.name }}"> - <div class="hub-calendar__column-title-inner"> - {{ room.name }} - </div> - </h2> - {% else %} - <a class="text-decoration-none a" href="{{ url('plainui:room', slug=room.slug) }}"> - <h2 class="hub-calendar__column-title" title="{{ room.name }}"> - <div class="hub-calendar__column-title-inner"> - {{ room.name }} - </div> - </h2> - </a> - {% endif %} - {% for entry in room_events %} - {% if entry.type == 'space' %} - <figure class="hub-fahrplan__room-space" style="height: {{ h(entry.minutes) }}"></figure> - {% else %} + </div> + {% for room, room_events in events.rooms_with_events %} + <div class="hub-fahrplan__room"> + {% if public %} + <h2 class="hub-calendar__column-title" title="{{ room.name }}"> + <div class="hub-calendar__column-title-inner">{{ room.name }}</div> + </h2> + {% else %} + <a class="text-decoration-none a" + href="{{ url('plainui:room', slug=room.slug) }}"> + <h2 class="hub-calendar__column-title" title="{{ room.name }}"> + <div class="hub-calendar__column-title-inner">{{ room.name }}</div> + </h2> + </a> + {% endif %} + {% for entry in room_events %} + {% if entry.type == 'space' %} + <figure class="hub-fahrplan__room-space" + style="height: {{ h(entry.minutes) }}"> + </figure> + {% else %} - {% set background_title = entry.event.track.color or '#29ffff' %} - {% set colour_title = calculate_text_colour(background_title) %} - {% set background_body = lighten(background_title, 0.5) %} - {% set colour_body = calculate_text_colour(background_body) %} + {% set background_title = entry.event.track.color or '#29ffff' %} + {% set colour_title = calculate_text_colour(background_title) %} + {% set background_body = lighten(background_title, 0.5) %} + {% set colour_body = calculate_text_colour(background_body) %} - <a - class="text-decoration-none hub-fahrplan__link" - {% if public %}data-eventid="{{entry.event.id}}" href="#{{ entry.event.id }}"{% else %}href="{{ url('plainui:event', event_slug=entry.event.slug) }}"{% endif %} - title="{{entry.event.name}}"> - {%- if public %} - {{ json_script({ - 'id': entry.event.id, - 'title': entry.event.name | escape, - 'abstract': entry.event.abstract | escape, - 'description_html': entry.event.description_html, - 'schedule_start': entry.event.schedule_start | strftime, - 'schedule_duration': entry.event.schedule_duration | strftdelta_short, - 'room_name': room.name | escape, - 'track_name': entry.event.track_name | escape, - 'language': entry.event.language | escape, - 'speakers': entry.event.get_all_speaker_names()| join(', ') | escape, - 'link': url('plainui:event', event_slug=entry.event.slug) if not public else entry.event.get_url() - }, entry.event.id) }} - {% endif %} - <figure - class="p-0 my-0 mx-1 d-flex flex-column hub-fahrplan__room-event" - style="height: {{ h(entry.minutes) }}; color: {{ colour_body }}; background-color: {{ background_body }}; border-color: {{ background_title }};" - > - <div - class="hub-fahrplan__event_title fw-bold" - style="color: {{ colour_title }}; background-color: {{ background_title }};" - > - {{ entry.event.name }} - {% if entry.event.language %} - <span class="fst-italic">({{entry.event.language}})</span> - {% endif %} - </div> - <div class="hub-fahrplan__event-body"> - {% if entry.event.additional_data and entry.event.additional_data.get('subtitle') %} - <p class="hub-fahrplan__event-abstract"> - {{ entry.event.additional_data.get('subtitle') }} - </p> - {% endif %} - <p class="fw-bold">{{ entry.event.get_all_speaker_names() | join(', ') | escape }}</p> - <p class="hub-fahrplan__event-abstract"> - {{ entry.event.abstract }} - </p> - </div> - </figure> - </a> + <a class="text-decoration-none hub-fahrplan__link" + {% if public %}data-eventid="{{ entry.event.id }}" href="#{{ entry.event.id }}"{% else %}href="{{ url('plainui:event', event_slug=entry.event.slug) }}"{% endif %} + title="{{ entry.event.name }}"> + {%- if public %} + {{ json_script({ + 'id': entry.event.id, + 'title': entry.event.name | escape, + 'abstract': entry.event.abstract | escape, + 'description_html': entry.event.description_html, + 'schedule_start': entry.event.schedule_start | strftime, + 'schedule_duration': entry.event.schedule_duration | strftdelta_short, + 'room_name': room.name | escape, + 'track_name': entry.event.track_name | escape, + 'language': entry.event.language | escape, + 'speakers': entry.event.get_all_speaker_names() | join(', ') | escape, + 'link': url('plainui:event', event_slug=entry.event.slug) if not public else entry.event.get_url() + }, entry.event.id) }} + {% endif %} + <figure class="p-0 my-0 mx-1 d-flex flex-column hub-fahrplan__room-event" + style="height: {{ h(entry.minutes) }}; + color: {{ colour_body }}; + background-color: {{ background_body }}; + border-color: {{ background_title }}"> + <div class="hub-fahrplan__event_title fw-bold" + style="color: {{ colour_title }}; + background-color: {{ background_title }}"> + {{ entry.event.name }} + {% if entry.event.language %}<span class="fst-italic">({{ entry.event.language }})</span>{% endif %} + </div> + <div class="hub-fahrplan__event-body"> + {% if entry.event.additional_data and entry.event.additional_data.get('subtitle') %} + <p class="hub-fahrplan__event-abstract">{{ entry.event.additional_data.get("subtitle") }}</p> {% endif %} - {% endfor %} - </div> - {% endfor %} + <p class="fw-bold">{{ entry.event.get_all_speaker_names() | join(', ') | escape }}</p> + <p class="hub-fahrplan__event-abstract">{{ entry.event.abstract }}</p> + </div> + </figure> + </a> + {% endif %} + {% endfor %} + </div> + {% endfor %} </div> -{% endif %} + {% endif %} {%- endmacro %} diff --git a/src/plainui/jinja2/plainui/components/event.html.j2 b/src/plainui/jinja2/plainui/components/event.html.j2 index 7858fcf372198a6da4207f9393ce84faa17015c3..1d2ed6f76102e387aaf49a9fef34df55364050aa 100644 --- a/src/plainui/jinja2/plainui/components/event.html.j2 +++ b/src/plainui/jinja2/plainui/components/event.html.j2 @@ -3,11 +3,9 @@ {% macro recorded_tag(is_recorded, event_when="now") %} {% if is_recorded is false %} <div class="hub-tags"> - {{ tagsMacro.tag(_("Not recorded"), style="danger" if event_when == "now" else "outline-danger", icon="camera-video-off") }} + {{ tagsMacro.tag(_("Not recorded") , style="danger" if event_when == "now" else "outline-danger", icon="camera-video-off") }} </div> {% elif is_recorded is true %} - <div class="hub-tags"> - {{ tagsMacro.tag(_("Recorded"), style="success", icon="camera-video-fill") }} - </div> + <div class="hub-tags">{{ tagsMacro.tag(_("Recorded") , style="success", icon="camera-video-fill") }}</div> {% endif %} {% endmacro %} diff --git a/src/plainui/jinja2/plainui/components/event_info.html.j2 b/src/plainui/jinja2/plainui/components/event_info.html.j2 index 0fa4026390e824fb3047a9c6c02085f86433afa9..9a79f158c19f95357ab89859390d69b654c1be83 100644 --- a/src/plainui/jinja2/plainui/components/event_info.html.j2 +++ b/src/plainui/jinja2/plainui/components/event_info.html.j2 @@ -4,81 +4,65 @@ <!-- outdated and currently unused --> {% macro tag(label) %} -<div class="hub-tag"> - {{ label }} -</div> + <div class="hub-tag">{{ label }}</div> {% endmacro %} {% macro eventInfo(event, speakers, assembly={}) -%} - <div class="hub-row"> - <div class="hub-col hub-col-remaining hub-card hub-card-content--horizontal"> - <div class="text-center text-primary"> - <div class="hub-event__day"> - {{ _("Day %(n)s", n=event.conference_day) }} - </div> - <div class="hub-event__time"> - {{ event.schedule_start | strftimehm }}<br> - {{ event.schedule_end | strftimehm }} - </div> - </div> - <div class="hub-card-content"> - <div class="hub-head-main"> - {{ event.name }} - </div> - <div class="hub-tags"> - {% if event.language %} - {{ tag(event.language) }} - {% endif %} - {% if event.kind != 'official' %} - {{ tag(_("Self-organized Session") if event.kind == 'sos' else _("Assembly-Event")) }} - {% endif %} - {% if event.track and event.track.name %} - {{ tag(event.track.name) }} - {% endif %} - </div> + <div class="hub-row"> + <div class="hub-col hub-col-remaining hub-card hub-card-content--horizontal"> + <div class="text-center text-primary"> + <div class="hub-event__day">{{ _("Day %(n)s", n=event.conference_day) }}</div> + <div class="hub-event__time"> + {{ event.schedule_start | strftimehm }} + <br> + {{ event.schedule_end | strftimehm }} + </div> + </div> + <div class="hub-card-content"> + <div class="hub-head-main">{{ event.name }}</div> + <div class="hub-tags"> + {% if event.language %}{{ tag(event.language) }}{% endif %} + {% if event.kind != 'official' %} + {{ tag(_("Self-organized Session") if event.kind == 'sos' else _("Assembly-Event")) }} + {% endif %} + {% if event.track and event.track.name %}{{ tag(event.track.name) }}{% endif %} + </div> - {{ _("Speakers") }}: - {% for speaker in speakers %} - {{ speaker }}{% if not loop.last %}, {% endif %} - {% else %} - {{ _("No Speakers publicated yet") }} - {% endfor %} + {{ _("Speakers") }}: + {% for speaker in speakers %} + {{ speaker }} + {% if not loop.last %},{% endif %} + {% else %} + {{ _("No Speakers publicated yet") }} + {% endfor %} - {% if event.abstract %} - <div class="hub-text"> - {{ event.abstract }} - </div> - {% endif %} + {% if event.abstract %}<div class="hub-text">{{ event.abstract }}</div>{% endif %} - {% if event.description_html %} - <div> - <h2 class="hub-section-title"> - {{ _("Event description") }} - </h2> - <div class="hub-text"> - {{ markdownMacro.markdown(markdown=event.description_html | safe, border=False) }} - </div> - </div> - {% endif %} + {% if event.description_html %} + <div> + <h2 class="hub-section-title">{{ _("Event description") }}</h2> + <div class="hub-text">{{ markdownMacro.markdown(markdown=event.description_html | safe, border=False) }}</div> + </div> + {% endif %} - <div> - {% set link = url('plainui:event', event_slug=event.slug ) %} - {{ fbtns.fav(event.id, "event", is_favorite, color="primary") }} - {{ fbtns.report(link, color="primary") }} - </div> - </div> - </div> - <div class="hub-col hub-col-325px hub-card"> - {% if event.banner_image and event.banner_image.url %} - {{ imageMacro.image(image=event.banner_image.url, alt=event.banner_image.name , title=event.banner_image.name) }} - {% else %} - {{ imageMacro.image(image=random_preview_image_url(), alt=event.name, title=event.name) }} - {% endif %} + <div> + {% set link = url('plainui:event', event_slug=event.slug ) %} + {{ fbtns.fav(event.id, "event", is_favorite, color="primary") }} + {{ fbtns.report(link, color="primary") }} </div> + </div> + </div> + <div class="hub-col hub-col-325px hub-card"> + {% if event.banner_image and event.banner_image.url %} + {{ imageMacro.image(image=event.banner_image.url, alt=event.banner_image.name , title=event.banner_image.name) }} + {% else %} + {{ imageMacro.image(image=random_preview_image_url() , alt=event.name, title=event.name) }} + {% endif %} </div> + </div> {%- endmacro %} {%- macro random_preview_image_url() -%} - {%- set imgs = [1,2,3,4,5,6,7] -%} - {{ static('plainui/img/hub-assembly-event-0%s.png' % (imgs | random ,)) }} + {%- set imgs = [1, 2, 3, 4, 5, 6, 7] -%} + {{ static('plainui/img/hub-assembly-event-0%s.png' % (imgs | random ,) ) }} {%- endmacro -%} diff --git a/src/plainui/jinja2/plainui/components/form_elements.html.j2 b/src/plainui/jinja2/plainui/components/form_elements.html.j2 index a109e808d64babaad0bfea91235e81e45e6daf06..03e1c1e1340117680e986c2768589d30d57c283c 100644 --- a/src/plainui/jinja2/plainui/components/form_elements.html.j2 +++ b/src/plainui/jinja2/plainui/components/form_elements.html.j2 @@ -1,193 +1,144 @@ {% macro hidden(form, name) -%} - <input type="hidden" name="{{name}}" value="{{ form[name].value() or '' }}"> + <input type="hidden" + name="{{ name }}" + value="{{ form[name].value() or '' }}"> {%- endmacro %} {% macro input(form, name, type_) -%} - {% set el = form[name] -%} - {% set my_id = unique_id() -%} - <div class="row form-group"> - {% if el.label %} - <div class="form-description col-sm-12 col-lg-12 mb-1 mb-lg-0"> - <label - class=" d-block py-2 text-left" - for="{{ my_id }}" - > - {{ el.label }} - {%- if el.field.required %} *{% endif -%} - </label> - </div> - {% endif %} - <div class="col-sm-12 col-lg-12"> - <input - id="{{ my_id }}" - class="form-control{% if form.has_error(name) %} is-invalid{% endif %}" - name="{{ name }}" - type="{{type_}}" - value="{{ el.value() or '' }}" - {%- if el.field.required %} required{% endif -%} - {%- if el.field.disabled %} disabled{% endif -%} - {%- for attr, value in el.field.widget.attrs.items() -%} - {% if value is true %} {{attr}}{% elif value is not false %} {{attr}}="{{value}}"{% endif -%} - {% endfor -%} - > - {% for err in form.errors.get(name, []) %} - <p class="d-block invalid-feedback">{{_(err)}}</p> - {% endfor %} - {% if el.help_text %} - <div class="d-block form-text fs-medium mt-1">{{ el.help_text | safe }}</div> - {% endif %} - </div> + {% set el = form[name] -%} + {% set my_id = unique_id() -%} + <div class="row form-group"> + {% if el.label %} + <div class="form-description col-sm-12 col-lg-12 mb-1 mb-lg-0"> + <label class=" d-block py-2 text-left" for="{{ my_id }}"> + {{ el.label }} + {%- if el.field.required %} * + {% endif -%} + </label> + </div> + {% endif %} + <div class="col-sm-12 col-lg-12"> + <input id="{{ my_id }}" class="form-control{% if form.has_error(name) %} is-invalid{% endif %}" name="{{ name }}" type="{{ type_ }}" value="{{ el.value() or '' }}" {%- if el.field.required %} required{% endif -%} {%- if el.field.disabled %} disabled{% endif -%} {%- for attr, value in el.field.widget.attrs.items() -%} {% if value is true %} {{ attr }}{% elif value is not false %} {{ attr }}="{{ value }}"{% endif -%} {% endfor -%}> + {% for err in form.errors.get(name, []) %}<p class="d-block invalid-feedback">{{ _(err) }}</p>{% endfor %} + {% if el.help_text %}<div class="d-block form-text fs-medium mt-1">{{ el.help_text | safe }}</div>{% endif %} </div> + </div> {%- endmacro %} {% macro text(form, name) -%} - {{ input(form, name, 'text') }} + {{ input(form, name, 'text') }} {%- endmacro %} {% macro password(form, name) -%} - {{ input(form, name, 'password') }} + {{ input(form, name, 'password') }} {%- endmacro %} {% macro textarea(form, name) -%} - {% set el = form[name] -%} - {% set my_id = unique_id() -%} - <div class="row form-group"> - <div class="form-description col-sm-12 col-lg-12 mb-1 mb-lg-0"> - <label - class="d-block py-2 text-left" - for="{{ my_id }}" - > - {{ el.label }} - {%- if el.fieldrequired %} *{% endif -%} - </label> - </div> - <div class="col-sm-12 col-lg-12"> - <textarea - id="{{ my_id }}" - class="form-control{% if form.has_error(name) %} is-invalid{% endif %}" - name="{{ name }}" - {%- if el.field.required %} required{% endif -%} - {%- if el.field.disabled %} disabled{% endif -%} - {%- for attr, value in el.field.widget.attrs.items() -%} - {% if value is true %} {{attr}}{% elif value is not false %} {{attr}}="{{value}}"{% endif -%} - {% endfor -%} - >{{ el.value() or '' }}</textarea> - {% for err in form.errors.get(name, []) %} - <p class="d-block invalid-feedback">{{_(err)}}</p> - {% endfor %} - {% if el.help_text %}<div class="d-block form-text fs-medium mt-1">{{ el.help_text | safe }}</div>{% endif %} - </div> + {% set el = form[name] -%} + {% set my_id = unique_id() -%} + <div class="row form-group"> + <div class="form-description col-sm-12 col-lg-12 mb-1 mb-lg-0"> + <label class="d-block py-2 text-left" for="{{ my_id }}"> + {{ el.label }} + {%- if el.fieldrequired %} * + {% endif -%} + </label> </div> + <div class="col-sm-12 col-lg-12"> + <textarea id="{{ my_id }}" class="form-control{% if form.has_error(name) %} is-invalid{% endif %}" name="{{ name }}" {%- if el.field.required %} required{% endif -%} {%- if el.field.disabled %} disabled{% endif -%} {%- for attr, value in el.field.widget.attrs.items() -%} {% if value is true %} {{attr}}{% elif value is not false %} {{attr}}="{{value}}"{% endif -%} {% endfor -%}>{{ el.value() or '' }}</textarea> + {% for err in form.errors.get(name, []) %}<p class="d-block invalid-feedback">{{ _(err) }}</p>{% endfor %} + {% if el.help_text %}<div class="d-block form-text fs-medium mt-1">{{ el.help_text | safe }}</div>{% endif %} + </div> + </div> {%- endmacro %} {% macro checkbox(form, name) -%} - {% set el = form[name] -%} - {% set my_id = unique_id() -%} - <div class="row form-group"> - <div class="form-description col-sm-12 col-lg-4 mb-2 mb-lg-0"> - <p - class=" d-block py-2 text-left mb-0" - for="{{ my_id }}" - > - {{ el.label }} - {%- if el.field.required %} *{% endif -%} - </p> - </div> - <div class="col-sm-12 col-lg-12"> - <div class="form-group"> - <div class="form-check"> - <input - id="{{ my_id }}" - class="form-check-input {% if form.has_error(name) %} is-invalid{% endif %}" - name="{{ name }}" - type="checkbox" - {% if el.value() %}checked{% endif %} - {% if el.field.required %}required{%endif%} - {% if el.field.disabled %}disabled{%endif%} - > - <label for="{{ my_id }}" class="form-check-label">{{ el.label }}</label> - </div> - {% for err in form.errors.get(name, []) -%} - <p class="d-block invalid-feedback">{{_(err)}}</p> - {% endfor %} - {%- if el.help_text %}<div class="d-block mt-1">{{ el.help_text | safe }}</div>{% endif %} - </div> + {% set el = form[name] -%} + {% set my_id = unique_id() -%} + <div class="row form-group"> + <div class="form-description col-sm-12 col-lg-4 mb-2 mb-lg-0"> + <p class=" d-block py-2 text-left mb-0" for="{{ my_id }}"> + {{ el.label }} + {%- if el.field.required %} * + {% endif -%} + </p> + </div> + <div class="col-sm-12 col-lg-12"> + <div class="form-group"> + <div class="form-check"> + <input id="{{ my_id }}" + class="form-check-input {% if form.has_error(name) %}is-invalid{% endif %}" + name="{{ name }}" + type="checkbox" + {% if el.value() %}checked{% endif %} + {% if el.field.required %}required{% endif %} + {% if el.field.disabled %}disabled{% endif %}> + <label for="{{ my_id }}" class="form-check-label">{{ el.label }}</label> </div> + {% for err in form.errors.get(name, []) -%}<p class="d-block invalid-feedback">{{ _(err) }}</p>{% endfor %} + {%- if el.help_text %}<div class="d-block mt-1">{{ el.help_text | safe }}</div>{% endif %} + </div> </div> + </div> {%- endmacro %} {% macro select(form, name) -%} - {% set el = form[name] -%} - {% set my_id = unique_id() -%} - <div class="row form-group"> - <div class="form-description col-sm-12 col-lg-12 mb-2 mb-lg-0"> - <label - for="{{ my_id }}" - class=" d-block py-3 text-left" - > - {{ el.label }} - </label> - </div> - <div class="col-sm-12 col-lg-12"> - <div class="form-control-selectbox"> - <select - id="{{ my_id }}" - class="form-select{% if form.has_error(name) %} is-invalid{% endif %}" - name="{{ name }}" - {%- if el.field.required %} required{% endif -%} - {%- if el.field.disabled %} disabled{% endif -%} - {%- for attr, value in el.field.widget.attrs.items() -%} - {% if value is true %} {{attr}}{% elif value is not false %} {{attr}}="{{value}}"{% endif -%} - {% endfor -%} - > - {% for group_name, group_choices, group_index in el.field.widget.optgroups(name, el.field.widget.format_value(el.value())) %}{% if group_name %} - <optgroup label="{{ group_name }}">{% endif %}{% for option in group_choices %} - <option value="{{ option.value|string }}"{%- for attr, value in option.attrs.items() -%} - {% if value is true %} {{attr}}{% elif value is not false %} {{attr}}="{{value}}"{% endif -%} - {% endfor -%}>{{ option.label }}</option> - {% endfor %}{% if group_name %} - </optgroup>{% endif %}{% endfor %} - </select> - </div> - {% for err in form.errors.get(name, []) %} - <p class="d-block invalid-feedback">{{_(err)}}</p> - {% endfor %} - {% if el.help_text %}<div class="d-block form-text mt-1">{{ el.help_text | safe }}</div>{% endif %} - </div> + {% set el = form[name] -%} + {% set my_id = unique_id() -%} + <div class="row form-group"> + <div class="form-description col-sm-12 col-lg-12 mb-2 mb-lg-0"> + <label for="{{ my_id }}" class=" d-block py-3 text-left">{{ el.label }}</label> </div> + <div class="col-sm-12 col-lg-12"> + <div class="form-control-selectbox"> + <select id="{{ my_id }}" class="form-select{% if form.has_error(name) %} is-invalid{% endif %}" name="{{ name }}" {%- if el.field.required %} required{% endif -%} {%- if el.field.disabled %} disabled{% endif -%} {%- for attr, value in el.field.widget.attrs.items() -%} {% if value is true %} {{ attr }}{% elif value is not false %} {{ attr }}="{{ value }}"{% endif -%} {% endfor -%}> + {% for group_name, group_choices, group_index in el.field.widget.optgroups(name, el.field.widget.format_value(el.value())) %} + {% if group_name %}<optgroup label="{{ group_name }}">{% endif %} + {% for option in group_choices %} + <option value="{{ option.value|string }}"{%- for attr, value in option.attrs.items() -%} {% if value is true %} {{ attr }}{% elif value is not false %} {{ attr }}="{{ value }}"{% endif -%} {% endfor -%}>{{ option.label }} + </option> + {% endfor %} + {% if group_name %}</optgroup>{% endif %} + {% endfor %} + </select> + </div> + {% for err in form.errors.get(name, []) %}<p class="d-block invalid-feedback">{{ _(err) }}</p>{% endfor %} + {% if el.help_text %}<div class="d-block form-text mt-1">{{ el.help_text | safe }}</div>{% endif %} + </div> + </div> {%- endmacro %} {% macro field(form, field_name) %} - {% set field = form[field_name] -%} - {% if field.widget_type == 'textarea' -%} - {{ textarea(form, field_name) }} - {% elif field.widget_type == 'text' -%} - {{ text(form, field_name) }} - {% elif field.widget_type == 'password' -%} - {{ password(form, field_name) }} - {% elif field.widget_type == 'checkbox' -%} - {{ checkbox(form, field_name) }} - {% elif field.widget_type == 'select' -%} - {{ select(form, field_name) }} - {% elif field.widget_type == 'hidden' -%} - {{ hidden(form, field_name) }} - {% else -%} - Not Supported Widget Type {{field.widget_type}} :( - {% endif -%} + {% set field = form[field_name] -%} + {% if field.widget_type == 'textarea' -%} + {{ textarea(form, field_name) }} + {% elif field.widget_type == 'text' -%} + {{ text(form, field_name) }} + {% elif field.widget_type == 'password' -%} + {{ password(form, field_name) }} + {% elif field.widget_type == 'checkbox' -%} + {{ checkbox(form, field_name) }} + {% elif field.widget_type == 'select' -%} + {{ select(form, field_name) }} + {% elif field.widget_type == 'hidden' -%} + {{ hidden(form, field_name) }} + {% else -%} + Not Supported Widget Type {{ field.widget_type }} :( + {% endif -%} {%- endmacro %} {% macro translated_fields(form, field_name) %} - {% for translated_field_name in translated_fields_for_field(field_name) %} - {{ field(form, translated_field_name) }} - {%- endfor %} + {% for translated_field_name in translated_fields_for_field(field_name) %} + {{ field(form, translated_field_name) }} + {%- endfor %} {% endmacro %} {% macro errors(form) -%} - {% if form.non_field_errors() -%} - <ul class="list-unstyled text-left my-5"> - {% for error in form.non_field_errors() %} - <li class="d-block text-danger"><b>{{_(error)}}</b></li> - {%- endfor %} - </ul> - {%- endif %} + {% if form.non_field_errors() -%} + <ul class="list-unstyled text-left my-5"> + {% for error in form.non_field_errors() %} + <li class="d-block text-danger"> + <b>{{ _(error) }}</b> + </li> + {%- endfor %} + </ul> + {%- endif %} {%- endmacro %} {% macro render_form_fields(form) -%} - {% for field_name in form.fields.keys() -%} - {{ field(form, field_name) }} - {%- endfor %} -{%- endmacro %} + {% for field_name in form.fields.keys() -%}{{ field(form, field_name) }}{%- endfor %} + {%- endmacro %} diff --git a/src/plainui/jinja2/plainui/components/function_btns.html.j2 b/src/plainui/jinja2/plainui/components/function_btns.html.j2 index d439e7bd78e8ee2c73a196918b38527f8fd0b3f1..c7471119f4eb14a9b6b25837ce63349801005682 100644 --- a/src/plainui/jinja2/plainui/components/function_btns.html.j2 +++ b/src/plainui/jinja2/plainui/components/function_btns.html.j2 @@ -6,94 +6,163 @@ #} {% macro fav(fav_id, fav_type, fav_is, color="transparent", next=request.get_full_path() ) -%} - {% if not archive_mode %} - <form action="{{ url('plainui:modify_favorites') }}" class="d-inline-block" method="POST"> - {{ csrf_input }} - <input type="hidden" name="next" value="{{ next ~ '#fav_' ~ fav_id}}"> - <input type="hidden" name="id" value="{{ fav_id }}"> + {% if not archive_mode %} + <form action="{{ url('plainui:modify_favorites') }}" + class="d-inline-block" + method="POST"> + {{ csrf_input }} + <input type="hidden" name="next" value="{{ next ~ '#fav_' ~ fav_id }}"> + <input type="hidden" name="id" value="{{ fav_id }}"> - <input type="hidden" name="type" value="{{ fav_type }}"> + <input type="hidden" name="type" value="{{ fav_type }}"> - {%- if fav_is %} - <input type="hidden" name="mode" value="remove"> - <button type="submit" id="fav_{{ fav_id }}" class="active me-2 btn-icon-big btn btn-{{ color }}" title="{{ _("remove from favorites") }}"> - <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-heart-fill" viewBox="0 0 16 16"> - <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z"/> - </svg> - </button> - {%- else -%} - <input type="hidden" name="mode" value="add"> - <button type="submit" id="fav_{{ fav_id }}" class="me-2 btn-icon-big btn btn-{{ color }}" title="{{ _("add to favorites") }}"> - <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-heart" viewBox="0 0 16 16"> - <path fill-rule="evenodd" d="M8 2.748l-.717-.737C5.6.281 2.514.878 1.4 3.053c-.523 1.023-.641 2.5.314 4.385.92 1.815 2.834 3.989 6.286 6.357 3.452-2.368 5.365-4.542 6.286-6.357.955-1.886.838-3.362.314-4.385C13.486.878 10.4.28 8.717 2.01L8 2.748zM8 15C-7.333 4.868 3.279-3.04 7.824 1.143c.06.055.119.112.176.171a3.12 3.12 0 0 1 .176-.17C12.72-3.042 23.333 4.867 8 15z"/> - </svg> - </button> - {% endif -%} + {%- if fav_is %} + <input type="hidden" name="mode" value="remove"> + <button type="submit" + id="fav_{{ fav_id }}" + class="active me-2 btn-icon-big btn btn-{{ color }}" + title="{{ _('remove from favorites') }}"> + <svg xmlns="http://www.w3.org/2000/svg" + width="16" + height="16" + fill="currentColor" + class="bi bi-heart-fill" + viewBox="0 0 16 16"> + <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> + </svg> + </button> + {%- else -%} + <input type="hidden" name="mode" value="add"> + <button type="submit" + id="fav_{{ fav_id }}" + class="me-2 btn-icon-big btn btn-{{ color }}" + title="{{ _('add to favorites') }}"> + <svg xmlns="http://www.w3.org/2000/svg" + width="16" + height="16" + fill="currentColor" + class="bi bi-heart" + viewBox="0 0 16 16"> + <path fill-rule="evenodd" d="M8 2.748l-.717-.737C5.6.281 2.514.878 1.4 3.053c-.523 1.023-.641 2.5.314 4.385.92 1.815 2.834 3.989 6.286 6.357 3.452-2.368 5.365-4.542 6.286-6.357.955-1.886.838-3.362.314-4.385C13.486.878 10.4.28 8.717 2.01L8 2.748zM8 15C-7.333 4.868 3.279-3.04 7.824 1.143c.06.055.119.112.176.171a3.12 3.12 0 0 1 .176-.17C12.72-3.042 23.333 4.867 8 15z" /> + </svg> + </button> + {% endif -%} </form> - {% endif %} + {% endif %} {%- endmacro %} {% macro schedule(sch_id, sch_is, color="transparent", next=request.get_full_path() ) -%} - {% if not archive_mode %} - <form action="{{ url('plainui:modify_personal_calendar') }}" class="d-inline-block" method="POST"> - {{ csrf_input }} - <input type="hidden" name="next" value="{{ next ~ '#sch_' ~ sch_id }}"> - <input type="hidden" name="id" value="{{ sch_id }}"> - {%- if sch_is %} - <input type="hidden" name="mode" value="remove"> - <button type="submit" id="sch_{{ sch_id }}" class="active me-2 btn-icon-big btn btn-{{ color }}" title="{{ _("remove from schedule") }}"> - <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-week-fill" viewBox="0 0 16 16"> - <path fill-rule="evenodd" d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 3.5c0-.276.244-.5.545-.5h10.91c.3 0 .545.224.545.5v1c0 .276-.244.5-.546.5H2.545C2.245 5 2 4.776 2 4.5v-1zM8.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1zM3 10.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1z"/> - </svg> - </button> - {%- else -%} - <input type="hidden" name="mode" value="add"> - <button type="submit" id="sch_{{ sch_id }}" class="me-2 btn-icon-big btn btn-{{ color }}" title="{{ _("add to schedule") }}"> - <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-calendar2-week" viewBox="0 0 16 16"> - <path fill-rule="evenodd" d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H2z"/> - <path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5V4zM11 7.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm-3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm-5 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1z"/> - </svg> - </button> - {% endif -%} + {% if not archive_mode %} + <form action="{{ url('plainui:modify_personal_calendar') }}" + class="d-inline-block" + method="POST"> + {{ csrf_input }} + <input type="hidden" name="next" value="{{ next ~ '#sch_' ~ sch_id }}"> + <input type="hidden" name="id" value="{{ sch_id }}"> + {%- if sch_is %} + <input type="hidden" name="mode" value="remove"> + <button type="submit" + id="sch_{{ sch_id }}" + class="active me-2 btn-icon-big btn btn-{{ color }}" + title="{{ _('remove from schedule') }}"> + <svg xmlns="http://www.w3.org/2000/svg" + width="16" + height="16" + fill="currentColor" + class="bi bi-calendar2-week-fill" + viewBox="0 0 16 16"> + <path fill-rule="evenodd" d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 3.5c0-.276.244-.5.545-.5h10.91c.3 0 .545.224.545.5v1c0 .276-.244.5-.546.5H2.545C2.245 5 2 4.776 2 4.5v-1zM8.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1zM3 10.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1z" /> + </svg> + </button> + {%- else -%} + <input type="hidden" name="mode" value="add"> + <button type="submit" + id="sch_{{ sch_id }}" + class="me-2 btn-icon-big btn btn-{{ color }}" + title="{{ _('add to schedule') }}"> + <svg xmlns="http://www.w3.org/2000/svg" + width="16" + height="16" + fill="currentColor" + class="bi bi-calendar2-week" + viewBox="0 0 16 16"> + <path fill-rule="evenodd" d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H2z" /> + <path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5V4zM11 7.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm-3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm-5 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1z" /> + </svg> + </button> + {% endif -%} </form> - {% endif %} + {% endif %} {%- endmacro %} {% macro share(view_name, title=_("share this "), color="transparent") -%} - <a href="{{ hub_absolute(view_name, i18n=archive_mode, **kwargs) }}" class="me-2 btn-icon-big btn btn-{{ color }}" title="{{ title }}" target="_blank"> - <svg width="1.25rem" height="1.25rem" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500" style="enable-background:new 0 0 500 500" fill="currentColor"> - <style>.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> - <path d="M353.7 304.47c-18.9 0-36.76 8.05-49.34 22.15l-94.88-54.78c2.34-6.85 3.52-14 3.52-21.28 0-6.12-.84-12.17-2.5-18.03l97.13-56.08c12.43 12.11 28.71 18.75 46.08 18.75 36.47 0 66.14-29.67 66.14-66.14s-29.67-66.14-66.14-66.14-66.14 29.67-66.14 66.14c0 5.69.74 11.35 2.19 16.86l-97.68 56.4c-12.32-11.56-28.29-17.91-45.21-17.91-36.47 0-66.14 29.67-66.14 66.14s29.67 66.14 66.14 66.14c15.6 0 30.65-5.52 42.58-15.58l99.25 57.3a66.01 66.01 0 0 0-1.14 12.19c0 36.47 29.67 66.14 66.14 66.14s66.14-29.67 66.14-66.14-29.67-66.13-66.14-66.13zm30.77 66.15c0 16.96-13.8 30.77-30.77 30.77s-30.77-13.8-30.77-30.77 13.8-30.77 30.77-30.77 30.77 13.8 30.77 30.77zm-61.53-241.56c0-16.97 13.8-30.77 30.77-30.77s30.77 13.8 30.77 30.77-13.8 30.77-30.77 30.77-30.77-13.8-30.77-30.77zm-145.31 121.5c0 16.96-13.8 30.77-30.77 30.77s-30.77-13.8-30.77-30.77 13.8-30.77 30.77-30.77c16.97.01 30.77 13.81 30.77 30.77z"/> - </svg> - </a> + <a href="{{ hub_absolute(view_name, i18n=archive_mode, **kwargs) }}" + class="me-2 btn-icon-big btn btn-{{ color }}" + title="{{ title }}" + target="_blank"> + <svg width="1.25rem" + height="1.25rem" + xmlns="http://www.w3.org/2000/svg" + viewBox="0 0 500 500" + style="enable-background:new 0 0 500 500" + fill="currentColor"> + <style>.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> + <path d="M353.7 304.47c-18.9 0-36.76 8.05-49.34 22.15l-94.88-54.78c2.34-6.85 3.52-14 3.52-21.28 0-6.12-.84-12.17-2.5-18.03l97.13-56.08c12.43 12.11 28.71 18.75 46.08 18.75 36.47 0 66.14-29.67 66.14-66.14s-29.67-66.14-66.14-66.14-66.14 29.67-66.14 66.14c0 5.69.74 11.35 2.19 16.86l-97.68 56.4c-12.32-11.56-28.29-17.91-45.21-17.91-36.47 0-66.14 29.67-66.14 66.14s29.67 66.14 66.14 66.14c15.6 0 30.65-5.52 42.58-15.58l99.25 57.3a66.01 66.01 0 0 0-1.14 12.19c0 36.47 29.67 66.14 66.14 66.14s66.14-29.67 66.14-66.14-29.67-66.13-66.14-66.13zm30.77 66.15c0 16.96-13.8 30.77-30.77 30.77s-30.77-13.8-30.77-30.77 13.8-30.77 30.77-30.77 30.77 13.8 30.77 30.77zm-61.53-241.56c0-16.97 13.8-30.77 30.77-30.77s30.77 13.8 30.77 30.77-13.8 30.77-30.77 30.77-30.77-13.8-30.77-30.77zm-145.31 121.5c0 16.96-13.8 30.77-30.77 30.77s-30.77-13.8-30.77-30.77 13.8-30.77 30.77-30.77c16.97.01 30.77 13.81 30.77 30.77z" /> + </svg> + </a> {%- endmacro %} {% macro stream(stream_url, title=_("open stream"), color="transparent" ) -%} - <a href="{{ stream_url }}" class="me-2 btn-icon-big btn btn-{{ color }}" target="_blank" title="{{ title }}"> - <svg width="1rem" height="1rem" viewBox="0 0 16 16" class="bi bi-file-play" fill="currentColor" xmlns="http://www.w3.org/2000/svg"> - <path fill-rule="evenodd" d="M4 0h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm0 1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H4z"/> - <path d="M6 10.117V5.883a.5.5 0 0 1 .757-.429l3.528 2.117a.5.5 0 0 1 0 .858l-3.528 2.117a.5.5 0 0 1-.757-.43z"/> - </svg> - </a> + <a href="{{ stream_url }}" + class="me-2 btn-icon-big btn btn-{{ color }}" + target="_blank" + title="{{ title }}"> + <svg width="1rem" + height="1rem" + viewBox="0 0 16 16" + class="bi bi-file-play" + fill="currentColor" + xmlns="http://www.w3.org/2000/svg"> + <path fill-rule="evenodd" d="M4 0h8a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm0 1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H4z" /> + <path d="M6 10.117V5.883a.5.5 0 0 1 .757-.429l3.528 2.117a.5.5 0 0 1 0 .858l-3.528 2.117a.5.5 0 0 1-.757-.43z" /> + </svg> + </a> {%- endmacro %} # {% macro report(report_url=none, kind=none, next=none, lookup_key=none, title=_("report this url"), color="transparent" ) -%} - {% if not archive_mode %} - <a href="{{ build_report_url(request, reported_url=report_url, kind=kind, next_url=next, lookup_key=lookup_key) }}" class="me-2 btn-icon-big btn btn-{{ color }}" title="{{ title }}"> - <svg width="1.25rem" height="1.25rem" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500" style="enable-background:new 0 0 500 500" fill="currentColor"> - <style>.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> - <g><path d="M248.37 310.4c-9.86 0-16.38 1.9-19.56 5.7-3.19 3.8-4.78 10.01-4.78 18.63 0 8.83 1.59 15.1 4.78 18.79 3.18 3.7 9.7 5.54 19.56 5.54 9.85 0 16.32-1.85 19.4-5.54 3.08-3.7 4.62-9.96 4.62-18.79 0-8.62-1.53-14.83-4.62-18.63-3.08-3.8-9.55-5.7-19.4-5.7zM224.96 160.55c-1.23 1.34-1.85 2.93-1.85 4.78l10.78 126.29h29.57l10.47-126.29c0-1.85-.56-3.44-1.69-4.78-1.13-1.33-3.74-2-7.85-2h-32.03c-3.71 0-6.17.67-7.4 2z"/><path d="M448.65 237.65 262.3 51.3a16.992 16.992 0 0 0-24.04 0L51.9 237.65c-6.64 6.64-6.64 17.4 0 24.04l186.35 186.35a16.992 16.992 0 0 0 24.04 0l186.35-186.35c6.65-6.64 6.65-17.4.01-24.04zM250.27 411.98 87.96 249.67 250.28 87.36l162.31 162.31-162.32 162.31z"/></g> - </svg> + {% if not archive_mode %} + <a href="{{ build_report_url(request, reported_url=report_url, kind=kind, next_url=next, lookup_key=lookup_key) }}" + class="me-2 btn-icon-big btn btn-{{ color }}" + title="{{ title }}"> + <svg width="1.25rem" + height="1.25rem" + xmlns="http://www.w3.org/2000/svg" + viewBox="0 0 500 500" + style="enable-background:new 0 0 500 500" + fill="currentColor"> + <style>.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> + <g> + <path d="M248.37 310.4c-9.86 0-16.38 1.9-19.56 5.7-3.19 3.8-4.78 10.01-4.78 18.63 0 8.83 1.59 15.1 4.78 18.79 3.18 3.7 9.7 5.54 19.56 5.54 9.85 0 16.32-1.85 19.4-5.54 3.08-3.7 4.62-9.96 4.62-18.79 0-8.62-1.53-14.83-4.62-18.63-3.08-3.8-9.55-5.7-19.4-5.7zM224.96 160.55c-1.23 1.34-1.85 2.93-1.85 4.78l10.78 126.29h29.57l10.47-126.29c0-1.85-.56-3.44-1.69-4.78-1.13-1.33-3.74-2-7.85-2h-32.03c-3.71 0-6.17.67-7.4 2z" /> + <path d="M448.65 237.65 262.3 51.3a16.992 16.992 0 0 0-24.04 0L51.9 237.65c-6.64 6.64-6.64 17.4 0 24.04l186.35 186.35a16.992 16.992 0 0 0 24.04 0l186.35-186.35c6.65-6.64 6.65-17.4.01-24.04zM250.27 411.98 87.96 249.67 250.28 87.36l162.31 162.31-162.32 162.31z" /> + </g> + </svg> </a> - {% endif %} + {% endif %} {%- endmacro %} {% macro edit(edit, title=_("edit this"), color="transparent" ) -%} - {% if not archive_mode %} - <a href="{{ edit }}" class="me-2 btn-icon-big btn btn-{{ color }}" title="{{ title }}"> - <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pencil" viewBox="0 0 16 16"> - <path fill-rule="evenodd" d="M12.146.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1 0 .708l-10 10a.5.5 0 0 1-.168.11l-5 2a.5.5 0 0 1-.65-.65l2-5a.5.5 0 0 1 .11-.168l10-10zM11.207 2.5L13.5 4.793 14.793 3.5 12.5 1.207 11.207 2.5zm1.586 3L10.5 3.207 4 9.707V10h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.293l6.5-6.5zm-9.761 5.175l-.106.106-1.528 3.821 3.821-1.528.106-.106A.5.5 0 0 1 5 12.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.468-.325z"/> - </svg> + {% if not archive_mode %} + <a href="{{ edit }}" + class="me-2 btn-icon-big btn btn-{{ color }}" + title="{{ title }}"> + <svg xmlns="http://www.w3.org/2000/svg" + width="16" + height="16" + fill="currentColor" + class="bi bi-pencil" + viewBox="0 0 16 16"> + <path fill-rule="evenodd" d="M12.146.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1 0 .708l-10 10a.5.5 0 0 1-.168.11l-5 2a.5.5 0 0 1-.65-.65l2-5a.5.5 0 0 1 .11-.168l10-10zM11.207 2.5L13.5 4.793 14.793 3.5 12.5 1.207 11.207 2.5zm1.586 3L10.5 3.207 4 9.707V10h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.293l6.5-6.5zm-9.761 5.175l-.106.106-1.528 3.821 3.821-1.528.106-.106A.5.5 0 0 1 5 12.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.468-.325z" /> + </svg> </a> - {% endif %} + {% endif %} {%- endmacro %} diff --git a/src/plainui/jinja2/plainui/components/header_buttons.html.j2 b/src/plainui/jinja2/plainui/components/header_buttons.html.j2 index beb55a1a0767da724c8e9759033d9b0ddbda1c88..a157fe17bbe1dd17ad66f0f3385483b09cd2dbe0 100644 --- a/src/plainui/jinja2/plainui/components/header_buttons.html.j2 +++ b/src/plainui/jinja2/plainui/components/header_buttons.html.j2 @@ -1,43 +1,75 @@ {% macro search() -%} -<button class="hub-header__main-search-btn input-group-append btn-icon"> - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500" width="1.5em" height="1.5em" fill="currentColor"> - <style id="style2" type="text/css">.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> - <g id="search"><path id="path40" d="M204.8 115.9c-2.15 0-21.55.33-42.07 11.58-19.48 10.69-43.37 33.28-46.52 80.24-.28 4.14 1.07 8.14 3.81 11.27 2.73 3.13 6.52 5 10.65 5.28.35.02.71.04 1.06.04 8.15 0 14.96-6.37 15.5-14.5 1.76-26.27 11.89-44.73 30.11-54.88 13.33-7.43 26.92-7.92 27.57-7.94 8.51-.06 15.43-7.02 15.43-15.54 0-8.58-6.97-15.55-15.54-15.55z"/><g id="g44"><path id="path42" d="M397.07 447.76c-.49 0-.97-.01-1.46-.04-6.02-.3-15.16-2.63-24.55-12.02l-61.91-61.91c-66.82 37.87-151.93 26.93-207-28.13-67.26-67.26-67.26-176.7 0-243.97 67.26-67.26 176.7-67.26 243.97 0 55.01 55.01 65.98 140.06 28.21 206.86l61.94 61.94c9.39 9.39 11.72 18.54 12.02 24.55.41 8.23-2.67 16.27-8.47 22.06l-22.15 22.15c-5.45 5.46-12.89 8.51-20.6 8.51zM313.5 332.9l80.18 80.18c1.12 1.12 2.04 1.81 2.7 2.22l19.48-19.48c-.41-.66-1.1-1.58-2.22-2.7l-80.19-80.19 7.34-10.93c37.35-55.58 30.07-130.31-17.31-177.68-54.78-54.78-143.93-54.78-198.71 0-54.79 54.78-54.79 143.93 0 198.71 47.42 47.42 122.2 54.67 177.8 17.22l10.93-7.35z"/></g></g> + <button class="hub-header__main-search-btn input-group-append btn-icon"> + <svg xmlns="http://www.w3.org/2000/svg" + viewBox="0 0 500 500" + width="1.5em" + height="1.5em" + fill="currentColor"> + <style id="style2" type="text/css">.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> + <g id="search"> + <path id="path40" d="M204.8 115.9c-2.15 0-21.55.33-42.07 11.58-19.48 10.69-43.37 33.28-46.52 80.24-.28 4.14 1.07 8.14 3.81 11.27 2.73 3.13 6.52 5 10.65 5.28.35.02.71.04 1.06.04 8.15 0 14.96-6.37 15.5-14.5 1.76-26.27 11.89-44.73 30.11-54.88 13.33-7.43 26.92-7.92 27.57-7.94 8.51-.06 15.43-7.02 15.43-15.54 0-8.58-6.97-15.55-15.54-15.55z" /> + <g id="g44"> + <path id="path42" d="M397.07 447.76c-.49 0-.97-.01-1.46-.04-6.02-.3-15.16-2.63-24.55-12.02l-61.91-61.91c-66.82 37.87-151.93 26.93-207-28.13-67.26-67.26-67.26-176.7 0-243.97 67.26-67.26 176.7-67.26 243.97 0 55.01 55.01 65.98 140.06 28.21 206.86l61.94 61.94c9.39 9.39 11.72 18.54 12.02 24.55.41 8.23-2.67 16.27-8.47 22.06l-22.15 22.15c-5.45 5.46-12.89 8.51-20.6 8.51zM313.5 332.9l80.18 80.18c1.12 1.12 2.04 1.81 2.7 2.22l19.48-19.48c-.41-.66-1.1-1.58-2.22-2.7l-80.19-80.19 7.34-10.93c37.35-55.58 30.07-130.31-17.31-177.68-54.78-54.78-143.93-54.78-198.71 0-54.79 54.78-54.79 143.93 0 198.71 47.42 47.42 122.2 54.67 177.8 17.22l10.93-7.35z" /> + </g> + </g> </svg> -</button> + </button> {%- endmacro %} {% macro play() -%} -<div class="hub-header__additional-btn btn-icon p-1"> - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500" style="enable-background:new 0 0 500 500" fill="currentColor"> - <style>.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> - <path d="M411.13 237.06 142.25 81.82a15.543 15.543 0 0 0-15.5 0c-4.78 2.76-7.75 7.9-7.75 13.42v310.48c0 5.52 2.97 10.66 7.75 13.42 2.35 1.36 5.03 2.08 7.75 2.08s5.4-.72 7.75-2.08L411.13 263.9c4.78-2.76 7.75-7.9 7.75-13.42s-2.96-10.66-7.75-13.42zm-38.75 13.42L150 378.88V122.09l222.38 128.39z"/></svg> -</div> + <div class="hub-header__additional-btn btn-icon p-1"> + <svg xmlns="http://www.w3.org/2000/svg" + viewBox="0 0 500 500" + style="enable-background:new 0 0 500 500" + fill="currentColor"> + <style>.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> + <path d="M411.13 237.06 142.25 81.82a15.543 15.543 0 0 0-15.5 0c-4.78 2.76-7.75 7.9-7.75 13.42v310.48c0 5.52 2.97 10.66 7.75 13.42 2.35 1.36 5.03 2.08 7.75 2.08s5.4-.72 7.75-2.08L411.13 263.9c4.78-2.76 7.75-7.9 7.75-13.42s-2.96-10.66-7.75-13.42zm-38.75 13.42L150 378.88V122.09l222.38 128.39z" /> + </svg> + </div> {%- endmacro %} {% macro speaker() -%} -<div class="hub-header__additional-btn btn-icon p-1"> - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500" style="enable-background:new 0 0 500 500" fill="currentColor"> - <style>.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> - <path d="M385.81 68.99c-7.46-3.96-16.43-3.48-23.39 1.24l-137.24 92.68h-74.27c-27.07 0-49.09 22.02-49.09 49.09v76.62c0 27.07 22.02 49.09 49.09 49.09h74.27l137.24 92.68c3.78 2.55 8.18 3.9 12.72 3.9 3.71 0 7.4-.92 10.68-2.67a22.707 22.707 0 0 0 12.07-20.08V89.07a22.724 22.724 0 0 0-12.08-20.08zM245.84 313.48V187.14l120.39-81.31v288.96l-120.39-81.31zM214.2 194.55v111.52h-63.29c-9.62 0-17.44-7.83-17.44-17.45V212c0-9.62 7.82-17.44 17.44-17.44h63.29z"/> + <div class="hub-header__additional-btn btn-icon p-1"> + <svg xmlns="http://www.w3.org/2000/svg" + viewBox="0 0 500 500" + style="enable-background:new 0 0 500 500" + fill="currentColor"> + <style>.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> + <path d="M385.81 68.99c-7.46-3.96-16.43-3.48-23.39 1.24l-137.24 92.68h-74.27c-27.07 0-49.09 22.02-49.09 49.09v76.62c0 27.07 22.02 49.09 49.09 49.09h74.27l137.24 92.68c3.78 2.55 8.18 3.9 12.72 3.9 3.71 0 7.4-.92 10.68-2.67a22.707 22.707 0 0 0 12.07-20.08V89.07a22.724 22.724 0 0 0-12.08-20.08zM245.84 313.48V187.14l120.39-81.31v288.96l-120.39-81.31zM214.2 194.55v111.52h-63.29c-9.62 0-17.44-7.83-17.44-17.45V212c0-9.62 7.82-17.44 17.44-17.44h63.29z" /> </svg> -</div> + </div> {%- endmacro %} {% macro bulb() -%} -<div class="hub-header__additional-btn btn-icon p-1"> - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500" style="enable-background:new 0 0 500 500" fill="currentColor"> - <style>.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> - <g><path d="M250.76 86.54c-2.12 0-21.29.32-41.59 11.46-19.26 10.57-42.88 32.92-46 79.43-.54 8 5.54 14.95 13.53 15.48.33.02.66.03.99.03 7.62 0 13.99-5.96 14.51-13.57 1.79-26.63 12.09-45.36 30.62-55.69 13.84-7.71 27.92-8.06 27.97-8.06 8-.02 14.52-6.54 14.52-14.54-.01-8.01-6.53-14.54-14.55-14.54z"/><path d="M250.22 38.14c-76.64 0-138.99 62.35-138.99 138.99 0 26.44 7.48 52.19 21.63 74.48a139.018 139.018 0 0 0 54.06 49.25v13.96c0 11.79 9.59 21.38 21.38 21.38h85.08c11.79 0 21.38-9.59 21.38-21.38V300.2a139.15 139.15 0 0 0 53.17-49.25c13.92-22.17 21.27-47.69 21.27-73.82 0-76.64-62.35-138.99-138.98-138.99zm35.54 243.5v25.55h-69.84v-25.11l-8.8-3.76c-40.64-17.38-66.9-57.1-66.9-101.19 0-60.65 49.34-109.99 109.99-109.99 60.65 0 109.99 49.34 109.99 109.99 0 43.56-25.82 83.09-65.79 100.7l-8.65 3.81zM294.4 351.41h-83.38c-16.4 0-29.75 13.34-29.75 29.74v19.14c0 11.58 6.73 21.75 16.56 26.65 3.07 18.32 19.04 32.32 38.21 32.32h29.07c18.53 0 34.07-13.08 37.86-30.49 12.23-3.69 21.16-15.06 21.16-28.48v-19.14c.01-16.4-13.33-29.74-29.73-29.74zm.66 29.75v19.14c0 .36-.3.66-.66.66h-83.38c-.36 0-.66-.3-.66-.66v-19.14c0-.36.3-.66.66-.66h83.38c.36 0 .66.29.66.66z"/></g> + <div class="hub-header__additional-btn btn-icon p-1"> + <svg xmlns="http://www.w3.org/2000/svg" + viewBox="0 0 500 500" + style="enable-background:new 0 0 500 500" + fill="currentColor"> + <style>.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> + <g> + <path d="M250.76 86.54c-2.12 0-21.29.32-41.59 11.46-19.26 10.57-42.88 32.92-46 79.43-.54 8 5.54 14.95 13.53 15.48.33.02.66.03.99.03 7.62 0 13.99-5.96 14.51-13.57 1.79-26.63 12.09-45.36 30.62-55.69 13.84-7.71 27.92-8.06 27.97-8.06 8-.02 14.52-6.54 14.52-14.54-.01-8.01-6.53-14.54-14.55-14.54z" /> + <path d="M250.22 38.14c-76.64 0-138.99 62.35-138.99 138.99 0 26.44 7.48 52.19 21.63 74.48a139.018 139.018 0 0 0 54.06 49.25v13.96c0 11.79 9.59 21.38 21.38 21.38h85.08c11.79 0 21.38-9.59 21.38-21.38V300.2a139.15 139.15 0 0 0 53.17-49.25c13.92-22.17 21.27-47.69 21.27-73.82 0-76.64-62.35-138.99-138.98-138.99zm35.54 243.5v25.55h-69.84v-25.11l-8.8-3.76c-40.64-17.38-66.9-57.1-66.9-101.19 0-60.65 49.34-109.99 109.99-109.99 60.65 0 109.99 49.34 109.99 109.99 0 43.56-25.82 83.09-65.79 100.7l-8.65 3.81zM294.4 351.41h-83.38c-16.4 0-29.75 13.34-29.75 29.74v19.14c0 11.58 6.73 21.75 16.56 26.65 3.07 18.32 19.04 32.32 38.21 32.32h29.07c18.53 0 34.07-13.08 37.86-30.49 12.23-3.69 21.16-15.06 21.16-28.48v-19.14c.01-16.4-13.33-29.74-29.73-29.74zm.66 29.75v19.14c0 .36-.3.66-.66.66h-83.38c-.36 0-.66-.3-.66-.66v-19.14c0-.36.3-.66.66-.66h83.38c.36 0 .66.29.66.66z" /> + </g> </svg> -</div> + </div> {%- endmacro %} {% macro globe() -%} - <a id="lang-select" class="btn-icon-big nav-link" data-bs-toggle="dropdown" aria-expanded="false" role="button" title="{{ _("select-language") }}"> - <svg xmlns="http://www.w3.org/2000/svg" width="1.25rem" height="1.25rem" viewBox="0 0 500 500" style="enable-background:new 0 0 500 500" fill="currentColor"> - <style> + <a id="lang-select" + class="btn-icon-big nav-link" + data-bs-toggle="dropdown" + aria-expanded="false" + role="button" + title="{{ _('select-language') }}"> + <svg xmlns="http://www.w3.org/2000/svg" + width="1.25rem" + height="1.25rem" + viewBox="0 0 500 500" + style="enable-background:new 0 0 500 500" + fill="currentColor"> + <style> .st0{display:none} .st1{display:inline} .st2,.st3{ @@ -45,222 +77,286 @@ } .st2{stroke-width:18;stroke-linecap:round;stroke-linejoin:round} .st3{stroke-width:20} - </style> - <circle class="st3" cx="250" cy="250" r="169"/> - <ellipse class="st3" cx="250" cy="250" rx="100.58" ry="169"/> - <path class="st3" d="M250 84.68v329.59M85.83 250h328.49"/> + </style> + <circle class="st3" cx="250" cy="250" r="169" /> + <ellipse class="st3" cx="250" cy="250" rx="100.58" ry="169" /> + <path class="st3" d="M250 84.68v329.59M85.83 250h328.49" /> </svg> </a> <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="lang-select"> {% if not archive_mode %} - <form - class="hub-header__additional-lang" - method="POST" - action="{{ url('set_language') }}" - > + <form class="hub-header__additional-lang" + method="POST" + action="{{ url('set_language') }}"> {{ csrf_input }} <input type="hidden" name="next" value="{{ request.get_full_path() }}"> - <li><button - class="dropdown-item" - value="de" - name="language" - > - {{ _("de") }} - </button></li> - <li><button - class="dropdown-item" - value="en" - name="language" - > - {{ _("en") }} - </button></li> - </form> + <li> + <button class="dropdown-item" value="de" name="language">{{ _("de") }}</button> + </li> + <li> + <button class="dropdown-item" value="en" name="language">{{ _("en") }}</button> + </li> + </form> {% else %} - <li><a class="dropdown-item" href="{{ hub_absolute_self(request, lang='de') }}">{{ _("de") }}</a></li> - <li><a class="dropdown-item" href="{{ hub_absolute_self(request, lang='en') }}">{{ _("en") }}</a></li> + <li> + <a class="dropdown-item" + href="{{ hub_absolute_self(request, lang='de') }}">{{ _("de") }}</a> + </li> + <li> + <a class="dropdown-item" + href="{{ hub_absolute_self(request, lang='en') }}">{{ _("en") }}</a> + </li> {% endif %} </ul> {%- endmacro %} {% macro heart() -%} -<div class="hub-header__additional-btn btn-icon p-2"> - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500" style="enable-background:new 0 0 500 500" fill="currentColor"> - <style>.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> - <path d="M431.37 173.51c-5.4-40.67-33.7-74.2-73.85-87.5-11.51-3.81-23.3-5.75-35.06-5.75-22.97 0-44.38 7.24-61.92 20.94l-10.89 8.5-10.9-8.48c-17.53-13.64-38.9-20.85-61.82-20.85-11.75 0-23.53 1.93-35.03 5.74-40.14 13.29-68.43 46.79-73.83 87.43-2.7 20.33-.92 53.41 22.88 95.55 27.63 48.9 77.92 98.36 149.49 147a16.502 16.502 0 0 0 18.54 0c71.56-48.64 121.86-98.09 149.48-147 23.83-42.15 25.61-75.24 22.91-95.58zm-51.62 79.34c-23.94 42.38-67.65 85.92-130.02 129.54-62.37-43.62-106.09-87.17-130.03-129.54-19.31-34.19-20.94-59.64-18.9-74.98 3.72-28 23.45-51.17 51.49-60.45 8.14-2.7 16.44-4.06 24.65-4.06 15.51 0 29.87 4.8 41.55 13.89l21.05 16.39a16.485 16.485 0 0 0 20.29-.02l21.03-16.42c11.68-9.12 26.07-13.94 41.6-13.94 8.22 0 16.52 1.37 24.68 4.07 28.06 9.3 47.8 32.49 51.52 60.52 2.03 15.35.4 40.81-18.91 75z"/> + <div class="hub-header__additional-btn btn-icon p-2"> + <svg xmlns="http://www.w3.org/2000/svg" + viewBox="0 0 500 500" + style="enable-background:new 0 0 500 500" + fill="currentColor"> + <style>.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> + <path d="M431.37 173.51c-5.4-40.67-33.7-74.2-73.85-87.5-11.51-3.81-23.3-5.75-35.06-5.75-22.97 0-44.38 7.24-61.92 20.94l-10.89 8.5-10.9-8.48c-17.53-13.64-38.9-20.85-61.82-20.85-11.75 0-23.53 1.93-35.03 5.74-40.14 13.29-68.43 46.79-73.83 87.43-2.7 20.33-.92 53.41 22.88 95.55 27.63 48.9 77.92 98.36 149.49 147a16.502 16.502 0 0 0 18.54 0c71.56-48.64 121.86-98.09 149.48-147 23.83-42.15 25.61-75.24 22.91-95.58zm-51.62 79.34c-23.94 42.38-67.65 85.92-130.02 129.54-62.37-43.62-106.09-87.17-130.03-129.54-19.31-34.19-20.94-59.64-18.9-74.98 3.72-28 23.45-51.17 51.49-60.45 8.14-2.7 16.44-4.06 24.65-4.06 15.51 0 29.87 4.8 41.55 13.89l21.05 16.39a16.485 16.485 0 0 0 20.29-.02l21.03-16.42c11.68-9.12 26.07-13.94 41.6-13.94 8.22 0 16.52 1.37 24.68 4.07 28.06 9.3 47.8 32.49 51.52 60.52 2.03 15.35.4 40.81-18.91 75z" /> </svg> -</div> + </div> {%- endmacro %} {% macro logout() -%} - {% if request.user.is_authenticated %} - <form action="{{ url('plainui:logout') }}" method="post"> - {{ csrf_input }} - <button - class="hub-header__additional-btn btn-icon py-2 ps-2 pe-0" - title="{{ _('logout') }}" - > - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500" style="enable-background:new 0 0 500 500" fill="currentColor"> - <style>.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> - <g><path d="m477.58 244.56-29.14-27.05c-.21-.2-.46-.41-.69-.59l-57.16-53.07a12.496 12.496 0 0 0-21 9.16v39.19H245.73c-6.9 0-12.5 5.6-12.5 12.5v58.07c0 6.9 5.6 12.5 12.5 12.5h123.86v39.19c0 4.97 2.95 9.47 7.5 11.46a12.51 12.51 0 0 0 13.5-2.3l57.24-53.14-.04.04c.23-.18.45-.37.66-.57l29.13-27.05c2.55-2.36 4-5.68 4-9.16 0-3.5-1.45-6.82-4-9.18z"/><path d="M323.15 421.91H88.83c-9.39 0-17-7.61-17-17V94.99c0-9.39 7.61-17 17-17h234.32c9.39 0 17 7.61 17 17v68.39c0 9.39-7.61 17-17 17s-17-7.61-17-17v-51.39H105.83v275.92h200.32V344c0-9.39 7.61-17 17-17s17 7.61 17 17v60.91c0 9.39-7.61 17-17 17z"/></g> - </svg> - </button> - </form> - {% else %} - <a - class="hub-header__additional-btn btn-icon py-2 ps-2 pe-0" - title="{{ _("login") }}" - href="{{ url('plainui:login') }}" - > - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500" style="enable-background:new 0 0 500 500" fill="currentColor"> - <style>.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> - <g><path d="m477.58 244.56-29.14-27.05c-.21-.2-.46-.41-.69-.59l-57.16-53.07a12.496 12.496 0 0 0-21 9.16v39.19H245.73c-6.9 0-12.5 5.6-12.5 12.5v58.07c0 6.9 5.6 12.5 12.5 12.5h123.86v39.19c0 4.97 2.95 9.47 7.5 11.46a12.51 12.51 0 0 0 13.5-2.3l57.24-53.14-.04.04c.23-.18.45-.37.66-.57l29.13-27.05c2.55-2.36 4-5.68 4-9.16 0-3.5-1.45-6.82-4-9.18z"/><path d="M323.15 421.91H88.83c-9.39 0-17-7.61-17-17V94.99c0-9.39 7.61-17 17-17h234.32c9.39 0 17 7.61 17 17v68.39c0 9.39-7.61 17-17 17s-17-7.61-17-17v-51.39H105.83v275.92h200.32V344c0-9.39 7.61-17 17-17s17 7.61 17 17v60.91c0 9.39-7.61 17-17 17z"/></g> - </svg> - </a> - {% endif %} + {% if request.user.is_authenticated %} + <form action="{{ url('plainui:logout') }}" method="post"> + {{ csrf_input }} + <button class="hub-header__additional-btn btn-icon py-2 ps-2 pe-0" + title="{{ _('logout') }}"> + <svg xmlns="http://www.w3.org/2000/svg" + viewBox="0 0 500 500" + style="enable-background:new 0 0 500 500" + fill="currentColor"> + <style>.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> + <g> + <path d="m477.58 244.56-29.14-27.05c-.21-.2-.46-.41-.69-.59l-57.16-53.07a12.496 12.496 0 0 0-21 9.16v39.19H245.73c-6.9 0-12.5 5.6-12.5 12.5v58.07c0 6.9 5.6 12.5 12.5 12.5h123.86v39.19c0 4.97 2.95 9.47 7.5 11.46a12.51 12.51 0 0 0 13.5-2.3l57.24-53.14-.04.04c.23-.18.45-.37.66-.57l29.13-27.05c2.55-2.36 4-5.68 4-9.16 0-3.5-1.45-6.82-4-9.18z" /> + <path d="M323.15 421.91H88.83c-9.39 0-17-7.61-17-17V94.99c0-9.39 7.61-17 17-17h234.32c9.39 0 17 7.61 17 17v68.39c0 9.39-7.61 17-17 17s-17-7.61-17-17v-51.39H105.83v275.92h200.32V344c0-9.39 7.61-17 17-17s17 7.61 17 17v60.91c0 9.39-7.61 17-17 17z" /> + </g> + </svg> + </button> + </form> + {% else %} + <a class="hub-header__additional-btn btn-icon py-2 ps-2 pe-0" + title="{{ _('login') }}" + href="{{ url('plainui:login') }}"> + <svg xmlns="http://www.w3.org/2000/svg" + viewBox="0 0 500 500" + style="enable-background:new 0 0 500 500" + fill="currentColor"> + <style>.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> + <g> + <path d="m477.58 244.56-29.14-27.05c-.21-.2-.46-.41-.69-.59l-57.16-53.07a12.496 12.496 0 0 0-21 9.16v39.19H245.73c-6.9 0-12.5 5.6-12.5 12.5v58.07c0 6.9 5.6 12.5 12.5 12.5h123.86v39.19c0 4.97 2.95 9.47 7.5 11.46a12.51 12.51 0 0 0 13.5-2.3l57.24-53.14-.04.04c.23-.18.45-.37.66-.57l29.13-27.05c2.55-2.36 4-5.68 4-9.16 0-3.5-1.45-6.82-4-9.18z" /> + <path d="M323.15 421.91H88.83c-9.39 0-17-7.61-17-17V94.99c0-9.39 7.61-17 17-17h234.32c9.39 0 17 7.61 17 17v68.39c0 9.39-7.61 17-17 17s-17-7.61-17-17v-51.39H105.83v275.92h200.32V344c0-9.39 7.61-17 17-17s17 7.61 17 17v60.91c0 9.39-7.61 17-17 17z" /> + </g> + </svg> + </a> + {% endif %} {%- endmacro %} {% macro report(report_url=none, kind=none, next=none, lookup_key=none, title=_("report this url"), color="transparent" ) %} - <a - href="{{ build_report_url(request, reported_url=report_url, kind=kind, next_url=next, lookup_key=lookup_key) }}" - class="btn-icon-big btn btn-{{ color }} p-2" - title="{{ title }}" - > - <svg width="1.25rem" height="1.25rem" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500" style="enable-background:new 0 0 500 500" fill="currentColor"> - <style>.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> - <g><path d="M248.37 310.4c-9.86 0-16.38 1.9-19.56 5.7-3.19 3.8-4.78 10.01-4.78 18.63 0 8.83 1.59 15.1 4.78 18.79 3.18 3.7 9.7 5.54 19.56 5.54 9.85 0 16.32-1.85 19.4-5.54 3.08-3.7 4.62-9.96 4.62-18.79 0-8.62-1.53-14.83-4.62-18.63-3.08-3.8-9.55-5.7-19.4-5.7zM224.96 160.55c-1.23 1.34-1.85 2.93-1.85 4.78l10.78 126.29h29.57l10.47-126.29c0-1.85-.56-3.44-1.69-4.78-1.13-1.33-3.74-2-7.85-2h-32.03c-3.71 0-6.17.67-7.4 2z"/><path d="M448.65 237.65 262.3 51.3a16.992 16.992 0 0 0-24.04 0L51.9 237.65c-6.64 6.64-6.64 17.4 0 24.04l186.35 186.35a16.992 16.992 0 0 0 24.04 0l186.35-186.35c6.65-6.64 6.65-17.4.01-24.04zM250.27 411.98 87.96 249.67 250.28 87.36l162.31 162.31-162.32 162.31z"/></g> - </svg> - </a> + <a href="{{ build_report_url(request, reported_url=report_url, kind=kind, next_url=next, lookup_key=lookup_key) }}" + class="btn-icon-big btn btn-{{ color }} p-2" + title="{{ title }}"> + <svg width="1.25rem" + height="1.25rem" + xmlns="http://www.w3.org/2000/svg" + viewBox="0 0 500 500" + style="enable-background:new 0 0 500 500" + fill="currentColor"> + <style>.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> + <g> + <path d="M248.37 310.4c-9.86 0-16.38 1.9-19.56 5.7-3.19 3.8-4.78 10.01-4.78 18.63 0 8.83 1.59 15.1 4.78 18.79 3.18 3.7 9.7 5.54 19.56 5.54 9.85 0 16.32-1.85 19.4-5.54 3.08-3.7 4.62-9.96 4.62-18.79 0-8.62-1.53-14.83-4.62-18.63-3.08-3.8-9.55-5.7-19.4-5.7zM224.96 160.55c-1.23 1.34-1.85 2.93-1.85 4.78l10.78 126.29h29.57l10.47-126.29c0-1.85-.56-3.44-1.69-4.78-1.13-1.33-3.74-2-7.85-2h-32.03c-3.71 0-6.17.67-7.4 2z" /> + <path d="M448.65 237.65 262.3 51.3a16.992 16.992 0 0 0-24.04 0L51.9 237.65c-6.64 6.64-6.64 17.4 0 24.04l186.35 186.35a16.992 16.992 0 0 0 24.04 0l186.35-186.35c6.65-6.64 6.65-17.4.01-24.04zM250.27 411.98 87.96 249.67 250.28 87.36l162.31 162.31-162.32 162.31z" /> + </g> + </svg> + </a> {% endmacro %} {% macro help(title=_("helpful teams"), color="transparent" ) %} - <a - href="{{ url( 'plainui:static_page', page_slug='start') }}#md-helpful-teams" - class="btn-icon-big btn btn-{{ color }} p-2" - title="{{ title }}" - > - <svg width="1.25rem" height="1.25rem" fill="currentColor" version="1.1" x="0" y="0" viewBox="0 0 500 500" style="enable-background:new 0 0 500 500" xml:space="preserve" id="svg62" xmlns="http://www.w3.org/2000/svg"><style type="text/css" id="style2">.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style><g aria-label="?" transform="scale(.9727 1.02807)" id="text1060" style="font-weight:700;font-size:300.21px;font-family:'Open Sans';-inkscape-font-specification:'Open Sans Bold';stroke-width:7.50525"><g id="g2188"><g id="report" style="enable-background:new 0 0 500 500" transform="scale(1.02807 .9727)"><g id="g59"><path d="M448.65 237.65 262.3 51.3a16.992 16.992 0 0 0-24.04 0L51.9 237.65c-6.64 6.64-6.64 17.4 0 24.04l186.35 186.35a16.992 16.992 0 0 0 24.04 0l186.35-186.35c6.65-6.64 6.65-17.4.01-24.04zM250.27 411.98 87.96 249.67 250.28 87.36l162.31 162.31-162.32 162.31z" id="path57"/></g></g><path d="m226.697 274.396-3.903-45.332q-.3-5.104 3.602-7.806 4.203-3.002 15.912-6.904l27.92-9.007v-23.716q-5.105-.9-11.109-1.201-5.704-.6-11.708-.6-10.207 0-22.516 1.8-12.308 1.802-22.816 4.204l-6.004-30.622q29.721-9.006 56.44-9.006 24.016 0 38.126 4.503 14.41 4.203 20.715 13.81 6.604 9.606 6.604 25.818 0 10.207-2.701 17.712-2.402 7.505-9.007 13.21-6.304 5.703-18.313 11.107-12.008 5.104-30.921 10.808l-1.801 31.222zm-9.607 42.029q0-12.609 4.503-18.013 4.503-5.704 19.213-5.704 14.11 0 18.613 5.704 4.804 5.404 4.804 18.013 0 12.91-4.804 18.313-4.503 5.404-18.613 5.404-14.71 0-19.213-5.404t-4.503-18.313z" style="font-family:Changa;-inkscape-font-specification:'Changa Bold'" id="path2061"/></g></g></svg> - </a> + <a href="{{ url('plainui:static_page', page_slug='start') }}#md-helpful-teams" + class="btn-icon-big btn btn-{{ color }} p-2" + title="{{ title }}"> + <svg width="1.25rem" + height="1.25rem" + fill="currentColor" + version="1.1" + x="0" + y="0" + viewBox="0 0 500 500" + style="enable-background:new 0 0 500 500" + xml:space="preserve" + id="svg62" + xmlns="http://www.w3.org/2000/svg"> + <style type="text/css" id="style2">.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> + <g aria-label="?" transform="scale(.9727 1.02807)" id="text1060" style="font-weight:700;font-size:300.21px;font-family:'Open Sans';-inkscape-font-specification:'Open Sans Bold';stroke-width:7.50525"> + <g id="g2188"> + <g id="report" style="enable-background:new 0 0 500 500" transform="scale(1.02807 .9727)"> + <g id="g59"> + <path d="M448.65 237.65 262.3 51.3a16.992 16.992 0 0 0-24.04 0L51.9 237.65c-6.64 6.64-6.64 17.4 0 24.04l186.35 186.35a16.992 16.992 0 0 0 24.04 0l186.35-186.35c6.65-6.64 6.65-17.4.01-24.04zM250.27 411.98 87.96 249.67 250.28 87.36l162.31 162.31-162.32 162.31z" id="path57" /> + </g> + </g> + <path d="m226.697 274.396-3.903-45.332q-.3-5.104 3.602-7.806 4.203-3.002 15.912-6.904l27.92-9.007v-23.716q-5.105-.9-11.109-1.201-5.704-.6-11.708-.6-10.207 0-22.516 1.8-12.308 1.802-22.816 4.204l-6.004-30.622q29.721-9.006 56.44-9.006 24.016 0 38.126 4.503 14.41 4.203 20.715 13.81 6.604 9.606 6.604 25.818 0 10.207-2.701 17.712-2.402 7.505-9.007 13.21-6.304 5.703-18.313 11.107-12.008 5.104-30.921 10.808l-1.801 31.222zm-9.607 42.029q0-12.609 4.503-18.013 4.503-5.704 19.213-5.704 14.11 0 18.613 5.704 4.804 5.404 4.804 18.013 0 12.91-4.804 18.313-4.503 5.404-18.613 5.404-14.71 0-19.213-5.404t-4.503-18.313z" style="font-family:Changa;-inkscape-font-specification:'Changa Bold'" id="path2061" /> + </g> + </g> + </svg> + </a> {% endmacro %} {% macro share(title=_("share this "), color="transparent" ) -%} - {% if not disable_share %} - <a - href="{{ hub_absolute_self(request, i18n=archive_mode) }}" - class="btn-icon-big btn-{{ color }} nav-link" - title="{{ title }}" - target="_blank" - > - <svg width="1.25rem" height="1.25rem" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500" style="enable-background:new 0 0 500 500" fill="currentColor"> - <style>.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> - <path d="M353.7 304.47c-18.9 0-36.76 8.05-49.34 22.15l-94.88-54.78c2.34-6.85 3.52-14 3.52-21.28 0-6.12-.84-12.17-2.5-18.03l97.13-56.08c12.43 12.11 28.71 18.75 46.08 18.75 36.47 0 66.14-29.67 66.14-66.14s-29.67-66.14-66.14-66.14-66.14 29.67-66.14 66.14c0 5.69.74 11.35 2.19 16.86l-97.68 56.4c-12.32-11.56-28.29-17.91-45.21-17.91-36.47 0-66.14 29.67-66.14 66.14s29.67 66.14 66.14 66.14c15.6 0 30.65-5.52 42.58-15.58l99.25 57.3a66.01 66.01 0 0 0-1.14 12.19c0 36.47 29.67 66.14 66.14 66.14s66.14-29.67 66.14-66.14-29.67-66.13-66.14-66.13zm30.77 66.15c0 16.96-13.8 30.77-30.77 30.77s-30.77-13.8-30.77-30.77 13.8-30.77 30.77-30.77 30.77 13.8 30.77 30.77zm-61.53-241.56c0-16.97 13.8-30.77 30.77-30.77s30.77 13.8 30.77 30.77-13.8 30.77-30.77 30.77-30.77-13.8-30.77-30.77zm-145.31 121.5c0 16.96-13.8 30.77-30.77 30.77s-30.77-13.8-30.77-30.77 13.8-30.77 30.77-30.77c16.97.01 30.77 13.81 30.77 30.77z"/> - </svg> - </a> - {% endif %} + {% if not disable_share %} + <a href="{{ hub_absolute_self(request, i18n=archive_mode) }}" + class="btn-icon-big btn-{{ color }} nav-link" + title="{{ title }}" + target="_blank"> + <svg width="1.25rem" + height="1.25rem" + xmlns="http://www.w3.org/2000/svg" + viewBox="0 0 500 500" + style="enable-background:new 0 0 500 500" + fill="currentColor"> + <style>.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> + <path d="M353.7 304.47c-18.9 0-36.76 8.05-49.34 22.15l-94.88-54.78c2.34-6.85 3.52-14 3.52-21.28 0-6.12-.84-12.17-2.5-18.03l97.13-56.08c12.43 12.11 28.71 18.75 46.08 18.75 36.47 0 66.14-29.67 66.14-66.14s-29.67-66.14-66.14-66.14-66.14 29.67-66.14 66.14c0 5.69.74 11.35 2.19 16.86l-97.68 56.4c-12.32-11.56-28.29-17.91-45.21-17.91-36.47 0-66.14 29.67-66.14 66.14s29.67 66.14 66.14 66.14c15.6 0 30.65-5.52 42.58-15.58l99.25 57.3a66.01 66.01 0 0 0-1.14 12.19c0 36.47 29.67 66.14 66.14 66.14s66.14-29.67 66.14-66.14-29.67-66.13-66.14-66.13zm30.77 66.15c0 16.96-13.8 30.77-30.77 30.77s-30.77-13.8-30.77-30.77 13.8-30.77 30.77-30.77 30.77 13.8 30.77 30.77zm-61.53-241.56c0-16.97 13.8-30.77 30.77-30.77s30.77 13.8 30.77 30.77-13.8 30.77-30.77 30.77-30.77-13.8-30.77-30.77zm-145.31 121.5c0 16.96-13.8 30.77-30.77 30.77s-30.77-13.8-30.77-30.77 13.8-30.77 30.77-30.77c16.97.01 30.77 13.81 30.77 30.77z" /> + </svg> + </a> + {% endif %} {%- endmacro %} {% macro schedule(sch_id, sch_is, color="transparent", next=request.get_full_path() ) %} - <form action="{{ url('plainui:modify_personal_calendar') }}" class="d-inline-block" method="POST"> - {{ csrf_input }} - <input type="hidden" name="next" value="{{ next ~ '#sch_' ~ sch_id }}"> - <input type="hidden" name="id" value="{{ sch_id }}"> - {%- if sch_is %} - <input type="hidden" name="mode" value="remove"> - <button - type="submit" - id="sch_{{ sch_id }}" - class="active btn-icon-big btn btn-{{ color }} p-2" - title="{{ _("remove from schedule") }}" - > - <svg xmlns="http://www.w3.org/2000/svg" width="16px" height="16px" style="position: relative; top: 2px;" fill="currentColor" class="bi bi-calendar2-week-fill" viewBox="0 0 16 16"> - <path fill-rule="evenodd" d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 3.5c0-.276.244-.5.545-.5h10.91c.3 0 .545.224.545.5v1c0 .276-.244.5-.546.5H2.545C2.245 5 2 4.776 2 4.5v-1zM8.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1zM3 10.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1z"/> - </svg> - </button> - {%- else -%} - <input type="hidden" name="mode" value="add"> - <button - type="submit" - id="sch_{{ sch_id }}" - class="btn-icon-big btn btn-{{ color }} p-2" - title="{{ _("add to schedule") }}" - > - <svg xmlns="http://www.w3.org/2000/svg" width="16px" height="16px" style="position: relative; top: 2px;" fill="currentColor" class="bi bi-calendar2-week" viewBox="0 0 16 16"> - <path fill-rule="evenodd" d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H2z"/> - <path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5V4zM11 7.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm-3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm-5 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1z"/> - </svg> - </button> - {% endif -%} - </form> + <form action="{{ url('plainui:modify_personal_calendar') }}" + class="d-inline-block" + method="POST"> + {{ csrf_input }} + <input type="hidden" name="next" value="{{ next ~ '#sch_' ~ sch_id }}"> + <input type="hidden" name="id" value="{{ sch_id }}"> + {%- if sch_is %} + <input type="hidden" name="mode" value="remove"> + <button type="submit" + id="sch_{{ sch_id }}" + class="active btn-icon-big btn btn-{{ color }} p-2" + title="{{ _('remove from schedule') }}"> + <svg xmlns="http://www.w3.org/2000/svg" + width="16px" + height="16px" + style="position: relative; + top: 2px" + fill="currentColor" + class="bi bi-calendar2-week-fill" + viewBox="0 0 16 16"> + <path fill-rule="evenodd" d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 3.5c0-.276.244-.5.545-.5h10.91c.3 0 .545.224.545.5v1c0 .276-.244.5-.546.5H2.545C2.245 5 2 4.776 2 4.5v-1zM8.5 7a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1zm3 0a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1zM3 10.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm3.5-.5a.5.5 0 0 0-.5.5v1a.5.5 0 0 0 .5.5h1a.5.5 0 0 0 .5-.5v-1a.5.5 0 0 0-.5-.5h-1z" /> + </svg> + </button> + {%- else -%} + <input type="hidden" name="mode" value="add"> + <button type="submit" + id="sch_{{ sch_id }}" + class="btn-icon-big btn btn-{{ color }} p-2" + title="{{ _('add to schedule') }}"> + <svg xmlns="http://www.w3.org/2000/svg" + width="16px" + height="16px" + style="position: relative; + top: 2px" + fill="currentColor" + class="bi bi-calendar2-week" + viewBox="0 0 16 16"> + <path fill-rule="evenodd" d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM2 2a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H2z" /> + <path d="M2.5 4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5V4zM11 7.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm-3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm-5 3a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1z" /> + </svg> + </button> + {% endif -%} + </form> {% endmacro %} {% macro fav(fav_id, fav_type, fav_is, color="transparent", next=request.get_full_path() ) %} - <form action="{{ url('plainui:modify_favorites') }}" class="d-inline-block" method="POST"> - {{ csrf_input }} - <input type="hidden" name="next" value="{{ next ~ '#fav_' ~ fav_id}}"> - <input type="hidden" name="id" value="{{ fav_id }}"> + <form action="{{ url('plainui:modify_favorites') }}" + class="d-inline-block" + method="POST"> + {{ csrf_input }} + <input type="hidden" name="next" value="{{ next ~ '#fav_' ~ fav_id }}"> + <input type="hidden" name="id" value="{{ fav_id }}"> - {%- if fav_type == "assembly" %}<input type="hidden" name="type" value="assembly">{% endif %} - {%- if fav_type == "event" %}<input type="hidden" name="type" value="event">{% endif %} + {%- if fav_type == "assembly" %}<input type="hidden" name="type" value="assembly">{% endif %} + {%- if fav_type == "event" %}<input type="hidden" name="type" value="event">{% endif %} - {%- if fav_is %} - <input type="hidden" name="mode" value="remove"> - <button - type="submit" - id="fav_{{ fav_id }}" - class="active btn-icon-big btn btn-{{ color }} p-2" - title="{{ _("remove from favorites") }}" - > - <svg width="16px" height="16px" style="position: relative; top: 2px;" xmlns="http://www.w3.org/2000/svg" fill="currentColor" class="bi bi-heart-fill" viewBox="0 0 16 16"> - <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z"/> - </svg> - </button> - {%- else -%} - <input type="hidden" name="mode" value="add"> - <button - type="submit" - id="fav_{{ fav_id }}" - class="btn-icon-big btn btn-{{ color }} p-2" - title="{{ _("add to favorites") }}" - > - <svg width="1.25rem" height="1.25rem" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500" style="enable-background:new 0 0 500 500" fill="currentColor"> <style>.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> - <path d="M431.37 173.51c-5.4-40.67-33.7-74.2-73.85-87.5-11.51-3.81-23.3-5.75-35.06-5.75-22.97 0-44.38 7.24-61.92 20.94l-10.89 8.5-10.9-8.48c-17.53-13.64-38.9-20.85-61.82-20.85-11.75 0-23.53 1.93-35.03 5.74-40.14 13.29-68.43 46.79-73.83 87.43-2.7 20.33-.92 53.41 22.88 95.55 27.63 48.9 77.92 98.36 149.49 147a16.502 16.502 0 0 0 18.54 0c71.56-48.64 121.86-98.09 149.48-147 23.83-42.15 25.61-75.24 22.91-95.58zm-51.62 79.34c-23.94 42.38-67.65 85.92-130.02 129.54-62.37-43.62-106.09-87.17-130.03-129.54-19.31-34.19-20.94-59.64-18.9-74.98 3.72-28 23.45-51.17 51.49-60.45 8.14-2.7 16.44-4.06 24.65-4.06 15.51 0 29.87 4.8 41.55 13.89l21.05 16.39a16.485 16.485 0 0 0 20.29-.02l21.03-16.42c11.68-9.12 26.07-13.94 41.6-13.94 8.22 0 16.52 1.37 24.68 4.07 28.06 9.3 47.8 32.49 51.52 60.52 2.03 15.35.4 40.81-18.91 75z"/> - </svg> - </button> - {% endif -%} - </form> + {%- if fav_is %} + <input type="hidden" name="mode" value="remove"> + <button type="submit" + id="fav_{{ fav_id }}" + class="active btn-icon-big btn btn-{{ color }} p-2" + title="{{ _('remove from favorites') }}"> + <svg width="16px" + height="16px" + style="position: relative; + top: 2px" + xmlns="http://www.w3.org/2000/svg" + fill="currentColor" + class="bi bi-heart-fill" + viewBox="0 0 16 16"> + <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> + </svg> + </button> + {%- else -%} + <input type="hidden" name="mode" value="add"> + <button type="submit" + id="fav_{{ fav_id }}" + class="btn-icon-big btn btn-{{ color }} p-2" + title="{{ _('add to favorites') }}"> + <svg width="1.25rem" + height="1.25rem" + xmlns="http://www.w3.org/2000/svg" + viewBox="0 0 500 500" + style="enable-background:new 0 0 500 500" + fill="currentColor"> + <style>.st0{display:none}.st1{display:inline}.st2{fill:none;stroke:#000;stroke-width:18;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10}</style> + <path d="M431.37 173.51c-5.4-40.67-33.7-74.2-73.85-87.5-11.51-3.81-23.3-5.75-35.06-5.75-22.97 0-44.38 7.24-61.92 20.94l-10.89 8.5-10.9-8.48c-17.53-13.64-38.9-20.85-61.82-20.85-11.75 0-23.53 1.93-35.03 5.74-40.14 13.29-68.43 46.79-73.83 87.43-2.7 20.33-.92 53.41 22.88 95.55 27.63 48.9 77.92 98.36 149.49 147a16.502 16.502 0 0 0 18.54 0c71.56-48.64 121.86-98.09 149.48-147 23.83-42.15 25.61-75.24 22.91-95.58zm-51.62 79.34c-23.94 42.38-67.65 85.92-130.02 129.54-62.37-43.62-106.09-87.17-130.03-129.54-19.31-34.19-20.94-59.64-18.9-74.98 3.72-28 23.45-51.17 51.49-60.45 8.14-2.7 16.44-4.06 24.65-4.06 15.51 0 29.87 4.8 41.55 13.89l21.05 16.39a16.485 16.485 0 0 0 20.29-.02l21.03-16.42c11.68-9.12 26.07-13.94 41.6-13.94 8.22 0 16.52 1.37 24.68 4.07 28.06 9.3 47.8 32.49 51.52 60.52 2.03 15.35.4 40.81-18.91 75z" /> + </svg> + </button> + {% endif -%} + </form> {% endmacro %} {% macro themeswitcher() -%} - <form - class="d-flex align-items-center mx-2" + <form class="d-flex align-items-center mx-2" method="POST" action="{{ url('plainui:modify_theme') }}"> - {{ csrf_input }} - <input type="hidden" name="next" value="{{ request.get_full_path() }}"> - {% if user.theme == 'dark' %} - <button - class="border-0 bg-transparent" - value="light" - name="theme" - title="switch to light theme" - > - <!-- https://icons.getbootstrap.com/icons/moon-stars-fill/ --> - <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-moon-stars-fill" viewBox="0 0 16 16"> - <path d="M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278z"/> - <path d="M10.794 3.148a.217.217 0 0 1 .412 0l.387 1.162c.173.518.579.924 1.097 1.097l1.162.387a.217.217 0 0 1 0 .412l-1.162.387a1.734 1.734 0 0 0-1.097 1.097l-.387 1.162a.217.217 0 0 1-.412 0l-.387-1.162A1.734 1.734 0 0 0 9.31 6.593l-1.162-.387a.217.217 0 0 1 0-.412l1.162-.387a1.734 1.734 0 0 0 1.097-1.097l.387-1.162zM13.863.099a.145.145 0 0 1 .274 0l.258.774c.115.346.386.617.732.732l.774.258a.145.145 0 0 1 0 .274l-.774.258a1.156 1.156 0 0 0-.732.732l-.258.774a.145.145 0 0 1-.274 0l-.258-.774a1.156 1.156 0 0 0-.732-.732l-.774-.258a.145.145 0 0 1 0-.274l.774-.258c.346-.115.617-.386.732-.732L13.863.1z"/> - </svg> - </button> - {% else %} - <button - class="border-0 bg-transparent" - value="dark" - title="switch to dark theme" - name="theme" - > - <!-- https://icons.getbootstrap.com/icons/brightness-high-fill/ --> - <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-brightness-high-fill" viewBox="0 0 16 16"> - <path d="M12 8a4 4 0 1 1-8 0 4 4 0 0 1 8 0zM8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0zm0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13zm8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5zM3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8zm10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0zm-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707zM4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708z"/> - </svg> - </button> - {% endif %} - </form> + {{ csrf_input }} + <input type="hidden" name="next" value="{{ request.get_full_path() }}"> + {% if user.theme == 'dark' %} + <button class="border-0 bg-transparent" + value="light" + name="theme" + title="switch to light theme"> + <!-- https://icons.getbootstrap.com/icons/moon-stars-fill/ --> + <svg xmlns="http://www.w3.org/2000/svg" + width="16" + height="16" + fill="currentColor" + class="bi bi-moon-stars-fill" + viewBox="0 0 16 16"> + <path d="M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278z" /> + <path d="M10.794 3.148a.217.217 0 0 1 .412 0l.387 1.162c.173.518.579.924 1.097 1.097l1.162.387a.217.217 0 0 1 0 .412l-1.162.387a1.734 1.734 0 0 0-1.097 1.097l-.387 1.162a.217.217 0 0 1-.412 0l-.387-1.162A1.734 1.734 0 0 0 9.31 6.593l-1.162-.387a.217.217 0 0 1 0-.412l1.162-.387a1.734 1.734 0 0 0 1.097-1.097l.387-1.162zM13.863.099a.145.145 0 0 1 .274 0l.258.774c.115.346.386.617.732.732l.774.258a.145.145 0 0 1 0 .274l-.774.258a1.156 1.156 0 0 0-.732.732l-.258.774a.145.145 0 0 1-.274 0l-.258-.774a1.156 1.156 0 0 0-.732-.732l-.774-.258a.145.145 0 0 1 0-.274l.774-.258c.346-.115.617-.386.732-.732L13.863.1z" /> + </svg> + </button> + {% else %} + <button class="border-0 bg-transparent" + value="dark" + title="switch to dark theme" + name="theme"> + <!-- https://icons.getbootstrap.com/icons/brightness-high-fill/ --> + <svg xmlns="http://www.w3.org/2000/svg" + width="16" + height="16" + fill="currentColor" + class="bi bi-brightness-high-fill" + viewBox="0 0 16 16"> + <path d="M12 8a4 4 0 1 1-8 0 4 4 0 0 1 8 0zM8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0zm0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13zm8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5zM3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8zm10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0zm-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707zM4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708z" /> + </svg> + </button> + {% endif %} + </form> {%- endmacro %} diff --git a/src/plainui/jinja2/plainui/components/image.html.j2 b/src/plainui/jinja2/plainui/components/image.html.j2 index dd9f6260d572037c1355b9be4fcf633591ddd110..854e7bb2dbf2b773de510296d0f910ffbb17a05a 100644 --- a/src/plainui/jinja2/plainui/components/image.html.j2 +++ b/src/plainui/jinja2/plainui/components/image.html.j2 @@ -1,10 +1,16 @@ {% macro image(image, alt, title) -%} -<figure class="hub-image col-auto p-0"> - <img class="hub-image__img w-100 d-block" src="{{ image }}" alt="{{ alt }}" title="{{ title }}" /> -</figure> + <figure class="hub-image col-auto p-0"> + <img class="hub-image__img w-100 d-block" + src="{{ image }}" + alt="{{ alt }}" + title="{{ title }}" /> + </figure> {%- endmacro %} {% macro image_cropped(image, alt, title) -%} -<figure class="hub-image hub-image--cropped p-0 m-0"> - <img class="hub-image__img" src="{{ image }}" alt="{{ alt }}" title="{{ title }}" /> -</figure> + <figure class="hub-image hub-image--cropped p-0 m-0"> + <img class="hub-image__img" + src="{{ image }}" + alt="{{ alt }}" + title="{{ title }}" /> + </figure> {%- endmacro %} diff --git a/src/plainui/jinja2/plainui/components/integrations.html.j2 b/src/plainui/jinja2/plainui/components/integrations.html.j2 index 42964c884f408740b372b651600a5bcee211403c..fadb327557c83d0e7030e8a67c4ed44e222e3e36 100644 --- a/src/plainui/jinja2/plainui/components/integrations.html.j2 +++ b/src/plainui/jinja2/plainui/components/integrations.html.j2 @@ -1,7 +1,7 @@ {% macro vocPlayer(playerId='player', vocStream=None, vocLecture=None) -%} - <div id="{{playerId}}" class="hub_voc_player"></div> + <div id="{{ playerId }}" class="hub_voc_player"></div> - <script> + <script> new VOCPlayer.Player({ {% if vocStream -%} vocStream: "{{ vocStream }}", @@ -12,5 +12,5 @@ parentId: "#{{playerId}}", h264Only: true, }); - </script> + </script> {%- endmacro %} diff --git a/src/plainui/jinja2/plainui/components/list_assemblies.html.j2 b/src/plainui/jinja2/plainui/components/list_assemblies.html.j2 index 7e0b39008b360286925f50b5ece48608d315cde7..61ead37e8e0aa78a73d313a6499dc4a94991e72b 100644 --- a/src/plainui/jinja2/plainui/components/list_assemblies.html.j2 +++ b/src/plainui/jinja2/plainui/components/list_assemblies.html.j2 @@ -12,18 +12,16 @@ {% macro list(assemblies, my_favorite_assemblies, pagination=false, view_name='', metadata=false) -%} {% if metadata %} <div class="hub-card hub-tags"> - <a class="hub-tag - {% if view_all %}text-bg-warning{% endif %}" - href="{{ url(view_name) }}">ALL</a> - {% if pagination %}{{ paginator_alphabetical.pagination(view_name, paginator, page_obj) }} - {% endif %} + <a class="hub-tag {% if view_all %}text-bg-warning{% endif %}" + href="{{ url(view_name) }}">ALL</a> + {% if pagination %}{{ paginator_alphabetical.pagination(view_name, paginator, page_obj) }}{% endif %} </div> {% endif %} {% if assemblies %} <ul class="hub-list"> - {% for assembly in assemblies %} + {% for assembly in assemblies %} {{ list_el(assembly, faved=true if assembly.id | safe in my_favorite_assemblies, metadata=metadata) }} - {% endfor %} + {% endfor %} </ul> {% else %} <p class="hub-empty-section">{{ _("No entries available.") }}</p> @@ -33,117 +31,104 @@ {% macro list_el(assembly, faved, metadata=false) -%} {% set link = hub_absolute('plainui:assembly', assembly_slug=assembly.slug ) %} {% set color = "transparent" if assembly.is_official else "transparent" %} - <li class="hub-list-item hub-grid-title-buttons"> + <li class="hub-list-item hub-grid-title-buttons"> <a href="{{ link }}" - title="{{ assembly.name }}" - class="hub-text-list-item-title hub-grid-title" - > - <div> - {{ assembly.name }} - </div> + title="{{ assembly.name }}" + class="hub-text-list-item-title hub-grid-title"> + <div>{{ assembly.name }}</div> </a> - <div class="hub-grid-buttons"> - {{ fbtns.share('plainui:assembly', assembly_slug=assembly.slug, color=color,) }} - {{ fbtns.fav(assembly.id, "assembly", faved, color=color) }} - {{ fbtns.report(link, lookup_key=assembly.slug, color=color) }} - </div> - {% if assembly.public_events_count or assembly.public_projects_count or assembly.tags__count %} - <div class="hub-grid-tags hub-tags"> - {% if metadata %} - {% if assembly.public_events_count %} - {{ tagsMacro.secondary( - _('%(count)s events', count=assembly.public_events_count), - icon="calendar-week" - ) }} - {% endif %} - {% if assembly.public_projects_count %} - {{ tagsMacro.secondary( - _('%(count)s projects', count=assembly.public_projects_count), - icon="lightbulb" - ) }} - {% endif %} - {% endif %} - {% if assembly.prefetched_tags and (assembly.events__count or assembly.projects__count) %} - <div class="hub-tag-divider"></div> - {% endif %} - {{ tagboxMacro.tagbox(assembly.prefetched_tags) }} - </div> + <div class="hub-grid-buttons"> + {{ fbtns.share('plainui:assembly', assembly_slug=assembly.slug, color=color,) }} + {{ fbtns.fav(assembly.id, "assembly", faved, color=color) }} + {{ fbtns.report(link, lookup_key=assembly.slug, color=color) }} + </div> + {% if assembly.public_events_count or assembly.public_projects_count or assembly.tags__count %} + <div class="hub-grid-tags hub-tags"> + {% if metadata %} + {% if assembly.public_events_count %} + {{ tagsMacro.secondary(_('%(count)s events', count=assembly.public_events_count) , + icon="calendar-week" + ) }} + {% endif %} + {% if assembly.public_projects_count %} + {{ tagsMacro.secondary(_('%(count)s projects', count=assembly.public_projects_count) , + icon="lightbulb" + ) }} + {% endif %} + {% endif %} + {% if assembly.prefetched_tags and (assembly.events__count or assembly.projects__count) %} + <div class="hub-tag-divider"></div> {% endif %} - </li> + {{ tagboxMacro.tagbox(assembly.prefetched_tags) }} + </div> + {% endif %} + </li> {%- endmacro %} {% macro slider(assemblies, my_favorite_assemblies) -%} - {% if assemblies %} - <div class="hub-slider"> - <ul class="hub-slider__container row row-cols-1 row-cols-sm-2 row-cols-lg-3 flex-nowrap m-0 list-unstyled"> - {% for assembly in assemblies %} - <li class="hub-slider__item col mb-2{% if loop.first %} ps-0{% endif %}{% if loop.last %} pe-0{% endif %}"> - {{ tile(assembly, faved=true if assembly.id | safe in my_favorite_assemblies) }} - </li> - {% endfor %} - </ul> - </div> - {% else %} - <p class="hub-empty-section">{{_("No entries available.")}}</p> - {% endif %} + {% if assemblies %} + <div class="hub-slider"> + <ul class="hub-slider__container row row-cols-1 row-cols-sm-2 row-cols-lg-3 flex-nowrap m-0 list-unstyled"> + {% for assembly in assemblies %} + <li class="hub-slider__item col mb-2{% if loop.first %} ps-0{% endif %}{% if loop.last %} pe-0{% endif %}"> + {{ tile(assembly, faved=true if assembly.id | safe in my_favorite_assemblies) }} + </li> + {% endfor %} + </ul> + </div> + {% else %} + <p class="hub-empty-section">{{ _("No entries available.") }}</p> + {% endif %} {%- endmacro %} {% macro grid(assemblies, my_favorite_assemblies) -%} - {% if assemblies %} - <ul class="row row-cols-1 row-cols-md-2 row-cols-xl-3 list-unstyled mb-0"> - {% for assembly in assemblies %} - <li class="col mb-3"> - {{ tile(assembly, faved=true if assembly.id | safe in my_favorite_assemblies) }} - </li> - {% endfor %} - </ul> - {% else %} - <p class="hub-empty-section">{{_("No entries available.")}}</p> - {% endif %} + {% if assemblies %} + <ul class="row row-cols-1 row-cols-md-2 row-cols-xl-3 list-unstyled mb-0"> + {% for assembly in assemblies %} + <li class="col mb-3">{{ tile(assembly, faved=true if assembly.id | safe in my_favorite_assemblies) }}</li> + {% endfor %} + </ul> + {% else %} + <p class="hub-empty-section">{{ _("No entries available.") }}</p> + {% endif %} {%- endmacro %} {% macro tile(assembly, faved) -%} - {% set link = hub_absolute('plainui:assembly', assembly_slug=assembly.slug ) %} - {% set color="transparent" if assembly.is_official else "transparent" %} - <article class="h-100 d-flex flex-column border border-white"> - <a - href="{{ link }}" - class="text-decoration-none text-white" - title="{{ assembly.name }}" - > - <figure class="hub-image hub-image--cropped mb-2"> - {% if assembly.banner_image %} - <img class="hub-image__img" src="{{ assembly.banner_image.url }}" alt="{{ assembly.name }}" title="{{ assembly.name }}" /> - {% else %} - <img class="hub-image__img" src="{{ static('plainui/img/hub-logo-assembly.svg') }}" alt="{{ assembly.name }}" title="{{ assembly.name }}" /> - {% endif %} - </figure> - <section class="m-2"> - <p class="mb-2 font-headings fs-medium"> - {{ _("Official Page") if assembly.is_official else _("Assembly Page") }} - </p> - {% if assembly.name %} - <h3 class="text-white h6 mb-2">{{ assembly.name }}</h3> - {% endif %} + {% set link = hub_absolute('plainui:assembly', assembly_slug=assembly.slug ) %} + {% set color = "transparent" if assembly.is_official else "transparent" %} + <article class="h-100 d-flex flex-column border border-white"> + <a href="{{ link }}" + class="text-decoration-none text-white" + title="{{ assembly.name }}"> + <figure class="hub-image hub-image--cropped mb-2"> + {% if assembly.banner_image %} + <img class="hub-image__img" + src="{{ assembly.banner_image.url }}" + alt="{{ assembly.name }}" + title="{{ assembly.name }}" /> + {% else %} + <img class="hub-image__img" + src="{{ static('plainui/img/hub-logo-assembly.svg') }}" + alt="{{ assembly.name }}" + title="{{ assembly.name }}" /> + {% endif %} + </figure> + <section class="m-2"> + <p class="mb-2 font-headings fs-medium">{{ _("Official Page") if assembly.is_official else _("Assembly Page") }}</p> + {% if assembly.name %}<h3 class="text-white h6 mb-2">{{ assembly.name }}</h3>{% endif %} - {% if assembly.description %} - <p class="fs-medium mb-2">{{ assembly.description[:120] + (assembly.description[120:] and '...') }}</p> - {% endif %} - </section> - </a> + {% if assembly.description %} + <p class="fs-medium mb-2">{{ assembly.description[:120] + (assembly.description[120:] and '...') }}</p> + {% endif %} + </section> + </a> - <footer class="mt-auto mr-2 mb-2 d-md-flex align-items-center"> - <ul class="ml-auto mb-0 list-unstyled d-flex justify-content-end"> - <li> - {{ fbtns.share('plainui:assembly', assembly_slug=assembly.slug, color=color,) }} - </li> - <li> - {{ fbtns.fav(assembly.id, "assembly", faved, color=color) }} - </li> - <li> - {{ fbtns.report(link, lookup_key=assembly.slug, color=color) }} - </li> - </ul> - </footer> - </article> + <footer class="mt-auto mr-2 mb-2 d-md-flex align-items-center"> + <ul class="ml-auto mb-0 list-unstyled d-flex justify-content-end"> + <li>{{ fbtns.share('plainui:assembly', assembly_slug=assembly.slug, color=color,) }}</li> + <li>{{ fbtns.fav(assembly.id, "assembly", faved, color=color) }}</li> + <li>{{ fbtns.report(link, lookup_key=assembly.slug, color=color) }}</li> + </ul> + </footer> + </article> {%- endmacro %} diff --git a/src/plainui/jinja2/plainui/components/list_events.html.j2 b/src/plainui/jinja2/plainui/components/list_events.html.j2 index 51d960893a0d8d557e7913fcd9bd0b8a0a3f4b39..2ff2534b28bc4542cf8108722edfdab95c98613e 100644 --- a/src/plainui/jinja2/plainui/components/list_events.html.j2 +++ b/src/plainui/jinja2/plainui/components/list_events.html.j2 @@ -15,7 +15,7 @@ msg_none=_("No entries available."), event_class=None, hide_buttons=False -) -%} + ) -%} {% if events %} <ul class="list-unstyled d-flex flex-column gap-3 mb-0"> {# using a list here to be able to set a value in the nested block #} @@ -36,8 +36,7 @@ event_when=event_when, first_now=true if event_when == 'now' and not ns.first_now_done, event_class=event_class, - hide_buttons=hide_buttons, - ) }} + hide_buttons=hide_buttons,) }} {% if event_when == 'now' %} {% set ns.first_now_done = true %} @@ -88,21 +87,13 @@ {% endif %} {% if event.track and event.track.name %} - <div class="hub-tag - {% if event.track.color and calculate_luminance(event.track.color) <= 140 %} - text-white - {% else %} - text-dark - {% endif %}" - {% if event.track.color %}style="background-color: {{ event.track.color }};"{% endif %} - > + <div class="hub-tag {% if event.track.color and calculate_luminance(event.track.color) <= 140 %} text-white {% else %} text-dark {% endif %}" + {% if event.track.color %}style="background-color: {{ event.track.color }};"{% endif %}> {{ event.track.name }} </div> {% endif %} - {% if event.prefetched_tags %} - {{ tagsMacro.tags(event.prefetched_tags, icon='tag') }} - {% endif %} + {% if event.prefetched_tags %}{{ tagsMacro.tags(event.prefetched_tags, icon='tag') }}{% endif %} </div> </div> <div class="hub-event__buttons"> @@ -122,9 +113,9 @@ {{ fbtns.edit(hub_absolute('backoffice:sos-edit', pk=event.id) , color=button_color) }} {% endif %} {% if not hide_buttons %} - {{ fbtns.share('plainui:event', event_slug=event.slug, color=button_color) }} - {{ fbtns.fav(event.id, "event", faved, color=button_color) }} - {{ fbtns.report(link, color=button_color) }} + {{ fbtns.share('plainui:event', event_slug=event.slug, color=button_color) }} + {{ fbtns.fav(event.id, "event", faved, color=button_color) }} + {{ fbtns.report(link, color=button_color) }} {% endif %} </div> </li> @@ -135,9 +126,7 @@ <div class="hub-slider"> <ul class="hub-slider__container row row-cols-1 row-cols-sm-2 row-cols-lg-3 flex-nowrap m-0 list-unstyled"> {% for event in events %} - <li class="hub-slider__item col p-0 mb-2 me-2 border border-white - {% if loop.first %}{% endif %} - {% if loop.last %}me-0{% endif %}"> + <li class="hub-slider__item col p-0 mb-2 me-2 border border-white {% if loop.first %}{% endif %} {% if loop.last %}me-0{% endif %}"> {{ tile(event, faved=true if event.id | safe in my_favorite_events, custom_class="h-100 border") }} diff --git a/src/plainui/jinja2/plainui/components/list_projects.html.j2 b/src/plainui/jinja2/plainui/components/list_projects.html.j2 index efef0d4f1601542b9aebb4c64b28a8500e3f37b4..17a9eabb806cb72fb0511f6a9dcf11385280cf6e 100644 --- a/src/plainui/jinja2/plainui/components/list_projects.html.j2 +++ b/src/plainui/jinja2/plainui/components/list_projects.html.j2 @@ -33,11 +33,7 @@ {% endfor %} </ul> - {% if not projects %} - <div class="hub-empty-section"> - {{_("projects__list__empty")}} - </div> - {% endif %} + {% if not projects %}<div class="hub-empty-section">{{ _("projects__list__empty") }}</div>{% endif %} {%- endmacro %} {% macro list_el(project, favorite, metadata) -%} diff --git a/src/plainui/jinja2/plainui/components/list_rooms.html.j2 b/src/plainui/jinja2/plainui/components/list_rooms.html.j2 index 3310e87435b731432fa0011315674b91f6c35788..79f50fe6ed60b364316b8ae3391fa945058a6d9a 100644 --- a/src/plainui/jinja2/plainui/components/list_rooms.html.j2 +++ b/src/plainui/jinja2/plainui/components/list_rooms.html.j2 @@ -9,8 +9,7 @@ {% macro list(rooms, pagination=false, view_name='', metadata=false) -%} {% if pagination %} <div class="hub-card hub-tags"> - <a class="hub-tag - {% if view_all %}text-bg-warning{% endif %}" + <a class="hub-tag {% if view_all %}text-bg-warning{% endif %}" href="{{ url(view_name) }}">ALL</a> {{ paginator_alphabetical.pagination(view_name, paginator, page_obj) }} </div> @@ -34,7 +33,7 @@ <div class="hub-grid-buttons"> {% if room.capacity and room.capacity != None and room.capacity > 0 %} <span class="btn-icon-big btn-transparent">{{ icon("capacity") }}</span> - <span class="me-5" title="{{ _("capacity") }}"> + <span class="me-5" title="{{ _('capacity') }}"> {%- if room.occupants and room.occupants != None -%} {{ room.occupants ~ ' / ' }} {%- endif -%} diff --git a/src/plainui/jinja2/plainui/components/listbox.html.j2 b/src/plainui/jinja2/plainui/components/listbox.html.j2 index 7427e36ec7466f609b32f44a5d2a35b9d45ad6a8..e5790a2b438ce831543ba2d59b9fd75e14790d17 100644 --- a/src/plainui/jinja2/plainui/components/listbox.html.j2 +++ b/src/plainui/jinja2/plainui/components/listbox.html.j2 @@ -1,33 +1,41 @@ {% macro listbox(items, item_type="default" ) -%} - {% if items %} - <ul class="list-unstyled"> - {% for item in items %} - {% if item_type == "event" %} - {% set link = url("plainui:event", event_slug=item.slug ) %} - {% elif item_type == "assembly" %} - {% set link = url('plainui:assembly', assembly_slug=item.slug ) %} - {% else %} - {% set link = item.link %} - {% endif %} - <li class="mt-2 d-flex border border-primary p-2 align-items-center"> - <a href="{{ link }}" class="text-white me-auto"> - {{item.name}} - </a> - <a href="#" class="mr-2 btn btn-transparent">+ schedule</a> - <a href="#" class="mr-2 btn btn-transparent"> - <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-heart" fill="currentColor" xmlns="http://www.w3.org/2000/svg"> - <path fill-rule="evenodd" d="M8 2.748l-.717-.737C5.6.281 2.514.878 1.4 3.053c-.523 1.023-.641 2.5.314 4.385.92 1.815 2.834 3.989 6.286 6.357 3.452-2.368 5.365-4.542 6.286-6.357.955-1.886.838-3.362.314-4.385C13.486.878 10.4.28 8.717 2.01L8 2.748zM8 15C-7.333 4.868 3.279-3.04 7.824 1.143c.06.055.119.112.176.171a3.12 3.12 0 0 1 .176-.17C12.72-3.042 23.333 4.867 8 15z"/> - </svg> - </a> - <a href="#" class="btn btn-transparent"> - <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-share" fill="currentColor" xmlns="http://www.w3.org/2000/svg"> - <path fill-rule="evenodd" d="M13.5 1a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3zM11 2.5a2.5 2.5 0 1 1 .603 1.628l-6.718 3.12a2.499 2.499 0 0 1 0 1.504l6.718 3.12a2.5 2.5 0 1 1-.488.876l-6.718-3.12a2.5 2.5 0 1 1 0-3.256l6.718-3.12A2.5 2.5 0 0 1 11 2.5zm-8.5 4a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3zm11 5.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3z"/> - </svg> - </a> - </li> - {% endfor %} - </ul> - {% else %} - <p>{{_("No entries available.")}}</p> - {% endif %} + {% if items %} + <ul class="list-unstyled"> + {% for item in items %} + {% if item_type == "event" %} + {% set link = url("plainui:event", event_slug=item.slug ) %} + {% elif item_type == "assembly" %} + {% set link = url('plainui:assembly', assembly_slug=item.slug ) %} + {% else %} + {% set link = item.link %} + {% endif %} + <li class="mt-2 d-flex border border-primary p-2 align-items-center"> + <a href="{{ link }}" class="text-white me-auto">{{ item.name }}</a> + <a href="#" class="mr-2 btn btn-transparent">+ schedule</a> + <a href="#" class="mr-2 btn btn-transparent"> + <svg width="1em" + height="1em" + viewBox="0 0 16 16" + class="bi bi-heart" + fill="currentColor" + xmlns="http://www.w3.org/2000/svg"> + <path fill-rule="evenodd" d="M8 2.748l-.717-.737C5.6.281 2.514.878 1.4 3.053c-.523 1.023-.641 2.5.314 4.385.92 1.815 2.834 3.989 6.286 6.357 3.452-2.368 5.365-4.542 6.286-6.357.955-1.886.838-3.362.314-4.385C13.486.878 10.4.28 8.717 2.01L8 2.748zM8 15C-7.333 4.868 3.279-3.04 7.824 1.143c.06.055.119.112.176.171a3.12 3.12 0 0 1 .176-.17C12.72-3.042 23.333 4.867 8 15z" /> + </svg> + </a> + <a href="#" class="btn btn-transparent"> + <svg width="1em" + height="1em" + viewBox="0 0 16 16" + class="bi bi-share" + fill="currentColor" + xmlns="http://www.w3.org/2000/svg"> + <path fill-rule="evenodd" d="M13.5 1a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3zM11 2.5a2.5 2.5 0 1 1 .603 1.628l-6.718 3.12a2.499 2.499 0 0 1 0 1.504l6.718 3.12a2.5 2.5 0 1 1-.488.876l-6.718-3.12a2.5 2.5 0 1 1 0-3.256l6.718-3.12A2.5 2.5 0 0 1 11 2.5zm-8.5 4a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3zm11 5.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3z" /> + </svg> + </a> + </li> + {% endfor %} + </ul> + {% else %} + <p>{{ _("No entries available.") }}</p> + {% endif %} {%- endmacro %} diff --git a/src/plainui/jinja2/plainui/components/logo.html.j2 b/src/plainui/jinja2/plainui/components/logo.html.j2 index 4c2d40b67abceef559226cc48806c25bb2ce69af..76a14ef69785b5af2c58bb79ab225b9df77dfc38 100644 --- a/src/plainui/jinja2/plainui/components/logo.html.j2 +++ b/src/plainui/jinja2/plainui/components/logo.html.j2 @@ -1,15 +1,13 @@ {% macro logo(conf, link="", alt="Logo", title="Logo", class="", height=50) -%} -{% if link|length %} -<a - class="navbar-brand hub-logo" - href="{{ link }}" - style="height: {{ height }}px;"> -{% else %} -<a - class="navbar-brand hub-logo" - href="{{ url('plainui:index') }}" - style="height: {{ height }}px;"> -{% endif %} -{{ conf.logo_html }}{# defaults to content of /src/hub/logos/default.svg #} -</a> -{%- endmacro %} + {% if link|length %} + <a class="navbar-brand hub-logo" + href="{{ link }}" + style="height: {{ height }}px"> + {% else %} + <a class="navbar-brand hub-logo" + href="{{ url('plainui:index') }}" + style="height: {{ height }}px"> + {% endif %} + {{ conf.logo_html }}{# defaults to content of /src/hub/logos/default.svg #} + </a> + {%- endmacro %} diff --git a/src/plainui/jinja2/plainui/components/map.html.j2 b/src/plainui/jinja2/plainui/components/map.html.j2 index 82186929c60535057ed3ebc6e3226c707e84fd82..8c1f7d8bbed58a47fe12669016c3a53b73a22b2f 100644 --- a/src/plainui/jinja2/plainui/components/map.html.j2 +++ b/src/plainui/jinja2/plainui/components/map.html.j2 @@ -1,9 +1,9 @@ {% macro map(conf, poi=None, map_style="frontend", map_container_id="map") -%} -{% set map_config = conf.map_config[map_style] %} -{% set map_start_pos = map_config["start"] %} + {% set map_config = conf.map_config[map_style] %} + {% set map_start_pos = map_config["start"] %} -<div id="{{ map_container_id }}" style="width: 100%; min-height: 20em;"></div> -<script> + <div id="{{ map_container_id }}" style="width: 100%; min-height: 20em;"></div> + <script> const style = {{ map_config.style|tojson|safe }}; const map = new maplibregl.Map({ @@ -22,6 +22,6 @@ .addTo(map); {% endif %} }); -</script> + </script> {%- endmacro %} diff --git a/src/plainui/jinja2/plainui/components/markdown.html.j2 b/src/plainui/jinja2/plainui/components/markdown.html.j2 index a84afadfc92718797dfc81454ce2b1df2ca4ec9f..8577882e9be473b3ee36c4fec8f8f4f7e0fcd2c7 100644 --- a/src/plainui/jinja2/plainui/components/markdown.html.j2 +++ b/src/plainui/jinja2/plainui/components/markdown.html.j2 @@ -1,11 +1,11 @@ {% macro markdown(markdown, border=True) -%} - <section class="hub-markdown{% if border %} border{% endif %}"> - {{- markdown -}} - </section> + <section class="hub-markdown{% if border %} border{% endif %}"> + {{- markdown -}} + </section> {%- endmacro %} {% macro markdown_plain(markdown, customClass=null, border=True) -%} - <section class="hub-markdown{% if border %} border{% endif %} {% if customClass %} {{customClass}}{% endif %}"> - {{- markdown -}} - </section> + <section class="hub-markdown{% if border %} border{% endif %} {% if customClass %}{{ customClass }}{% endif %}"> + {{- markdown -}} + </section> {%- endmacro %} diff --git a/src/plainui/jinja2/plainui/components/nav.html.j2 b/src/plainui/jinja2/plainui/components/nav.html.j2 index 171585205978ab94a7381774f0e5826b4aaa8583..a5572058f5535c6cc522168554948f1fcbb970f1 100644 --- a/src/plainui/jinja2/plainui/components/nav.html.j2 +++ b/src/plainui/jinja2/plainui/components/nav.html.j2 @@ -2,227 +2,221 @@ {% import "plainui/components/alert.html.j2" as alert %} {% macro menuitem(item) -%} -{% set active = item.url and request.path.startswith(item.url) %} -<li> - <a - href="{{ item.url }}" - class="hub-main-navbar__item {% if active %}hub-main-navbar__item--active{% endif %}" - title="{{ item.title }}"> - <i class="bi bi-{{ item.icon }}"></i> - <span> - {{ item.label }} - </span> + {% set active = item.url and request.path.startswith(item.url) %} + <li> + <a href="{{ item.url }}" + class="hub-main-navbar__item {% if active %}hub-main-navbar__item--active{% endif %}" + title="{{ item.title }}"> + <i class="bi bi-{{ item.icon }}"></i> + <span>{{ item.label }}</span> </a> -</li> + </li> {%- endmacro %} {% macro dms() %} - {% if not archive_mode %} + {% if not archive_mode %} {% set chat_url = url('plainui:personal_message') %} {% set num_unread = num_of_unread_messages(request) -%} - <a - class="hub-top-nav__button me-3" - href="{{ url('plainui:personal_message') }}" - title="{{ _('chat') }}" - > - <i class="bi bi-envelope hub-top-nav__button-icon"> </i> - {% if num_unread %} - <span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger"> - {{ num_unread }} - <span class="visually-hidden">unread messages</span> - </span> - {% endif %} + <a class="hub-top-nav__button me-3" + href="{{ url('plainui:personal_message') }}" + title="{{ _('chat') }}"> + <i class="bi bi-envelope hub-top-nav__button-icon"> </i> + {% if num_unread %} + <span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger"> + {{ num_unread }} + <span class="visually-hidden">unread messages</span> + </span> + {% endif %} </a> - {% endif %} + {% endif %} {% endmacro %} {% macro usermenu() %} -<div class="dropdown" style=""> - <a class="hub-top-nav__button dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false"> - <i class="bi bi-person-circle hub-top-nav__button-icon"> </i> + <div class="dropdown" style=""> + <a class="hub-top-nav__button dropdown-toggle" + href="#" + id="navbarDropdown" + role="button" + data-bs-toggle="dropdown" + aria-expanded="false"> + <i class="bi bi-person-circle hub-top-nav__button-icon"> </i> </a> - <ul class="dropdown-menu dropdown-menu-start" aria-labelledby="navbarDropdown"> - {% if archive_mode %} - <li><a class="dropdown-item disabled text-decoration-line-through" - disabled="disabled" - href="#" - title="{{ _("archivemode_loginlink_hint") }}"> - Login</a> + <ul class="dropdown-menu dropdown-menu-start" + aria-labelledby="navbarDropdown"> + {% if archive_mode %} + <li> + <a class="dropdown-item disabled text-decoration-line-through" + disabled="disabled" + href="#" + title="{{ _('archivemode_loginlink_hint') }}">Login</a> </li> - {% elif request.user.is_authenticated %} + {% elif request.user.is_authenticated %} <li> - {% set num_of_pending_badges = num_of_pending_badges(request) -%} - <a - class="dropdown-item" - {% if num_of_pending_badges %} - href="{{ url('plainui:userprofile') }}#badges" - {% else %} - href="{{ url('plainui:userprofile') }}" - {% endif %} - title="{{ _('profile') }}" - > - {{ _('profile') }} - {% if num_of_pending_badges %} - <span class="hub-header__badge badge"> - {{ num_of_pending_badges }} - </span> - {% endif %} - </a> - {% if report_info %} - <li> - <a - href="{{ build_report_url(request, report_info=report_info) }}" - class="dropdown-item" - > - {{ _("report this url") }} - </a> - </li> - {% endif %} - - <li><hr class="dropdown-divider"></li> + {% set num_of_pending_badges = num_of_pending_badges(request) -%} + <a class="dropdown-item" + {% if num_of_pending_badges %} href="{{ url("plainui:userprofile") }}#badges" {% else %} href="{{ url("plainui:userprofile") }}" {% endif %} + title="{{ _('profile') }}"> + {{ _("profile") }} + {% if num_of_pending_badges %}<span class="hub-header__badge badge">{{ num_of_pending_badges }}</span>{% endif %} + </a> + {% if report_info %} <li> - <form action="{{ url('plainui:logout') }}" method="post"> - {{ csrf_input }} - <button class="dropdown-item" href=""> - {{_('logout')}} - </button> - </form> + <a href="{{ build_report_url(request, report_info=report_info) }}" + class="dropdown-item">{{ _("report this url") }}</a> </li> - {% else %} - <li><a class="dropdown-item" href="{{ url('plainui:login') }}">Login</a></li> {% endif %} - </ul> -</div> -{% endmacro %} -{% macro createmenu() %} -{% if not archive_mode %} -<div class="dropdown"> - <button - class="hub-top-nav__button dropdown-toggle me-2" - type="button" - data-bs-toggle="dropdown" - aria-expanded="false" - > - <i class="bi bi-plus-circle hub-top-nav__button-icon"></i> - </button> - <ul class="dropdown-menu"> - <li> - <a class="dropdown-item{% if not conf.is_open %} disabled{% endif %}" href="{{ hub_absolute('backoffice:assembly-create') }}"> + <li> + <hr class="dropdown-divider"> + </li> + <li> + <form action="{{ url('plainui:logout') }}" method="post"> + {{ csrf_input }} + <button class="dropdown-item" href="">{{ _("logout") }}</button> + </form> + </li> + {% else %} + <li> + <a class="dropdown-item" href="{{ url('plainui:login') }}">Login</a> + </li> + {% endif %} + </ul> + </div> + {% endmacro %} + + {% macro createmenu() %} + {% if not archive_mode %} + <div class="dropdown"> + <button class="hub-top-nav__button dropdown-toggle me-2" + type="button" + data-bs-toggle="dropdown" + aria-expanded="false"> + <i class="bi bi-plus-circle hub-top-nav__button-icon"></i> + </button> + <ul class="dropdown-menu"> + <li> + <a class="dropdown-item{% if not conf.is_open %} disabled{% endif %}" + href="{{ hub_absolute('backoffice:assembly-create') }}"> <i class="bi bi-people-fill"></i> Assembly - </a> - </li> - <!--li> + </a> + </li> + <!--li> <a class="dropdown-item" href="#" disabled> <i class="bi bi-hammer"></i> Projekt </a> - </li--> - <li> - <a class="dropdown-item {% if conf.has_ended %} disabled{% endif %}" href="{{ hub_absolute('backoffice:sos-create') }}"> + </li --> + <li> + <a class="dropdown-item {% if conf.has_ended %}disabled{% endif %}" + href="{{ hub_absolute('backoffice:sos-create') }}"> <i class="bi bi-controller"></i> Self-organised-session - </a> - </li> - </ul> -</div> -{% endif %} -{% endmacro %} + </a> + </li> + </ul> + </div> + {% endif %} + {% endmacro %} -{# + {# Top navbar incl. page title and mobile version. TODO this should eventually become "header". #} -{% macro top_nav(title, has_breadcrumbs=False) %} -<div class="hub-top-nav {% if has_breadcrumbs %}hub-top-nav--breadcrumbs{% endif %}"> - <h1 class="hub-head-page">{{ title }}</h1> - {% if not archive_mode %} - <form method="POST" action="{{ url('plainui:search') }}" role="search"> - {{ csrf_input }} - <input class="form-control" name="q" type="text" placeholder="{{ _("search") }}" value="{% if search_query is defined %}{{ search_query }}{% endif %}"> - </form> - {% endif %} - <div class="hub-top-nav__buttons"> + {% macro top_nav(title, has_breadcrumbs=False) %} + <div class="hub-top-nav {% if has_breadcrumbs %}hub-top-nav--breadcrumbs{% endif %}"> + <h1 class="hub-head-page">{{ title }}</h1> + {% if not archive_mode %} + <form method="POST" action="{{ url('plainui:search') }}" role="search"> + {{ csrf_input }} + <input class="form-control" + name="q" + type="text" + placeholder="{{ _('search') }}" + value="{% if search_query is defined %}{{ search_query }}{% endif %}"> + </form> + {% endif %} + <div class="hub-top-nav__buttons"> {{ dms() }} {{ createmenu() }} {{ usermenu() }} + </div> </div> -</div> - {% if conf and conf.global_notification %} - {% call alert.info(class="mb-4") %} - {{ conf.global_notification }} - {% endcall %} - {% endif %} -{{ mobile_navbar(title) }} -{% endmacro %} + {% if conf and conf.global_notification %} + {% call alert.info(class="mb-4") %} + {{ conf.global_notification }} + {% endcall %} + {% endif %} + {{ mobile_navbar(title) }} + {% endmacro %} -{# Side navigation #} -{% macro main_navbar() %} -<input id="hub-mobile-nav-toggle" type="checkbox" class="d-none"> -<div id="hub-main-navbar" class="hub-main-navbar"> - <div class="p-3 pt-md-4"> + {# Side navigation #} + {% macro main_navbar() %} + <input id="hub-mobile-nav-toggle" type="checkbox" class="d-none"> + <div id="hub-main-navbar" class="hub-main-navbar"> + <div class="p-3 pt-md-4"> <div class="hub-navbar-logo text-white mb-md-4"> - {{ logoMacro.logo(conf, base_url, conf.name + " logo", conf.name + " logo") }} + {{ logoMacro.logo(conf, base_url, conf.name + " logo", conf.name + " logo") }} </div> - </div> + </div> - <!-- Only show on mobile --> - <div class="d-md-none p-3"> + <!-- Only show on mobile --> + <div class="d-md-none p-3"> <div class="hub-navbar-buttons d-flex gap-3 mb-3"> - {{ dms() }} - {{ createmenu() }} - {{ usermenu() }} + {{ dms() }} + {{ createmenu() }} + {{ usermenu() }} </div> <form method="POST" action="{{ url('plainui:search') }}" role="search"> - {{ csrf_input }} - <input class="form-control" name="q" type="text" placeholder="{{ _("search") }}" value="{% if search_query is defined %}{{ search_query }}{% endif %}"> + {{ csrf_input }} + <input class="form-control" + name="q" + type="text" + placeholder="{{ _('search') }}" + value="{% if search_query is defined %}{{ search_query }}{% endif %}"> </form> - </div> + </div> - <div class="hub-main-navbar-items overflow-y-auto"> + <div class="hub-main-navbar-items overflow-y-auto"> <div class="p-3 pt-0"> - {% for category in conf.get_navigation_tree() %} - <span class="hub-main-navbar__category"> - {{ category.label }} - </span> + {% for category in conf.get_navigation_tree() %} + <span class="hub-main-navbar__category">{{ category.label }}</span> <ul class="hub-main-navbar__items"> - {% for item in category.children %} - {{ menuitem(item) }} - {% endfor %} + {% for item in category.children %}{{ menuitem(item) }}{% endfor %} </ul> - {% endfor %} + {% endfor %} </div> + </div> </div> -</div> -{% endmacro %} + {% endmacro %} -{% macro mobile_navbar(title) %} -{% set num_notifications = num_of_notifications(request) -%} -<div class="hub-mobile-navbar"> - <div class="d-flex align-items-center gap-3 text-white"> - <label - for="hub-mobile-nav-toggle" - role="button" - class="p-2 cursor-pointer position-relative" - style="margin: -8px;" - > - <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-list" viewBox="0 0 16 16"> - <path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/> - </svg> - {% if num_notifications %} + {% macro mobile_navbar(title) %} + {% set num_notifications = num_of_notifications(request) -%} + <div class="hub-mobile-navbar"> + <div class="d-flex align-items-center gap-3 text-white"> + <label for="hub-mobile-nav-toggle" + role="button" + class="p-2 cursor-pointer position-relative" + style="margin: -8px"> + <svg xmlns="http://www.w3.org/2000/svg" + width="32" + height="32" + fill="currentColor" + class="bi bi-list" + viewBox="0 0 16 16"> + <path fill-rule="evenodd" d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z" /> + </svg> + {% if num_notifications %} <span class="hub-mobile-nav-badge badge rounded-pill bg-danger"> - {{ num_notifications }} - <span class="visually-hidden">unread messages</span> + {{ num_notifications }} + <span class="visually-hidden">unread messages</span> </span> - {% endif %} + {% endif %} </label> - <div class="hub-mobile-nav-title"> - {{ title }} - </div> + <div class="hub-mobile-nav-title">{{ title }}</div> + </div> </div> -</div> -{% endmacro %} + {% endmacro %} diff --git a/src/plainui/jinja2/plainui/components/paginator_alphabetical.html.j2 b/src/plainui/jinja2/plainui/components/paginator_alphabetical.html.j2 index c9215b8c5003ae202904929af132f6b3e0fdda41..902aef05a2ba4ab6a29300104c12f40ba6c20157 100644 --- a/src/plainui/jinja2/plainui/components/paginator_alphabetical.html.j2 +++ b/src/plainui/jinja2/plainui/components/paginator_alphabetical.html.j2 @@ -3,12 +3,10 @@ params: the current request parameters #} {% macro pagination(view_name, paginator, current_page) -%} - {% for paginator_page in paginator %} - <a - class="hub-tag {% if current_page.index == paginator_page.index and not view_all %}hub-tag--secondary{% elif paginator_page|length == 0 %}hub-tag--disabled{% else %}hub-tag--secondary-outline{% endif %}" - href="{{ url(view_name + '_paginated', page=paginator_page.index) }}{{update_parameters(params, '', '')}}" - > - {{ paginator_page.index }} - </a> - {% endfor %} + {% for paginator_page in paginator %} + <a class="hub-tag {% if current_page.index == paginator_page.index and not view_all %}hub-tag--secondary{% elif paginator_page|length == 0 %}hub-tag--disabled{% else %}hub-tag--secondary-outline{% endif %}" + href="{{ url(view_name + '_paginated', page=paginator_page.index) }}{{ update_parameters(params, '', '') }}"> + {{ paginator_page.index }} + </a> + {% endfor %} {%- endmacro %} diff --git a/src/plainui/jinja2/plainui/components/resourcesbox.html.j2 b/src/plainui/jinja2/plainui/components/resourcesbox.html.j2 index 8dad71b78b36db527b6dcdda38f6e2d9a75b71e2..2b30c677186312f71743fe1eb6a2e524b3b97fb6 100644 --- a/src/plainui/jinja2/plainui/components/resourcesbox.html.j2 +++ b/src/plainui/jinja2/plainui/components/resourcesbox.html.j2 @@ -1,22 +1,22 @@ {% macro resourcesbox(title, resources) -%} -<div class="border"> - {% if title %} - <h2 class="text-center bg-secondary text-dark m-0 px-3 py-1 h2">{{title}}</h2> - {% endif %} + <div class="border"> + {% if title %}<h2 class="text-center bg-secondary text-dark m-0 px-3 py-1 h2">{{ title }}</h2>{% endif %} <div class="flex-grow-1 d-flex flex-column justify-content-start align-items-center "> - {% if resources %} - <ul class="ps-3 mb-0 w-100"> - {%- for ressource in resources %} - {% if ressource.visibility == "public" or ressource.visibility == "conference" %} - <li class="pe-2"><a href="{{ ressource.file }}" title="{{ ressource.filename }}">{{ ressource.filename }}</a></li> - {% endif %} - {% endfor -%} - </ul> - {% else %} - <div class="p-3 ps-3 w-100 d-flex flex-row flex-wrap justify-content-start align-items-center"> - <p>{{ _("no entry availaible")}}</p> - </div> - {% endif %} + {% if resources %} + <ul class="ps-3 mb-0 w-100"> + {%- for ressource in resources %} + {% if ressource.visibility == "public" or ressource.visibility == "conference" %} + <li class="pe-2"> + <a href="{{ ressource.file }}" title="{{ ressource.filename }}">{{ ressource.filename }}</a> + </li> + {% endif %} + {% endfor -%} + </ul> + {% else %} + <div class="p-3 ps-3 w-100 d-flex flex-row flex-wrap justify-content-start align-items-center"> + <p>{{ _("no entry availaible") }}</p> + </div> + {% endif %} </div> -</div> + </div> {%- endmacro %} diff --git a/src/plainui/jinja2/plainui/components/slider.html.j2 b/src/plainui/jinja2/plainui/components/slider.html.j2 index 54de25d1a9d18627438c9d88bda01091222caa0b..1fd096b051ddcc2d0a11bff798e550fe54708042 100644 --- a/src/plainui/jinja2/plainui/components/slider.html.j2 +++ b/src/plainui/jinja2/plainui/components/slider.html.j2 @@ -1,13 +1,9 @@ {% macro slider(items) -%} - <section class="hub-slider border p-6"> - {% if items %} - <ul class="hub-slider__container row row-cols-1 row-cols-sm-2 row-cols-lg-3 flex-nowrap mb-0 list-unstyled"> - {% for item in items %} - <li class="hub-slider__item col"> - {{ item }} - </li> - {% endfor %} - </ul> - {% endif %} - </section> + <section class="hub-slider border p-6"> + {% if items %} + <ul class="hub-slider__container row row-cols-1 row-cols-sm-2 row-cols-lg-3 flex-nowrap mb-0 list-unstyled"> + {% for item in items %}<li class="hub-slider__item col">{{ item }}</li>{% endfor %} + </ul> + {% endif %} + </section> {%- endmacro %} diff --git a/src/plainui/jinja2/plainui/components/tagbox.html.j2 b/src/plainui/jinja2/plainui/components/tagbox.html.j2 index 9f67e0ad18b93003650ee2b9fe9c6e2a730fe930..eb37aa4da4a2c868cd1d44391f9b18beb7eaa7eb 100644 --- a/src/plainui/jinja2/plainui/components/tagbox.html.j2 +++ b/src/plainui/jinja2/plainui/components/tagbox.html.j2 @@ -1,26 +1,16 @@ {% macro tag(text, icon=None, link=None, style="", target=None, rel=None) -%} {% if link %} - <a - class="hub-tag hub-tag--{{ style }}" - href="{{ link }}" - {% if target %}target="{{ target }}"{% endif %} - {% if rel %}rel="{{ rel }}"{% endif %} - > - {% if icon %} - <i class="bi bi-{{ icon }}"></i> - {% endif %} - <div class="hub-tag__text"> - {{ text }} - </div> + <a class="hub-tag hub-tag--{{ style }}" + href="{{ link }}" + {% if target %}target="{{ target }}"{% endif %} + {% if rel %}rel="{{ rel }}"{% endif %}> + {% if icon %}<i class="bi bi-{{ icon }}"></i>{% endif %} + <div class="hub-tag__text">{{ text }}</div> </a> {% else %} <div class="hub-tag hub-tag--{{ style }}"> - {% if icon %} - <i class="bi bi-{{ icon }}"></i> - {% endif %} - <div class="hub-tag__text"> - {{ text }} - </div> + {% if icon %}<i class="bi bi-{{ icon }}"></i>{% endif %} + <div class="hub-tag__text">{{ text }}</div> </div> {% endif %} {%- endmacro %} @@ -34,33 +24,24 @@ {%- endmacro %} {% macro tagbox(tags_list, icon=None) -%} - {% if tags_list %} - <div class="hub-tags"> - {{ tags(tags_list, icon) }} - </div> - {% endif %} + {% if tags_list %}<div class="hub-tags">{{ tags(tags_list, icon) }}</div>{% endif %} {%- endmacro %} {% macro tags(tags, icon=None) -%} - {% if tags %} - {%- for tag in tags %} - {{ secondary( - tag.slug, - link=url('plainui:tag', tag_slug=tag.slug), - icon=icon - ) }} - {% endfor -%} - {% endif %} + {% if tags %} + {%- for tag in tags %} + {{ secondary(tag.slug, + link=url('plainui:tag', tag_slug=tag.slug) , + icon=icon + ) }} + {% endfor -%} + {% endif %} {%- endmacro %} {% macro filter(label, param_name, param_value, icon=None) -%} - <a - href="{{ update_parameters(params, param_name, '' if param_value == params.get(param_name) else param_value, ['page']) }}" - class="hub-tag {% if params.get(param_name) == param_value %}hub-tag--secondary{% else %}hub-tag--secondary-outline{% endif %}" - > - {% if icon %} - <i class="bi bi-{{ icon }}"></i> - {% endif %} + <a href="{{ update_parameters(params, param_name, '' if param_value == params.get(param_name) else param_value, ['page']) }}" + class="hub-tag {% if params.get(param_name) == param_value %}hub-tag--secondary{% else %}hub-tag--secondary-outline{% endif %}"> + {% if icon %}<i class="bi bi-{{ icon }}"></i>{% endif %} {{ label }} -</a> + </a> {%- endmacro %} diff --git a/src/plainui/jinja2/plainui/components/three_cards.html.j2 b/src/plainui/jinja2/plainui/components/three_cards.html.j2 index fe5a47f76e22bb80043c3aeae4c62a192960e442..c595b751784fa69f61ec36ccc421730bc0d39695 100644 --- a/src/plainui/jinja2/plainui/components/three_cards.html.j2 +++ b/src/plainui/jinja2/plainui/components/three_cards.html.j2 @@ -1,22 +1,17 @@ {% macro three_cards(cards) -%} -{% if cards %} + {% if cards %} <div class="hub-row hub-row-equal-height"> - {% for card in cards %} + {% for card in cards %} <div class="hub-col-remaining hub-card"> - <h2 class="hub-section-title">{{card.title}}</h2> - <p class="hub-text">{{ card.text}}</p> - {% if card.link %} - <footer class="d-flex justify-content-end"> - <a - href="{{ card.link.url }}" - class="hub-btn" - > - {{ card.link.text }} - </a> - </footer> - {% endif %} + <h2 class="hub-section-title">{{ card.title }}</h2> + <p class="hub-text">{{ card.text }}</p> + {% if card.link %} + <footer class="d-flex justify-content-end"> + <a href="{{ card.link.url }}" class="hub-btn">{{ card.link.text }}</a> + </footer> + {% endif %} </div> - {% endfor %} + {% endfor %} </div> -{% endif %} + {% endif %} {%- endmacro %} diff --git a/src/plainui/jinja2/plainui/components/tile_board.html.j2 b/src/plainui/jinja2/plainui/components/tile_board.html.j2 index 2d98ea04d13353076561d0d19cb87e7e170e589d..f38409ba44a887162163fb5bdc25bba1b1cb4bd9 100644 --- a/src/plainui/jinja2/plainui/components/tile_board.html.j2 +++ b/src/plainui/jinja2/plainui/components/tile_board.html.j2 @@ -2,96 +2,96 @@ {% import "plainui/components/tagbox.html.j2" as tagMacros %} {% macro tile(item) -%} - <article class="hub-card"> - <div class="hub-vlayout"> - {% if item.title %} - <header class="card-header bg-transparent d-flex border-0"> - <h3 class="hub-head-main"> - {% if item.detail_link and item.text|length > 400 %} - <a href="{{ item.detail_link }}"> - {{ item.title }} - </a> - {% else %} - {{ item.title }} - {% endif %} - </h3> - </header> - {% endif %} - <div class="hub-tags hub-align-items-baseline"> - {% if item.is_private %} - {{ tagMacros.secondary(_("private"), icon="lock-fill") }} - {% endif %} - {% if item.owner_name and item.owner_link %} - {{ tagMacros.user(item.owner_name, link=item.owner_link) }} - {% endif %} - <time - class="hub-text-details text-nowrap" - datetime="{{ item.timestamp }}" - > - {{ item.timestamp | strftime }} - </time> - </div> - - {% if item.text %} - {% if item.full_text %} - {{ markdownMacro.markdown_plain(item.text | safe, "card-body border-0 bg-transparent") }} + <article class="hub-card"> + <div class="hub-vlayout"> + {% if item.title %} + <header class="card-header bg-transparent d-flex border-0"> + <h3 class="hub-head-main"> + {% if item.detail_link and item.text|length > 400 %} + <a href="{{ item.detail_link }}">{{ item.title }}</a> {% else %} - {{ markdownMacro.markdown_plain(item.text | safe | truncate( 400, false, '...', 10), "hub-tile-board__body card-body border-0 bg-transparent") }} + {{ item.title }} {% endif %} + </h3> + </header> + {% endif %} + <div class="hub-tags hub-align-items-baseline"> + {% if item.is_private %}{{ tagMacros.secondary(_("private") , icon="lock-fill") }}{% endif %} + {% if item.owner_name and item.owner_link %}{{ tagMacros.user(item.owner_name, link=item.owner_link) }}{% endif %} + <time class="hub-text-details text-nowrap" datetime="{{ item.timestamp }}"> + {{ item.timestamp | strftime }} + </time> + </div> + + {% if item.text %} + {% if item.full_text %} + {{ markdownMacro.markdown_plain(item.text | safe, "card-body border-0 bg-transparent") }} + {% else %} + {{ markdownMacro.markdown_plain(item.text | safe | truncate( 400, false, '...', 10) , "hub-tile-board__body card-body border-0 bg-transparent") }} {% endif %} + {% endif %} - <footer> - {{ tile_buttons(item) }} - </footer> - </div> - </article> + <footer> + {{ tile_buttons(item) }} + </footer> + </div> + </article> {%- endmacro %} {% macro tile_buttons(item) -%} - <ul class="d-inline-flex list-unstyled align-items-stretch"> - {% if item.is_editable and item.edit_link %} - <li class="pe-2"> - <a - href="{{ item.edit_link }}" - class="btn btn-icon btn-transparent" - title="{{_("Edit")}}" - > - <svg xmlns="http://www.w3.org/2000/svg" width="1rem" height="1rem" fill="currentColor" class="bi bi-pencil" viewBox="0 0 16 16"> - <title>{{_("Edit")}}</title> - <path fill-rule="evenodd" d="M12.146.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1 0 .708l-10 10a.5.5 0 0 1-.168.11l-5 2a.5.5 0 0 1-.65-.65l2-5a.5.5 0 0 1 .11-.168l10-10zM11.207 2.5L13.5 4.793 14.793 3.5 12.5 1.207 11.207 2.5zm1.586 3L10.5 3.207 4 9.707V10h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.293l6.5-6.5zm-9.761 5.175l-.106.106-1.528 3.821 3.821-1.528.106-.106A.5.5 0 0 1 5 12.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.468-.325z"/> - </svg> - </a> - </li> - {% endif %} - {% if item.is_editable and item.delete_form_id %} - <li class="pe-2"> - <button - type="submit" - class="btn btn-icon btn-transparent" - title="{{_("Delete")}}" - form="{{ item.delete_form_id }}" - formaction="{{ item.delete_link }}" - > - <svg xmlns="http://www.w3.org/2000/svg" width="1rem" height="1rem" fill="currentColor" class="bi bi-trash" viewBox="0 0 16 16"> - <title>{{_("Delete")}}</title> - <path d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6z"/> - <path fill-rule="evenodd" d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1zM4.118 4L4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118zM2.5 3V2h11v1h-11z"/> - </svg> - </button> - </li> - {% endif %} - {% if item.id %} - <li> - <a - href="{{ item.report_link }}" - class="btn btn-icon btn-transparent" - title="{{_("Report Content")}}" - > - <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-exclamation-diamond-fill" viewBox="0 0 16 16"> - <path fill-rule="evenodd" d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098L9.05.435zM8 4a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 4zm.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/> - </svg> - </a> - </li> - {% endif %} - </ul> + <ul class="d-inline-flex list-unstyled align-items-stretch"> + {% if item.is_editable and item.edit_link %} + <li class="pe-2"> + <a href="{{ item.edit_link }}" + class="btn btn-icon btn-transparent" + title="{{ _('Edit') }}"> + <svg xmlns="http://www.w3.org/2000/svg" + width="1rem" + height="1rem" + fill="currentColor" + class="bi bi-pencil" + viewBox="0 0 16 16"> + <title>{{ _('Edit') }}</title> + <path fill-rule="evenodd" d="M12.146.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1 0 .708l-10 10a.5.5 0 0 1-.168.11l-5 2a.5.5 0 0 1-.65-.65l2-5a.5.5 0 0 1 .11-.168l10-10zM11.207 2.5L13.5 4.793 14.793 3.5 12.5 1.207 11.207 2.5zm1.586 3L10.5 3.207 4 9.707V10h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.293l6.5-6.5zm-9.761 5.175l-.106.106-1.528 3.821 3.821-1.528.106-.106A.5.5 0 0 1 5 12.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.468-.325z" /> + </svg> + </a> + </li> + {% endif %} + {% if item.is_editable and item.delete_form_id %} + <li class="pe-2"> + <button type="submit" + class="btn btn-icon btn-transparent" + title="{{ _('Delete') }}" + form="{{ item.delete_form_id }}" + formaction="{{ item.delete_link }}"> + <svg xmlns="http://www.w3.org/2000/svg" + width="1rem" + height="1rem" + fill="currentColor" + class="bi bi-trash" + viewBox="0 0 16 16"> + <title>{{ _('Delete') }}</title> + <path d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6z" /> + <path fill-rule="evenodd" d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1zM4.118 4L4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118zM2.5 3V2h11v1h-11z" /> + </svg> + </button> + </li> + {% endif %} + {% if item.id %} + <li> + <a href="{{ item.report_link }}" + class="btn btn-icon btn-transparent" + title="{{ _('Report Content') }}"> + <svg xmlns="http://www.w3.org/2000/svg" + width="16" + height="16" + fill="currentColor" + class="bi bi-exclamation-diamond-fill" + viewBox="0 0 16 16"> + <path fill-rule="evenodd" d="M9.05.435c-.58-.58-1.52-.58-2.1 0L.436 6.95c-.58.58-.58 1.519 0 2.098l6.516 6.516c.58.58 1.519.58 2.098 0l6.516-6.516c.58-.58.58-1.519 0-2.098L9.05.435zM8 4a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 4zm.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2z" /> + </svg> + </a> + </li> + {% endif %} + </ul> {%- endmacro %} diff --git a/src/plainui/jinja2/plainui/components/title.html.j2 b/src/plainui/jinja2/plainui/components/title.html.j2 index 12ecac2c55bac760b0336e9e80f2cc920dba1ec2..360baddd95107e855a6051f111adcfce60651806 100644 --- a/src/plainui/jinja2/plainui/components/title.html.j2 +++ b/src/plainui/jinja2/plainui/components/title.html.j2 @@ -7,28 +7,20 @@ {% import "plainui/components/function_btns.html.j2" as fbtns with context %} {% macro title(title="", fav_id=false, fav_type=false, fav_is=false, sch_id=false, sch_is=false, stream_url=false, report_url=false, report_kind="url", edit_url=false) -%} - <div class="row mb-4 {% if share_url %}w-100 my-11{% endif %}"> - <div class="col"> - <h1 class="hub-page-heading" title="{{ title }}">{{ title }}</h1> - </div> - {% if conf and fav_type or sch_id or stream_url %} - <div class="col-sm-auto text-righ align-self-center"> - {% if fav_type and fav_id %} - {{ fbtns.fav(fav_id, fav_type, fav_is, color="transparent") }} - {% endif %} + <div class="row mb-4 {% if share_url %}w-100 my-11{% endif %}"> + <div class="col"> + <h1 class="hub-page-heading" title="{{ title }}">{{ title }}</h1> + </div> + {% if conf and fav_type or sch_id or stream_url %} + <div class="col-sm-auto text-righ align-self-center"> + {% if fav_type and fav_id %}{{ fbtns.fav(fav_id, fav_type, fav_is, color="transparent") }}{% endif %} - {% if sch_id %} - {{ fbtns.schedule(sch_id, sch_is, color="transparent") }} - {% endif %} + {% if sch_id %}{{ fbtns.schedule(sch_id, sch_is, color="transparent") }}{% endif %} - {% if stream_url %} - {{ fbtns.stream(stream_url, color="transparent") }} - {% endif %} + {% if stream_url %}{{ fbtns.stream(stream_url, color="transparent") }}{% endif %} - {% if edit_url %} - {{ fbtns.edit(edit_url, color="transparent") }} - {% endif %} - </div> - {% endif %} - </div> + {% if edit_url %}{{ fbtns.edit(edit_url, color="transparent") }}{% endif %} + </div> + {% endif %} + </div> {%- endmacro %} diff --git a/src/plainui/jinja2/plainui/components/wiki.html.j2 b/src/plainui/jinja2/plainui/components/wiki.html.j2 index 0bbae43a9667506e1a6c3ebf25d3f67f985289aa..fe86a3c1789f6155256a12c2d5f724370157ef47 100644 --- a/src/plainui/jinja2/plainui/components/wiki.html.j2 +++ b/src/plainui/jinja2/plainui/components/wiki.html.j2 @@ -5,19 +5,15 @@ Renders a card with title and contents from the wiki page. #} {% macro card(slug, class="", button_label=None, button_link=None) %} -<div class="hub-card {{ class }}"> - {% set title, body = fetch_wiki_page(slug) %} - <h2 class="hub-section-title"> - {{ title }} - </h2> - <div> - {{ body }} - {% if button_label and button_link %} - {{ buttonsMacro.primary( - button_label, - button_link - ) }} - {% endif %} + <div class="hub-card {{ class }}"> + {% set title, body = fetch_wiki_page(slug) %} + <h2 class="hub-section-title">{{ title }}</h2> + <div> + {{ body }} + {% if button_label and button_link %} + {{ buttonsMacro.primary(button_label, + button_link) }} + {% endif %} + </div> </div> -</div> {% endmacro %} diff --git a/src/plainui/jinja2/plainui/conferences.html.j2 b/src/plainui/jinja2/plainui/conferences.html.j2 index 441518dd005b2207e7fb9f5ab84190f7672a6221..5ed87ec9e02cd7ead02f2f65036df529258a6795 100644 --- a/src/plainui/jinja2/plainui/conferences.html.j2 +++ b/src/plainui/jinja2/plainui/conferences.html.j2 @@ -1,10 +1,12 @@ {% extends "plainui/base.html.j2" %} {% block title %}{{ _("Conferences") }}{% endblock %} {% block content %} - {{ titleMacro.title(_("Conferences")) }} - <ul class="my-11"> - {% for conf in conferences %} - <li><a href="{{ url('plainui:landing') }}">{{conf.name}}</a></li> - {% endfor %} - </ul> + {{ titleMacro.title(_("Conferences") ) }} + <ul class="my-11"> + {% for conf in conferences %} + <li> + <a href="{{ url('plainui:landing') }}">{{ conf.name }}</a> + </li> + {% endfor %} + </ul> {% endblock %} diff --git a/src/plainui/jinja2/plainui/dereferrer.html.j2 b/src/plainui/jinja2/plainui/dereferrer.html.j2 index 9abc2aa8a8e7e17870d26aa11e9179752d8ab785..8b2f7da3ae5a2e101e4994468a44c4c96d17fb2f 100644 --- a/src/plainui/jinja2/plainui/dereferrer.html.j2 +++ b/src/plainui/jinja2/plainui/dereferrer.html.j2 @@ -2,37 +2,38 @@ {% block title %}Dereferrer{% endblock %} {% block content %} -<article class="d-flex justify-content-center align-items-center my-11"> + <article class="d-flex justify-content-center align-items-center my-11"> <section class="p-3 border text-center mw-810"> - <h1>{{ _("Hey") }}</h1> + <h1>{{ _("Hey") }}</h1> - <p>{{ _("You are leaving the »RC3-area«. For external sites, streams and applications the actual owners are completely and solely responsible regarding data protection, copyright, youth protection, etc.!")}}</p> + <p> + {{ _("You are leaving the »RC3-area«. For external sites, streams and applications the actual owners are completely and solely responsible regarding data protection, copyright, youth protection, etc.!") }} + </p> - <p>Link Preview: <span style="font-weight: bold;">{{ plain_url }}</span></p> + <p> + Link Preview: <span style="font-weight: bold;">{{ plain_url }}</span> + </p> - <ul class="d-flex justify-content-center list-unstyled mb-0 mt-3"> - <li class="mx-2 d-js-only"> - <a - href="javascript:history.back()" - class="btn btn-transpaten" - title="{{ _("Back") }}"> - {{ _("Back") }} - </a> - </li> - <li class="mx-2"> - <a href='{{ url('plainui:dereferrer_approved', signed_payload=signed_url) if not archive_mode else plain_url }}' class="btn btn-primary " rel="external,noreferrer"> - {{ _("Follow Link") }} - </a> - </li> - {% if can_allow and not archive_mode %} - <li class="col"> - <a href="{{ url('plainui:dereferrer_save', signed_payload=signed_url) }}" class="btn btn-xl btn-block btn-primary external" rel="external,noreferrer"> - {{ _("Follow & Allow '%(domain)s' permanently", domain=domain) }} - </a> - </li> - {% endif %} - </ul> + <ul class="d-flex justify-content-center list-unstyled mb-0 mt-3"> + <li class="mx-2 d-js-only"> + <a href="javascript:history.back()" + class="btn btn-transpaten" + title="{{ _('Back') }}">{{ _('Back') }}</a> + </li> + <li class="mx-2"> + <a href='{{ url("plainui:dereferrer_approved", signed_payload=signed_url) if not archive_mode else plain_url }}' + class="btn btn-primary " + rel="external,noreferrer">{{ _("Follow Link") }}</a> + </li> + {% if can_allow and not archive_mode %} + <li class="col"> + <a href="{{ url('plainui:dereferrer_save', signed_payload=signed_url) }}" + class="btn btn-xl btn-block btn-primary external" + rel="external,noreferrer">{{ _("Follow & Allow '%(domain)s' permanently", domain=domain) }}</a> + </li> + {% endif %} + </ul> </section> -</article> + </article> {% endblock %} diff --git a/src/plainui/jinja2/plainui/event.html.j2 b/src/plainui/jinja2/plainui/event.html.j2 index c8c3aca558ec8d80658d2993a603f2d119e8be3b..2dd1b1ccd0e40459c6835e20cfcb68da854803e7 100644 --- a/src/plainui/jinja2/plainui/event.html.j2 +++ b/src/plainui/jinja2/plainui/event.html.j2 @@ -12,189 +12,158 @@ {% import "plainui/components/event.html.j2" as eventMacro %} {%- macro random_preview_image_url() -%} - {%- set imgs = [1,2,3,4,5,6,7] -%} - {{ static('plainui/img/hub-assembly-event-0%s.png' % (imgs | random ,)) }} + {%- set imgs = [1, 2, 3, 4, 5, 6, 7] -%} + {{ static('plainui/img/hub-assembly-event-0%s.png' % (imgs | random ,) ) }} {%- endmacro -%} {% extends "plainui/base.html.j2" %} {% block title %}{{ event.name }} - {{ conf.slug.upper() }}{% endblock %} -{% block head %} - <script src="{{ static('plainui/js/player.js') }}"></script> -{% endblock %} +{% block head %}<script src="{{ static('plainui/js/player.js') }}"></script>{% endblock %} {% block content %} -<article class="mt-10"> - {{ navMacro.top_nav(_("Event"), has_breadcrumbs=True) }} + <article class="mt-10"> + {{ navMacro.top_nav(_("Event") , has_breadcrumbs=True) }} <nav aria-label="breadcrumb"> <ol class="breadcrumb hub-breadcrumbs"> - <li class="breadcrumb-item"><a href="{{ url('plainui:index') }}"> - {{ conf.name }} - </a></li> - <li class="breadcrumb-item"><a href="{{ url('plainui:assemblies') }}">{{ _("assemblies") }}</a></li> - <li class="breadcrumb-item"><a href="{{ url('plainui:assembly', assembly_slug=assembly.slug) }}">{{ assembly.name }}</a></li> + <li class="breadcrumb-item"> + <a href="{{ url('plainui:index') }}">{{ conf.name }}</a> + </li> + <li class="breadcrumb-item"> + <a href="{{ url('plainui:assemblies') }}">{{ _("assemblies") }}</a> + </li> + <li class="breadcrumb-item"> + <a href="{{ url('plainui:assembly', assembly_slug=assembly.slug) }}">{{ assembly.name }}</a> + </li> {% if event.room and event.room.name %} - <li class="breadcrumb-item"> - <a href="{{ url('plainui:room', slug=event.room.slug) }}"> - {{ event.room.name }} - </a> - </li> + <li class="breadcrumb-item"> + <a href="{{ url('plainui:room', slug=event.room.slug) }}">{{ event.room.name }}</a> + </li> {% endif %} </ol> </nav> {% set current_assembly = { - "link": url('plainui:assembly', assembly_slug=assembly.slug), - "name": assembly.name - } if assembly and assembly.slug else {} - %} + "link": url('plainui:assembly', assembly_slug=assembly.slug), + "name": assembly.name + } if assembly and assembly.slug else {} %} <div class="hub-vlayout"> - <div class="hub-row"> - <div class="hub-col hub-col-remaining hub-card hub-hlayout-l"> - <div class="text-center text-primary"> - <div class="hub-event-details__time"> - {{ event.schedule_start | strftimehm }}<br> - -<br> - {{ event.schedule_end | strftimehm }} - </div> - <div class="hub-event-details__day"> - {{ _("Day %(n)s", n=event.conference_day) }} - </div> - </div> - <div class="hub-vlayout-l"> - <div class="hub-vlayout"> - <div class="hub-head-main"> - {{ event.name }} - </div> - - {% if event.room or speakers or event.language %} - <div class="hub-tags"> - {% if event.room %} - {{ tagboxMacro.tag( - event.room.name, - link=url('plainui:room', slug=event.room.slug), - icon='geo-alt-fill', - style='clear' - ) }} - {% endif %} - - {% if speakers %} - {% for speaker in speakers %} - {{ tagboxMacro.user(speaker) }} - {% endfor %} - {% endif %} - - {% if event.language %} - <div class="hub-tag__text"> - <i class="bi bi-translate"></i> - {{ event.language }} - </div> - {% endif %} - </div> + <div class="hub-row"> + <div class="hub-col hub-col-remaining hub-card hub-hlayout-l"> + <div class="text-center text-primary"> + <div class="hub-event-details__time"> + {{ event.schedule_start | strftimehm }} + <br> + - + <br> + {{ event.schedule_end | strftimehm }} + </div> + <div class="hub-event-details__day">{{ _("Day %(n)s", n=event.conference_day) }}</div> + </div> + <div class="hub-vlayout-l"> + <div class="hub-vlayout"> + <div class="hub-head-main">{{ event.name }}</div> + + {% if event.room or speakers or event.language %} + <div class="hub-tags"> + {% if event.room %} + {{ tagboxMacro.tag(event.room.name, + link=url('plainui:room', slug=event.room.slug) , + icon='geo-alt-fill', + style='clear' + ) }} {% endif %} - - <div class="hub-tags"> - {{ eventMacro.recorded_tag(event.is_recorded) }} - - {% if event.kind != 'official' %} - {{ tagboxMacro.tag( - _("Self-organized Session") if event.kind == 'sos' else _("Assembly-Event"), - style='secondary', - icon='person-video3' if event.kind == 'sos' else 'person-arms-up' - ) }} - {% endif %} - - {% if event.track and event.track.name %} - <div - class="hub-tag {% if event.track.color and calculate_luminance(event.track.color) <= 140 %}text-white{% else %}text-dark{% endif %}" - {% if event.track.color %}style="background-color: {{ event.track.color }};"{% endif %} - > - {{ event.track.name }} - </div> - {% endif %} - - {% if tags %} - {{ tagboxMacro.tagbox(event.prefetched_tags, icon='tag') }} - {% endif %} - </div> - </div> - - <div class="hub-vlayout"> - {% if event.additional_data and event.additional_data.get('subtitle') %} - <div class="hub-text"> - {{ event.additional_data.get('subtitle') }} - </div> + {% if speakers %} + {% for speaker in speakers %}{{ tagboxMacro.user(speaker) }}{% endfor %} {% endif %} - {% if event.abstract %} - <div class="hub-text"> - {{ event.abstract }} + {% if event.language %} + <div class="hub-tag__text"> + <i class="bi bi-translate"></i> + {{ event.language }} </div> {% endif %} </div> + {% endif %} - <div> - {{ fbtns.fav(event.id, "event", is_favorite, color="secondary") }} - {{ fbtns.report(lookup_key=event.slug, color="primary") }} - {% if event.additional_data.get('feedback_url') and running_state == "complete" %} - <a - href=" {{ event.additional_data.get('feedback_url') }}" - class="btn btn-primary" - target="_blank" - > - <i class="bi bi-hand-thumbs-up"></i> - <i class="bi bi-hand-thumbs-down"></i> - {{ _("Rate event") }} - </a> - {% endif %} - </div> + + <div class="hub-tags"> + {{ eventMacro.recorded_tag(event.is_recorded) }} + + {% if event.kind != 'official' %} + {{ tagboxMacro.tag(_("Self-organized Session") if event.kind == 'sos' else _("Assembly-Event"), + style='secondary', + icon='person-video3' if event.kind == 'sos' else 'person-arms-up' + ) }} + {% endif %} + + {% if event.track and event.track.name %} + <div class="hub-tag {% if event.track.color and calculate_luminance(event.track.color) <= 140 %}text-white{% else %}text-dark{% endif %}" + {% if event.track.color %}style="background-color: {{ event.track.color }};"{% endif %}> + {{ event.track.name }} + </div> + {% endif %} + + {% if tags %}{{ tagboxMacro.tagbox(event.prefetched_tags, icon='tag') }}{% endif %} </div> - </div> - {% if event.banner_image and event.banner_image.url %} - <div class="hub-col hub-col-325px hub-card"> - {{ imageMacro.image(image=event.banner_image.url, alt=event.banner_image.name , title=event.banner_image.name) }} </div> - {% endif %} + + <div class="hub-vlayout"> + {% if event.additional_data and event.additional_data.get('subtitle') %} + <div class="hub-text">{{ event.additional_data.get("subtitle") }}</div> + {% endif %} + + {% if event.abstract %}<div class="hub-text">{{ event.abstract }}</div>{% endif %} + </div> + + <div> + {{ fbtns.fav(event.id, "event", is_favorite, color="secondary") }} + {{ fbtns.report(lookup_key=event.slug, color="primary") }} + {% if event.additional_data.get('feedback_url') and running_state == "complete" %} + <a href=" {{ event.additional_data.get("feedback_url") }}" + class="btn btn-primary" + target="_blank"> + <i class="bi bi-hand-thumbs-up"></i> + <i class="bi bi-hand-thumbs-down"></i> + {{ _("Rate event") }} + </a> + {% endif %} + </div> + </div> + </div> + {% if event.banner_image and event.banner_image.url %} + <div class="hub-col hub-col-325px hub-card"> + {{ imageMacro.image(image=event.banner_image.url, alt=event.banner_image.name , title=event.banner_image.name) }} + </div> + {% endif %} </div> {% if event.kind == "official" and running_state == "running" %} - <div class="border p-3 my-8"> - {{ integrations.vocPlayer(vocLecture=event.slug) }} - </div> + <div class="border p-3 my-8">{{ integrations.vocPlayer(vocLecture=event.slug) }}</div> {% endif %} <div class="hub-row hub-card"> <div class="hub-vlayout-l"> {% if event.description_html %} - <div class="hub-text"> - {{ markdownMacro.markdown(markdown=event.description_html | safe, border=False) }} - </div> + <div class="hub-text">{{ markdownMacro.markdown(markdown=event.description_html | safe, border=False) }}</div> {% endif %} {% if current_assembly %} <div> - <h2 class="hub-section-title"> - {{ _("Assembly") }} - </h2> + <h2 class="hub-section-title">{{ _("Assembly") }}</h2> <div class="hub-text"> - {{ tagboxMacro.tag( - current_assembly.name, - style='secondary', - icon="person-arms-up", - link=current_assembly.link - ) }} + {{ tagboxMacro.tag(current_assembly.name, + style='secondary', + icon="person-arms-up", + link=current_assembly.link) }} </div> </div> {% endif %} {% if event.location %} <div> - <h2 class="hub-section-title"> - {{ _("Event__location") }} - </h2> - <div class="hub-text"> - {{ event.location }} - </div> + <h2 class="hub-section-title">{{ _("Event__location") }}</h2> + <div class="hub-text">{{ event.location }}</div> </div> {% endif %} </div> @@ -205,6 +174,6 @@ </div> </div> </div> -</article> + </article> {% endblock %} diff --git a/src/plainui/jinja2/plainui/fahrplan.html.j2 b/src/plainui/jinja2/plainui/fahrplan.html.j2 index ceae8b7cc34c20b5b1cf8ebab35daa45fdf644cb..2f76a59220afbb23c911d3ee0957a3a45a357cd3 100644 --- a/src/plainui/jinja2/plainui/fahrplan.html.j2 +++ b/src/plainui/jinja2/plainui/fahrplan.html.j2 @@ -5,43 +5,28 @@ {% import "plainui/components/tagbox.html.j2" as tagMacros with context %} {% macro filter_button(value, active, label) -%} - <button - type="submit" - name="set" - value="{{ value }}" - class="hub-tag {{ 'hub-tag--secondary' if active else 'hub-tag--secondary-outline'}}"> - {{ label }} - </button> + <button type="submit" + name="set" + value="{{ value }}" + class="hub-tag {{ 'hub-tag--secondary' if active else 'hub-tag--secondary-outline'}}">{{ label }}</button> {%- endmacro %} {% macro track_button(t) %} - <button - type="submit" - name="set" - value="t{{ t.slug if t != track else '' }}" - class=" - hub-tag - {% if not t.color %} - {{ 'hub-tag--secondary-outline' if t != track else 'hub-tag--secondary' }} - {% endif %} - " - style=" - {% if t.color %} - color: {{ calculate_text_colour(t.color) if t == track else ('#eeeeee' if calculate_luminance(t.color) < 140 else t.color) }}; - background-color: {{ t.color if t == track else 'transparent' }}; - border: {{ 'none' if t == track else '1px solid ' + t.color }}; - {% endif %} - " - > - {{ t.name }} - </button> + <button type="submit" + name="set" + value="t{{ t.slug if t != track else '' }}" + class=" hub-tag {% if not t.color %}{{ 'hub-tag--secondary-outline' if t != track else 'hub-tag--secondary' }}{% endif %} " + style="{% if t.color %} color: {{ calculate_text_colour(t.color) if t == track else ('#eeeeee' if calculate_luminance(t.color) < 140 else t.color) }}; + background-color: {{ t.color if t == track else 'transparent' }}; + border: {{ 'none' if t == track else '1px solid ' + t.color }}; + {% endif %}">{{ t.name }}</button> {% endmacro %} -{% block title %}Conference {{conf.name}}{% endblock %} +{% block title %}Conference {{ conf.name }}{% endblock %} {% block content %} - {{ navMacro.top_nav(_("Fahrplan")) }} + {{ navMacro.top_nav(_("Fahrplan") ) }} - {# TODO: Download options + {# TODO: Download options <h2>{{ _("download") }}</h2> <div class="row border p-5 text-center mx-0"> <a href="#" class="btn m-2">{{ _("Xcal") }}</a> @@ -50,69 +35,65 @@ <a href="#" class="btn m-2">{{ _("QR-Code") }}</a> </div> #} - <form method="GET" action="#now" class="hub-card mb-2"> - <input type="hidden" name="mode" value="{{mode}}"> - {% if show_assembly_filters %}<input type="hidden" name="show_assembly_filters" value="y">{% endif %} - {% if day %}<input type="hidden" name="day" value="{{day}}">{% endif %} - {% if kind %}<input type="hidden" name="kind" value="{{kind}}">{% endif %} - {% if assembly %}<input type="hidden" name="assembly" value="{{assembly.slug}}">{% endif %} - {% if track %}<input type="hidden" name="track" value="{{track.slug}}">{% endif %} - {% if my_fahrplan %}<input type="hidden" name="my" value="y">{% endif %} - {% if is_recorded is not none %}<input type="hidden" name="rec" value="{{'y' if is_recorded else 'n'}}">{% endif %} - - - <div class="d-flex gap-3 flex-column flex-md-row align-items-start hub-fahrplan__title mb-2"> - <div> - <button - type="submit" - name="set" - value="mlist" - class="hub-fahrplan__view-toggle {{ 'hub-fahrplan__view-toggle--active' if mode == 'list' }}"> - {{ _("fahrplan.filters.list") }} - </button> - <button - type="submit" - name="set" - value="mcalendar" - class="hub-fahrplan__view-toggle {{ 'hub-fahrplan__view-toggle--active' if mode == 'calendar' }}"> - {{ _("fahrplan.filters.calendar") }} - </button> - </div> - </div> - - <div class="hub-tags mb-2"> - {% if user.is_authenticated %} - {{ filter_button("fmy", my_fahrplan, _("My Fahrplan")) }} - - <div class="hub-tag-divider"></div> - {% endif %} + <form method="GET" action="#now" class="hub-card mb-2"> + <input type="hidden" name="mode" value="{{ mode }}"> + {% if show_assembly_filters %}<input type="hidden" name="show_assembly_filters" value="y">{% endif %} + {% if day %}<input type="hidden" name="day" value="{{ day }}">{% endif %} + {% if kind %}<input type="hidden" name="kind" value="{{ kind }}">{% endif %} + {% if assembly %}<input type="hidden" name="assembly" value="{{ assembly.slug }}">{% endif %} + {% if track %}<input type="hidden" name="track" value="{{ track.slug }}">{% endif %} + {% if my_fahrplan %}<input type="hidden" name="my" value="y">{% endif %} + {% if is_recorded is not none %}<input type="hidden" name="rec" value="{{'y' if is_recorded else 'n'}}">{% endif %} + + + <div class="d-flex gap-3 flex-column flex-md-row align-items-start hub-fahrplan__title mb-2"> + <div> + <button type="submit" + name="set" + value="mlist" + class="hub-fahrplan__view-toggle {{ 'hub-fahrplan__view-toggle--active' if mode == 'list' }}"> + {{ _("fahrplan.filters.list") }} + </button> + <button type="submit" + name="set" + value="mcalendar" + class="hub-fahrplan__view-toggle {{ 'hub-fahrplan__view-toggle--active' if mode == 'calendar' }}"> + {{ _("fahrplan.filters.calendar") }} + </button> + </div> + </div> + + <div class="hub-tags mb-2"> + {% if user.is_authenticated %} + {{ filter_button("fmy", my_fahrplan, _("My Fahrplan") ) }} + + <div class="hub-tag-divider"></div> + {% endif %} - {{ filter_button('kall', kind == 'all', _("all")) }} - {{ filter_button('kofficial' if kind != 'official' else 'kall', kind == 'official', _("curated only")) }} - {{ filter_button('kassembly' if kind != 'assembly' else 'kall', kind == 'assembly', _("assembly only")) }} - {{ filter_button('ksos' if kind != 'sos' else 'kall', kind == 'sos', _("selforganized only")) }} - </div> + {{ filter_button('kall', kind == 'all', _("all") ) }} + {{ filter_button('kofficial' if kind != 'official' else 'kall', kind == 'official', _("curated only") ) }} + {{ filter_button('kassembly' if kind != 'assembly' else 'kall', kind == 'assembly', _("assembly only") ) }} + {{ filter_button('ksos' if kind != 'sos' else 'kall', kind == 'sos', _("selforganized only") ) }} + </div> - <div class="hub-tags mb-2"> - {% for n in range(days) %} - {{ filter_button('d' ~ (n if n != day else ''), n == day, _("Day %(n)s", n=n + 1)) }} - {%- endfor %} + <div class="hub-tags mb-2"> + {% for n in range(days) %} + {{ filter_button('d' ~ (n if n != day else '') , n == day, _("Day %(n)s", n=n + 1)) }} + {%- endfor %} - <div class="hub-tag-divider"></div> + <div class="hub-tag-divider"></div> - {{ filter_button("ry" if is_recorded is not true else "r", is_recorded is true, _("recorded only")) }} - {{ filter_button("rn" if is_recorded is not false else "r", is_recorded is false, _("not recorded only")) }} - </div> + {{ filter_button("ry" if is_recorded is not true else "r", is_recorded is true, _("recorded only") ) }} + {{ filter_button("rn" if is_recorded is not false else "r", is_recorded is false, _("not recorded only") ) }} + </div> - <div class="hub-tags"> - {{ tagMacros.tag(_("Tracks"), style="clear") }} + <div class="hub-tags"> + {{ tagMacros.tag(_("Tracks") , style="clear") }} - {% for track in tracks %} - {{ track_button(track) }} - {%- endfor %} - </div> + {% for track in tracks %}{{ track_button(track) }}{%- endfor %} + </div> - {# Leave for future, see above + {# Leave for future, see above {% if show_assembly_filters %} <div class="row justify-content-md-left border"> {% for asmbly in assemblies %} @@ -124,25 +105,17 @@ {% if timezone_warning %} {% call alert.info(class="mb-2") %} - {{ _( - "Your timezone is configured to %(user_timezone)s, conference timezone is %(conf_timezone)s, showing times in your timezone", - user_timezone=current_timezone, - conf_timezone=conference_timezone - ) }} + {{ _("Your timezone is configured to %(user_timezone)s, conference timezone is %(conf_timezone)s, showing times in your timezone", + user_timezone=current_timezone, + conf_timezone=conference_timezone) }} {% endcall %} {% endif %} - {% if mode == 'list' %} - {{ list_events.list(events, my_favorite_events) }} - {% endif %} -{% endblock %} + {% if mode == 'list' %}{{ list_events.list(events, my_favorite_events) }}{% endif %} + {% endblock %} -{% block fullpage_add %} + {% block fullpage_add %} - {% if mode == 'calendar' %} - <div class="p-3 border m-2"> - {{ calendar(events) }} - </div> - {% endif %} + {% if mode == 'calendar' %}<div class="p-3 border m-2">{{ calendar(events) }}</div>{% endif %} -{% endblock %} + {% endblock %} diff --git a/src/plainui/jinja2/plainui/header.html.j2 b/src/plainui/jinja2/plainui/header.html.j2 index 250216e5166d1d77fd8bef719ba019e1e75064bb..fb1c2169444343504e9b4a3e24ff63aefbe8c825 100644 --- a/src/plainui/jinja2/plainui/header.html.j2 +++ b/src/plainui/jinja2/plainui/header.html.j2 @@ -5,104 +5,110 @@ {% set view_name = request.resolver_match.view_name %} <nav class="navbar navbar-expand-lg border-bottom border-bottom"> <div class="container-fluid"> - {% set base_url="" %} + {% set base_url = "" %} {{ logoMacro.logo(base_url, conf.name + " logo", conf.name + " logo") }} - <button - class="navbar-toggler" - type="button" - data-bs-toggle="collapse" - data-bs-target="#hub-nav-components" - aria-controls="hub-nav-components" - aria-expanded="false" - aria-label="Toggle navigation"> + <button class="navbar-toggler" + type="button" + data-bs-toggle="collapse" + data-bs-target="#hub-nav-components" + aria-controls="hub-nav-components" + aria-expanded="false" + aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="hub-nav-components"> -<ul class="navbar-nav ms-auto mb-2 mb-lg-0"> - <li class="nav-item"> - <form class="form-inline mx-auto hub-search" method="POST" action="{{ url('plainui:search') }}" role="search"> - {{ csrf_input }} - <input class="form-control" name="q" type="text" placeholder="{{ _("search") }}" value="{% if search_query is defined %}{{ search_query }}{% endif %}"> - </form> - </li> - <li class="nav-item dropdown">{{ hbtns.globe() }}</li> - {{ hbtns.themeswitcher() }} + <ul class="navbar-nav ms-auto mb-2 mb-lg-0"> + <li class="nav-item"> + <form class="form-inline mx-auto hub-search" + method="POST" + action="{{ url('plainui:search') }}" + role="search"> + {{ csrf_input }} + <input class="form-control" + name="q" + type="text" + placeholder="{{ _('search') }}" + value="{% if search_query is defined %}{{ search_query }}{% endif %}"> + </form> + </li> + <li class="nav-item dropdown">{{ hbtns.globe() }}</li> + {{ hbtns.themeswitcher() }} - <!-- messages --> - {% if request.user.is_authenticated %} - {% if not conf.send_pn_disabled %} - <li class="nav-item"> - {% set chat_url = url('plainui:personal_message') %} - <a href="{{ url('plainui:personal_message') }}" title="{{ _("chat") }}" - class="nav-link" - > - <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope" viewBox="0 0 16 16"> - <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4Zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2Zm13 2.383-4.708 2.825L15 11.105V5.383Zm-.034 6.876-5.64-3.471L8 9.583l-1.326-.795-5.64 3.47A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.741ZM1 11.105l4.708-2.897L1 5.383v5.722Z"/> - </svg> - {% set num_unread = num_of_unread_messages(request) -%} - {% if num_unread %} - <span class="hub-header__badge badge"> - {{ num_unread }} - </span> + <!-- messages --> + {% if request.user.is_authenticated %} + {% if not conf.send_pn_disabled %} + <li class="nav-item"> + {% set chat_url = url('plainui:personal_message') %} + <a href="{{ url('plainui:personal_message') }}" + title="{{ _('chat') }}" + class="nav-link"> + <svg xmlns="http://www.w3.org/2000/svg" + width="16" + height="16" + fill="currentColor" + class="bi bi-envelope" + viewBox="0 0 16 16"> + <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4Zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2Zm13 2.383-4.708 2.825L15 11.105V5.383Zm-.034 6.876-5.64-3.471L8 9.583l-1.326-.795-5.64 3.47A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.741ZM1 11.105l4.708-2.897L1 5.383v5.722Z" /> + </svg> + {% set num_unread = num_of_unread_messages(request) -%} + {% if num_unread %}<span class="hub-header__badge badge">{{ num_unread }}</span>{% endif %} + </a> + </li> + {% endif %} {% endif %} - </a> - </li> - {% endif %} - {% endif %} - <li class="nav-item dropdown"> - <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false"> - <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-circle" viewBox="0 0 16 16"> - <path d="M11 6a3 3 0 1 1-6 0 3 3 0 0 1 6 0z"/> - <path fill-rule="evenodd" d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8zm8-7a7 7 0 0 0-5.468 11.37C3.242 11.226 4.805 10 8 10s4.757 1.225 5.468 2.37A7 7 0 0 0 8 1z"/> - </svg> + <li class="nav-item dropdown"> + <a class="nav-link dropdown-toggle" + href="#" + id="navbarDropdown" + role="button" + data-bs-toggle="dropdown" + aria-expanded="false"> + <svg xmlns="http://www.w3.org/2000/svg" + width="16" + height="16" + fill="currentColor" + class="bi bi-person-circle" + viewBox="0 0 16 16"> + <path d="M11 6a3 3 0 1 1-6 0 3 3 0 0 1 6 0z" /> + <path fill-rule="evenodd" d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8zm8-7a7 7 0 0 0-5.468 11.37C3.242 11.226 4.805 10 8 10s4.757 1.225 5.468 2.37A7 7 0 0 0 8 1z" /> + </svg> </a> - <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdown"> + <ul class="dropdown-menu dropdown-menu-end" + aria-labelledby="navbarDropdown"> {% if request.user.is_authenticated %} - <li> - {% set num_of_pending_badges = num_of_pending_badges(request) -%} - <a - class="dropdown-item" - {% if num_of_pending_badges %} - href="{{ url('plainui:userprofile') }}#badges" - {% else %} - href="{{ url('plainui:userprofile') }}" - {% endif %} - title="{{ _('profile') }}" - > - {{ _('profile') }} - {% if num_of_pending_badges %} - <span class="hub-header__badge badge"> - {{ num_of_pending_badges }} - </span> - {% endif %} - </a> - {%- if report_info -%} - <li> - <a - href="{{ build_report_url(request, report_info=report_info) }}" - class="dropdown-item" - > - {{ _("report this url") }} + <li> + {% set num_of_pending_badges = num_of_pending_badges(request) -%} + <a class="dropdown-item" + {% if num_of_pending_badges %} href="{{ url("plainui:userprofile") }}#badges" {% else %} href="{{ url("plainui:userprofile") }}" {% endif %} + title="{{ _('profile') }}"> + {{ _("profile") }} + {% if num_of_pending_badges %}<span class="hub-header__badge badge">{{ num_of_pending_badges }}</span>{% endif %} </a> - </li> - {% endif %} + {%- if report_info -%} + <li> + <a href="{{ build_report_url(request, report_info=report_info) }}" + class="dropdown-item">{{ _("report this url") }}</a> + </li> + {% endif %} - <li><hr class="dropdown-divider"></li> - <li> - <form action="{{ url('plainui:logout') }}" method="post"> + <li> + <hr class="dropdown-divider"> + </li> + <li> + <form action="{{ url('plainui:logout') }}" method="post"> {{ csrf_input }} - <button class="dropdown-item"> - {{_('logout')}} - </button> - </form> - </li> - {% else %} - <li><a class="dropdown-item" href="{{ url('plainui:login') }}">Login</a></li> - {% endif %} - </ul> - </li> - </ul> + <button class="dropdown-item">{{ _("logout") }}</button> + </form> + </li> + {% else %} + <li> + <a class="dropdown-item" href="{{ url('plainui:login') }}">Login</a> + </li> + {% endif %} + </ul> + </li> + </ul> + </div> </div> - </div> -</nav> + </nav> diff --git a/src/plainui/jinja2/plainui/index.html.j2 b/src/plainui/jinja2/plainui/index.html.j2 index a9e6feaab819c3677ea13c0fbfe9a743c98a8be6..305a9cd2f0dafc80f3a5af6f3fbb5ec9835c4a90 100644 --- a/src/plainui/jinja2/plainui/index.html.j2 +++ b/src/plainui/jinja2/plainui/index.html.j2 @@ -6,77 +6,64 @@ {% import "plainui/components/buttons.html.j2" as buttonsMacro %} {% import "plainui/components/list_events.html.j2" as list_events with context %} -{% block title %}{{conf.name}} - Index{% endblock %} -{% block head %} - <script src="{{ static('plainui/js/player.js') }}" /></script> -{% endblock %} +{% block title %}{{ conf.name }} - Index{% endblock %} +{% block head %}<script src="{{ static('plainui/js/player.js') }}" /></script>{% endblock %} {% block content %} -{% set start_title, start_body = fetch_wiki_page('start') %} -{{ navMacro.top_nav(start_title) }} + {% set start_title, start_body = fetch_wiki_page('start') %} + {{ navMacro.top_nav(start_title) }} -<div class="hub-vlayout"> - {% if conf.is_running and public_streams %} - <div class="hub-hlayout"> - {% for stream in public_streams %} + <div class="hub-vlayout"> + {% if conf.is_running and public_streams %} + <div class="hub-hlayout"> + {% for stream in public_streams %} <div class="hub-card hub-layout-equal"> - <h2 class="hub-section-title"> - {{ stream.name }} - </h2> - {{ integrations.vocPlayer(vocStream=stream.voc_stream_id, playerId=unique_id()) }} + <h2 class="hub-section-title">{{ stream.name }}</h2> + {{ integrations.vocPlayer(vocStream=stream.voc_stream_id, playerId=unique_id() ) }} </div> - {% endfor %} - </div> - {% endif %} + {% endfor %} + </div> + {% endif %} - <div class="hub-row"> + <div class="hub-row"> <div class="hub-col-remaining"> - <div class="hub-card"> - {{ start_body }} - </div> + <div class="hub-card">{{ start_body }}</div> </div> <div class="hub-col-325px hub-card"> - <h2 class="hub-section-title"> - {{ _('index__box-whatshappening__title') }} - </h2> - <div class="hub-vlayout-l"> - {% if conf.is_running %} - <div> - <h3 class="hub-section-title">{{ _('index__box-whatshappening__official') }}</h3> - {{ list_events.list( - upcoming_events_official, - is_favorite_events, - event_class='hub-event--small', - hide_buttons=True - ) }} - </div> + <h2 class="hub-section-title">{{ _("index__box-whatshappening__title") }}</h2> + <div class="hub-vlayout-l"> + {% if conf.is_running %} + <div> + <h3 class="hub-section-title">{{ _("index__box-whatshappening__official") }}</h3> + {{ list_events.list(upcoming_events_official, + is_favorite_events, + event_class='hub-event--small', + hide_buttons=True) }} + </div> - <div> - <h3 class="hub-section-title">{{ _('index__box-whatshappening__selforganized') }}</h3> - {{ list_events.list( - upcoming_events_selforganized, - is_favorite_events, - event_class='hub-event--small', - hide_buttons=True - ) }} - </div> - {% elif conf.has_ended %} - <p>{{ _('index__box-whatshappening__ended') }}</p> - {% else %} - <p>{{ _('index__box-whatshappening__waiting') }}</p> - <p class="fs-3 fw-bold">{{ _('index__box-whatshappening__day') }} {{ conf.current_day }}</p> - {% endif %} - </div> - <div class="d-flex justify-content-end"> - {{ buttonsMacro.primary( - _('index__box-whatshappening__fahrplanlink'), - url('plainui:fahrplan'), - icon='calendar-week' - ) }} - </div> + <div> + <h3 class="hub-section-title">{{ _("index__box-whatshappening__selforganized") }}</h3> + {{ list_events.list(upcoming_events_selforganized, + is_favorite_events, + event_class='hub-event--small', + hide_buttons=True) }} + </div> + {% elif conf.has_ended %} + <p>{{ _("index__box-whatshappening__ended") }}</p> + {% else %} + <p>{{ _("index__box-whatshappening__waiting") }}</p> + <p class="fs-3 fw-bold">{{ _("index__box-whatshappening__day") }} {{ conf.current_day }}</p> + {% endif %} + </div> + <div class="d-flex justify-content-end"> + {{ buttonsMacro.primary(_('index__box-whatshappening__fahrplanlink') , + url('plainui:fahrplan'), + icon='calendar-week' + ) }} + </div> </div> + </div> </div> -</div> {% endblock %} diff --git a/src/plainui/jinja2/plainui/landing.html.j2 b/src/plainui/jinja2/plainui/landing.html.j2 index 8cce28eb72026e16914747d93e7f26bfb92bf75b..c33b6614df9c06aa307be1ade9b3dd42f8ee5829 100644 --- a/src/plainui/jinja2/plainui/landing.html.j2 +++ b/src/plainui/jinja2/plainui/landing.html.j2 @@ -1,19 +1,25 @@ {% extends "plainui/base.html.j2" %} -{% block title %}Conference {{conf.name}}{% endblock %} +{% block title %}Conference {{ conf.name }}{% endblock %} {% block fullpage %} -<article class="hub-landing"> - <nav class="navbar navbar-expand-lg navbar-light fixed-top" id="mainNav"> - <div class="container px-4 px-lg-5"> - <a class="navbar-brand" href="#page-top">{{ conf.name }}</a> - <button class="navbar-toggler navbar-toggler-right" type="button" data-bs-toggle="collapse" data-bs-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation"> - Menu - <i class="fas fa-bars"></i> - </button> - <div class="collapse navbar-collapse" id="navbarResponsive"> - <ul class="navbar-nav ms-auto"> - {%- if request.user.is_authenticated %} - {# TODO: look if world exists + <article class="hub-landing"> + <nav class="navbar navbar-expand-lg navbar-light fixed-top" id="mainNav"> + <div class="container px-4 px-lg-5"> + <a class="navbar-brand" href="#page-top">{{ conf.name }}</a> + <button class="navbar-toggler navbar-toggler-right" + type="button" + data-bs-toggle="collapse" + data-bs-target="#navbarResponsive" + aria-controls="navbarResponsive" + aria-expanded="false" + aria-label="Toggle navigation"> + Menu + <i class="fas fa-bars"></i> + </button> + <div class="collapse navbar-collapse" id="navbarResponsive"> + <ul class="navbar-nav ms-auto"> + {%- if request.user.is_authenticated %} + {# TODO: look if world exists <a href="{{ url('plainui:world') }}" title="{{ _("world") }}" @@ -22,84 +28,51 @@ {{ _("world") }} </a> #} - <a - href="{{ url('plainui:index') }}" - title="{{ _("platform") }}" - class="hub-header-link nav-link" - > - {{ _("platform") }} - </a> - <a - href="{{ url('plainui:public_fahrplan' ) }}" - title="{{ _("fahrplan") }}" - class="hub-header-link nav-link" - target="_blank" - > - {{ _("fahrplan") }} - </a> - <a - href="{{ url('plainui:static_page', page_slug='start' ) }}" - title="{{ _("info") }}" - class="hub-header-link nav-link" - > - {{ _("info") }} - </a> - <a - href="https://tickets.events.ccc.de/{{ conf.slug }}-merch/" - title="{{ _("merch") }}" - class="hub-header-link external nav-link" - target="_blank" - > - {{ _("merch") }} - </a> - <form action="{{ url('plainui:logout') }}" method="post"> - {{ csrf_input }} - <button class="hub-header-link nav-link"> - {{_('logout')}} - </button> - </form> - {% else %} - <a - href="{{ url('plainui:login') }}" - title="{{ _("login") }}" - class="hub-header-link nav-link" - > - {{ _("login") }} - </a> - <a - href="{{ url('plainui:public_fahrplan' ) }}" - title="{{ _("fahrplan") }}" - class="hub-header-link nav-link" - target="_blank" - > - {{ _("fahrplan") }} - </a> - <a - href="https://tickets.events.ccc.de/{{ conf.slug }}/" - target="_blank" - rel="external, noreferrer" - title="{{ _("ticket") }}" - class="hub-header-link external nav-link" - > - {{ _("ticket") }} - </a> - <a - href="https://tickets.events.ccc.de/{{ conf.slug }}-merch" - title="{{ _("merch") }}" - class="hub-header-link external nav-link" - target="_blank" - > - {{ _("merch") }} - </a> - {% endif %} - </ul> - </div> - </div> - </nav> - <!-- Masthead--> - <header class="landing"> - <img src="{{ static('plainui/logo/landingpage.png') }}" class="mx-auto d-flex justify-content-center" > - </header> -</article> + <a href="{{ url('plainui:index') }}" + title="{{ _('platform') }}" + class="hub-header-link nav-link">{{ _('platform') }}</a> + <a href="{{ url('plainui:public_fahrplan') }}" + title="{{ _('fahrplan') }}" + class="hub-header-link nav-link" + target="_blank">{{ _('fahrplan') }}</a> + <a href="{{ url('plainui:static_page', page_slug='start') }}" + title="{{ _('info') }}" + class="hub-header-link nav-link">{{ _('info') }}</a> + <a href="https://tickets.events.ccc.de/{{ conf.slug }}-merch/" + title="{{ _('merch') }}" + class="hub-header-link external nav-link" + target="_blank">{{ _('merch') }}</a> + <form action="{{ url('plainui:logout') }}" method="post"> + {{ csrf_input }} + <button class="hub-header-link nav-link">{{ _("logout") }}</button> + </form> + {% else %} + <a href="{{ url('plainui:login') }}" + title="{{ _('login') }}" + class="hub-header-link nav-link">{{ _('login') }}</a> + <a href="{{ url('plainui:public_fahrplan') }}" + title="{{ _('fahrplan') }}" + class="hub-header-link nav-link" + target="_blank">{{ _('fahrplan') }}</a> + <a href="https://tickets.events.ccc.de/{{ conf.slug }}/" + target="_blank" + rel="external, noreferrer" + title="{{ _('ticket') }}" + class="hub-header-link external nav-link">{{ _('ticket') }}</a> + <a href="https://tickets.events.ccc.de/{{ conf.slug }}-merch" + title="{{ _('merch') }}" + class="hub-header-link external nav-link" + target="_blank">{{ _('merch') }}</a> + {% endif %} + </ul> + </div> + </div> + </nav> + <!-- Masthead--> + <header class="landing"> + <img src="{{ static('plainui/logo/landingpage.png') }}" + class="mx-auto d-flex justify-content-center"> + </header> + </article> {% endblock %} diff --git a/src/plainui/jinja2/plainui/login.html.j2 b/src/plainui/jinja2/plainui/login.html.j2 index c58caff7477105c134268f0023fefe337c221ae9..e87fb1c48c8bb8f15b53aaf86f85a511f246de45 100644 --- a/src/plainui/jinja2/plainui/login.html.j2 +++ b/src/plainui/jinja2/plainui/login.html.j2 @@ -3,56 +3,54 @@ {% import "plainui/components/form_elements.html.j2" as formElementsMacro %} {% import "plainui/components/logo.html.j2" as logoMacro %} -{% block title %}{{ _("%(conf)s - Login", conf=conf.name) }}{% endblock %} +{% block title %} + {{ _("%(conf)s - Login", conf=conf.name) }} +{% endblock %} {% block fullpage %} -<article class="container"> + <article class="container"> <figure class="hub-landing__logo"> - {{ logoMacro.logo(url('plainui:index'), conf.name + " logo", conf.name + " - logo", "rounded mx-auto d-block") }} + {{ logoMacro.logo(url('plainui:index') , conf.name + " logo", conf.name + " + logo", "rounded mx-auto d-block") }} </figure> <div class="mw-320 mx-auto"> - <h2>{{ _("Login") }}</h2> - {% if not archive_mode %} + <h2>{{ _("Login") }}</h2> + {% if not archive_mode %} <form method="POST" id="login" class="hub-landing__form"> - <!--<h1 class="text-center bg-secondary p-2 text-dark h3 m-0">{{ _("login") }}</h1>--> - <div class=""> - <input type="hidden" name="next" value="{{next}}"> - - {{ csrf_input }} - {{ formElementsMacro.errors(form) }} - {{ formElementsMacro.text(form, 'username') }} - {{ formElementsMacro.password(form, 'password') }} - {% if form['plainui_theme'] %} - {{ formElementsMacro.select(form, 'plainui_theme') }} - {% endif %} - - <div class="d-grid gap-2 my-3"> - <button type="submit" class="btn btn-primary" form="login">{{ _("Login") }}</button> - <span class="text-center">oder</span> - <a href="{{ url('plainui:password_reset') }}" class="btn btn-secondary" title="{{ _(" Reset - Password") }}"> - {{ _("Reset Password") }} - </a> - </div> - <p class="mb-2 text-white">{{ _("login--cookieinfo") }}</p> - - <hr class="hub-spacer"> - <h3>{{ _("New here?") }}</h3> - <div class="d-grid"> - <a href="{{ url('plainui:signup') }}" class="btn btn-primary" title="{{ _(" sign up (new - account)") }}"> - {{ _("sign up (new account)") }} - </a> - </div> + <!--<h1 class="text-center bg-secondary p-2 text-dark h3 m-0">{{ _("login") }}</h1>--> + <div class=""> + <input type="hidden" name="next" value="{{ next }}"> + + {{ csrf_input }} + {{ formElementsMacro.errors(form) }} + {{ formElementsMacro.text(form, 'username') }} + {{ formElementsMacro.password(form, 'password') }} + {% if form['plainui_theme'] %}{{ formElementsMacro.select(form, 'plainui_theme') }}{% endif %} + + <div class="d-grid gap-2 my-3"> + <button type="submit" class="btn btn-primary" form="login">{{ _("Login") }}</button> + <span class="text-center">oder</span> + <a href="{{ url('plainui:password_reset') }}" + class="btn btn-secondary" + title="{{ _('Reset Password') }}">{{ _('Reset Password') }}</a> + </div> + <p class="mb-2 text-white">{{ _("login--cookieinfo") }}</p> + + <hr class="hub-spacer"> + <h3>{{ _("New here?") }}</h3> + <div class="d-grid"> + <a href="{{ url('plainui:signup') }}" + class="btn btn-primary" + title="{{ _('sign up (new account)') }}">{{ _('sign up (new account)') }}</a> </div> + </div> </form> - {% else %} - <p class="mb-2 text-white">{{ _("archivemode_nologin") }}</p> - {% endif %} + {% else %} + <p class="mb-2 text-white">{{ _("archivemode_nologin") }}</p> + {% endif %} </div> <hr class="hub-spacer"> -</article> + </article> {% endblock %} diff --git a/src/plainui/jinja2/plainui/metanav.html.j2 b/src/plainui/jinja2/plainui/metanav.html.j2 index 07e480ca8b4037ac483d5e78d4e110a682a3ab25..a530c226dcaa61984ccd632bfd2daa939d99cb86 100644 --- a/src/plainui/jinja2/plainui/metanav.html.j2 +++ b/src/plainui/jinja2/plainui/metanav.html.j2 @@ -1,26 +1,34 @@ -{% if include_header %}<!DOCTYPE html> -<html> +{% if include_header %} + <!DOCTYPE html> + <html> <head> - <title>{{ conf.slug }} Meta Navigation</title> + <title>{{ conf.slug }} Meta Navigation</title> </head> -<body> -{% endif %} + <body> + {% endif %} -<!-- API: {{ hub_absolute("api:conference-metanav") }} --> -<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;"> -{% for item in items %} - <!-- {{ item.slug }} [enabled={{ item.enabled }}] --> - <a href="{% if item.enabled %}{{ item.url }}{% endif %}"{% if not item.enabled %} disabled aria-disabled="true"{% endif %} - title="{{ item.title }}" - style="{% filter trim %} - {% if not item.enabled %}cursor: not-allowed; pointer-events: none;{% endif %} - {% if active_item == item.slug %}background-color: yellow;{% endif %} - {% endfilter %}"> - {% if active_theme() != "dark" %}{{ item.graphic_light|safe }}{% else %}{{ item.get_graphic_dark()|safe }}{% endif %} - </a> -{% endfor %} -</div> + <!-- API: {{ hub_absolute("api:conference-metanav") }} --> + <div style="display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px"> + {% for item in items %} + <!-- {{ item.slug }} [enabled={{ item.enabled }}] --> + <a href="{% if item.enabled %}{{ item.url }}{% endif %}" + {% if not item.enabled %}disabled aria-disabled="true"{% endif %} + title="{{ item.title }}" + style="{% filter trim %} {% if not item.enabled %}cursor: not-allowed; + pointer-events: none; + {% endif %} {% if active_item == item.slug %}background-color: yellow;{% endif %} {% endfilter %}"> + {% if active_theme() != "dark" %} + {{ item.graphic_light|safe }} + {% else %} + {{ item.get_graphic_dark() |safe }} + {% endif %} + </a> + {% endfor %} + </div> -{% if include_header %} -</body> -</html>{% endif %} + {% if include_header %} + </body> + </html> +{% endif %} diff --git a/src/plainui/jinja2/plainui/password_change.html.j2 b/src/plainui/jinja2/plainui/password_change.html.j2 index b22ebd85359a8a20af8412f1a64f63bb6fcfe9c2..d1d695a7eb470273aade8a349fc2925e0e5d4bf0 100644 --- a/src/plainui/jinja2/plainui/password_change.html.j2 +++ b/src/plainui/jinja2/plainui/password_change.html.j2 @@ -1,29 +1,28 @@ {% import "plainui/components/form_elements.html.j2" as form_elements %} {% import "plainui/components/logo.html.j2" as logoMacro %} {% extends "plainui/base.html.j2" %} -{% block title %}{{conf.name}} - {{ _("Change Password") }}{% endblock %} +{% block title %}{{ conf.name }} - {{ _("Change Password") }}{% endblock %} {% block content %} -<div class="row justify-content-center px-6 mt-11 mb-8"> - <div class="col-auto"> - {{ logoMacro.logo(url('plainui:index'), conf.name + " logo", conf.name + " logo") }} - </div> -</div> + <div class="row justify-content-center px-6 mt-11 mb-8"> + <div class="col-auto">{{ logoMacro.logo(url('plainui:index') , conf.name + " logo", conf.name + " logo") }}</div> + </div> -<form method="POST" class="mw-810 border p-0 mx-auto mb-11{% if error %} border-danger{% endif %} mt-6"> + <form method="POST" + class="mw-810 border p-0 mx-auto mb-11{% if error %} border-danger{% endif %} mt-6"> <h2 class="bg-secondary text-center text-dark m-0 px-3 py-1">{{ _("Change password") }}</h2> <div class="p-3"> - {{ csrf_input }} - {{ form_elements.password(form, 'old_password') }} - {{ form_elements.password(form, 'new_password1') }} - {{ form_elements.password(form, 'new_password2') }} - <ul class="d-flex justify-content-center list-unstyled mb-0 pt-3"> - <li class="mx-2"> - <button type="submit" class="btn btn-primary">{{ _("Change Password") }}</button> - </li> - </ul> - {{ form_elements.errors(form) }} + {{ csrf_input }} + {{ form_elements.password(form, 'old_password') }} + {{ form_elements.password(form, 'new_password1') }} + {{ form_elements.password(form, 'new_password2') }} + <ul class="d-flex justify-content-center list-unstyled mb-0 pt-3"> + <li class="mx-2"> + <button type="submit" class="btn btn-primary">{{ _("Change Password") }}</button> + </li> + </ul> + {{ form_elements.errors(form) }} </div> -</form> + </form> {% endblock %} diff --git a/src/plainui/jinja2/plainui/password_reset_complete.html.j2 b/src/plainui/jinja2/plainui/password_reset_complete.html.j2 index 2d33b1441f702e703eea0def163e6dd47ce0106d..434f1503374562b13dca3098e52e2ee559932297 100644 --- a/src/plainui/jinja2/plainui/password_reset_complete.html.j2 +++ b/src/plainui/jinja2/plainui/password_reset_complete.html.j2 @@ -1,29 +1,27 @@ {% extends "plainui/base.html.j2" %} {% import "plainui/components/logo.html.j2" as logoMacro %} -{% block title %}{{ _("%(conf)s - Password Reset complete", conf=conf.name) }}{% endblock %} +{% block title %} + {{ _("%(conf)s - Password Reset complete", conf=conf.name) }} +{% endblock %} {% block fullpage %} -<article class="hub-landing"> + <article class="hub-landing"> <figure class="hub-landing__logo"> - {{ logoMacro.logo(url('plainui:index'), conf.name + " logo", conf.name + " logo") }} + {{ logoMacro.logo(url('plainui:index') , conf.name + " logo", conf.name + " logo") }} </figure> <div class="mw-664 border p-0 mx-auto"> - <h2 class="text-center bg-secondary m-0 text-dark py-1">{{ title }}</h2> - <div class="p-3"> - <p class="mt-5 mb-3 text-white text-center">{{ _("Your password has been set. You may go ahead and log in now.") }}</p> - <p class="text-center"> - <a - href="{{ url('plainui:login') }}" - title="{{ _("Login") }}" - class="btn btn-primary" - > - {{ _("Login") }} - </a> - </p> - </div> + <h2 class="text-center bg-secondary m-0 text-dark py-1">{{ title }}</h2> + <div class="p-3"> + <p class="mt-5 mb-3 text-white text-center">{{ _("Your password has been set. You may go ahead and log in now.") }}</p> + <p class="text-center"> + <a href="{{ url('plainui:login') }}" + title="{{ _('Login') }}" + class="btn btn-primary">{{ _('Login') }}</a> + </p> + </div> </div> <hr class="hub-spacer"> -</article> + </article> {% endblock %} diff --git a/src/plainui/jinja2/plainui/password_reset_confirm.html.j2 b/src/plainui/jinja2/plainui/password_reset_confirm.html.j2 index 9d4d3fa26a1b503ae10d11f2fab6e142831584d1..0f819db27a78f940b3ae2c7e62a76ef25cf05931 100644 --- a/src/plainui/jinja2/plainui/password_reset_confirm.html.j2 +++ b/src/plainui/jinja2/plainui/password_reset_confirm.html.j2 @@ -1,39 +1,37 @@ {% import "plainui/components/form_elements.html.j2" as form_elements %} {% import "plainui/components/logo.html.j2" as logoMacro %} {% extends "plainui/base.html.j2" %} -{% block title %}{{ _("%(conf)s - Reset Password", conf=conf.name) }}{% endblock %} +{% block title %} + {{ _("%(conf)s - Reset Password", conf=conf.name) }} +{% endblock %} {% block fullpage %} -<article class="hub-landing"> + <article class="hub-landing"> <figure class="hub-landing__logo"> - {{ logoMacro.logo(url('plainui:index'), conf.name + " logo", conf.name + " logo") }} + {{ logoMacro.logo(url('plainui:index') , conf.name + " logo", conf.name + " logo") }} </figure> <form method="POST" id="login-change" class="mw-664 hub-landing__form"> - <!--<h1 class="text-center bg-secondary p-3 text-dark h3">{{ _("enter new password") }}</h1>--> - <div class=""> - <input type="hidden" name="next" value="{{next}}"> - {{ csrf_input }} - {{ form_elements.password(form, 'new_password1') }} - {{ form_elements.password(form, 'new_password2') }} - <ul class="d-flex justify-content-center list-unstyled mb-0"> - <li class="mx-2 mb-3 mb-lg-0"> - <a - href="{{ url('plainui:login') }}" - title="{{ _("Login") }}" - class="btn btn-transparent" - > - {{ _("Login") }} - </a> - </li> - <li class="mx-2"> - <button type="submit" class="btn btn-primary" form="login-change">{{ _("Change Password") }}</button> - </li> - </ul> - {{ form_elements.errors(form) }} - </div> + <!--<h1 class="text-center bg-secondary p-3 text-dark h3">{{ _("enter new password") }}</h1>--> + <div class=""> + <input type="hidden" name="next" value="{{ next }}"> + {{ csrf_input }} + {{ form_elements.password(form, 'new_password1') }} + {{ form_elements.password(form, 'new_password2') }} + <ul class="d-flex justify-content-center list-unstyled mb-0"> + <li class="mx-2 mb-3 mb-lg-0"> + <a href="{{ url('plainui:login') }}" + title="{{ _('Login') }}" + class="btn btn-transparent">{{ _('Login') }}</a> + </li> + <li class="mx-2"> + <button type="submit" class="btn btn-primary" form="login-change">{{ _("Change Password") }}</button> + </li> + </ul> + {{ form_elements.errors(form) }} + </div> </form> <hr class="hub-spacer"> -</article> + </article> {% endblock %} diff --git a/src/plainui/jinja2/plainui/password_reset_done.html.j2 b/src/plainui/jinja2/plainui/password_reset_done.html.j2 index 0bab2a808bf5e14adc8f6e50fe8475cf446e77d1..37feafd8311724dd18292cfd1579a2dae7a12afd 100644 --- a/src/plainui/jinja2/plainui/password_reset_done.html.j2 +++ b/src/plainui/jinja2/plainui/password_reset_done.html.j2 @@ -1,32 +1,34 @@ {% extends "plainui/base.html.j2" %} {% import "plainui/components/logo.html.j2" as logoMacro %} -{% block title %}{{ _("%(conf)s - Password Reset sent", conf=conf.name) }}{% endblock %} +{% block title %} + {{ _("%(conf)s - Password Reset sent", conf=conf.name) }} +{% endblock %} {% block fullpage %} -<article class="hub-landing"> + <article class="hub-landing"> <figure class="hub-landing__logo"> - {{ logoMacro.logo(url('plainui:index'), conf.name + " logo", conf.name + " logo") }} + {{ logoMacro.logo(url('plainui:index') , conf.name + " logo", conf.name + " logo") }} </figure> <h1 class="text-center hub-landing__title">welcome to {{ conf.name }}</h1> <div class="mw-664 border p-0 mx-auto"> - <h2 class="text-center bg-secondary m-0 text-dark py-1">{{ title }}</h2> - <div class="p-3"> - <p class="mt-5 mb-3 text-white text-center">{{ _("We’ve emailed you instructions for setting your password, if an account exists with the email you entered. You should receive them shortly.") }}</p> - <p class="mb-5 text-white text-center">{{ _("If you don’t receive an email, please make sure you’ve entered the address you registered with, and check your spam folder.") }}</p> - <p class="text-center"> - <a - href="{{ url('plainui:login') }}" - title="{{ _("Login") }}" - class="btn btn-primary" - > - {{ _("Login") }} - </a> - </p> - </div> + <h2 class="text-center bg-secondary m-0 text-dark py-1">{{ title }}</h2> + <div class="p-3"> + <p class="mt-5 mb-3 text-white text-center"> + {{ _("We’ve emailed you instructions for setting your password, if an account exists with the email you entered. You should receive them shortly.") }} + </p> + <p class="mb-5 text-white text-center"> + {{ _("If you don’t receive an email, please make sure you’ve entered the address you registered with, and check your spam folder.") }} + </p> + <p class="text-center"> + <a href="{{ url('plainui:login') }}" + title="{{ _('Login') }}" + class="btn btn-primary">{{ _('Login') }}</a> + </p> + </div> </div> <hr class="hub-spacer"> -</article> + </article> {% endblock %} diff --git a/src/plainui/jinja2/plainui/personal_message_list.html.j2 b/src/plainui/jinja2/plainui/personal_message_list.html.j2 index d7aca01a651cd0ef9dbfa7eae9a7d9e4cdfa0eb6..cceea96e7fbb3041a749954e8e7af9814a640d34 100644 --- a/src/plainui/jinja2/plainui/personal_message_list.html.j2 +++ b/src/plainui/jinja2/plainui/personal_message_list.html.j2 @@ -3,109 +3,158 @@ {% extends "plainui/base.html.j2" %} -{% block title %}{{conf.name}} - {{ _("Personal Messages") }}{% endblock %} +{% block title %}{{ conf.name }} - {{ _("Personal Messages") }}{% endblock %} {% block content %} -{{ navMacro.top_nav(_("Personal Messages")) }} + {{ navMacro.top_nav(_("Personal Messages") ) }} -<div class="m-0 my-6 p-0 text-left"> + <div class="m-0 my-6 p-0 text-left"> <ul class="m-0 d-flex list-unstyled"> - {% if sent_mode %} - <li class="py-2"> - <a role="button" class="a a-bold" href="{{ url('plainui:personal_message') }}">{{_("Inbox")}}</a> - </li> - {% endif %} - {% if not sent_mode %} - <li class="py-2"> - <a role="button" class="a a-bold" href="{{ url('plainui:personal_message_outbox') }}">{{_("Outbox")}}</a> - </li> - {% endif %} - <li class="ms-auto py-2"> - <a role="button" class="btn" href="{{ url('plainui:personal_message_send') }}">{{_("New PM")}}</a> + {% if sent_mode %} + <li class="py-2"> + <a role="button" + class="a a-bold" + href="{{ url('plainui:personal_message') }}">{{ _("Inbox") }}</a> </li> + {% endif %} + {% if not sent_mode %} + <li class="py-2"> + <a role="button" + class="a a-bold" + href="{{ url('plainui:personal_message_outbox') }}">{{ _("Outbox") }}</a> + </li> + {% endif %} + <li class="ms-auto py-2"> + <a role="button" + class="btn" + href="{{ url('plainui:personal_message_send') }}">{{ _("New PM") }}</a> + </li> </ul> -</div> + </div> -<div class="border p-0 mx-0 mb-11"> - <h2 class="bg-secondary text-center text-dark m-0 px-3 py-1">{% if not sent_mode %}{{ _("Received Messages") }} {% else %}{{ _("Sent Messages") }}{% endif %}</h2> - <form method="POST" action="{{ url('plainui:personal_message_delete') }}" class="p-3"> - {{ csrf_input }} - <p class="mb-3 font-headings text-white text-right p-0"> - {{ msgs | length }} {{ _("messages_x_of_n") }} {{ total }} - </p> - <ul class="list-unstyled mb-0"> - {%- for msg in msgs %} - <li class="hub-tile-message card mb-5"> - <article class="row no-gutters flex-nowrap"> - <figure class="hub-tile-message__icon-col col mb-0"> - <a class="hub-tile-message__icon-container text-white" href="{{ url('plainui:personal_message_show', msg_id=msg.id) }}"> - {% if not sent_mode %} - {% if msg.has_responded %} - <svg class="hub-tile-message__icon-flag" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-reply-fill" viewBox="0 0 16 16"> - <title>{{_("messages_was_responded")}}</title> - <path transform="translate(16), scale(-1, 1)" d="M9.079 11.9l4.568-3.281a.719.719 0 0 0 0-1.238L9.079 4.1A.716.716 0 0 0 8 4.719V6c-1.5 0-6 0-7 8 2.5-4.5 7-4 7-4v1.281c0 .56.606.898 1.079.62z"/> - </svg> - {% endif %} - {% if msg.was_read %} - <svg class="hub-tile-message__icon" xmlns="http://www.w3.org/2000/svg" width="3.125rem" height="3.125rem" fill="currentColor" class="bi bi-envelope-open" viewBox="0 0 16 16"> - <title>{{_("messages_was_read")}}</title> - <path d="M8.47 1.318a1 1 0 0 0-.94 0l-6 3.2A1 1 0 0 0 1 5.4v.818l5.724 3.465L8 8.917l1.276.766L15 6.218V5.4a1 1 0 0 0-.53-.882l-6-3.2zM15 7.388l-4.754 2.877L15 13.117v-5.73zm-.035 6.874L8 10.083l-6.965 4.18A1 1 0 0 0 2 15h12a1 1 0 0 0 .965-.738zM1 13.117l4.754-2.852L1 7.387v5.73zM7.059.435a2 2 0 0 1 1.882 0l6 3.2A2 2 0 0 1 16 5.4V14a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V5.4a2 2 0 0 1 1.059-1.765l6-3.2z"/> - </svg> - {% else %} - <svg class="hub-tile-message__icon" xmlns="http://www.w3.org/2000/svg" width="3.125rem" height="3.125rem" fill="currentColor" class="bi bi-envelope-fill" viewBox="0 0 16 16"> - <title>{{_("messages_is_new")}}</title> - <path d="M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414.05 3.555zM0 4.697v7.104l5.803-3.558L0 4.697zM6.761 8.83l-6.57 4.027A2 2 0 0 0 2 14h12a2 2 0 0 0 1.808-1.144l-6.57-4.027L8 9.586l-1.239-.757zm3.436-.586L16 11.801V4.697l-5.803 3.546z"/> - </svg> - {% endif %} - {% else %} - <svg class="hub-tile-message__icon" xmlns="http://www.w3.org/2000/svg" width="3.125rem" height="3.125rem" fill="currentColor" class="bi bi-mailbox" viewBox="0 0 16 16"> - <title>{{_("messages_was_sent")}}</title> - <path fill-rule="evenodd" d="M6 8a.5.5 0 0 0 .5.5h5.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3a.5.5 0 0 0 0-.708l-3-3a.5.5 0 0 0-.708.708L12.293 7.5H6.5A.5.5 0 0 0 6 8zm-2.5 7a.5.5 0 0 1-.5-.5v-13a.5.5 0 0 1 1 0v13a.5.5 0 0 1-.5.5z"/> - </svg> - {% endif %} - </a> - </figure> - <section class="col pt-3 px-2"> + <div class="border p-0 mx-0 mb-11"> + <h2 class="bg-secondary text-center text-dark m-0 px-3 py-1"> + {% if not sent_mode %} + {{ _("Received Messages") }} + {% else %} + {{ _("Sent Messages") }} + {% endif %} + </h2> + <form method="POST" + action="{{ url('plainui:personal_message_delete') }}" + class="p-3"> + {{ csrf_input }} + <p class="mb-3 font-headings text-white text-right p-0">{{ msgs | length }} {{ _("messages_x_of_n") }} {{ total }}</p> + <ul class="list-unstyled mb-0"> + {%- for msg in msgs %} + <li class="hub-tile-message card mb-5"> + <article class="row no-gutters flex-nowrap"> + <figure class="hub-tile-message__icon-col col mb-0"> + <a class="hub-tile-message__icon-container text-white" + href="{{ url('plainui:personal_message_show', msg_id=msg.id) }}"> + {% if not sent_mode %} + {% if msg.has_responded %} + <svg class="hub-tile-message__icon-flag" + xmlns="http://www.w3.org/2000/svg" + width="16" + height="16" + fill="currentColor" + class="bi bi-reply-fill" + viewBox="0 0 16 16"> + <title>{{ _("messages_was_responded") }}</title> + <path transform="translate(16), scale(-1, 1)" d="M9.079 11.9l4.568-3.281a.719.719 0 0 0 0-1.238L9.079 4.1A.716.716 0 0 0 8 4.719V6c-1.5 0-6 0-7 8 2.5-4.5 7-4 7-4v1.281c0 .56.606.898 1.079.62z" /> + </svg> + {% endif %} + {% if msg.was_read %} + <svg class="hub-tile-message__icon" + xmlns="http://www.w3.org/2000/svg" + width="3.125rem" + height="3.125rem" + fill="currentColor" + class="bi bi-envelope-open" + viewBox="0 0 16 16"> + <title>{{ _("messages_was_read") }}</title> + <path d="M8.47 1.318a1 1 0 0 0-.94 0l-6 3.2A1 1 0 0 0 1 5.4v.818l5.724 3.465L8 8.917l1.276.766L15 6.218V5.4a1 1 0 0 0-.53-.882l-6-3.2zM15 7.388l-4.754 2.877L15 13.117v-5.73zm-.035 6.874L8 10.083l-6.965 4.18A1 1 0 0 0 2 15h12a1 1 0 0 0 .965-.738zM1 13.117l4.754-2.852L1 7.387v5.73zM7.059.435a2 2 0 0 1 1.882 0l6 3.2A2 2 0 0 1 16 5.4V14a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V5.4a2 2 0 0 1 1.059-1.765l6-3.2z" /> + </svg> + {% else %} + <svg class="hub-tile-message__icon" + xmlns="http://www.w3.org/2000/svg" + width="3.125rem" + height="3.125rem" + fill="currentColor" + class="bi bi-envelope-fill" + viewBox="0 0 16 16"> + <title>{{ _("messages_is_new") }}</title> + <path d="M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414.05 3.555zM0 4.697v7.104l5.803-3.558L0 4.697zM6.761 8.83l-6.57 4.027A2 2 0 0 0 2 14h12a2 2 0 0 0 1.808-1.144l-6.57-4.027L8 9.586l-1.239-.757zm3.436-.586L16 11.801V4.697l-5.803 3.546z" /> + </svg> + {% endif %} + {% else %} + <svg class="hub-tile-message__icon" + xmlns="http://www.w3.org/2000/svg" + width="3.125rem" + height="3.125rem" + fill="currentColor" + class="bi bi-mailbox" + viewBox="0 0 16 16"> + <title>{{ _("messages_was_sent") }}</title> + <path fill-rule="evenodd" d="M6 8a.5.5 0 0 0 .5.5h5.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3a.5.5 0 0 0 0-.708l-3-3a.5.5 0 0 0-.708.708L12.293 7.5H6.5A.5.5 0 0 0 6 8zm-2.5 7a.5.5 0 0 1-.5-.5v-13a.5.5 0 0 1 1 0v13a.5.5 0 0 1-.5.5z" /> + </svg> + {% endif %} + </a> + </figure> + <section class="col pt-3 px-2"> - {% set recipient = msg.sender.display_name if not sent_mode else msg.recipient.display_name %} - {% set recipient_pronouns = msg.sender.pronouns if not sent_mode else msg.recipient.pronouns %} - {% set recipient_slug = msg.sender.slug if not sent_mode else msg.recipient.slug %} + {% set recipient = msg.sender.display_name if not sent_mode else msg.recipient.display_name %} + {% set recipient_pronouns = msg.sender.pronouns if not sent_mode else msg.recipient.pronouns %} + {% set recipient_slug = msg.sender.slug if not sent_mode else msg.recipient.slug %} - <a class="text-white" href="{{ url('plainui:personal_message_show', msg_id=msg.id) }}"> - <p class="px-2 card-title h4 text-white"> - {{msg.subject}} - </p> - </a> + <a class="text-white" + href="{{ url('plainui:personal_message_show', msg_id=msg.id) }}"> + <p class="px-2 card-title h4 text-white">{{ msg.subject }}</p> + </a> - <footer class="card-footer d-flex align-items-center bg-transparent text-white font-sans-serif fs-medium"> - <a class="pe-1 a a-bold" href="{{ url('plainui:user', user_slug=recipient_slug) }}">{{recipient}},</a> - <time datetime="{{ msg.timestamp }}">{{msg.timestamp | strftime}}</time> - <div class="d-inline-flex ms-auto"> - <a class="me-2 btn-icon-big btn btn-transparent" title="{{_("read")}}" href="{{ url('plainui:personal_message_show', msg_id=msg.id) }}"> - <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-double-right" viewBox="0 0 16 16"> - <path fill-rule="evenodd" d="M3.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L9.293 8 3.646 2.354a.5.5 0 0 1 0-.708z"/> - <path fill-rule="evenodd" d="M7.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L13.293 8 7.646 2.354a.5.5 0 0 1 0-.708z"/> - </svg> - </a> - <button class="me-2 btn-icon-big btn btn-transparent" type="submit" name="id" value="{{msg.id}}" title="{{ _("messages_delete") }}"> - <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-trash" viewBox="0 0 16 16"> - <path d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6z"/> - <path fill-rule="evenodd" d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1zM4.118 4L4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118zM2.5 3V2h11v1h-11z"/> - </svg> - </button> - {% if not sent_mode %} - {{ fbtns.report(report_url=msg.id, kind="pn", title=_("report this message")) }} - {% endif %} - </div> - </footer> - </section> - </article> - </li> - {%- endfor %} - </ul> - <p class="font-headings text-white text-right p-0"> - {{ msgs | length }} {{ _("messages_x_of_n") }} {{ total }} - </p> + <footer class="card-footer d-flex align-items-center bg-transparent text-white font-sans-serif fs-medium"> + <a class="pe-1 a a-bold" + href="{{ url('plainui:user', user_slug=recipient_slug) }}">{{ recipient }},</a> + <time datetime="{{ msg.timestamp }}">{{ msg.timestamp | strftime }}</time> + <div class="d-inline-flex ms-auto"> + <a class="me-2 btn-icon-big btn btn-transparent" + title="{{ _('read') }}" + href="{{ url('plainui:personal_message_show', msg_id=msg.id) }}"> + <svg xmlns="http://www.w3.org/2000/svg" + width="16" + height="16" + fill="currentColor" + class="bi bi-chevron-double-right" + viewBox="0 0 16 16"> + <path fill-rule="evenodd" d="M3.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L9.293 8 3.646 2.354a.5.5 0 0 1 0-.708z" /> + <path fill-rule="evenodd" d="M7.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L13.293 8 7.646 2.354a.5.5 0 0 1 0-.708z" /> + </svg> + </a> + <button class="me-2 btn-icon-big btn btn-transparent" + type="submit" + name="id" + value="{{ msg.id }}" + title="{{ _('messages_delete') }}"> + <svg xmlns="http://www.w3.org/2000/svg" + width="16" + height="16" + fill="currentColor" + class="bi bi-trash" + viewBox="0 0 16 16"> + <path d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6z" /> + <path fill-rule="evenodd" d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1zM4.118 4L4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118zM2.5 3V2h11v1h-11z" /> + </svg> + </button> + {% if not sent_mode %}{{ fbtns.report(report_url=msg.id, kind="pn", title=_("report this message") ) }}{% endif %} + </div> + </footer> + </section> + </article> + </li> + {%- endfor %} + </ul> + <p class="font-headings text-white text-right p-0">{{ msgs | length }} {{ _("messages_x_of_n") }} {{ total }}</p> </form> -</div> + </div> {% endblock %} diff --git a/src/plainui/jinja2/plainui/personal_message_send.html.j2 b/src/plainui/jinja2/plainui/personal_message_send.html.j2 index a105a929a020fcef6c7c69329149e3398be21eec..f9a7a0a94d22e79ab96a1ff800f935166f0cfa4b 100644 --- a/src/plainui/jinja2/plainui/personal_message_send.html.j2 +++ b/src/plainui/jinja2/plainui/personal_message_send.html.j2 @@ -3,44 +3,40 @@ {% extends "plainui/base.html.j2" %} -{% block title %}{{conf.name}} - {{ _("Personal Messages - Send") }}{% endblock %} +{% block title %}{{ conf.name }} - {{ _("Personal Messages - Send") }}{% endblock %} {% block content %} -{{ navMacro.top_nav(_("Send Personal Message"), has_breadcrumbs=True) }} -<nav aria-label="breadcrumb"> + {{ navMacro.top_nav(_("Send Personal Message") , has_breadcrumbs=True) }} + <nav aria-label="breadcrumb"> <ol class="breadcrumb hub-breadcrumbs"> - <li class="breadcrumb-item"><a href="{{ url('plainui:index') }}"> - {{ conf.name }} - </a></li> - <li class="breadcrumb-item"> - <a href="{{ url('plainui:personal_message') }}"> - {{ _("Personal Messages") }} - </a> - </li> + <li class="breadcrumb-item"> + <a href="{{ url('plainui:index') }}">{{ conf.name }}</a> + </li> + <li class="breadcrumb-item"> + <a href="{{ url('plainui:personal_message') }}">{{ _("Personal Messages") }}</a> + </li> </ol> -</nav> + </nav> -<form - method="POST" - class="border p-0 mx-auto {% if form.errors %} border-danger{% endif %}" -> + <form method="POST" + class="border p-0 mx-auto {% if form.errors %}border-danger{% endif %}"> <h2 class="bg-secondary text-center text-dark m-0 px-3 py-1">{{ _("new message") }}</h2> <div class="p-3"> - {{ csrf_input }} + {{ csrf_input }} - {{ form_elements.errors(form) }} - {{ form_elements.hidden(form, 'in_reply_to') }} - {{ form_elements.text(form, 'recipient') }} - {{ form_elements.text(form, 'subject') }} - {{ form_elements.textarea(form, 'body') }} + {{ form_elements.errors(form) }} + {{ form_elements.hidden(form, 'in_reply_to') }} + {{ form_elements.text(form, 'recipient') }} + {{ form_elements.text(form, 'subject') }} + {{ form_elements.textarea(form, 'body') }} - <ul class="d-flex justify-content-center list-unstyled mb-0"> - <li class="m-2"> - <button type="submit" class="btn btn-primary">{{ _("Send") }}</button> - </li> - </ul> + <ul class="d-flex justify-content-center list-unstyled mb-0"> + <li class="m-2"> + <button type="submit" class="btn btn-primary">{{ _("Send") }}</button> + </li> + </ul> </div> -</form> + </form> -<hr class="hub-spacer"> + <hr class="hub-spacer"> {% endblock %} diff --git a/src/plainui/jinja2/plainui/personal_message_show.html.j2 b/src/plainui/jinja2/plainui/personal_message_show.html.j2 index 2bf95ba2681ef18c0a3a38189055750d7d90476b..a0ebf2948fccbcc46ebb4ffeb1e2c977f9ee256e 100644 --- a/src/plainui/jinja2/plainui/personal_message_show.html.j2 +++ b/src/plainui/jinja2/plainui/personal_message_show.html.j2 @@ -4,62 +4,61 @@ {% extends "plainui/base.html.j2" %} -{% block title %}{{conf.name}} - {{ _("Personal Message") }}{% endblock %} +{% block title %}{{ conf.name }} - {{ _("Personal Message") }}{% endblock %} {% block content %} -{{ navMacro.top_nav( _("Message from %(user)s", user=msg.sender.display_name), has_breadcrumbs=True) }} + {{ navMacro.top_nav(_("Message from %(user)s", user=msg.sender.display_name) , has_breadcrumbs=True) }} -<article class="mb-11"> + <article class="mb-11"> <nav aria-label="breadcrumb"> - <ol class="breadcrumb hub-breadcrumbs"> - <li class="breadcrumb-item"> - <a href="{{ url('plainui:index') }}"> - {{ conf.name }} - </a> - </li> - <li class="breadcrumb-item"> - <a href="{{ url('plainui:personal_message') }}"> - {{ _("Personal Messages") }} - </a> - </li> - </ol> + <ol class="breadcrumb hub-breadcrumbs"> + <li class="breadcrumb-item"> + <a href="{{ url('plainui:index') }}">{{ conf.name }}</a> + </li> + <li class="breadcrumb-item"> + <a href="{{ url('plainui:personal_message') }}">{{ _("Personal Messages") }}</a> + </li> + </ol> </nav> <ul class="mb-0 my-6 d-flex list-unstyled"> + <li class="me-2 py-2"> + <form method="POST" action="{{ url('plainui:personal_message_delete') }}"> + {{ csrf_input }} + <button class="btn btn-dark" + type="submit" + name="id" + value="{{ msg.id }}" + title="{{ _('messages_delete') }}">{{ _("Delete") }}</button> + </form> + </li> + + {% if user.id == msg.recipient.id %} <li class="me-2 py-2"> - <form method="POST" action="{{ url('plainui:personal_message_delete') }}"> - {{ csrf_input }} - <button class="btn btn-dark" type="submit" name="id" value="{{msg.id}}" title="{{ _("messages_delete") }}"> - {{ _("Delete") }} - </button> - </form> + <a class="btn" + href="{{ url('plainui:personal_message_send_to', recipient=msg.sender.username) ~ '?in_reply_to=' ~ msg.id | urlencode ~ '&subject=AW: ' ~ msg.subject | truncate(100) | urlencode }}"> + {{ _("Reply") }} + </a> </li> - - {% if user.id == msg.recipient.id %} - <li class="me-2 py-2"> - <a class="btn" href="{{ url('plainui:personal_message_send_to', recipient=msg.sender.username) ~ '?in_reply_to=' ~ msg.id | urlencode ~ '&subject=AW: ' ~ msg.subject | truncate(100) | urlencode }}"> - {{_("Reply")}} - </a> - </li> - {% endif %} + {% endif %} </ul> <div class="d-flex flex-row flex-wrap mt-6 bg-secondary"> - <h2 class="bg-secondary text-center text-dark m-0 px-3 py-1">{{ msg.subject }}</h2> - <p class="d-block text-transform-none font-sans-serif ml-auto align-self-center p-2"> - {% if msg.sender %} - <a class="m-0 px-3 py-1 a a-bold text-dark" href="{{ url('plainui:user', user_slug=msg.sender.slug) }}"> - {{ msg.sender.display_name }} - </a> - {% else %} - <span class="m-0 px-3 py-1 text-dark">{{ _("disabled user") }}</span> - {% endif %} - <time datetime="{{msg.timestamp}}" class="text-dark font-sans-serif fw-normal m-0 px-3 py-1"> - {{ msg.timestamp | strftime }} - </time> - </p> + <h2 class="bg-secondary text-center text-dark m-0 px-3 py-1">{{ msg.subject }}</h2> + <p class="d-block text-transform-none font-sans-serif ml-auto align-self-center p-2"> + {% if msg.sender %} + <a class="m-0 px-3 py-1 a a-bold text-dark" + href="{{ url('plainui:user', user_slug=msg.sender.slug) }}">{{ msg.sender.display_name }}</a> + {% else %} + <span class="m-0 px-3 py-1 text-dark">{{ _("disabled user") }}</span> + {% endif %} + <time datetime="{{ msg.timestamp }}" + class="text-dark font-sans-serif fw-normal m-0 px-3 py-1"> + {{ msg.timestamp | strftime }} + </time> + </p> </div> {{ markdown(msg_body) }} -</article> + </article> {% endblock %} diff --git a/src/plainui/jinja2/plainui/profile.html.j2 b/src/plainui/jinja2/plainui/profile.html.j2 index 0b378091977aa67d7607e21f5e08af50a25ee7db..2dff878846ce6e7d786a431df2ea5e883dd42156 100644 --- a/src/plainui/jinja2/plainui/profile.html.j2 +++ b/src/plainui/jinja2/plainui/profile.html.j2 @@ -11,144 +11,125 @@ {% import "plainui/components/tagbox.html.j2" as tagMacros %} {% import "plainui/components/badge_elements.html.j2" as badgeMacros with context %} -{% block title %}{{conf.name}} - {{ _("Profile") }}{% endblock %} +{% block title %}{{ conf.name }} - {{ _("Profile") }}{% endblock %} {% block content %} -{{ navMacro.top_nav(_("My Dashboard")) }} - -<div class="hub-vlayout"> - <div class="hub-row"> - <div class="hub-col-remaining hub-card hub-vlayout"> - <h1 class="hub-head-main"> - {{ user.username }} - </h1> - <div class="hub-tag hub-tag--clear"> - {{ _("last login") }} {{ user.last_login | strftime }} - </div> - <div class="mt-3"> - <a - href="{{ url('plainui:user', user_slug=user.slug) }}" - class="hub-btn" - > - {{ _('View my public user page')}} - </a> + {{ navMacro.top_nav(_("My Dashboard") ) }} + + <div class="hub-vlayout"> + <div class="hub-row"> + <div class="hub-col-remaining hub-card hub-vlayout"> + <h1 class="hub-head-main">{{ user.username }}</h1> + <div class="hub-tag hub-tag--clear">{{ _("last login") }} {{ user.last_login | strftime }}</div> + <div class="mt-3"> + <a href="{{ url('plainui:user', user_slug=user.slug) }}" class="hub-btn">{{ _("View my public user page") }}</a> + </div> </div> + <div class="hub-col-325px hub-card">{{ avatar.avatar(user) }}</div> </div> - <div class="hub-col-325px hub-card"> - {{ avatar.avatar(user) }} - </div> - </div> - <form method="POST" class="hub-card"> + <form method="POST" class="hub-card"> <div class=""> - <h2 class="hub-section-title"> - {{ _("custom preferences") }} - </h2> - <div> - {{ csrf_input }} - {{ form_elements.render_form_fields(form1) }} - {{ form_elements.render_form_fields(form2) }} - - <ul class="d-flex justify-content-center list-unstyled mb-0"> - <li class="mx-2"> - <a class="btn btn-transparent" href="{{ url('plainui:password_change') }}">{{ _("Change Password") }}</a> - </li> - <li class="mx-2"> - <button type="submit" class="btn btn-primary">{{ _("save") }}</button> - </li> - </ul> - - {{ form_elements.errors(form1) }} - {{ form_elements.errors(form2) }} - </div> + <h2 class="hub-section-title">{{ _("custom preferences") }}</h2> + <div> + {{ csrf_input }} + {{ form_elements.render_form_fields(form1) }} + {{ form_elements.render_form_fields(form2) }} + + <ul class="d-flex justify-content-center list-unstyled mb-0"> + <li class="mx-2"> + <a class="btn btn-transparent" + href="{{ url('plainui:password_change') }}">{{ _("Change Password") }}</a> + </li> + <li class="mx-2"> + <button type="submit" class="btn btn-primary">{{ _("save") }}</button> + </li> + </ul> + + {{ form_elements.errors(form1) }} + {{ form_elements.errors(form2) }} + </div> </div> - </form> + </form> - <div class="hub-card"> - <div class="row"> - <h2 class="hub-section-title"> - {{ _("My Badges") }} - </h2> + <div class="hub-card"> + <div class="row"> + <h2 class="hub-section-title">{{ _("My Badges") }}</h2> <div> - <h2 class="font-sans-serif m-1 m-0">{{ _("Manage Badges") }}</h2> - {% if amount_badges_not_accepted > 0 %} - <p class="">{{ _("Pending badges") }}: <a class="a a-bold" href="{{ url('plainui:manage_badges') }}"> - {{ amount_badges_not_accepted }}</a></p> - {% endif %} - <form method="POST" class="horizontal" action="{{ url('plainui:manage_badges') }}?next={{ url('plainui:userprofile') }}"> - {{ csrf_input }} - - {{ form_elements.render_form_fields(redeem_badge_form) }} - <input type="submit" class="btn btn-primary mb-2" value="{{ _('Redeem') }}"> - {{ form_elements.errors(redeem_badge_form) }} - </form> - - <p class="mb-2"> - <a class="a a-bold" href="{{ url('plainui:manage_badges') }}"> - {{ _("Badges: Accept / Revoke / Visibility") }} - </a> - <br /> - <a href="{{ url('plainui:export_badges') }}" class="a a-bold"> - {{ _("Export Your Badges") }} - </a> + <h2 class="font-sans-serif m-1 m-0">{{ _("Manage Badges") }}</h2> + {% if amount_badges_not_accepted > 0 %} + <p class=""> + {{ _("Pending badges") }}: <a class="a a-bold" href="{{ url('plainui:manage_badges') }}">{{ amount_badges_not_accepted }}</a> </p> - - <div class="pt-2"> - {% if badges %} - <div class="hub-badges-gallery"> - {%- for user_badge in badges %} - {{ badgeMacros.badge(user_badge.badge) }} - {% endfor %} - </div> - {% else %} - <div class="hub-empty-section"> - {{ _("No entries available.") }} - </div> - <a - class="hub-btn" - href="{{ url('plainui:badges') }}" - > - {{ _("Discover badges") }} - </a> - {% endif %} - </div> + {% endif %} + <form method="POST" + class="horizontal" + action="{{ url('plainui:manage_badges') }}?next={{ url("plainui:userprofile") }}"> + {{ csrf_input }} + + {{ form_elements.render_form_fields(redeem_badge_form) }} + <input type="submit" class="btn btn-primary mb-2" value="{{ _('Redeem') }}"> + {{ form_elements.errors(redeem_badge_form) }} + </form> + + <p class="mb-2"> + <a class="a a-bold" href="{{ url('plainui:manage_badges') }}">{{ _("Badges: Accept / Revoke / Visibility") }}</a> + <br /> + <a href="{{ url('plainui:export_badges') }}" class="a a-bold">{{ _("Export Your Badges") }}</a> + </p> + + <div class="pt-2"> + {% if badges %} + <div class="hub-badges-gallery"> + {%- for user_badge in badges %}{{ badgeMacros.badge(user_badge.badge) }}{% endfor %} + </div> + {% else %} + <div class="hub-empty-section">{{ _("No entries available.") }}</div> + <a class="hub-btn" href="{{ url('plainui:badges') }}">{{ _("Discover badges") }}</a> + {% endif %} + </div> </div> + </div> </div> - </div> - <div class="hub-card"> - <div class="hub-vlayout-l"> - <h2 class="hub-head-main">{{ _("My Favorites") }}</h2> - <div class="hub-vlayout"> + <div class="hub-card"> + <div class="hub-vlayout-l"> + <h2 class="hub-head-main">{{ _("My Favorites") }}</h2> + <div class="hub-vlayout"> <h2 class="hub-section-title">{{ ("Events") }}</h2> - <div > - {{ list_events.list(my_favorite_events, is_favorite_events, is_fahrplan_events ) }} - </div> - </div> + <div>{{ list_events.list(my_favorite_events, is_favorite_events, is_fahrplan_events) }}</div> + </div> - <div class="hub-vlayout"> - <h2 class="hub-section-title">{{ _("Assemblies") }}</h2> - {{ list_assm.list(my_favorite_assemblies, is_favorite_assemblies ) }} - </div> + <div class="hub-vlayout"> + <h2 class="hub-section-title">{{ _("Assemblies") }}</h2> + {{ list_assm.list(my_favorite_assemblies, is_favorite_assemblies) }} + </div> - <div class="hub-vlayout"> - <h2 class="hub-section-title">{{ _("Projects") }}</h2> - {{ list_projects.list(my_favorite_projects, is_favorite_projects ) }} + <div class="hub-vlayout"> + <h2 class="hub-section-title">{{ _("Projects") }}</h2> + {{ list_projects.list(my_favorite_projects, is_favorite_projects) }} + </div> </div> </div> - </div> - <div class="hub-card"> + <div class="hub-card"> <h2 class="hub-section-title">{{ _("Allowlisted Domains") }}</h2> - <form method="POST" action="{{ url('plainui:dereferrer_unallow') }}">{{ csrf_input }} + <form method="POST" action="{{ url('plainui:dereferrer_unallow') }}"> + {{ csrf_input }} <ul> {% for entry in dereferrer_allowlist %} - <li>{{ entry.domain }} <button type="submit" class="btn btn-danger btn-small" name="pk" value="{{ entry.pk }}">X</button></li> + <li> + {{ entry.domain }} + <button type="submit" + class="btn btn-danger btn-small" + name="pk" + value="{{ entry.pk }}">X</button> + </li> {%- endfor %} </ul> </form> + </div> </div> -</div> {% endblock %} diff --git a/src/plainui/jinja2/plainui/projects/detail.html.j2 b/src/plainui/jinja2/plainui/projects/detail.html.j2 index 8a46b1d65db842fe752239d6d384909adbb50729..97e0fe1f191f4ebdd7fe77f64b97b68dc4802d8f 100644 --- a/src/plainui/jinja2/plainui/projects/detail.html.j2 +++ b/src/plainui/jinja2/plainui/projects/detail.html.j2 @@ -13,11 +13,11 @@ <nav aria-label="breadcrumb"> <ol class="breadcrumb hub-breadcrumbs"> <li class="breadcrumb-item"> - <a href="{{ url("plainui:index") }}">{{ conf.name }}</a> + <a href="{{ url('plainui:index') }}">{{ conf.name }}</a> </li> {% if project.assembly %} <li class="breadcrumb-item"> - <a href="{{ url("plainui:assemblies") }}">{{ _("assemblies") }}</a> + <a href="{{ url('plainui:assemblies') }}">{{ _("assemblies") }}</a> </li> <li class="breadcrumb-item"> <a href="{{ url('plainui:assembly', assembly_slug=project.assembly.slug) }}">{{ project.assembly.name }}</a> @@ -34,28 +34,26 @@ <div class="hub-row hub-row-equal-height"> <div class="hub-card hub-col-remaining"> <div class="hub-vlayout"> - <h1 class="hub-head-main"> - {{ project.name }} - </h1> + <h1 class="hub-head-main">{{ project.name }}</h1> <div class="hub-tags" role="list"> - {% if project.location %} - <div class="hub-tag__text"> - <i class="bi bi-geo-alt-fill"></i> - {{ project.location }} - </div> - {% endif %} - {% if project.assembly %} - <div> - <i class="bi bi-person-arms-up"></i> - {{ project.assembly }} - </div> - {% else %} - <div> - <i class="bi bi-person-fill"></i> - {{ project.owner }} - </div> - {% endif %} + {% if project.location %} + <div class="hub-tag__text"> + <i class="bi bi-geo-alt-fill"></i> + {{ project.location }} + </div> + {% endif %} + {% if project.assembly %} + <div> + <i class="bi bi-person-arms-up"></i> + {{ project.assembly }} + </div> + {% else %} + <div> + <i class="bi bi-person-fill"></i> + {{ project.owner }} + </div> + {% endif %} </div> {{ tagMacros.tagbox(project.prefetched_tags) }} @@ -67,21 +65,20 @@ <div class="hub-tags" role="list"> {% for link in project.links.all() %} {% set url = '/' + link.link if link.conference_internal else url('plainui:dereferrer', dst=link.link) %} - {{ tagMacros.tag( - link.name, - link=url, - icon=link_icon(link), - style='secondary', - target=('_self' if link.conference_internal else '_blank'), - rel=('' if link.conference_internal else 'external, noreferrer') + {{ tagMacros.tag(link.name, + link=url, + icon=link_icon(link) , + style='secondary', + target=('_self' if link.conference_internal else '_blank'), + rel=('' if link.conference_internal else 'external, noreferrer') ) }} {% endfor %} </div> {% endif %} <div> - {% set link = url('plainui:project', slug=project.slug ) %} - {{ fbtns.fav(project.id, "project", is_favorite, color="primary") }} - {{ fbtns.report(link, color="primary") }} + {% set link = url('plainui:project', slug=project.slug ) %} + {{ fbtns.fav(project.id, "project", is_favorite, color="primary") }} + {{ fbtns.report(link, color="primary") }} </div> </div> </div> diff --git a/src/plainui/jinja2/plainui/projects/list.html.j2 b/src/plainui/jinja2/plainui/projects/list.html.j2 index 99aae227d86d10f4d849c459dd37a501dbdf2d0d..67c43c939112e50dc7c2f41942844b875f1dcc49 100644 --- a/src/plainui/jinja2/plainui/projects/list.html.j2 +++ b/src/plainui/jinja2/plainui/projects/list.html.j2 @@ -12,7 +12,7 @@ {{ navMacro.top_nav(_("Projects") ) }} <div class="hub-vlayout"> - {{ wikiMacro.card('_intro_projects') }} + {{ wikiMacro.card("_intro_projects") }} {{ list_projects.list(projects, is_favorite_projects, pagination=true, view_name='plainui:projects', metadata=true) }} </div> {% endblock content %} diff --git a/src/plainui/jinja2/plainui/public_fahrplan.html.j2 b/src/plainui/jinja2/plainui/public_fahrplan.html.j2 index 37e5b2c5ac67e293ed21e5d0a424d91096f2172b..54f8330028c4a1fb7912d029ff2425edf7a732e2 100644 --- a/src/plainui/jinja2/plainui/public_fahrplan.html.j2 +++ b/src/plainui/jinja2/plainui/public_fahrplan.html.j2 @@ -2,108 +2,109 @@ {% import "plainui/components/alert.html.j2" as alert %} {% import "plainui/components/tagbox.html.j2" as tagMacros with context %} -<html - lang="{{ get_language() }}" - class="no-js" - data-bs-theme="{{ active_theme() }}" -> - <head> - <meta charset="utf-8"> - <link rel="stylesheet" href="{{ static('plainui/%s.css' % (css_scope(),)) }}"> - <link rel="icon" href="{{ static('plainui/img/favicon.ico') }}" type="image/x-icon"> - <title>{{ _("%(conf)s - Public Fahrplan", conf=conf.name) }}</title> - <meta name="viewport" content="width=device-width, initial-scale=1"> - {% block head %}{% endblock %} - <script> +<html lang="{{ get_language() }}" + class="no-js" + data-bs-theme="{{ active_theme() }}"> + <head> + <meta charset="utf-8"> + <link rel="stylesheet" + href="{{ static('plainui/%s.css' % (css_scope() ,)) }}"> + <link rel="icon" + href="{{ static('plainui/img/favicon.ico') }}" + type="image/x-icon"> + <title>{{ _("%(conf)s - Public Fahrplan", conf=conf.name) }}</title> + <meta name="viewport" content="width=device-width, initial-scale=1"> + {% block head %}{% endblock %} + <script> document.addEventListener('DOMContentLoaded', (e) => { document.querySelector('html').classList.remove('no-js'); document.querySelector('html').classList.add('js'); }); - </script> - </head> - <body class="hub-fahrplan__pub-body eyecandy"> - <div class="hub-bg-L04 hub-fahrplan__pub-content"> - <div class="mb-2"> - <h1 class="h2 mb-2">{{ _("%(conf)s Fahrplan", conf=conf.name) }}</h1> - <div class="hub-tags mb-2"> - {% for day in conf.days %} - <a - class="hub-tag hub-tag--secondary" - href="#day{{ day.index }}" - title="{{ day.start | strfdate() }}" - > - {{ _("Day %(n)s", n=day.index) }} - </a> - {% endfor %} + </script> + </head> + <body class="hub-fahrplan__pub-body eyecandy"> + <div class="hub-bg-L04 hub-fahrplan__pub-content"> + <div class="mb-2"> + <h1 class="h2 mb-2">{{ _("%(conf)s Fahrplan", conf=conf.name) }}</h1> + <div class="hub-tags mb-2"> + {% for day in conf.days %} + <a class="hub-tag hub-tag--secondary" + href="#day{{ day.index }}" + title="{{ day.start | strfdate() }}">{{ _("Day %(n)s", n=day.index) }}</a> + {% endfor %} - <a - class="a" - href="https://streaming.media.ccc.de/{{ conf.slug }}/" - target="_blank" - title="{{ _("streams") }}" - > - {{ _("streams") }} - <i class="bi bi-box-arrow-up-right"></i> - </a> - <a - class="a" - href="https://streaming.media.ccc.de/{{ conf.slug }}/relive" - target="_blank" - title="{{ _("relive") }}" - > - {{ _("relive") }} - <i class="bi bi-box-arrow-up-right"></i> - </a> - <a - class="a" - href="https://media.ccc.de/c/{{ conf.slug }}" - target="_blank" - title="{{ _("recordings") }}" - > - {{ _("recordings") }} - <i class="bi bi-box-arrow-up-right"></i> - </a> - </div> - <div class="hub-tags mb-3"> - {{ tagMacros.tag(_("Tracks"), style="clear") }} - {% for track in tracks %} - <div - class="hub-tag {% if track.color and calculate_luminance(track.color) <= 140 %}text-white{% else %}text-dark{% endif %}" - {% if track.color %}style="background-color: {{ track.color }};"{% endif %} - > - {{ track.name }} - </div> - {%- endfor %} - </div> - {% if timezone_warning %} - {% call alert.info(class="mb-2") %} - {{ _( - "Your timezone is configured to %(user_timezone)s, conference timezone is %(conf_timezone)s, showing times in your timezone", - user_timezone=current_timezone, - conf_timezone=conference_timezone - ) }} - {% endcall %} - {% endif %} - </div> - <div class="border hub-fahrplan__pub-box"> - {% if mode == 'list' %} - {{ list_events.list(events, [], []) }} - {% elif mode == 'calendar' %} - {{ calendar(events, [], [], public=conf.require_ticket) }} - {% endif %} - </div> + <a class="a" + href="https://streaming.media.ccc.de/{{ conf.slug }}/" + target="_blank" + title="{{ _('streams') }}"> + {{ _("streams") }} + <i class="bi bi-box-arrow-up-right"></i> + </a> + <a class="a" + href="https://streaming.media.ccc.de/{{ conf.slug }}/relive" + target="_blank" + title="{{ _('relive') }}"> + {{ _("relive") }} + <i class="bi bi-box-arrow-up-right"></i> + </a> + <a class="a" + href="https://media.ccc.de/c/{{ conf.slug }}" + target="_blank" + title="{{ _('recordings') }}"> + {{ _("recordings") }} + <i class="bi bi-box-arrow-up-right"></i> + </a> + </div> + <div class="hub-tags mb-3"> + {{ tagMacros.tag(_("Tracks") , style="clear") }} + {% for track in tracks %} + <div class="hub-tag {% if track.color and calculate_luminance(track.color) <= 140 %}text-white{% else %}text-dark{% endif %}" + {% if track.color %}style="background-color: {{ track.color }};"{% endif %}>{{ track.name }}</div> + {%- endfor %} + </div> + {% if timezone_warning %} + {% call alert.info(class="mb-2") %} + {{ _("Your timezone is configured to %(user_timezone)s, conference timezone is %(conf_timezone)s, showing times in your timezone", + user_timezone=current_timezone, + conf_timezone=conference_timezone) }} + {% endcall %} + {% endif %} + </div> + <div class="border hub-fahrplan__pub-box"> + {% if mode == 'list' %} + {{ list_events.list(events, [], []) }} + {% elif mode == 'calendar' %} + {{ calendar(events, [], [], public=conf.require_ticket) }} + {% endif %} + </div> - <footer id="footer" class="container p-2"> - <div class="d-lg-flex justify-content-between"> - <ul class="d-flex gap-3 list-unstyled"> - <li><a class="nav-link" title="{{ _("Contact Us") }}" href="https://help.ccc.de/">{{ _("Contact Us") }}</a></li> - <li><a class="nav-link" title="{{ _("Disclaimer") }}" href="https://legal.cccv.de">{{ _("Disclaimer") }}</a></li> - <li><a class="nav-link" title="{{ _("Principles") }}" href="https://help.ccc.de/principles.en.html.j2">{{ _("Principles") }}</a></li> - <li><a class="nav-link" title="{{ _("Helpful Teams") }}" href="{{ url( 'plainui:static_page', page_slug='start') }}#md-helpful-teams">{{ _("Helpful Teams") }}</a></li> - </ul> - </div> - </footer> + <footer id="footer" class="container p-2"> + <div class="d-lg-flex justify-content-between"> + <ul class="d-flex gap-3 list-unstyled"> + <li> + <a class="nav-link" + title="{{ _('Contact Us') }}" + href="https://help.ccc.de/">{{ _('Contact Us') }}</a> + </li> + <li> + <a class="nav-link" + title="{{ _('Disclaimer') }}" + href="https://legal.cccv.de">{{ _('Disclaimer') }}</a> + </li> + <li> + <a class="nav-link" + title="{{ _('Principles') }}" + href="https://help.ccc.de/principles.en.html.j2">{{ _('Principles') }}</a> + </li> + <li> + <a class="nav-link" + title="{{ _('Helpful Teams') }}" + href="{{ url('plainui:static_page', page_slug='start') }}#md-helpful-teams">{{ _('Helpful Teams') }}</a> + </li> + </ul> </div> - </body> - <script async src="{{ static('plainui/js/modal.js') }}"></script> + </footer> + </div> + </body> + <script async src="{{ static('plainui/js/modal.js') }}"></script> </html> diff --git a/src/plainui/jinja2/plainui/redeem_badge.html.j2 b/src/plainui/jinja2/plainui/redeem_badge.html.j2 index f9ef78f37141ccba9464970067e32d4fee674e84..f824daaae5dd532c1ddc5ddc8ef6cbda554ea164 100644 --- a/src/plainui/jinja2/plainui/redeem_badge.html.j2 +++ b/src/plainui/jinja2/plainui/redeem_badge.html.j2 @@ -2,25 +2,28 @@ {% import "plainui/components/form_elements.html.j2" as form_elements %} -{% block title %}{{conf.name}} - {{ _("Profile") }}{% endblock %} +{% block title %}{{ conf.name }} - {{ _("Profile") }}{% endblock %} {% block content %} -{{ titleMacro.title( _("Redeem Badge Token") ) }} + {{ titleMacro.title(_("Redeem Badge Token") ) }} -<div class="row my-5 p-6"> + <div class="row my-5 p-6"> <form method="POST"> - {{ csrf_input }} - {{ form_elements.errors(form) }} - <div class="form-row align-items-center"> - <div class="col-9"> - <input name="token" class="form-control mb-2" placeholder="Token" {% if urlToken %} value="{{ urlToken }}" {% endif %}> - </div> - <div class="col-3"> - <input type="submit" class="btn btn-primary p-2 mb-2"> - </div> + {{ csrf_input }} + {{ form_elements.errors(form) }} + <div class="form-row align-items-center"> + <div class="col-9"> + <input name="token" + class="form-control mb-2" + placeholder="Token" + {% if urlToken %}value="{{ urlToken }}"{% endif %}> </div> + <div class="col-3"> + <input type="submit" class="btn btn-primary p-2 mb-2"> + </div> + </div> </form> -</div> + </div> {% endblock %} diff --git a/src/plainui/jinja2/plainui/redeem_token.html.j2 b/src/plainui/jinja2/plainui/redeem_token.html.j2 index 37ea91355b7e733caba487d9d8bd64961665639b..023cd6563e4b7d7c68c827404d9887e56630a6a8 100644 --- a/src/plainui/jinja2/plainui/redeem_token.html.j2 +++ b/src/plainui/jinja2/plainui/redeem_token.html.j2 @@ -3,95 +3,108 @@ {% import "plainui/components/form_elements.html.j2" as form_elements %} {% import "plainui/components/alert.html.j2" as alert %} -{% block title %}{{ _("Conference %(conf)s - Redeem Token", conf=conf.name) }}{% endblock %} +{% block title %} + {{ _("Conference %(conf)s - Redeem Token", conf=conf.name) }} +{% endblock %} {% block content %} - {{ titleMacro.title(_("Redeem Token")) }} + {{ titleMacro.title(_("Redeem Token") ) }} - {% if step == 'authenticated' %} - <form class="mw-810 border p-0 mx-auto mb-11{% if form.errors %} border-danger{% endif %}" method="POST" action="{{ url('plainui:redeem_token_loggedin') }}"> - <h2 class="text-center bg-secondary px-2 text-dark h3">{{ _("Hello '%(user)s'", user=user.username) }}</h2> - <div class="p-3"> - <p class="my-5 text-white">{{ _("You are Logged in as '%(user)s', do you want to join the Conference with this User?", user=user.username) }}</p> - {{ csrf_input }} - <input type="hidden" name="token" value="{{ form['jwt'].value() }}"> - <ul class="row row-cols-1 row-cols-lg-2 list-unstyled"> - <li class="col mb-3 mb-lg-0"> - <button formaction="{{ url('plainui:logout') }}" class="btn btn-xl btn-block btn-transparent">{{ _("No")}}</button> - </li> - <li class="col"> - <button type="submit" class="btn btn-xl btn-block btn-primary">{{ _("Yes")}}</button> - </li> - </ul> - {{ form_elements.errors(form) }} - </div> - </form> - {% elif step == 'token' %} - <form class="mw-810 border p-0 mx-auto mb-11{% if form.errors %} border-danger{% endif %}" method="GET" action="{{ url('plainui:redeem_token') }}"> - <div class="p-3"> - {{ form_elements.text(form, 'jwt') }} - <ul class="row row-cols-1 row-cols-lg-3 list-unstyled"> - <li class="col ml-auto order-12"> - <button type="submit" class="btn btn-xl btn-block btn-primary">{{ _("Submit Token")}}</button> - </li> - <li class="col order-1"> - <button type="submit" class="btn btn-xl btn-block btn-transparent" - formaction="{{ url('plainui:token_password_reset') }}" - formmethod="POST" - name="csrfmiddlewaretoken" - value="{{csrf_token}}" - >{{ _("Use Token for Password Reset") }}</button> - </li> - </ul> - {{ form_elements.errors(form) }} - </div> - </form> - {%- else %} - <div> - <form class="mw-810 border p-0 mx-auto mb-11{% if form_create.errors %} border-danger{% endif %}" method="POST" action="{{ url('plainui:redeem_token_create_user') }}"> - <h2 class="text-center bg-secondary px-2 text-dark h3">{{ _("Create new Account") }}</h2> - <div class="p-3"> - {% if footnote %}<p class="my-5 text-white">{{ _("Use the next form if you already have an account") }}</p>{% endif %} - {{ csrf_input }} - {{ form_elements.hidden(form_create, 'token') }} - {{ form_elements.text(form_create, 'username') }} - {{ form_elements.password(form_create, 'password1') }} - {{ form_elements.password(form_create, 'password2') }} - <ul class="row row-cols-1 row-cols-lg-3 list-unstyled"> - <li class="col-auto"> - {{ _("login--cookieinfo") }} - </li> - <li class="col ml-auto"> - <button type="submit" class="btn btn-xl btn-block btn-primary ml-auto">{{ _("Create a new Account with your Ticket")}}</button> - </li> - </ul> - {{ form_elements.errors(form_create) }} - </div> - </form> + {% if step == 'authenticated' %} + <form class="mw-810 border p-0 mx-auto mb-11{% if form.errors %} border-danger{% endif %}" + method="POST" + action="{{ url('plainui:redeem_token_loggedin') }}"> + <h2 class="text-center bg-secondary px-2 text-dark h3">{{ _("Hello '%(user)s'", user=user.username) }}</h2> + <div class="p-3"> + <p class="my-5 text-white"> + {{ _("You are Logged in as '%(user)s', do you want to join the Conference with this User?", user=user.username) }} + </p> + {{ csrf_input }} + <input type="hidden" name="token" value="{{ form['jwt'].value() }}"> + <ul class="row row-cols-1 row-cols-lg-2 list-unstyled"> + <li class="col mb-3 mb-lg-0"> + <button formaction="{{ url('plainui:logout') }}" + class="btn btn-xl btn-block btn-transparent">{{ _("No") }}</button> + </li> + <li class="col"> + <button type="submit" class="btn btn-xl btn-block btn-primary">{{ _("Yes") }}</button> + </li> + </ul> + {{ form_elements.errors(form) }} + </div> + </form> + {% elif step == 'token' %} + <form class="mw-810 border p-0 mx-auto mb-11{% if form.errors %} border-danger{% endif %}" + method="GET" + action="{{ url('plainui:redeem_token') }}"> + <div class="p-3"> + {{ form_elements.text(form, 'jwt') }} + <ul class="row row-cols-1 row-cols-lg-3 list-unstyled"> + <li class="col ml-auto order-12"> + <button type="submit" class="btn btn-xl btn-block btn-primary">{{ _("Submit Token") }}</button> + </li> + <li class="col order-1"> + <button type="submit" + class="btn btn-xl btn-block btn-transparent" + formaction="{{ url('plainui:token_password_reset') }}" + formmethod="POST" + name="csrfmiddlewaretoken" + value="{{ csrf_token }}">{{ _("Use Token for Password Reset") }}</button> + </li> + </ul> + {{ form_elements.errors(form) }} + </div> + </form> + {%- else %} + <div> + <form class="mw-810 border p-0 mx-auto mb-11{% if form_create.errors %} border-danger{% endif %}" + method="POST" + action="{{ url('plainui:redeem_token_create_user') }}"> + <h2 class="text-center bg-secondary px-2 text-dark h3">{{ _("Create new Account") }}</h2> + <div class="p-3"> + {% if footnote %}<p class="my-5 text-white">{{ _("Use the next form if you already have an account") }}</p>{% endif %} + {{ csrf_input }} + {{ form_elements.hidden(form_create, 'token') }} + {{ form_elements.text(form_create, 'username') }} + {{ form_elements.password(form_create, 'password1') }} + {{ form_elements.password(form_create, 'password2') }} + <ul class="row row-cols-1 row-cols-lg-3 list-unstyled"> + <li class="col-auto">{{ _("login--cookieinfo") }}</li> + <li class="col ml-auto"> + <button type="submit" class="btn btn-xl btn-block btn-primary ml-auto"> + {{ _("Create a new Account with your Ticket") }} + </button> + </li> + </ul> + {{ form_elements.errors(form_create) }} </div> + </form> + </div> - <div> - <form class="mw-810 border p-0 mx-auto mb-11{% if form_add.errors %} border-danger{% endif %}" method="POST" action="{{ url('plainui:redeem_token_add_to_user') }}"> - <h2 class="text-center bg-secondary px-2 text-dark h3" id="#login">{{ _("Got an Account already? Login here") }}</h2> - <div class="p-3"> - {{ csrf_input }} - {{ form_elements.hidden(form_add, 'token') }} - {{ form_elements.text(form_add, 'username') }} - {{ form_elements.password(form_add, 'password') }} - <ul class="row row-cols-1 row-cols-lg-3 list-unstyled"> - <li class="col-auto"> - {{ _("login--cookieinfo") }} - </li> - <li class="col ml-auto"> - <button type="submit" class="btn btn-xl btn-block btn-primary ml-auto">{{ _("Add your Ticket to this existing Account")}}</button> - </li> - </ul> - {{ form_elements.errors(form_add) }} - </div> - </form> + <div> + <form class="mw-810 border p-0 mx-auto mb-11{% if form_add.errors %} border-danger{% endif %}" + method="POST" + action="{{ url('plainui:redeem_token_add_to_user') }}"> + <h2 class="text-center bg-secondary px-2 text-dark h3" id="#login">{{ _("Got an Account already? Login here") }}</h2> + <div class="p-3"> + {{ csrf_input }} + {{ form_elements.hidden(form_add, 'token') }} + {{ form_elements.text(form_add, 'username') }} + {{ form_elements.password(form_add, 'password') }} + <ul class="row row-cols-1 row-cols-lg-3 list-unstyled"> + <li class="col-auto">{{ _("login--cookieinfo") }}</li> + <li class="col ml-auto"> + <button type="submit" class="btn btn-xl btn-block btn-primary ml-auto"> + {{ _("Add your Ticket to this existing Account") }} + </button> + </li> + </ul> + {{ form_elements.errors(form_add) }} </div> - {%- endif %} + </form> + </div> + {%- endif %} - {% call alert.info(class="my-8") %} - {{ _("User accounts from maschinenraum.rc3.world can be used to login.") }} - {% endcall %} + {% call alert.info(class="my-8") %} + {{ _("User accounts from maschinenraum.rc3.world can be used to login.") }} + {% endcall %} {% endblock %} diff --git a/src/plainui/jinja2/plainui/registration/password_reset_form.html.j2 b/src/plainui/jinja2/plainui/registration/password_reset_form.html.j2 index e2dc51d59494adddf88dbc1c0e6f6cb72667c700..501bc51766d7fca9c3450325768a094dfbb18526 100644 --- a/src/plainui/jinja2/plainui/registration/password_reset_form.html.j2 +++ b/src/plainui/jinja2/plainui/registration/password_reset_form.html.j2 @@ -1,45 +1,45 @@ {% import "plainui/components/form_elements.html.j2" as formElements %} {% import "plainui/components/logo.html.j2" as logoMacro %} {% extends "plainui/base.html.j2" %} -{% block title %}{{ _("%(conf)s - Reset Password", conf=conf.name) }}{% endblock %} +{% block title %} + {{ _("%(conf)s - Reset Password", conf=conf.name) }} +{% endblock %} {% block fullpage %} -<article class="hub-landing"> + <article class="hub-landing"> <figure class="hub-landing__logo"> - {{ logoMacro.logo(url('plainui:index'), conf.name + " logo", conf.name + " logo") }} + {{ logoMacro.logo(url('plainui:index') , conf.name + " logo", conf.name + " logo") }} </figure> <h1 class="text-center hub-landing__title">{{ _("reset password") }}</h1> <form method="POST" id="login-reset" class="mw-664 hub-landing__form"> - <div class=""> - {% if retry %} - <ul class="list-unstyled text-left mb-2"> - <li class="d-block text-danger"><b>{{ _("Reset password link invalid. Please try again.") }}</b></li> - </ul> - {% endif %} - <input type="hidden" name="next" value="{{next}}"> - {{ csrf_input }} - {{ formElements.text(form, 'email') }} - <p class="mb-2 text-white">{{ _("You will receive an e-mail with a reset link.") }}</p> - <p class="mb-2 text-white">{{ _("If you have no configured e-mail address, revisit your ticket activation link") }}</p> - <ul class="d-flex justify-content-center list-unstyled mb-0"> - <li class="ml-3 mb-3 md-md-0"> - <a - href="{{ url('plainui:login') }}" - title="{{ _("Login") }}" - class="btn btn-transparent" - > - {{ _("Login") }} - </a> - </li> - <li class="ml-3"> - <button type="submit" class="btn btn-primary" form="login-reset">{{ _("Reset Password") }}</button> - </li> - </ul> - {{ formElements.errors(form) }} - </div> + <div class=""> + {% if retry %} + <ul class="list-unstyled text-left mb-2"> + <li class="d-block text-danger"> + <b>{{ _("Reset password link invalid. Please try again.") }}</b> + </li> + </ul> + {% endif %} + <input type="hidden" name="next" value="{{ next }}"> + {{ csrf_input }} + {{ formElements.text(form, 'email') }} + <p class="mb-2 text-white">{{ _("You will receive an e-mail with a reset link.") }}</p> + <p class="mb-2 text-white">{{ _("If you have no configured e-mail address, revisit your ticket activation link") }}</p> + <ul class="d-flex justify-content-center list-unstyled mb-0"> + <li class="ml-3 mb-3 md-md-0"> + <a href="{{ url('plainui:login') }}" + title="{{ _('Login') }}" + class="btn btn-transparent">{{ _('Login') }}</a> + </li> + <li class="ml-3"> + <button type="submit" class="btn btn-primary" form="login-reset">{{ _("Reset Password") }}</button> + </li> + </ul> + {{ formElements.errors(form) }} + </div> </form> <hr class="hub-spacer"> -</article> + </article> {% endblock %} diff --git a/src/plainui/jinja2/plainui/report_content.html.j2 b/src/plainui/jinja2/plainui/report_content.html.j2 index aad9bd8700de13f95356cc1d00aebec632326291..f74ca5458d93e326266fd39e6fccf212eb9313bc 100644 --- a/src/plainui/jinja2/plainui/report_content.html.j2 +++ b/src/plainui/jinja2/plainui/report_content.html.j2 @@ -7,15 +7,13 @@ {% block title %}_("Report Content") - {{ conf.name }}{% endblock %} {% block content %} - {{ navMacro.top_nav(_("Help, there is a Problem...")) }} + {{ navMacro.top_nav(_("Help, there is a Problem...") ) }} <div class="hub-vlayout"> <div class="hub-row hub-row-equal-height"> - {{ wikiMacro.card( - '_intro_reportcontent', - class='hub-col-remaining' - ) }} + {{ wikiMacro.card('_intro_reportcontent', + class='hub-col-remaining') }} </div> <div class="hub-row"> @@ -23,7 +21,9 @@ <div class="m-0 p-0"> <h2 class="hub-section-title">{{ _("Report Content") }}</h2> <div> - <form method="POST" id="report_content" class="border p-0 mt-11 mb-8{% if form.errors %} border-danger{% endif %}"> + <form method="POST" + id="report_content" + class="border p-0 mt-11 mb-8{% if form.errors %} border-danger{% endif %}"> <div class="p-3"> {{ csrf_input }} @@ -44,12 +44,9 @@ <ul class="d-flex justify-content-center list-unstyled mb-0"> <li class="mx-2 d-js-only"> - <a - href="javascript:history.back()" - class="btn btn-xl btn-block btn-transparent" - title="{{ _("Back") }}"> - {{ _("Back") }} - </a> + <a href="javascript:history.back()" + class="btn btn-xl btn-block btn-transparent" + title="{{ _('Back') }}">{{ _('Back') }}</a> </li> <li class="mx-2"> <button type="submit" class="btn btn-primary px-5">{{ _("Send") }}</button> diff --git a/src/plainui/jinja2/plainui/room.html.j2 b/src/plainui/jinja2/plainui/room.html.j2 index 456892a259d5282916bb3cd77c2a6bc5d3f8c28a..91cc9c9aa427549da2885d56601963bcd1af38f6 100644 --- a/src/plainui/jinja2/plainui/room.html.j2 +++ b/src/plainui/jinja2/plainui/room.html.j2 @@ -6,69 +6,64 @@ {% extends "plainui/base.html.j2" %} -{% block title %}Conference {{conf.name}} - Room {{room.name}}{% endblock %} +{% block title %}Conference {{ conf.name }} - Room {{ room.name }}{% endblock %} -{% block head %} - <script src="{{ static('plainui/js/player.js') }}" /></script> -{% endblock %} +{% block head %}<script src="{{ static('plainui/js/player.js') }}" /></script>{% endblock %} {% block content %} - {{ navMacro.top_nav(_("Room"), has_breadcrumbs=True) }} + {{ navMacro.top_nav(_("Room") , has_breadcrumbs=True) }} - <nav aria-label="breadcrumb"> - <ol class="breadcrumb hub-breadcrumbs"> - <li class="breadcrumb-item"><a href="{{ url('plainui:index') }}"> - {{ conf.name }} - </a></li> - {% if room.assembly %} - <li class="breadcrumb-item"><a href="{{ url('plainui:assemblies') }}">{{ _("assemblies") }}</a></li> + <nav aria-label="breadcrumb"> + <ol class="breadcrumb hub-breadcrumbs"> + <li class="breadcrumb-item"> + <a href="{{ url('plainui:index') }}">{{ conf.name }}</a> + </li> + {% if room.assembly %} + <li class="breadcrumb-item"> + <a href="{{ url('plainui:assemblies') }}">{{ _("assemblies") }}</a> + </li> <li class="breadcrumb-item"> - <a href="{{ url('plainui:assembly', assembly_slug=room.assembly.slug) }}"> - {{ room.assembly.name }} - </a> + <a href="{{ url('plainui:assembly', assembly_slug=room.assembly.slug) }}">{{ room.assembly.name }}</a> </li> - {% endif %} - </ol> - </nav> + {% endif %} + </ol> + </nav> - <div class="hub-vlayout-l"> - <div class="hub-card hub-vlayout"> - <h2 class="hub-head-main">{{ room.name }}</h2> - {% if room.description %} - {{ markdownMacro.markdown(markdown=room.description_html | safe, border=false) }} - {% endif %} + <div class="hub-vlayout-l"> + <div class="hub-card hub-vlayout"> + <h2 class="hub-head-main">{{ room.name }}</h2> + {% if room.description %}{{ markdownMacro.markdown(markdown=room.description_html | safe, border=false) }}{% endif %} - {% if links %} - <div class="hub-tags" role="list"> - {% for link in links %} - {% set url = '/' + link.link if link.conference_internal else url('plainui:dereferrer', dst=link.link) %} - {{ tagMacros.tag( - link.name, - link=url, - icon=link_icon(link), - style='secondary', - target=('_self' if link.conference_internal else '_blank'), - rel=('' if link.conference_internal else 'external, noreferrer') - ) }} - {% endfor %} - </div> - {% endif %} - </div> - - {% if voc_stream and not archive_mode %} - <div class="hub-card"> - <h2 class="hub-section-title mb-0">{{ _("Currently Streaming") }}</h2> - {{ integrations.vocPlayer(vocStream=voc_stream) }} + {% if links %} + <div class="hub-tags" role="list"> + {% for link in links %} + {% set url = '/' + link.link if link.conference_internal else url('plainui:dereferrer', dst=link.link) %} + {{ tagMacros.tag(link.name, + link=url, + icon=link_icon(link) , + style='secondary', + target=('_self' if link.conference_internal else '_blank'), + rel=('' if link.conference_internal else 'external, noreferrer') + ) }} + {% endfor %} </div> {% endif %} + </div> - <div class="hub-vlayout"> - <h2 class="hub-section-title mb-0">{{ _("Events") }}</h2> - {% if events %} - {{ list_events.list(events, my_favorite_events ) }} - {% else %} - <div class="hub-empty-section">{{ _("No entries available.") }}</div> - {% endif %} + {% if voc_stream and not archive_mode %} + <div class="hub-card"> + <h2 class="hub-section-title mb-0">{{ _("Currently Streaming") }}</h2> + {{ integrations.vocPlayer(vocStream=voc_stream) }} </div> + {% endif %} + + <div class="hub-vlayout"> + <h2 class="hub-section-title mb-0">{{ _("Events") }}</h2> + {% if events %} + {{ list_events.list(events, my_favorite_events) }} + {% else %} + <div class="hub-empty-section">{{ _("No entries available.") }}</div> + {% endif %} </div> + </div> {% endblock %} diff --git a/src/plainui/jinja2/plainui/rooms.html.j2 b/src/plainui/jinja2/plainui/rooms.html.j2 index bccf5178193fe9b67ff8e1c0c400be5dfb19a601..673f37ae5ee7ac9b4b8379e61476713e1de257cd 100644 --- a/src/plainui/jinja2/plainui/rooms.html.j2 +++ b/src/plainui/jinja2/plainui/rooms.html.j2 @@ -22,11 +22,11 @@ {% else %} {{ _("all rooms") }} {% endif %} - </h2> - {% if project_view %} - <div class="px-3 pb-3">{{ list_rooms.list(rooms, pagination=true, view_name='plainui:projects') }}</div> - {% else %} - <div class="px-3 pb-3">{{ list_rooms.list(rooms, pagination=true, view_name='plainui:rooms') }}</div> - {% endif %} - </div> - {% endblock content %} + </h2> + {% if project_view %} + <div class="px-3 pb-3">{{ list_rooms.list(rooms, pagination=true, view_name='plainui:projects') }}</div> + {% else %} + <div class="px-3 pb-3">{{ list_rooms.list(rooms, pagination=true, view_name='plainui:rooms') }}</div> + {% endif %} + </div> +{% endblock content %} diff --git a/src/plainui/jinja2/plainui/search.html.j2 b/src/plainui/jinja2/plainui/search.html.j2 index 020f5806b674462e17e1208f8da304b08b541d73..c9a2c5c7c6b07547256945ff3f4ac01453eb1b44 100644 --- a/src/plainui/jinja2/plainui/search.html.j2 +++ b/src/plainui/jinja2/plainui/search.html.j2 @@ -3,71 +3,47 @@ {% extends "plainui/base.html.j2" %} -{% block title %}{{conf.name}} - {{ _("Search Results") }}{% endblock %} +{% block title %}{{ conf.name }} - {{ _("Search Results") }}{% endblock %} {% block content %} -{{ navMacro.top_nav(_("Search Results")) }} + {{ navMacro.top_nav(_("Search Results") ) }} -<div role="list" class="hub-vlayout"> - {%- for result in search_results %} - <div class="hub-list-item"> - {% if result.type == 'Event' %} - {{ tagMacros.tag( - result.type, - style='clear', - icon='calendar-week' - ) }} - <a - class="hub-text-list-item-title" - href="{{ url('plainui:event', event_slug=result.item.slug) }}" - > - {{result.item}} - </a> - {% elif result.type == 'Assembly' %} - {{ tagMacros.tag( - result.type, - style='clear', - icon='person-arms-up' - ) }} - <a - class="hub-text-list-item-title" - href="{{ url('plainui:assembly', assembly_slug=result.item.slug) }}" - > - {{result.item}} - </a> - {% elif result.type == 'ConferenceTag' %} - {{ tagMacros.tag( - result.type, - style='clear', - icon='tag' - ) }} - <a - class="hub-text-list-item-title" - href="{{ url('plainui:tag', tag_slug=result.item.slug) }}" - > - {{result.item}} - </a> - {% elif result.type == 'ConferenceTrack' %} - {{result.type}}: {{result.item}} - {% elif result.type == 'StaticPage' %} - {{ tagMacros.tag( - result.type, - style='clear', - icon='book' - ) }} - <a - class="hub-text-list-item-title" - href="{{ url('plainui:static_page', page_slug=result.item.slug) }}" - > - {{ result.item }} - </a> - {% else %} - {{result.type}}: {{result.item}} - {% endif %} - </div> - {%- else %} - {{ _("No results, sorry!") }} - {%- endfor %} -</div> + <div role="list" class="hub-vlayout"> + {%- for result in search_results %} + <div class="hub-list-item"> + {% if result.type == 'Event' %} + {{ tagMacros.tag(result.type, + style='clear', + icon='calendar-week') }} + <a class="hub-text-list-item-title" + href="{{ url('plainui:event', event_slug=result.item.slug) }}">{{ result.item }}</a> + {% elif result.type == 'Assembly' %} + {{ tagMacros.tag(result.type, + style='clear', + icon='person-arms-up') }} + <a class="hub-text-list-item-title" + href="{{ url('plainui:assembly', assembly_slug=result.item.slug) }}">{{ result.item }}</a> + {% elif result.type == 'ConferenceTag' %} + {{ tagMacros.tag(result.type, + style='clear', + icon='tag') }} + <a class="hub-text-list-item-title" + href="{{ url('plainui:tag', tag_slug=result.item.slug) }}">{{ result.item }}</a> + {% elif result.type == 'ConferenceTrack' %} + {{ result.type }}: {{ result.item }} + {% elif result.type == 'StaticPage' %} + {{ tagMacros.tag(result.type, + style='clear', + icon='book') }} + <a class="hub-text-list-item-title" + href="{{ url('plainui:static_page', page_slug=result.item.slug) }}">{{ result.item }}</a> + {% else %} + {{ result.type }}: {{ result.item }} + {% endif %} + </div> + {%- else %} + {{ _("No results, sorry!") }} + {%- endfor %} + </div> {% endblock %} diff --git a/src/plainui/jinja2/plainui/signup.html.j2 b/src/plainui/jinja2/plainui/signup.html.j2 index 08171993907b4abe1e06f39a89203b986b4da7e2..a0a4c448171f6541bf21aeba6274568969e3e69f 100644 --- a/src/plainui/jinja2/plainui/signup.html.j2 +++ b/src/plainui/jinja2/plainui/signup.html.j2 @@ -1,46 +1,44 @@ {% extends "plainui/base.html.j2" %} {% import "plainui/components/form_elements.html.j2" as formElementsMacro %} {% import "plainui/components/logo.html.j2" as logoMacro %} -{% block title %}{{ _("%(conf)s - Registration", conf=conf.name) }}{% endblock %} +{% block title %} + {{ _("%(conf)s - Registration", conf=conf.name) }} +{% endblock %} {% block fullpage %} -<article class="container"> + <article class="container"> <figure class="hub-landing__logo"> - {{ logoMacro.logo(url('plainui:index'), conf.name + " logo", conf.name + " logo", "rounded mx-auto d-block") }} + {{ logoMacro.logo(url('plainui:index') , conf.name + " logo", conf.name + " logo", "rounded mx-auto d-block") }} </figure> <h2>{{ _("Registration") }}</h2> <p>{{ _("Registration Info Text") }}</p> {% if not archive_mode %} - <form - method="POST" - id="registration" - class="mw-664 hub-landing__form" - > + <form method="POST" id="registration" class="mw-664 hub-landing__form"> <div class=""> - <input type="hidden" name="next" value="{{next}}"> + <input type="hidden" name="next" value="{{ next }}"> - {{ csrf_input }} - {{ formElementsMacro.errors(form) }} - {{ formElementsMacro.text(form, 'username') }} - {{ formElementsMacro.password(form, 'password1') }} - {{ formElementsMacro.password(form, 'password2') }} - {{ formElementsMacro.input(form, 'email', 'email') }} + {{ csrf_input }} + {{ formElementsMacro.errors(form) }} + {{ formElementsMacro.text(form, 'username') }} + {{ formElementsMacro.password(form, 'password1') }} + {{ formElementsMacro.password(form, 'password2') }} + {{ formElementsMacro.input(form, 'email', 'email') }} - <ul class="d-flex flex-column flex-sm-row justify-content-center list-unstyled mb-0"> - <li class="mx-2"> - <button type="submit" class="btn btn-block btn-primary" form="registration">{{ _("Create Account") }}</button> - </li> - </ul> + <ul class="d-flex flex-column flex-sm-row justify-content-center list-unstyled mb-0"> + <li class="mx-2"> + <button type="submit" class="btn btn-block btn-primary" form="registration">{{ _("Create Account") }}</button> + </li> + </ul> </div> - </form> + </form> {% else %} <p class="mb-2 text-white">{{ _("archivemode_nologin") }}</p> {% endif %} <hr class="hub-spacer"> -</article> + </article> {% endblock %} diff --git a/src/plainui/jinja2/plainui/signup_done.html.j2 b/src/plainui/jinja2/plainui/signup_done.html.j2 index 4049d1e0a054dc8456aa0186839c99a48e954cf8..e366255eed939945075ff29dfbc2d0c1bb5ed4dd 100644 --- a/src/plainui/jinja2/plainui/signup_done.html.j2 +++ b/src/plainui/jinja2/plainui/signup_done.html.j2 @@ -1,18 +1,20 @@ {% extends "plainui/base.html.j2" %} {% import "plainui/components/form_elements.html.j2" as formElementsMacro %} {% import "plainui/components/logo.html.j2" as logoMacro %} -{% block title %}{{ _("%(conf)s - Registration", conf=conf.name) }}{% endblock %} +{% block title %} + {{ _("%(conf)s - Registration", conf=conf.name) }} +{% endblock %} {% block fullpage %} -<article class="container"> + <article class="container"> <figure class="hub-landing__logo"> - {{ logoMacro.logo(url('plainui:index'), conf.name + " logo", conf.name + " logo", "rounded mx-auto d-block") }} + {{ logoMacro.logo(url('plainui:index') , conf.name + " logo", conf.name + " logo", "rounded mx-auto d-block") }} </figure> <h2>{{ _("SignUp Complete") }}</h2> <p>{{ _("SignUp Mail sent") }}</p> <hr class="hub-spacer"> -</article> + </article> {% endblock %} diff --git a/src/plainui/jinja2/plainui/sos.html.j2 b/src/plainui/jinja2/plainui/sos.html.j2 index e710e21ebe005f7aa654e8aca632974d111dd491..366534526a952c4bf296651d85f5e6ce05db1d70 100644 --- a/src/plainui/jinja2/plainui/sos.html.j2 +++ b/src/plainui/jinja2/plainui/sos.html.j2 @@ -4,25 +4,21 @@ {% import "plainui/components/wiki.html.j2" as wikiMacro with context %} {# Translators: Website title #} -{% block title %}{{conf.name}} - {{ _("self-organized sessions") }}{% endblock %} +{% block title %}{{ conf.name }} - {{ _("self-organized sessions") }}{% endblock %} {% block content %} - {{ navMacro.top_nav(_("self-organized sessions")) }} - <div class="hub-vlayout-l"> - {{ wikiMacro.card('_intro_sos') }} + {{ navMacro.top_nav(_("self-organized sessions") ) }} + <div class="hub-vlayout-l"> + {{ wikiMacro.card("_intro_sos") }} - <div class="hub-vlayout"> - <h2 class="hub-head-category"> - {{ _("Running and Upcoming Self-organized Sessions") }} - </h2> - {{ list_events.list(events_upcoming, is_favorite_events ) }} - </div> - - <div class="hub-vlayout"> - <h2 class="hub-head-category"> - {{ _("All Self-organized Sessions") }} - </h2> - {{ list_events.list(events, is_favorite_events ) }} - </div> + <div class="hub-vlayout"> + <h2 class="hub-head-category">{{ _("Running and Upcoming Self-organized Sessions") }}</h2> + {{ list_events.list(events_upcoming, is_favorite_events) }} + </div> + <div class="hub-vlayout"> + <h2 class="hub-head-category">{{ _("All Self-organized Sessions") }}</h2> + {{ list_events.list(events, is_favorite_events) }} </div> + + </div> {% endblock %} diff --git a/src/plainui/jinja2/plainui/sos_edit.html.j2 b/src/plainui/jinja2/plainui/sos_edit.html.j2 index 8d9b90b41a99f22a5f63c6c46c46d2861b1f420a..9f8ca713ba031ee078cf1795d9e33c74468ce404 100644 --- a/src/plainui/jinja2/plainui/sos_edit.html.j2 +++ b/src/plainui/jinja2/plainui/sos_edit.html.j2 @@ -1,30 +1,33 @@ {% import "plainui/components/form_elements.html.j2" as form_elements %} {% extends "plainui/base.html.j2" %} -{% block title %}{{conf.name}} - Edit Self-organized Session{% endblock %} +{% block title %}{{ conf.name }} - Edit Self-organized Session{% endblock %} {% block content %} - <form method="POST" class="border p-0 mx-auto my-11 {% if form.errors %} border-danger{% endif %}"> - <h2 class="bg-secondary text-center text-dark m-0 px-3 py-1">{{ _("Self-organized Session") }}</h2> - <div class="p-3"> - {{ csrf_input }} + <form method="POST" + class="border p-0 mx-auto my-11 {% if form.errors %}border-danger{% endif %}"> + <h2 class="bg-secondary text-center text-dark m-0 px-3 py-1">{{ _("Self-organized Session") }}</h2> + <div class="p-3"> + {{ csrf_input }} - {{ form_elements.text(form, 'name') }} - {{ form_elements.select(form, 'room') }} - {{ form_elements.text(form, 'schedule_start') }} - {{ form_elements.text(form, 'schedule_duration') }} - {{ form_elements.checkbox(form, 'is_public') }} - {{ form_elements.text(form, 'language') }} - {{ form_elements.textarea(form, 'description') }} + {{ form_elements.text(form, 'name') }} + {{ form_elements.select(form, 'room') }} + {{ form_elements.text(form, 'schedule_start') }} + {{ form_elements.text(form, 'schedule_duration') }} + {{ form_elements.checkbox(form, 'is_public') }} + {{ form_elements.text(form, 'language') }} + {{ form_elements.textarea(form, 'description') }} - <ul class="d-flex justify-content-center list-unstyled mb-0"> - <li class="mx-2"> - <a class="btn btn-transparent" title="{{ _("Back") }}" href="{{ url('plainui:assembly', assembly_slug=assembly.slug) }}">{{ _("back") }}</a> - </li> - <li class="mx-2"> - <button type="submit" class="btn btn-primary">{{ _("Update") if edit_mode else _("Create") }}</button> - </li> - </ul> + <ul class="d-flex justify-content-center list-unstyled mb-0"> + <li class="mx-2"> + <a class="btn btn-transparent" + title="{{ _('Back') }}" + href="{{ url('plainui:assembly', assembly_slug=assembly.slug) }}">{{ _("back") }}</a> + </li> + <li class="mx-2"> + <button type="submit" class="btn btn-primary">{{ _("Update") if edit_mode else _("Create") }}</button> + </li> + </ul> - {{ form_elements.errors(form) }} - </div> - </form> + {{ form_elements.errors(form) }} + </div> + </form> {% endblock %} diff --git a/src/plainui/jinja2/plainui/static_page.html.j2 b/src/plainui/jinja2/plainui/static_page.html.j2 index aa788587e885210fb15603ee7068cf9e11bc46fb..010138b323d64c74049d4c600a9bda93ad79cb04 100644 --- a/src/plainui/jinja2/plainui/static_page.html.j2 +++ b/src/plainui/jinja2/plainui/static_page.html.j2 @@ -4,61 +4,60 @@ {% import "plainui/components/alert.html.j2" as alert %} {% import "plainui/components/nav.html.j2" as navMacro with context %} -{% block title %}{{conf.name}} - {% if page %}{{ page.title }}{% else %}{{ _("missing page") }}{% endif %}{% endblock %} +{% block title %} + {{ conf.name }} - + {% if page %} + {{ page.title }} + {% else %} + {{ _("missing page") }} + {% endif %} +{% endblock %} {% block content %} - {%- if not page %} - {%- if page_no_permission %} - {% call alert.danger() %} - {{ _("This Page is private. You are currently not permitted to view this page.") }} - {% endcall %} - {%- elif page_can_create %} - {% call alert.info() %} - {{ _("This page does not exist. Do you wish to create it?") }} - <a - href="{{ url('plainui:static_page_edit', page_slug=page_slug) }}" - class="btn btn-primary" - > - {{ _("Create Page") }} - </a> - {% endcall %} - {%- else %} - {% call alert.warning() %} - {{ _("This page does not exist.") }} - {% endcall %} - {%- endif %} + {%- if not page %} + {%- if page_no_permission %} + {% call alert.danger() %} + {{ _("This Page is private. You are currently not permitted to view this page.") }} + {% endcall %} + {%- elif page_can_create %} + {% call alert.info() %} + {{ _("This page does not exist. Do you wish to create it?") }} + <a href="{{ url('plainui:static_page_edit', page_slug=page_slug) }}" + class="btn btn-primary">{{ _("Create Page") }}</a> + {% endcall %} {%- else %} + {% call alert.warning() %} + {{ _("This page does not exist.") }} + {% endcall %} + {%- endif %} + {%- else %} {%- if revision_not_found %} {% call alert.warning() %} {{ _("This revision does not exist.") }} {% endcall %} {%- endif %} - {{ navMacro.top_nav(_("Wiki page")) }} + {{ navMacro.top_nav(_("Wiki page") ) }} {% if not archive_mode %} - <div class="row"> + <div class="row"> <div class="col m-2 d-flex justify-content-start"> - <a href="{{ url('plainui:static_page_global_history') }}" class="btn btn-dark me-2">{{ _("Global History") }}</a> + <a href="{{ url('plainui:static_page_global_history') }}" + class="btn btn-dark me-2">{{ _("Global History") }}</a> </div> <div class="col m-2 d-flex justify-content-end"> - {%- if page_can_edit %} - <a href="{{ edit_url }}" class="btn me-2">{{ _("Edit") }}</a> - {%- endif %} - <a - href="{{ build_report_url(request, report_info=report_info) }}" - class="btn btn-secondary me-2" - >{{ _("Report") }}</a> - <a href="{{ url('plainui:static_page_history', page_slug=page_slug) }}" class="btn btn-dark">{{ _("History") }}</a> + {%- if page_can_edit %}<a href="{{ edit_url }}" class="btn me-2">{{ _("Edit") }}</a>{%- endif %} + <a href="{{ build_report_url(request, report_info=report_info) }}" + class="btn btn-secondary me-2">{{ _("Report") }}</a> + <a href="{{ url('plainui:static_page_history', page_slug=page_slug) }}" + class="btn btn-dark">{{ _("History") }}</a> </div> - </div> + </div> {% endif %} <div class="hub-card"> <h2 class="hub-section-title">{{ page.title }}</h2> - <article class="hub-text"> - {{ markdownMacro.markdown(markdown=page_body | safe, border=False) }} - </article> + <article class="hub-text">{{ markdownMacro.markdown(markdown=page_body | safe, border=False) }}</article> </div> - {% endif %} + {% endif %} {% endblock %} diff --git a/src/plainui/jinja2/plainui/static_page_diff.html.j2 b/src/plainui/jinja2/plainui/static_page_diff.html.j2 index a5c513d833718fcd81e1f1e9d2cc9ceafce14aea..990420c0b71e84c51f28feb8932467e44dc4a62c 100644 --- a/src/plainui/jinja2/plainui/static_page_diff.html.j2 +++ b/src/plainui/jinja2/plainui/static_page_diff.html.j2 @@ -1,34 +1,34 @@ {% extends "plainui/base.html.j2" %} {% import "plainui/components/markdown.html.j2" as markdownMacro %} {% import "plainui/components/nav.html.j2" as navMacro with context %} -{% block title %}{{conf.name}} - {{ page.title }}{% endblock %} +{% block title %}{{ conf.name }} - {{ page.title }}{% endblock %} {% block content %} - {{ navMacro.top_nav(_("Compare")) }} + {{ navMacro.top_nav(_("Compare") ) }} - <nav aria-label="breadcrumb"> - <ol class="breadcrumb hub-breadcrumbs"> - <li class="breadcrumb-item"> - {{ _("Wiki") }} - </li> - <li class="breadcrumb-item"> - <a href="{{ url('plainui:static_page', page_slug=page_slug) }}"> - {{ page.title }} - </a> - </li> - <li class="breadcrumb-item"> - <a href="{{ url('plainui:static_page_global_history') }}"> - {{ _("Global History") }} - </a> - </li> + <nav aria-label="breadcrumb"> + <ol class="breadcrumb hub-breadcrumbs"> + <li class="breadcrumb-item">{{ _("Wiki") }}</li> + <li class="breadcrumb-item"> + <a href="{{ url('plainui:static_page', page_slug=page_slug) }}">{{ page.title }}</a> + </li> + <li class="breadcrumb-item"> + <a href="{{ url('plainui:static_page_global_history') }}">{{ _("Global History") }}</a> + </li> </nav> <div class="row diff_rev"> - <div class="col"><h2><a href="{{ url('plainui:static_page', page_slug=page_slug) }}?rev={{ rev_id.rev1 }}">{{ rev_id.rev1 }}</a></h2></div> - <div class="col"><h2><a href="">{{ rev_id.rev2 }}</a></h2></div> + <div class="col"> + <h2> + <a href="{{ url('plainui:static_page', page_slug=page_slug) }}?rev={{ rev_id.rev1 }}">{{ rev_id.rev1 }}</a> + </h2> + </div> + <div class="col"> + <h2> + <a href="">{{ rev_id.rev2 }}</a> + </h2> + </div> </div> - <article class="pb-11"> - {{ diff |safe }} - </article> + <article class="pb-11">{{ diff |safe }}</article> -{% endblock %} + {% endblock %} diff --git a/src/plainui/jinja2/plainui/static_page_edit.html.j2 b/src/plainui/jinja2/plainui/static_page_edit.html.j2 index 4487d0883f002271f58a88d0a51e1c52c1fd3dac..c66bc8e2400ae88544a95ed624db56cc7ef13ab2 100644 --- a/src/plainui/jinja2/plainui/static_page_edit.html.j2 +++ b/src/plainui/jinja2/plainui/static_page_edit.html.j2 @@ -2,74 +2,73 @@ {% import "plainui/components/form_elements.html.j2" as formElements %} {% import "plainui/components/markdown.html.j2" as markdownMacro %} {% import "plainui/components/nav.html.j2" as navMacro with context %} -{% block title %}{{conf.name}} - {{ page.title }}{% endblock %} +{% block title %}{{ conf.name }} - {{ page.title }}{% endblock %} {% block content %} - {{ navMacro.top_nav(_("Edit")) }} + {{ navMacro.top_nav(_("Edit") ) }} - <nav aria-label="breadcrumb"> - <ol class="breadcrumb hub-breadcrumbs"> - <li class="breadcrumb-item"> - {{ _("Wiki") }} - </li> - <li class="breadcrumb-item"> - <a href="{{ url('plainui:static_page', page_slug=page_slug) }}"> - {{ page.title }} - </a> - </li> + <nav aria-label="breadcrumb"> + <ol class="breadcrumb hub-breadcrumbs"> + <li class="breadcrumb-item">{{ _("Wiki") }}</li> + <li class="breadcrumb-item"> + <a href="{{ url('plainui:static_page', page_slug=page_slug) }}">{{ page.title }}</a> + </li> </nav> <article class="pb-11"> - {% if not lock_id %} + {% if not lock_id %} + {% call alert.warning() %} + <strong>{{ _("This page is currently being edited by another user, please try again in a moment.") }}</strong> + {% endcall %} + {% elif not writeable %} + {% call alert.warning() %} + <strong>{{ _("Sorry, you don't have permission to edit this wiki page.") }}</strong> + {{ _("If you think this is an error please use the report functionality on this page and select 'technical issue'.") }} + {% endcall %} + {% elif page.is_localized %} + {% call alert.danger() %} + <strong>{{ _("Localized page.") }}</strong> + {{ _("Please note that this page is present in the current language only. It may have a (translated) copy in other language or not exist there at all.") }} + {% endcall %} + {% endif %} + {% if preview_body is defined %} + <article class="pb-11">{{ markdownMacro.markdown(markdown=preview_body | safe) }}</article> + {% endif %} + <form method="POST" + action="{{ url('plainui:static_page_edit', page_slug=page_slug) }}{{ '?rev=' + revision if revision else '' }}"> + {%- if not_latest_revision %} {% call alert.warning() %} - <strong>{{ _('This page is currently being edited by another user, please try again in a moment.') }}</strong> + {{ _("Careful: You're not editing the latest version of this Page!") }} {% endcall %} - {% elif not writeable %} - {% call alert.warning() %} - <strong>{{ _("Sorry, you don't have permission to edit this wiki page.") }}</strong> - {{ _("If you think this is an error please use the report functionality on this page and select 'technical issue'.") }} - {% endcall %} - {% elif page.is_localized %} - {% call alert.danger() %} - <strong>{{ _("Localized page.") }}</strong> - {{ _("Please note that this page is present in the current language only. It may have a (translated) copy in other language or not exist there at all.") }} - {% endcall %} - {% endif %} - {% if preview_body is defined %} - <article class="pb-11"> - {{ markdownMacro.markdown(markdown=preview_body | safe) }} - </article> - {% endif %} - <form method="POST" action="{{ url('plainui:static_page_edit', page_slug=page_slug) }}{{ '?rev=' + revision if revision else '' }}"> - {%- if not_latest_revision %} - {% call alert.warning() %} - {{ _("Careful: You're not editing the latest version of this Page!") }} - {% endcall %} - {%- endif %} - {{ csrf_input }} - {{ formElements.errors(form) }} - {{ formElements.field(form, 'title') }} - {{ formElements.textarea(form, 'body') }} - {{ formElements.hidden(form, 'lock') }} + {%- endif %} + {{ csrf_input }} + {{ formElements.errors(form) }} + {{ formElements.field(form, 'title') }} + {{ formElements.textarea(form, 'body') }} + {{ formElements.hidden(form, 'lock') }} - <div class="row mt-1"> - <div class="col"> - {%- if writeable %} - <button type="submit" class="btn btn-primary">{{ _("Save") }}{% if page.is_localized %} ({{ get_language() }}){% endif %}</button> - <button type="submit" name="preview" value="true" class="btn btn-secondary">{{ _("Preview") }}</button> - {%- endif %} - </div> - <div class="col d-flex justify-content-end"> - <a href="{{ url('plainui:static_page', page_slug=page_slug) }}{% if lock_id %}?release={{ lock_id }}{% endif %}" class="btn btn-dark">{{ _("Cancel") if writeable else _("Back") }}</a> - </div> - </div> - </form> + <div class="row mt-1"> + <div class="col"> + {%- if writeable %} + <button type="submit" class="btn btn-primary"> + {{ _("Save") }} + {% if page.is_localized %}({{ get_language() }}){% endif %} + </button> + <button type="submit" name="preview" value="true" class="btn btn-secondary">{{ _("Preview") }}</button> + {%- endif %} + </div> + <div class="col d-flex justify-content-end"> + <a href="{{ url('plainui:static_page', page_slug=page_slug) }}{% if lock_id %}?release={{ lock_id }}{% endif %}" + class="btn btn-dark">{{ _("Cancel") if writeable else _("Back") }}</a> + </div> + </div> + </form> </article> -{% endblock %} + {% endblock %} -{% block jstools %} -{% if page_slug and lock_id %} -<script> + {% block jstools %} + {% if page_slug and lock_id %} + <script> const data = new URLSearchParams(); data.append('page_slug', {{ page_slug | tojson }}); data.append('lock_id', {{ lock_id | tojson }}); @@ -82,6 +81,6 @@ }) } setInterval(refresh_lock, {{ lock_refresh_interval | tojson}} * 1000); -</script> -{% endif %} -{% endblock %} + </script> + {% endif %} + {% endblock %} diff --git a/src/plainui/jinja2/plainui/static_page_global_history.html.j2 b/src/plainui/jinja2/plainui/static_page_global_history.html.j2 index d008fe5f79acd730a59719393fe1ec851afc928e..891185b5d49c68d991e616943cc1851cecb6dd92 100644 --- a/src/plainui/jinja2/plainui/static_page_global_history.html.j2 +++ b/src/plainui/jinja2/plainui/static_page_global_history.html.j2 @@ -1,33 +1,33 @@ {% extends "plainui/base.html.j2" %} {% import "plainui/components/markdown.html.j2" as markdownMacro %} {% import "plainui/components/nav.html.j2" as navMacro with context %} -{% block title %}{{conf.name}} - {{ _("Page Modifications") }}{% endblock %} +{% block title %}{{ conf.name }} - {{ _("Page Modifications") }}{% endblock %} {% block content %} - {{ navMacro.top_nav(_("Page Modifications")) }} - <article class="pb-11 staticpage"> - <div class="hub-card"> - {% set ns = namespace(prev=0) %} - {% for history_entry in history %} - {% set timestamp = history_entry.timestamp %} - {% set dmy = timestamp.strftime('%Y-%m-%d') %} + {{ navMacro.top_nav(_("Page Modifications") ) }} + <article class="pb-11 staticpage"> + <div class="hub-card"> + {% set ns = namespace(prev=0) %} + {% for history_entry in history %} + {% set timestamp = history_entry.timestamp %} + {% set dmy = timestamp.strftime('%Y-%m-%d') %} - {% if dmy != ns.prev %} - </ul> - <h3>{{ dmy }}</h3> - <ul> - {% endif %} - <li> - <a href="{{ url('plainui:static_page', page_slug=history_entry.page.slug) }}?rev={{ history_entry.revision }}">{{ history_entry.page.title }}</a> . . {{ history_entry.timestamp.strftime('%H:%M') }} - {%- if history_entry.author %} - . . - <a href="{{ url('plainui:user', user_slug=history_entry.author.slug) }}">{{ history_entry.author.display_name if history_entry.author else _("<Unknown User>")}}</a> - {%- else %} - {{ _("<Unknown User>") }} - {%- endif %} - </li> - {%- set ns.prev = dmy %} - {% endfor %} + {% if dmy != ns.prev %} + </ul> + <h3>{{ dmy }}</h3> + <ul> + {% endif %} + <li> + <a href="{{ url('plainui:static_page', page_slug=history_entry.page.slug) }}?rev={{ history_entry.revision }}">{{ history_entry.page.title }}</a> . . {{ history_entry.timestamp.strftime("%H:%M") }} + {%- if history_entry.author %} + . . + <a href="{{ url('plainui:user', user_slug=history_entry.author.slug) }}">{{ history_entry.author.display_name if history_entry.author else _("<Unknown User>") }}</a> + {%- else %} + {{ _("<Unknown User>") }} + {%- endif %} + </li> + {%- set ns.prev = dmy %} + {% endfor %} </article> -{% endblock %} + {% endblock %} diff --git a/src/plainui/jinja2/plainui/static_page_history.html.j2 b/src/plainui/jinja2/plainui/static_page_history.html.j2 index 1b552acb3cfbdcab3a1cc4430587c23714f9cf38..ff3ea1e60ce34103b62cd13496664dc169851481 100644 --- a/src/plainui/jinja2/plainui/static_page_history.html.j2 +++ b/src/plainui/jinja2/plainui/static_page_history.html.j2 @@ -1,41 +1,38 @@ {% extends "plainui/base.html.j2" %} {% import "plainui/components/markdown.html.j2" as markdownMacro %} {% import "plainui/components/nav.html.j2" as navMacro with context %} -{% block title %}{{conf.name}} - {{ page.title }}{% endblock %} +{% block title %}{{ conf.name }} - {{ page.title }}{% endblock %} {% block content %} - {{ navMacro.top_nav(_("History")) }} + {{ navMacro.top_nav(_("History") ) }} - <nav aria-label="breadcrumb"> - <ol class="breadcrumb hub-breadcrumbs"> - <li class="breadcrumb-item"> - {{ _("Wiki") }} - </li> - <li class="breadcrumb-item"> - <a href="{{ url('plainui:static_page', page_slug=page_slug) }}"> - {{ page.title }} - </a> - </li> + <nav aria-label="breadcrumb"> + <ol class="breadcrumb hub-breadcrumbs"> + <li class="breadcrumb-item">{{ _("Wiki") }}</li> + <li class="breadcrumb-item"> + <a href="{{ url('plainui:static_page', page_slug=page_slug) }}">{{ page.title }}</a> + </li> </nav> <article class="pb-11 staticpage"> - <form method="GET" action="{{ url('plainui:static_page_diff', page_slug=page_slug) }}"> + <form method="GET" + action="{{ url('plainui:static_page_diff', page_slug=page_slug) }}"> <input type="submit" class="btn m-2" value="Compare"> <ul class="hub-card"> - {% for history_entry in history %} + {% for history_entry in history %} <li class="list-unstyled"> - <input type="radio" name="rev" value="{{history_entry.revision}}"> - <input type="radio" name="rev2" value="{{history_entry.revision}}"> - {%- if loop.first %} + <input type="radio" name="rev" value="{{ history_entry.revision }}"> + <input type="radio" name="rev2" value="{{ history_entry.revision }}"> + {%- if loop.first %} <span class="time"><a href="{{ url('plainui:static_page', page_slug=page_slug) }}">{{ history_entry.timestamp | strftime }}</a></span> - {% else %} + {% else %} <span class="time"><a href="{{ url('plainui:static_page', page_slug=page_slug) }}?rev={{ history_entry.revision }}">{{ history_entry.timestamp | strftime }}</a></span> - {% endif %} - <a href="{{ url('plainui:user', user_slug=history_entry.author.slug) }}">{{ history_entry.author.display_name if history_entry.author else _("<Unknown User>")}}</a> + {% endif %} + <a href="{{ url('plainui:user', user_slug=history_entry.author.slug) }}">{{ history_entry.author.display_name if history_entry.author else _("<Unknown User>") }}</a> </li> - {% endfor %} + {% endfor %} </ul> </form> </article> -{% endblock %} + {% endblock %} diff --git a/src/plainui/jinja2/plainui/tag.html.j2 b/src/plainui/jinja2/plainui/tag.html.j2 index 0a3dab14e67b80656fa8c6575c0e2d84335932bb..32a09c1acd3832356ab032390f5ed3add52aa0dc 100644 --- a/src/plainui/jinja2/plainui/tag.html.j2 +++ b/src/plainui/jinja2/plainui/tag.html.j2 @@ -5,31 +5,27 @@ {% extends "plainui/base.html.j2" %} -{% block title %}{{conf.name}} - {{ _("Tag %(name)s", name=tag.slug) }}{% endblock %} +{% block title %} + {{ conf.name }} - {{ _("Tag %(name)s", name=tag.slug) }} +{% endblock %} {% block content %} -{{ navMacro.top_nav(_("Tag %(name)s", name=tag.slug)) }} + {{ navMacro.top_nav(_("Tag %(name)s", name=tag.slug) ) }} -<div class="hub-vlayout-l"> - <div class="hub-vlayout"> - <h2 class="hub-section-title mb-0"> - {{ _("Assemblies") }} - </h2> - {{ list_assm.list(assemblies, my_favorite_assemblies ) }} - </div> + <div class="hub-vlayout-l"> + <div class="hub-vlayout"> + <h2 class="hub-section-title mb-0">{{ _("Assemblies") }}</h2> + {{ list_assm.list(assemblies, my_favorite_assemblies) }} + </div> - <div class="hub-vlayout"> - <h2 class="hub-section-title mb-0"> - {{ _("Events") }} - </h2> - {{ list_events.list(events, my_favorite_events ) }} - </div> + <div class="hub-vlayout"> + <h2 class="hub-section-title mb-0">{{ _("Events") }}</h2> + {{ list_events.list(events, my_favorite_events) }} + </div> - <div class="hub-vlayout"> - <h2 class="hub-section-title mb-0"> - {{ _("Projects") }} - </h2> - {{ list_projects.list( projects,my_favorite_projects, metadata=false ) }} + <div class="hub-vlayout"> + <h2 class="hub-section-title mb-0">{{ _("Projects") }}</h2> + {{ list_projects.list(projects,my_favorite_projects, metadata=false) }} + </div> </div> -</div> {% endblock %} diff --git a/src/plainui/jinja2/plainui/token_password_reset.html.j2 b/src/plainui/jinja2/plainui/token_password_reset.html.j2 index 44f2c3bf0d2ec34fef6ce16c9ce9fa15562b38e6..d5ff4c27ddc7a03aa5ad7fbfd90b594e3457fc2e 100644 --- a/src/plainui/jinja2/plainui/token_password_reset.html.j2 +++ b/src/plainui/jinja2/plainui/token_password_reset.html.j2 @@ -1,24 +1,28 @@ {% extends "plainui/base.html.j2" %} {% import "plainui/components/form_elements.html.j2" as form_elements %} -{% block title %}{{ _("Conference %(conf)s - Password Reset", conf=conf.name) }}{% endblock %} +{% block title %} + {{ _("Conference %(conf)s - Password Reset", conf=conf.name) }} +{% endblock %} {% block content %} - {{ titleMacro.title(_("Password Reset")) }} + {{ titleMacro.title(_("Password Reset") ) }} - <div> - <form class="mw-810 border p-6 mx-auto mb-11{% if form.errors %} border-danger{% endif %}" method="POST" action=""> - <h2 class="text-center bg-info p-3 text-white h3">{{ _("Password Reset") }}</h2> - {{ csrf_input }} - {{ form_elements.hidden(form, 'jwt') }} - {{ form_elements.text(form, 'username') }} - {{ form_elements.password(form, 'new_password1') }} - {{ form_elements.password(form, 'new_password2') }} - <ul class="row row-cols-1 row-cols-lg-3 list-unstyled"> - <li class="col ml-auto"> - <button type="submit" class="btn btn-xl btn-block btn-primary ml-auto">{{ _("Reset Password")}}</button> - </li> - </ul> - {{ form_elements.errors(form) }} - </form> - </div> + <div> + <form class="mw-810 border p-6 mx-auto mb-11{% if form.errors %} border-danger{% endif %}" + method="POST" + action=""> + <h2 class="text-center bg-info p-3 text-white h3">{{ _("Password Reset") }}</h2> + {{ csrf_input }} + {{ form_elements.hidden(form, 'jwt') }} + {{ form_elements.text(form, 'username') }} + {{ form_elements.password(form, 'new_password1') }} + {{ form_elements.password(form, 'new_password2') }} + <ul class="row row-cols-1 row-cols-lg-3 list-unstyled"> + <li class="col ml-auto"> + <button type="submit" class="btn btn-xl btn-block btn-primary ml-auto">{{ _("Reset Password") }}</button> + </li> + </ul> + {{ form_elements.errors(form) }} + </form> + </div> {% endblock %} diff --git a/src/plainui/jinja2/plainui/upcoming.html.j2 b/src/plainui/jinja2/plainui/upcoming.html.j2 index a1048f5e73c8915fde9e41d4e40df10758947da8..40c75937c92a722562460b8a5c1467c58c06e9a0 100644 --- a/src/plainui/jinja2/plainui/upcoming.html.j2 +++ b/src/plainui/jinja2/plainui/upcoming.html.j2 @@ -1,11 +1,9 @@ {% extends "plainui/base.html.j2" %} {% import "plainui/components/list_events.html.j2" as list_events with context %} -{% block title %}{{conf.name}} - {{ _("Upcoming") }}{% endblock %} +{% block title %}{{ conf.name }} - {{ _("Upcoming") }}{% endblock %} {% block content %} - {{ titleMacro.title(_("Upcoming events")) }} + {{ titleMacro.title(_("Upcoming events") ) }} - <div class="border mt-8 mb-11 p-3"> - {{ list_events.slider(events, my_favorite_events ) }} - </div> + <div class="border mt-8 mb-11 p-3">{{ list_events.slider(events, my_favorite_events) }}</div> {% endblock %} diff --git a/src/plainui/jinja2/plainui/user.html.j2 b/src/plainui/jinja2/plainui/user.html.j2 index a55ae9577d492a208e2bfdeae25ca621fcbce4f7..5134cc2658cc65a26094cf3f4b1f9f58192e4b2b 100644 --- a/src/plainui/jinja2/plainui/user.html.j2 +++ b/src/plainui/jinja2/plainui/user.html.j2 @@ -7,67 +7,42 @@ {% extends "plainui/base.html.j2" %} -{% block title %}{{ _("%(conf)s - User %(name)s", conf=conf.name, name=display_user.username) }}{% endblock %} +{% block title %} + {{ _("%(conf)s - User %(name)s", conf=conf.name, name=display_user.username) }} +{% endblock %} {% block content %} -{{ navMacro.top_nav(_("User Profile")) }} + {{ navMacro.top_nav(_("User Profile") ) }} -<div class="hub-vlayout"> - <div class="hub-row"> - <div class="hub-col-remaining hub-card hub-vlayout"> - <h1 class="hub-head-main"> - {{ display_user.username }} - </h1> - {% if display_user.pronouns %} - <div> - {{ tagMacros.secondary(display_user.pronouns) }} - </div> - {% endif %} - {% if description_html %} - <div class="hub-text"> - {{ markdownMacro.markdown_plain(markdown=description_html | safe, border=false) }} - </div> - {% endif %} - <div class="hub-hlayout"> - {% if true or display_user != user %} - <a - href="{{ url('plainui:personal_message_send_to', recipient=display_user.username) }}" - class="hub-btn" - > - {{ _("Send PN") }} - </a> - {% endif %} - {% if display_user == user %} - <a - href="{{ url('plainui:userprofile') }}" - class="hub-btn" - > - {{ _("Edit your profile") }} - </a> + <div class="hub-vlayout"> + <div class="hub-row"> + <div class="hub-col-remaining hub-card hub-vlayout"> + <h1 class="hub-head-main">{{ display_user.username }}</h1> + {% if display_user.pronouns %}<div>{{ tagMacros.secondary(display_user.pronouns) }}</div>{% endif %} + {% if description_html %} + <div class="hub-text">{{ markdownMacro.markdown_plain(markdown=description_html | safe, border=false) }}</div> {% endif %} + <div class="hub-hlayout"> + {% if true or display_user != user %} + <a href="{{ url('plainui:personal_message_send_to', recipient=display_user.username) }}" + class="hub-btn">{{ _("Send PN") }}</a> + {% endif %} + {% if display_user == user %} + <a href="{{ url('plainui:userprofile') }}" class="hub-btn">{{ _("Edit your profile") }}</a> + {% endif %} + </div> </div> + <div class="hub-col-325px hub-card">{{ avatar.avatar(display_user) }}</div> </div> - <div class="hub-col-325px hub-card"> - {{ avatar.avatar(display_user) }} - </div> - </div> - <div class="hub-card"> - <h2 class="hub-section-title mb-4"> - {{ _("Badges") }} - </h2> - <div class="badges-gallery"> - {% if not badges %} - <div class="hub-empty-section"> - {{ _("No entries available.") }} - </div> - {% endif %} + <div class="hub-card"> + <h2 class="hub-section-title mb-4">{{ _("Badges") }}</h2> + <div class="badges-gallery"> + {% if not badges %}<div class="hub-empty-section">{{ _("No entries available.") }}</div>{% endif %} - {% for badge_link in badges %} - {{ badgeMacros.badge(badge_link.badge) }} - {% endfor %} + {% for badge_link in badges %}{{ badgeMacros.badge(badge_link.badge) }}{% endfor %} + </div> </div> </div> -</div> {% endblock %} diff --git a/src/plainui/jinja2/plainui/wa_contact.html.j2 b/src/plainui/jinja2/plainui/wa_contact.html.j2 index 1feb19a72500b199162bfc9b55bdef78a3580e0d..965f7a4c5c9e32086882d807e04ed93b7459ff3a 100644 --- a/src/plainui/jinja2/plainui/wa_contact.html.j2 +++ b/src/plainui/jinja2/plainui/wa_contact.html.j2 @@ -2,23 +2,24 @@ {% import "plainui/components/markdown.html.j2" as markdownMacro %} <!DOCTYPE html> <html lang="{{ get_language() }}" class="no-js"> - <head> - <meta charset="utf-8"> - <link rel="stylesheet" href="{{ static('plainui/%s.css' % (css_scope(),)) }}?v=202112231340"> - <title></title> - <style> + <head> + <meta charset="utf-8"> + <link rel="stylesheet" + href="{{ static('plainui/%s.css' % (css_scope() ,)) }}?v=202112231340"> + <title></title> + <style> body { background-color: unset !important; } article { background-color: unset !important; } - </style> - </head> - <body class="free-nobg"> - <article class="pb-11"> - {{ titleMacro.title(title=page.title) }} - {{ markdownMacro.markdown(markdown=page.body_html | safe) }} - </article> - </body> + </style> + </head> + <body class="free-nobg"> + <article class="pb-11"> + {{ titleMacro.title(title=page.title) }} + {{ markdownMacro.markdown(markdown=page.body_html | safe) }} + </article> + </body> </html> diff --git a/src/plainui/jinja2/plainui/wa_dereferrer.html.j2 b/src/plainui/jinja2/plainui/wa_dereferrer.html.j2 index 2eb866e7a0169db7176691b917bfb1fdaa6a6051..05b9b538e58c3bafb900e604628c0305ff411225 100644 --- a/src/plainui/jinja2/plainui/wa_dereferrer.html.j2 +++ b/src/plainui/jinja2/plainui/wa_dereferrer.html.j2 @@ -2,37 +2,38 @@ {% block title %}Dereferrer{% endblock %} {% block body %} -<article class="d-flex justify-content-center align-items-center"> + <article class="d-flex justify-content-center align-items-center"> <section class="p-3 border text-center mw-810"> - <h1>{{ _("Hey") }}</h1> + <h1>{{ _("Hey") }}</h1> - <p>{{ _("You are leaving the »RC3-area«. For external sites, streams and applications the actual owners are completely and solely responsible regarding data protection, copyright, youth protection, etc.!")}}</p> + <p> + {{ _("You are leaving the »RC3-area«. For external sites, streams and applications the actual owners are completely and solely responsible regarding data protection, copyright, youth protection, etc.!") }} + </p> - <p>Link Preview: <span style="font-weight: bold;">{{ plain_url }}</span></p> + <p> + Link Preview: <span style="font-weight: bold;">{{ plain_url }}</span> + </p> - <ul class="d-flex justify-content-center list-unstyled mb-0 mt-3"> - <li class="mx-2 d-js-only"> - <a - href="javascript:history.back()" - class="btn btn-primary" - title="{{ _("Back") }}"> - {{ _("Back") }} - </a> - </li> - <li class="mx-2"> - <a href='{{ url('plainui:dereferrer_approved', signed_payload=signed_url) }}' class="btn btn-primary " rel="external,noreferrer"> - {{ _("Follow Link") }} - </a> - </li> - {% if can_allow %} - <li class="col"> - <a href="{{ url('plainui:dereferrer_save', signed_payload=signed_url) }}" class="btn btn-xl btn-block btn-primary external" rel="external,noreferrer"> - {{ _("Follow & Allow '%(domain)s' permanently", domain=domain) }} - </a> - </li> - {% endif %} - </ul> + <ul class="d-flex justify-content-center list-unstyled mb-0 mt-3"> + <li class="mx-2 d-js-only"> + <a href="javascript:history.back()" + class="btn btn-primary" + title="{{ _('Back') }}">{{ _('Back') }}</a> + </li> + <li class="mx-2"> + <a href='{{ url("plainui:dereferrer_approved", signed_payload=signed_url) }}' + class="btn btn-primary " + rel="external,noreferrer">{{ _("Follow Link") }}</a> + </li> + {% if can_allow %} + <li class="col"> + <a href="{{ url('plainui:dereferrer_save', signed_payload=signed_url) }}" + class="btn btn-xl btn-block btn-primary external" + rel="external,noreferrer">{{ _("Follow & Allow '%(domain)s' permanently", domain=domain) }}</a> + </li> + {% endif %} + </ul> </section> -</article> + </article> {% endblock %} diff --git a/src/plainui/jinja2/plainui/wa_vcard.html.j2 b/src/plainui/jinja2/plainui/wa_vcard.html.j2 index 9dc81f5a2dede618f737bc1e5e5533bc68e06535..8f88c407ddbf68f98f14cadf807439ef0bbcd398 100644 --- a/src/plainui/jinja2/plainui/wa_vcard.html.j2 +++ b/src/plainui/jinja2/plainui/wa_vcard.html.j2 @@ -2,29 +2,38 @@ {% import "plainui/components/markdown.html.j2" as markdownMacro %} <!DOCTYPE html> <html lang="{{ get_language() }}" class="no-js"> - <head> - <meta charset="utf-8"> - <link rel="stylesheet" href="{{ static('plainui/%s.css' % (css_scope(),)) }}?v=202112231340"> - <title></title> - <style> + <head> + <meta charset="utf-8"> + <link rel="stylesheet" + href="{{ static('plainui/%s.css' % (css_scope() ,)) }}?v=202112231340"> + <title></title> + <style> body { background-color: #000; } - </style> - </head> - <body class="free-nobg"> + </style> + </head> + <body class="free-nobg"> - <article> - <section class="p-3 border mw-810" style="width: 500px; height: 250px; overflow-y: scroll"> - {% if vcard_user %} - <h1>{{ vcard_user.display_name }}</h1> - {% if active_angel %}<p style="font-style: italic">{{ _("Angel") }}</p>;{% endif -%} + <article> + <section class="p-3 border mw-810" + style="width: 500px; + height: 250px; + overflow-y: scroll"> + {% if vcard_user %} + <h1>{{ vcard_user.display_name }}</h1> + {% if active_angel %} + <p style="font-style: italic">{{ _("Angel") }}</p> + ; + {% endif -%} - {{ markdownMacro.markdown(markdown=(vcard_user.description_html or '') | safe, border=False) }} - {% else %} - <h1>USER: <span style="color: red;">404</span> ?!</h1> - {% endif %} - </section> - </article> - </body> + {{ markdownMacro.markdown(markdown=(vcard_user.description_html or '') | safe, border=False) }} + {% else %} + <h1> + USER: <span style="color: red;">404</span> ?! + </h1> + {% endif %} + </section> + </article> + </body> </html> diff --git a/src/plainui/jinja2/plainui/world.html.j2 b/src/plainui/jinja2/plainui/world.html.j2 index 6dc1e7dae9ed405cc908e8e3fa32799a034a6696..603a283bb24efe1704c7b5e0943e3522c7ab352c 100644 --- a/src/plainui/jinja2/plainui/world.html.j2 +++ b/src/plainui/jinja2/plainui/world.html.j2 @@ -2,22 +2,18 @@ {% import "plainui/components/markdown.html.j2" as markdownMacro %} {% import "plainui/components/image.html.j2" as imageMacro %} -{% block title %}{{conf.name}} - {{ _("2D World") }}{% endblock %} +{% block title %}{{ conf.name }} - {{ _("2D World") }}{% endblock %} {% block content %} - <article> - <div class="w-100 text-center my-12"> - <a - href="{{ url('plainui:world_join') }}" - class="btn-transparent h1 px-4 d-inline-block" - target="_blank" - > - Enter 2D World - </a> - </div> + <article> + <div class="w-100 text-center my-12"> + <a href="{{ url('plainui:world_join') }}" + class="btn-transparent h1 px-4 d-inline-block" + target="_blank">Enter 2D World</a> + </div> - {{ markdownMacro.markdown(markdown=page.body_html|safe) }} - </article> + {{ markdownMacro.markdown(markdown=page.body_html|safe) }} + </article> - <hr class="hub-spacer"> + <hr class="hub-spacer"> {% endblock %} diff --git a/src/plainui/locale/de/LC_MESSAGES/django.po b/src/plainui/locale/de/LC_MESSAGES/django.po index 0df8ff1454d5c05accd0597f19582a42e9e1520e..91fc0bf3f52e0d3af8f829accf0e48b3714982b6 100644 --- a/src/plainui/locale/de/LC_MESSAGES/django.po +++ b/src/plainui/locale/de/LC_MESSAGES/django.po @@ -960,16 +960,6 @@ msgstr "Deine Zeitzone ist auf %(user_timezone)s konfiguriert, die Konferenz fin msgid "%(conf)s - Login" msgstr "" -msgid "" -" Reset\n" -" Password" -msgstr "" - -msgid "" -" sign up (new\n" -" account)" -msgstr "" - #, python-format msgid "%(conf)s - Password Reset complete" msgstr "%(conf)s - Password-Reset abgeschlossen" diff --git a/src/plainui/locale/en/LC_MESSAGES/django.po b/src/plainui/locale/en/LC_MESSAGES/django.po index 81cc4cf34b1aab0c893559f5657638ad7beae736..2ca9db789fc4ea0645fa8edc1eee16b1ca2c4309 100644 --- a/src/plainui/locale/en/LC_MESSAGES/django.po +++ b/src/plainui/locale/en/LC_MESSAGES/django.po @@ -960,16 +960,6 @@ msgstr "" msgid "%(conf)s - Login" msgstr "" -msgid "" -" Reset\n" -" Password" -msgstr "" - -msgid "" -" sign up (new\n" -" account)" -msgstr "" - #, python-format msgid "%(conf)s - Password Reset complete" msgstr "" diff --git a/src/plainui/static/error_pages/403.html b/src/plainui/static/error_pages/403.html index f1a2edc987854e45c14b6188f4d345e4570ffd8e..5084ab47439f26796b9af999a33619fd6465d969 100644 --- a/src/plainui/static/error_pages/403.html +++ b/src/plainui/static/error_pages/403.html @@ -1,6 +1,6 @@ <!DOCTYPE html> <html> -<head> + <head> <title>403 - Forbidden</title> <style type="text/css"> * { @@ -28,10 +28,10 @@ text-decoration: none; } </style> -</head> -<body> -<article> - <img class="" src="403.svg" alt="403 - Forbidden" title="403 - Forbidden" /> -</article> -</body> + </head> + <body> + <article> + <img class="" src="403.svg" alt="403 - Forbidden" title="403 - Forbidden" /> + </article> + </body> </html> diff --git a/src/plainui/static/error_pages/404.html b/src/plainui/static/error_pages/404.html index 74515849f25241345d6a176b57ce327144c48916..869911e13a26c912f06917eba64bfd9ed4d44a97 100644 --- a/src/plainui/static/error_pages/404.html +++ b/src/plainui/static/error_pages/404.html @@ -1,6 +1,6 @@ <!DOCTYPE html> <html> -<head> + <head> <title>404 - OOOOOPS (not found)</title> <style type="text/css"> * { @@ -28,10 +28,10 @@ text-decoration: none; } </style> -</head> -<body> -<article> - <img class="" src="404.svg" alt="404 Error" title="404 Error" /> -</article> -</body> + </head> + <body> + <article> + <img class="" src="404.svg" alt="404 Error" title="404 Error" /> + </article> + </body> </html> diff --git a/src/plainui/static/error_pages/500.html b/src/plainui/static/error_pages/500.html index 9db18d3a60f80ebcc3250f2212921ca4b2b87f03..313f0bb3533d754ba4bf09d4a8624c3fd8fcc48b 100644 --- a/src/plainui/static/error_pages/500.html +++ b/src/plainui/static/error_pages/500.html @@ -1,6 +1,6 @@ <!DOCTYPE html> <html> -<head> + <head> <title>500 - Internal Server Error</title> <style type="text/css"> * { @@ -28,10 +28,13 @@ text-decoration: none; } </style> -</head> -<body> -<article> - <img class="" src="500.svg" alt="500 - internal Server error" title="500 - internal Server error" /> -</article> -</body> + </head> + <body> + <article> + <img class="" + src="500.svg" + alt="500 - internal Server error" + title="500 - internal Server error" /> + </article> + </body> </html> diff --git a/src/plainui/templates/500.html b/src/plainui/templates/500.html index 6154deb2a87df2c010f52719c28f1c92b8d9db32..b54aff74800e650b9a4ef73065048ada11520b5f 100644 --- a/src/plainui/templates/500.html +++ b/src/plainui/templates/500.html @@ -1,7 +1,7 @@ {% load static %} <!DOCTYPE html> <html> -<head> + <head> <title>500 - Internal Server Error</title> <style type="text/css"> * { @@ -29,12 +29,12 @@ text-decoration: none; } </style> -</head> -<body> -<article> - <a href="{% hub_absolute "plainui:index" %}" class="row my-8"> + </head> + <body> + <article> + <a href="{% hub_absolute "plainui:index" %}" class="row my-8"> <img class="" src="{% static "error_pages/500.svg" %}" alt="500 - internal Server error" title="500 - internal Server error" /> - </a> -</article> -</body> + </a> + </article> + </body> </html>