From 791defed463df82b81d35fa1ee80fec49068b894 Mon Sep 17 00:00:00 2001 From: Sage Abdullah Date: Mon, 15 Jul 2024 15:56:26 +0100 Subject: [PATCH] Use more personalised messages for the current user in the sessions list --- .../shared/editing_sessions/list.html | 48 ++++++++++++++----- wagtail/admin/ui/editing_sessions.py | 20 ++++++-- wagtail/admin/views/editing_sessions.py | 2 +- wagtail/admin/views/generic/mixins.py | 1 + wagtail/admin/views/pages/edit.py | 1 + 5 files changed, 54 insertions(+), 18 deletions(-) diff --git a/wagtail/admin/templates/wagtailadmin/shared/editing_sessions/list.html b/wagtail/admin/templates/wagtailadmin/shared/editing_sessions/list.html index cd3f0618b8..4a1c557105 100644 --- a/wagtail/admin/templates/wagtailadmin/shared/editing_sessions/list.html +++ b/wagtail/admin/templates/wagtailadmin/shared/editing_sessions/list.html @@ -15,9 +15,15 @@ {% endfragment %} - {% blocktranslate trimmed with user_name=session.user|user_display_name|default:_("system") asvar saved_new_version_message %} - {{ user_name }} saved a new version - {% endblocktranslate %} + {% if current_session.user == session.user %} + {% blocktranslate trimmed asvar saved_new_version_message %} + You saved a new version in another session + {% endblocktranslate %} + {% else %} + {% blocktranslate trimmed with user_name=session.user|user_display_name|default:_("system") asvar saved_new_version_message %} + {{ user_name }} saved a new version + {% endblocktranslate %} + {% endif %} {% dropdown theme="popup" classname="w-editing-sessions__session w-editing-sessions__session--latest" toggle_label=avatar_decorated toggle_aria_label=saved_new_version_message|capfirst %}
@@ -34,9 +40,15 @@
{% enddropdown %} {% elif session.is_editing %} - {% blocktranslate trimmed with user_name=session.user|user_display_name|default:_("system") asvar has_unsaved_changes_message %} - {{ user_name }} has unsaved changes - {% endblocktranslate %} + {% if current_session.user == session.user %} + {% blocktranslate trimmed asvar has_unsaved_changes_message %} + You have unsaved changes in another session + {% endblocktranslate %} + {% else %} + {% blocktranslate trimmed with user_name=session.user|user_display_name|default:_("system") asvar has_unsaved_changes_message %} + {{ user_name }} has unsaved changes + {% endblocktranslate %} + {% endif %} {% dropdown theme="popup" classname="w-editing-sessions__session w-editing-sessions__session--editing" toggle_label=avatar toggle_aria_label=has_unsaved_changes_message|capfirst %}
@@ -86,16 +98,28 @@ {% if sessions.0.revision_id %} {% endif %} diff --git a/wagtail/admin/ui/editing_sessions.py b/wagtail/admin/ui/editing_sessions.py index e72d5588c2..a6e026f882 100644 --- a/wagtail/admin/ui/editing_sessions.py +++ b/wagtail/admin/ui/editing_sessions.py @@ -4,14 +4,23 @@ from wagtail.admin.ui.components import Component class EditingSessionsModule(Component): template_name = "wagtailadmin/shared/editing_sessions/module.html" - def __init__(self, ping_url, release_url, sessions, revision_id=None): + def __init__( + self, + current_session, + ping_url, + release_url, + other_sessions, + revision_id=None, + ): + self.current_session = current_session self.ping_url = ping_url self.release_url = release_url - self.sessions_list = EditingSessionsList(sessions) + self.sessions_list = EditingSessionsList(current_session, other_sessions) self.revision_id = revision_id def get_context_data(self, parent_context): return { + "current_session": self.current_session, "ping_url": self.ping_url, "release_url": self.release_url, "sessions_list": self.sessions_list, @@ -22,8 +31,9 @@ class EditingSessionsModule(Component): class EditingSessionsList(Component): template_name = "wagtailadmin/shared/editing_sessions/list.html" - def __init__(self, sessions): - self.sessions = sessions + def __init__(self, current_session, other_sessions): + self.current_session = current_session + self.sessions = other_sessions def get_context_data(self, parent_context): - return {"sessions": self.sessions} + return {"current_session": self.current_session, "sessions": self.sessions} diff --git a/wagtail/admin/views/editing_sessions.py b/wagtail/admin/views/editing_sessions.py index 9b13194964..93eeefb4f0 100644 --- a/wagtail/admin/views/editing_sessions.py +++ b/wagtail/admin/views/editing_sessions.py @@ -180,7 +180,7 @@ def ping(request, app_label, model_name, object_id, session_id): } for other_session in other_sessions ], - "html": EditingSessionsList(other_sessions).render_html(), + "html": EditingSessionsList(session, other_sessions).render_html(), } ) diff --git a/wagtail/admin/views/generic/mixins.py b/wagtail/admin/views/generic/mixins.py index 45fad56300..3013b012e4 100644 --- a/wagtail/admin/views/generic/mixins.py +++ b/wagtail/admin/views/generic/mixins.py @@ -698,6 +698,7 @@ class CreateEditViewOptionalFeaturesMixin: ) revision_id = self.object.latest_revision_id if self.revision_enabled else None return EditingSessionsModule( + session, reverse( "wagtailadmin_editing_sessions:ping", args=( diff --git a/wagtail/admin/views/pages/edit.py b/wagtail/admin/views/pages/edit.py index d3593b73ab..98e6dafda8 100644 --- a/wagtail/admin/views/pages/edit.py +++ b/wagtail/admin/views/pages/edit.py @@ -891,6 +891,7 @@ class EditView(WagtailAdminTemplateMixin, HookResponseMixin, View): last_seen_at=timezone.now(), ) return EditingSessionsModule( + session, reverse( "wagtailadmin_editing_sessions:ping", args=("wagtailcore", "page", self.page.pk, session.id),