From 956ec7210c8522d49ab2f94aad7afed737026e57 Mon Sep 17 00:00:00 2001 From: Jean-Marie Favreau Date: Sun, 17 Nov 2024 23:59:25 +0100 Subject: [PATCH] =?UTF-8?q?Les=20trigger=20warning=20sont=20signal=C3=A9s?= =?UTF-8?q?=20Fix=20#201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/agenda_culturel/forms.py | 2 +- .../locale/fr/LC_MESSAGES/django.po | 96 +++++++++++-------- src/agenda_culturel/static/style.scss | 21 ++++ .../templates/agenda_culturel/day-inc.html | 3 +- .../agenda_culturel/page-rimport.html | 3 +- .../agenda_culturel/page-upcoming.html | 2 +- .../single-event/event-elegant-inc.html | 2 +- .../single-event/event-in-flat-list-inc.html | 2 +- .../event-in-unknown-place-list-inc.html | 2 +- .../single-event/event-single-inc.html | 2 +- .../templates/agenda_culturel/tag.html | 2 + .../templatetags/event_extra.py | 9 +- src/agenda_culturel/templatetags/tag_extra.py | 9 +- 13 files changed, 103 insertions(+), 52 deletions(-) diff --git a/src/agenda_culturel/forms.py b/src/agenda_culturel/forms.py index 2a082f1..937f24b 100644 --- a/src/agenda_culturel/forms.py +++ b/src/agenda_culturel/forms.py @@ -232,7 +232,7 @@ class EventModerateForm(ModelForm): new_tags = MultipleChoiceFieldAcceptAll( label=_("New tags"), - help_text=_('Create new labels (sparingly).'), + help_text=_('Create new labels (sparingly). Note: by starting your tag with the characters “TW:”, you''ll create a “trigger warning” tag, and the associated events will be announced as such.'), widget=DynamicArrayWidget(), required=False ) diff --git a/src/agenda_culturel/locale/fr/LC_MESSAGES/django.po b/src/agenda_culturel/locale/fr/LC_MESSAGES/django.po index 39f40ee..c858e8e 100644 --- a/src/agenda_culturel/locale/fr/LC_MESSAGES/django.po +++ b/src/agenda_culturel/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: agenda_culturel\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-17 22:38+0100\n" +"POT-Creation-Date: 2024-11-17 23:43+0100\n" "PO-Revision-Date: 2023-10-29 14:16+0000\n" "Last-Translator: Jean-Marie Favreau \n" "Language-Team: Jean-Marie Favreau \n" @@ -182,8 +182,15 @@ msgid "New tags" msgstr "Nouvelles étiquettes" #: agenda_culturel/forms.py:235 -msgid "Create new labels (sparingly)." -msgstr "Créer (avec parcimonie) de nouvelles étiquettes." +msgid "" +"Create new labels (sparingly). Note: by starting your tag with the " +"characters “TW:”, youll create a “trigger warning” tag, and the associated " +"events will be announced as such." +msgstr "" +"Créer (avec parcimonie) de nouvelles étiquettes. " +"Remarque: en faisant commencer votre étiquette par les caractères “TW:”, " +"vous créerez une étiquette “trigger warning”, et les événements associés " +"seront annoncés comme tels." #: agenda_culturel/forms.py:275 msgid "JSON in the format expected for the import." @@ -1007,44 +1014,44 @@ msgstr "Les propriétés du message de contact ont été modifié avec succès." msgid "Spam has been successfully deleted." msgstr "Le spam a été supprimé avec succès" -#: agenda_culturel/views.py:1000 +#: agenda_culturel/views.py:1004 msgid "The import has been run successfully." msgstr "L'import a été lancé avec succès" -#: agenda_culturel/views.py:1019 +#: agenda_culturel/views.py:1023 msgid "The import has been canceled." msgstr "L'import a été annulé" -#: agenda_culturel/views.py:1093 +#: agenda_culturel/views.py:1097 msgid "The recurrent import has been successfully modified." msgstr "L'import récurrent a été modifié avec succès." -#: agenda_culturel/views.py:1102 +#: agenda_culturel/views.py:1106 msgid "The recurrent import has been successfully deleted." msgstr "L'import récurrent a été supprimé avec succès" -#: agenda_culturel/views.py:1142 +#: agenda_culturel/views.py:1146 msgid "The import has been launched." msgstr "L'import a été lancé" -#: agenda_culturel/views.py:1164 +#: agenda_culturel/views.py:1168 msgid "Imports has been launched." msgstr "Les imports ont été lancés" -#: agenda_culturel/views.py:1223 +#: agenda_culturel/views.py:1227 msgid "Update successfully completed." msgstr "Mise à jour réalisée avec succès." -#: agenda_culturel/views.py:1281 +#: agenda_culturel/views.py:1285 msgid "Creation of a merged event has been successfully completed." msgstr "Création d'un événement fusionné réalisée avec succès." -#: agenda_culturel/views.py:1317 +#: agenda_culturel/views.py:1321 msgid "Events have been marked as unduplicated." msgstr "Les événements ont été marqués comme non dupliqués." -#: agenda_culturel/views.py:1331 agenda_culturel/views.py:1340 -#: agenda_culturel/views.py:1358 +#: agenda_culturel/views.py:1335 agenda_culturel/views.py:1344 +#: agenda_culturel/views.py:1362 msgid "" "The selected item is no longer included in the list of duplicates. Someone " "else has probably modified the list in the meantime." @@ -1052,23 +1059,23 @@ msgstr "" "L'élément sélectionné ne fait plus partie de la liste des dupliqués. Une " "autre personne a probablement modifié la liste entre temps." -#: agenda_culturel/views.py:1334 +#: agenda_culturel/views.py:1338 msgid "The selected event has been set as representative" msgstr "L'événement sélectionné a été défini comme representatif." -#: agenda_culturel/views.py:1349 +#: agenda_culturel/views.py:1353 msgid "The event has been withdrawn from the group and made independent." msgstr "L'événement a été retiré du groupe et rendu indépendant." -#: agenda_culturel/views.py:1393 +#: agenda_culturel/views.py:1397 msgid "Cleaning up duplicates: {} item(s) fixed." msgstr "Nettoyage des dupliqués: {} élément(s) corrigé(s)." -#: agenda_culturel/views.py:1442 +#: agenda_culturel/views.py:1446 msgid "The event was successfully duplicated." msgstr "L'événement a été marqué dupliqué avec succès." -#: agenda_culturel/views.py:1450 +#: agenda_culturel/views.py:1454 msgid "" "The event has been successfully flagged as a duplicate. The moderation team " "will deal with your suggestion shortly." @@ -1076,32 +1083,32 @@ msgstr "" "L'événement a été signalé comme dupliqué avec succès. Votre suggestion sera " "prochainement prise en charge par l'équipe de modération." -#: agenda_culturel/views.py:1503 +#: agenda_culturel/views.py:1507 msgid "The categorisation rule has been successfully modified." msgstr "La règle de catégorisation a été modifiée avec succès." -#: agenda_culturel/views.py:1512 +#: agenda_culturel/views.py:1516 msgid "The categorisation rule has been successfully deleted." msgstr "La règle de catégorisation a été supprimée avec succès" -#: agenda_culturel/views.py:1534 +#: agenda_culturel/views.py:1538 msgid "The rules were successfully applied and 1 event was categorised." msgstr "" "Les règles ont été appliquées avec succès et 1 événement a été catégorisé" -#: agenda_culturel/views.py:1541 +#: agenda_culturel/views.py:1545 msgid "The rules were successfully applied and {} events were categorised." msgstr "" "Les règles ont été appliquées avec succès et {} événements ont été " "catégorisés" -#: agenda_culturel/views.py:1548 agenda_culturel/views.py:1601 +#: agenda_culturel/views.py:1552 agenda_culturel/views.py:1605 msgid "The rules were successfully applied and no events were categorised." msgstr "" "Les règles ont été appliquées avec succès et aucun événement n'a été " "catégorisé" -#: agenda_culturel/views.py:1587 +#: agenda_culturel/views.py:1591 msgid "" "The rules were successfully applied and 1 event with default category was " "categorised." @@ -1109,7 +1116,7 @@ msgstr "" "Les règles ont été appliquées avec succès et 1 événement avec catégorie par " "défaut a été catégorisé" -#: agenda_culturel/views.py:1594 +#: agenda_culturel/views.py:1598 msgid "" "The rules were successfully applied and {} events with default category were " "categorised." @@ -1117,50 +1124,50 @@ msgstr "" "Les règles ont été appliquées avec succès et {} événements avec catégorie " "par défaut ont été catégorisés" -#: agenda_culturel/views.py:1683 agenda_culturel/views.py:1745 -#: agenda_culturel/views.py:1783 +#: agenda_culturel/views.py:1687 agenda_culturel/views.py:1749 +#: agenda_culturel/views.py:1787 msgid "{} events have been updated." msgstr "{} événements ont été mis à jour." -#: agenda_culturel/views.py:1686 agenda_culturel/views.py:1747 -#: agenda_culturel/views.py:1786 +#: agenda_culturel/views.py:1690 agenda_culturel/views.py:1751 +#: agenda_culturel/views.py:1790 msgid "1 event has been updated." msgstr "1 événement a été mis à jour" -#: agenda_culturel/views.py:1688 agenda_culturel/views.py:1749 -#: agenda_culturel/views.py:1788 +#: agenda_culturel/views.py:1692 agenda_culturel/views.py:1753 +#: agenda_culturel/views.py:1792 msgid "No events have been modified." msgstr "Aucun événement n'a été modifié." -#: agenda_culturel/views.py:1697 +#: agenda_culturel/views.py:1701 msgid "The place has been successfully updated." msgstr "Le lieu a été modifié avec succès." -#: agenda_culturel/views.py:1706 +#: agenda_culturel/views.py:1710 msgid "The place has been successfully created." msgstr "Le lieu a été créé avec succès." -#: agenda_culturel/views.py:1771 +#: agenda_culturel/views.py:1775 msgid "The selected place has been assigned to the event." msgstr "Le lieu sélectionné a été assigné à l'événement." -#: agenda_culturel/views.py:1775 +#: agenda_culturel/views.py:1779 msgid "A new alias has been added to the selected place." msgstr "Un nouvel alias a été créé pour le lieu sélectionné." -#: agenda_culturel/views.py:1831 +#: agenda_culturel/views.py:1835 msgid "The tag has been successfully updated." msgstr "L'étiquette a été modifiée avec succès." -#: agenda_culturel/views.py:1838 +#: agenda_culturel/views.py:1842 msgid "The tag has been successfully created." msgstr "L'étiquette a été créée avec succès." -#: agenda_culturel/views.py:1901 +#: agenda_culturel/views.py:1906 msgid "You have not modified the tag name." msgstr "Vous n'avez pas modifié le nom de l'étiquette." -#: agenda_culturel/views.py:1911 +#: agenda_culturel/views.py:1916 msgid "" "This tag {} is already in use, and is described by different information " "from the current tag. You can force renaming by checking the corresponding " @@ -1173,7 +1180,7 @@ msgstr "" "sera supprimée, et tous les événements associés à l'étiquette {} seront " "associés à l'étiquette {}." -#: agenda_culturel/views.py:1918 +#: agenda_culturel/views.py:1923 msgid "" "This tag {} is already in use. You can force renaming by checking the " "corresponding option." @@ -1181,6 +1188,11 @@ msgstr "" "Cette étiquette {} est déjà utilisée. Vous pouvez forcer le renommage en " "cochant l'option correspondante." -#: agenda_culturel/views.py:1941 +#: agenda_culturel/views.py:1946 msgid "The tag {} has been successfully renamed to {}." msgstr "L'étiquette {} a été renommée avec succès en {}." + +#: agenda_culturel/views.py:1980 +msgid "The tag {} has been successfully deleted." +msgstr "L'événement {} a été supprimé avec succès." + diff --git a/src/agenda_culturel/static/style.scss b/src/agenda_culturel/static/style.scss index 5f0ac34..f3e0278 100644 --- a/src/agenda_culturel/static/style.scss +++ b/src/agenda_culturel/static/style.scss @@ -198,6 +198,7 @@ details[role="list"] summary + ul li.selected>a:hover { @extend .outline; font-size: 90%; padding: 0.15em 0.4em 0.3em 0.4em; + overflow: hidden; } @@ -871,6 +872,7 @@ nav>div { } + .badge.error { background: #b71c1c; border-color: #cb1b1b; @@ -882,6 +884,25 @@ nav>div { color: var(--secondary-inverse); } +.tw-badge { + background: black; + border-color: black; + color: #f2f207; + font-weight: bold; + padding: 0.2em 0.4em; + font-size: 60%; + opacity: 80%; +} + +.tw-prefix { + background: black; + color: #f2f207; + height: 2.1em; + margin: -0.5em 0 -0.5em -0.5em; + padding: 0.3em; + display: inline-block; +} + form [role="button"], form button { margin: var(--spacing) 0 var(--spacing) 0; } diff --git a/src/agenda_culturel/templates/agenda_culturel/day-inc.html b/src/agenda_culturel/templates/agenda_culturel/day-inc.html index 4fccf83..a7ae432 100644 --- a/src/agenda_culturel/templates/agenda_culturel/day-inc.html +++ b/src/agenda_culturel/templates/agenda_culturel/day-inc.html @@ -44,7 +44,7 @@ {% if event.start_day == day.date and event.start_time %} {{ event.start_time }} {% endif %} - {{ event|picto_status }} {{ event.title }} + {{ event|picto_status }} {{ event.title }} {{ event|tw_badge }} {% endfor %} @@ -67,6 +67,7 @@ {{ event.start_time }} {% endif %} {{ event|picto_status }} {{ event.title }} + {{ event|tw_badge }} {% include "agenda_culturel/single-event/event-modal-inc.html" with event=event filter=filter %} diff --git a/src/agenda_culturel/templates/agenda_culturel/page-rimport.html b/src/agenda_culturel/templates/agenda_culturel/page-rimport.html index b7d9aab..9780e2a 100644 --- a/src/agenda_culturel/templates/agenda_culturel/page-rimport.html +++ b/src/agenda_culturel/templates/agenda_culturel/page-rimport.html @@ -4,6 +4,7 @@ {% load cat_extra %} {% load utils_extra %} +{% load tag_extra %} {% block entete_header %} {% css_categories %} @@ -43,7 +44,7 @@
  • Catégorie : {{ object.defaultCategory }}
  • Étiquettes : {% for tag in object.defaultTags %} - {{ tag }}{% if not forloop.last %}, {% endif %} + {{ tag|tw_highlight }}{% if not forloop.last %}, {% endif %} {% endfor %}
  • diff --git a/src/agenda_culturel/templates/agenda_culturel/page-upcoming.html b/src/agenda_culturel/templates/agenda_culturel/page-upcoming.html index db13691..87fc7ac 100644 --- a/src/agenda_culturel/templates/agenda_culturel/page-upcoming.html +++ b/src/agenda_culturel/templates/agenda_culturel/page-upcoming.html @@ -101,7 +101,7 @@ {% if event.start_time %} {{ event.start_time }} {% endif %} - {{ event|picto_status }} {{ event.title }} + {{ event|picto_status }} {{ event.title }} {{ event|tw_badge }} {% endfor %} diff --git a/src/agenda_culturel/templates/agenda_culturel/single-event/event-elegant-inc.html b/src/agenda_culturel/templates/agenda_culturel/single-event/event-elegant-inc.html index a950863..1d3a7a5 100644 --- a/src/agenda_culturel/templates/agenda_culturel/single-event/event-elegant-inc.html +++ b/src/agenda_culturel/templates/agenda_culturel/single-event/event-elegant-inc.html @@ -57,7 +57,7 @@

    {% for tag in event.tags %} - {{ tag }} + {{ tag|tw_highlight }} {% endfor %}

    diff --git a/src/agenda_culturel/templates/agenda_culturel/single-event/event-in-flat-list-inc.html b/src/agenda_culturel/templates/agenda_culturel/single-event/event-in-flat-list-inc.html index b365b6c..c9e569b 100644 --- a/src/agenda_culturel/templates/agenda_culturel/single-event/event-in-flat-list-inc.html +++ b/src/agenda_culturel/templates/agenda_culturel/single-event/event-in-flat-list-inc.html @@ -37,7 +37,7 @@ diff --git a/src/agenda_culturel/templates/agenda_culturel/single-event/event-in-unknown-place-list-inc.html b/src/agenda_culturel/templates/agenda_culturel/single-event/event-in-unknown-place-list-inc.html index f4373be..c5fb096 100644 --- a/src/agenda_culturel/templates/agenda_culturel/single-event/event-in-unknown-place-list-inc.html +++ b/src/agenda_culturel/templates/agenda_culturel/single-event/event-in-unknown-place-list-inc.html @@ -39,7 +39,7 @@

    {% picto_from_name "tag" %} {% for tag in event.tags %} - {{ tag }} + {{ tag|tw_highlight }} {% if not forloop.last %}, {% endif %} {% endfor %}

    diff --git a/src/agenda_culturel/templates/agenda_culturel/single-event/event-single-inc.html b/src/agenda_culturel/templates/agenda_culturel/single-event/event-single-inc.html index 5765814..ec25ff8 100644 --- a/src/agenda_culturel/templates/agenda_culturel/single-event/event-single-inc.html +++ b/src/agenda_culturel/templates/agenda_culturel/single-event/event-single-inc.html @@ -66,7 +66,7 @@

    {% for tag in event.tags %} - {{ tag }} + {{ tag|tw_highlight }} {% endfor %}

    diff --git a/src/agenda_culturel/templates/agenda_culturel/tag.html b/src/agenda_culturel/templates/agenda_culturel/tag.html index d1ac7fd..354cbaa 100644 --- a/src/agenda_culturel/templates/agenda_culturel/tag.html +++ b/src/agenda_culturel/templates/agenda_culturel/tag.html @@ -1,5 +1,7 @@ {% extends "agenda_culturel/page.html" %} +{% load tag_extra %} + {% block title %}{% block og_title %}Les événements {{ tag }}{% endblock %}{% endblock %} {% load cat_extra %} diff --git a/src/agenda_culturel/templatetags/event_extra.py b/src/agenda_culturel/templatetags/event_extra.py index 7b7bbff..637f458 100644 --- a/src/agenda_culturel/templatetags/event_extra.py +++ b/src/agenda_culturel/templatetags/event_extra.py @@ -163,4 +163,11 @@ def only_allowed(elist, is_authenticated): if not is_authenticated: return [e for e in elist if e.status == Event.STATUS.PUBLISHED] else: - return elist \ No newline at end of file + return elist + +@register.filter +def tw_badge(event): + if event.tags and len([t for t in event.tags if t.startswith("TW:")]) > 0: + return mark_safe('TW') + else: + return "" \ No newline at end of file diff --git a/src/agenda_culturel/templatetags/tag_extra.py b/src/agenda_culturel/templatetags/tag_extra.py index be845db..bcdf87d 100644 --- a/src/agenda_culturel/templatetags/tag_extra.py +++ b/src/agenda_culturel/templatetags/tag_extra.py @@ -68,4 +68,11 @@ def show_suggested_tags(filter): @register.filter def prepare_tag(tag): - return tag.replace('/', '-') \ No newline at end of file + return tag.replace('/', '-') + +@register.filter +def tw_highlight(tag): + if tag.startswith('TW:'): + return mark_safe('TW:' + tag[3:]) + else: + return tag \ No newline at end of file