mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-04 05:31:44 -04:00
Ensure correct selected nav item on broadcast page
Once a broadcast has been submitted for approval it either lives on the ‘Current alerts’ or ‘Previous alerts’ page, depending on where it is in its lifecycle. Therefore when clicking into a broadcast from one of those pages the same navigation item should remain selected. Because we select the navigation items based on the request endpoint, this means we need an endpoint for each navigation page, even if the content of the pages will be the same in both cases. This commit adds the two new end points, removes the old, single endpoint and updates links to point to the new endpoint.
This commit is contained in:
@@ -48,6 +48,7 @@ def broadcast_dashboard_previous(service_id):
|
||||
'views/broadcast/previous-broadcasts.html',
|
||||
broadcasts=BroadcastMessages(service_id).with_status('cancelled', 'completed'),
|
||||
empty_message='You do not have any previous alerts',
|
||||
single_endpoint='.view_previous_broadcast',
|
||||
)
|
||||
|
||||
|
||||
@@ -65,11 +66,13 @@ def get_broadcast_dashboard_partials(service_id):
|
||||
'views/broadcast/partials/dashboard-table.html',
|
||||
broadcasts=broadcast_messages.with_status('pending-approval'),
|
||||
empty_message='You do not have any alerts waiting for approval',
|
||||
single_endpoint='.view_current_broadcast',
|
||||
),
|
||||
live_broadcasts=render_template(
|
||||
'views/broadcast/partials/dashboard-table.html',
|
||||
broadcasts=broadcast_messages.with_status('broadcasting'),
|
||||
empty_message='You do not have any live alerts at the moment',
|
||||
single_endpoint='.view_current_broadcast',
|
||||
),
|
||||
)
|
||||
|
||||
@@ -261,7 +264,7 @@ def preview_broadcast_message(service_id, broadcast_message_id):
|
||||
if request.method == 'POST':
|
||||
broadcast_message.request_approval()
|
||||
return redirect(url_for(
|
||||
'.view_broadcast_message',
|
||||
'.view_current_broadcast',
|
||||
service_id=current_service.id,
|
||||
broadcast_message_id=broadcast_message.id,
|
||||
))
|
||||
@@ -272,10 +275,17 @@ def preview_broadcast_message(service_id, broadcast_message_id):
|
||||
)
|
||||
|
||||
|
||||
@main.route('/services/<uuid:service_id>/broadcast/<uuid:broadcast_message_id>')
|
||||
@main.route(
|
||||
'/services/<uuid:service_id>/current-alerts/<uuid:broadcast_message_id>',
|
||||
endpoint='view_current_broadcast',
|
||||
)
|
||||
@main.route(
|
||||
'/services/<uuid:service_id>/previous-alerts/<uuid:broadcast_message_id>',
|
||||
endpoint='view_previous_broadcast',
|
||||
)
|
||||
@user_has_permissions()
|
||||
@service_has_permission('broadcast')
|
||||
def view_broadcast_message(service_id, broadcast_message_id):
|
||||
def view_broadcast(service_id, broadcast_message_id):
|
||||
broadcast_message = BroadcastMessage.from_id(
|
||||
broadcast_message_id,
|
||||
service_id=current_service.id,
|
||||
@@ -288,7 +298,7 @@ def view_broadcast_message(service_id, broadcast_message_id):
|
||||
)
|
||||
|
||||
|
||||
@main.route('/services/<uuid:service_id>/broadcast/<uuid:broadcast_message_id>', methods=['POST'])
|
||||
@main.route('/services/<uuid:service_id>/current-alerts/<uuid:broadcast_message_id>', methods=['POST'])
|
||||
@user_has_permissions('send_messages')
|
||||
@service_has_permission('broadcast')
|
||||
def approve_broadcast_message(service_id, broadcast_message_id):
|
||||
@@ -300,7 +310,7 @@ def approve_broadcast_message(service_id, broadcast_message_id):
|
||||
|
||||
if broadcast_message.status != 'pending-approval':
|
||||
return redirect(url_for(
|
||||
'.view_broadcast_message',
|
||||
'.view_current_broadcast',
|
||||
service_id=current_service.id,
|
||||
broadcast_message_id=broadcast_message.id,
|
||||
))
|
||||
@@ -315,7 +325,7 @@ def approve_broadcast_message(service_id, broadcast_message_id):
|
||||
))
|
||||
|
||||
return redirect(url_for(
|
||||
'.view_broadcast_message',
|
||||
'.view_current_broadcast',
|
||||
service_id=current_service.id,
|
||||
broadcast_message_id=broadcast_message.id,
|
||||
))
|
||||
@@ -333,7 +343,7 @@ def reject_broadcast_message(service_id, broadcast_message_id):
|
||||
|
||||
if broadcast_message.status != 'pending-approval':
|
||||
return redirect(url_for(
|
||||
'.view_broadcast_message',
|
||||
'.view_current_broadcast',
|
||||
service_id=current_service.id,
|
||||
broadcast_message_id=broadcast_message.id,
|
||||
))
|
||||
@@ -360,7 +370,7 @@ def cancel_broadcast_message(service_id, broadcast_message_id):
|
||||
|
||||
if broadcast_message.status != 'broadcasting':
|
||||
return redirect(url_for(
|
||||
'.view_broadcast_message',
|
||||
'.view_current_broadcast',
|
||||
service_id=current_service.id,
|
||||
broadcast_message_id=broadcast_message.id,
|
||||
))
|
||||
@@ -368,7 +378,7 @@ def cancel_broadcast_message(service_id, broadcast_message_id):
|
||||
if request.method == 'POST':
|
||||
broadcast_message.cancel_broadcast()
|
||||
return redirect(url_for(
|
||||
'.view_broadcast_message',
|
||||
'.view_previous_broadcast',
|
||||
service_id=current_service.id,
|
||||
broadcast_message_id=broadcast_message.id,
|
||||
))
|
||||
|
||||
@@ -368,7 +368,8 @@ class HeaderNavigation(Navigation):
|
||||
'choose_broadcast_sub_area',
|
||||
'remove_broadcast_area',
|
||||
'preview_broadcast_message',
|
||||
'view_broadcast_message',
|
||||
'view_current_broadcast',
|
||||
'view_previous_broadcast',
|
||||
'approve_broadcast_message',
|
||||
'reject_broadcast_message',
|
||||
'cancel_broadcast_message',
|
||||
@@ -384,8 +385,6 @@ class MainNavigation(Navigation):
|
||||
mapping = {
|
||||
'dashboard': {
|
||||
'broadcast_tour',
|
||||
'broadcast_dashboard',
|
||||
'broadcast_dashboard_updates',
|
||||
'conversation',
|
||||
'inbox',
|
||||
'monthly',
|
||||
@@ -396,8 +395,14 @@ class MainNavigation(Navigation):
|
||||
'view_notification',
|
||||
'view_notifications',
|
||||
},
|
||||
'previous_broadcasts': {
|
||||
'current-broadcasts': {
|
||||
'broadcast_dashboard',
|
||||
'broadcast_dashboard_updates',
|
||||
'view_current_broadcast',
|
||||
},
|
||||
'previous-broadcasts': {
|
||||
'broadcast_dashboard_previous',
|
||||
'view_previous_broadcast',
|
||||
},
|
||||
'templates': {
|
||||
'action_blocked',
|
||||
@@ -432,7 +437,6 @@ class MainNavigation(Navigation):
|
||||
'choose_broadcast_sub_area',
|
||||
'remove_broadcast_area',
|
||||
'preview_broadcast_message',
|
||||
'view_broadcast_message',
|
||||
'approve_broadcast_message',
|
||||
'reject_broadcast_message',
|
||||
'cancel_broadcast_message',
|
||||
@@ -1041,7 +1045,8 @@ class CaseworkNavigation(Navigation):
|
||||
'choose_broadcast_sub_area',
|
||||
'remove_broadcast_area',
|
||||
'preview_broadcast_message',
|
||||
'view_broadcast_message',
|
||||
'view_current_broadcast',
|
||||
'view_previous_broadcast',
|
||||
'approve_broadcast_message',
|
||||
'reject_broadcast_message',
|
||||
'cancel_broadcast_message',
|
||||
@@ -1372,7 +1377,8 @@ class OrgNavigation(Navigation):
|
||||
'choose_broadcast_sub_area',
|
||||
'remove_broadcast_area',
|
||||
'preview_broadcast_message',
|
||||
'view_broadcast_message',
|
||||
'view_current_broadcast',
|
||||
'view_previous_broadcast',
|
||||
'approve_broadcast_message',
|
||||
'reject_broadcast_message',
|
||||
'cancel_broadcast_message',
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
<ul>
|
||||
{% if current_user.has_permissions() %}
|
||||
{% if current_service.has_permission('broadcast') %}
|
||||
<li><a class="govuk-link govuk-link--no-visited-state{{ main_navigation.is_selected('dashboard') }}" href="{{ url_for('.broadcast_dashboard', service_id=current_service.id) }}">Current alerts</a></li>
|
||||
<li><a class="govuk-link govuk-link--no-visited-state{{ main_navigation.is_selected('previous_broadcasts') }}" href="{{ url_for('.broadcast_dashboard_previous', service_id=current_service.id) }}">Previous alerts</a></li>
|
||||
<li><a class="govuk-link govuk-link--no-visited-state{{ main_navigation.is_selected('current-broadcasts') }}" href="{{ url_for('.broadcast_dashboard', service_id=current_service.id) }}">Current alerts</a></li>
|
||||
<li><a class="govuk-link govuk-link--no-visited-state{{ main_navigation.is_selected('previous-broadcasts') }}" href="{{ url_for('.broadcast_dashboard_previous', service_id=current_service.id) }}">Previous alerts</a></li>
|
||||
{% elif current_user.has_permissions('view_activity') %}
|
||||
<li><a class="govuk-link govuk-link--no-visited-state{{ main_navigation.is_selected('dashboard') }}" href="{{ url_for('.service_dashboard', service_id=current_service.id) }}">Dashboard</a></li>
|
||||
{% endif %}
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
) %}
|
||||
{% call row_heading() %}
|
||||
<div class="file-list">
|
||||
<a class="file-list-filename-large govuk-link govuk-link--no-visited-state" href="{{ url_for('.view_broadcast_message', service_id=current_service.id, broadcast_message_id=item.id) }}">{{ item.template_name }}</a>
|
||||
<a class="file-list-filename-large govuk-link govuk-link--no-visited-state" href="{{ url_for(single_endpoint, service_id=current_service.id, broadcast_message_id=item.id) }}">{{ item.template_name }}</a>
|
||||
<span class="file-list-hint-large govuk-!-margin-bottom-1">
|
||||
{{ item.content }}
|
||||
</span>
|
||||
|
||||
Reference in New Issue
Block a user