From 738043c5c4a23ae051f7feeff04e03606a6a9bb0 Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Fri, 16 Nov 2018 14:09:14 +0000 Subject: [PATCH] Show path on template and manage folder pages So the page headings stay consistent as you click around, and make it easy to get back where you came from. --- app/models/service.py | 6 +++++ app/templates/views/templates/choose.html | 2 +- .../templates/manage-template-folder.html | 25 ++++++++----------- app/templates/views/templates/template.html | 13 +++++++++- tests/__init__.py | 1 + tests/app/main/views/test_template_folders.py | 9 +++++-- tests/app/main/views/test_templates.py | 13 ++++++++++ 7 files changed, 51 insertions(+), 18 deletions(-) diff --git a/app/models/service.py b/app/models/service.py index d91a12e5e..dff5916e6 100644 --- a/app/models/service.py +++ b/app/models/service.py @@ -352,6 +352,12 @@ class Service(): folder, ] + def get_template_path(self, template): + return [ + self.get_template_folder(template['folder']), + template, + ] + def get_template_folders_and_templates(self, template_type, template_folder_id): return ( self.get_templates(template_type, template_folder_id) + diff --git a/app/templates/views/templates/choose.html b/app/templates/views/templates/choose.html index 9b5e8fe6c..980e2d6e1 100644 --- a/app/templates/views/templates/choose.html +++ b/app/templates/views/templates/choose.html @@ -46,7 +46,7 @@ {% else %} -
+
{{ folder_path( folders=template_folder_path, diff --git a/app/templates/views/templates/manage-template-folder.html b/app/templates/views/templates/manage-template-folder.html index 7066003ac..ae8990fd9 100644 --- a/app/templates/views/templates/manage-template-folder.html +++ b/app/templates/views/templates/manage-template-folder.html @@ -1,26 +1,24 @@ {% extends "withnav_template.html" %} +{% from "components/folder-path.html" import folder_path, page_title_folder_path %} {% from "components/textbox.html" import textbox %} {% from "components/page-footer.html" import page_footer %} {% from "components/form.html" import form_wrapper %} {% block service_page_title %} -Templates -{% for folder in template_folder_path %} - / - {{ folder.name }} -{% endfor %} - - Manage folder + {{ page_title_folder_path(template_folder_path) }} {% endblock %} {% block maincolumn_content %} -

- Templates - {% for folder in template_folder_path %} - / - {{ folder.name }} - {% endfor %} -

+
+
+ {{ folder_path( + folders=template_folder_path, + service_id=current_service.id, + template_type='all', + ) }} +
+
{% if not delete_folder %} {% call form_wrapper() %} @@ -33,7 +31,6 @@ Templates template_folder_id=template_folder_id ), delete_link_text="Delete this folder") }} - {% endcall %} {% else %} Back to manage folder page diff --git a/app/templates/views/templates/template.html b/app/templates/views/templates/template.html index 8bde511c6..5f61b25a5 100644 --- a/app/templates/views/templates/template.html +++ b/app/templates/views/templates/template.html @@ -1,5 +1,6 @@ {% extends "withnav_template.html" %} {% from "components/banner.html" import banner_wrapper %} +{% from "components/folder-path.html" import folder_path %} {% from "components/page-footer.html" import page_footer %} {% from "components/textbox.html" import textbox %} {% from "components/api-key.html" import api_key %} @@ -28,7 +29,17 @@ {% endcall %}
{% else %} -

{{ template.name }}

+
+
+ {{ folder_path( + folders=current_service.get_template_path(template._template), + service_id=current_service.id, + template_type='all', + fallback_page_title=template.name, + show_fallback_page_title=not current_service.all_template_folders + ) }} +
+
{% endif %}
diff --git a/tests/__init__.py b/tests/__init__.py index f12e111b8..cf96dd13d 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -229,6 +229,7 @@ def template_json(service_id, 'reply_to': reply_to, 'reply_to_text': reply_to_text, 'is_precompiled_letter': is_precompiled_letter, + 'folder': None, } if content is None: template['content'] = "template content" diff --git a/tests/app/main/views/test_template_folders.py b/tests/app/main/views/test_template_folders.py index f1dd42de0..506c80ef3 100644 --- a/tests/app/main/views/test_template_folders.py +++ b/tests/app/main/views/test_template_folders.py @@ -361,7 +361,11 @@ def test_get_manage_folder_page( page = client_request.get( 'main.manage_template_folder', service_id=service_one['id'], - template_folder_id=folder_id + template_folder_id=folder_id, + _test_page_title=False, + ) + assert normalize_spaces(page.select_one('title').text) == ( + 'folder_two – Templates – service one – GOV.UK Notify' ) assert page.select_one('input[name=name]') is not None delete_link = page.find('a', string="Delete this folder") @@ -431,7 +435,8 @@ def test_delete_template_folder_should_request_confirmation( ) page = client_request.get( 'main.delete_template_folder', service_id=service_one['id'], - template_folder_id=folder_id + template_folder_id=folder_id, + _test_page_title=False, ) assert normalize_spaces(page.select('.banner-dangerous')[0].text) == ( 'Are you sure you want to delete the ‘sacrifice’ folder? ' diff --git a/tests/app/main/views/test_templates.py b/tests/app/main/views/test_templates.py index fcfa62108..9531056a6 100644 --- a/tests/app/main/views/test_templates.py +++ b/tests/app/main/views/test_templates.py @@ -492,6 +492,7 @@ def test_user_with_only_send_and_view_redirected_to_one_off( def test_user_with_only_send_and_view_sees_letter_page( client_request, mock_get_service_templates, + mock_get_template_folders, mock_get_service_letter_template, single_letter_contact_block, mock_has_jobs, @@ -536,6 +537,7 @@ def test_user_with_only_send_and_view_sees_letter_page( def test_should_be_able_to_view_a_template_with_links( client, mock_get_service_template, + mock_get_template_folders, active_user_with_permissions, single_letter_contact_block, mocker, @@ -575,6 +577,7 @@ def test_should_be_able_to_view_a_template_with_links( def test_should_show_template_id_on_template_page( logged_in_client, mock_get_service_template, + mock_get_template_folders, service_one, fake_uuid, ): @@ -595,6 +598,7 @@ def test_should_show_sms_template_with_downgraded_unicode_characters( mocker, service_one, single_letter_contact_block, + mock_get_template_folders, fake_uuid, ): msg = 'here:\tare some “fancy quotes” and zero\u200Bwidth\u200Bspaces' @@ -618,6 +622,7 @@ def test_should_show_sms_template_with_downgraded_unicode_characters( def test_should_let_letter_contact_block_be_changed_for_the_template( mocker, mock_get_service_letter_template, + mock_get_template_folders, no_letter_contact_blocks, client_request, service_one, @@ -1264,6 +1269,7 @@ def test_should_redirect_when_saving_a_template_email( def test_should_show_delete_template_page_with_time_block( client_request, mock_get_service_template, + mock_get_template_folders, mocker, fake_uuid ): @@ -1294,6 +1300,7 @@ def test_should_show_delete_template_page_with_time_block( def test_should_show_delete_template_page_with_time_block_for_empty_notification( client_request, mock_get_service_template, + mock_get_template_folders, mocker, fake_uuid ): @@ -1323,6 +1330,7 @@ def test_should_show_delete_template_page_with_time_block_for_empty_notification def test_should_show_delete_template_page_with_never_used_block( client_request, mock_get_service_template, + mock_get_template_folders, fake_uuid, mocker, ): @@ -1390,6 +1398,7 @@ def test_should_show_page_for_a_deleted_template( api_user_active, mock_login, mock_get_service, + mock_get_template_folders, mock_get_deleted_template, single_letter_contact_block, mock_get_user, @@ -1430,6 +1439,7 @@ def test_route_permissions( api_user_active, service_one, mock_get_service_template, + mock_get_template_folders, mock_get_template_statistics_for_template, fake_uuid, ): @@ -1713,6 +1723,7 @@ def test_should_show_message_before_redacting_template( def test_should_show_redact_template( client_request, mock_get_service_template, + mock_get_template_folders, mock_redact_template, single_letter_contact_block, service_one, @@ -1737,6 +1748,7 @@ def test_should_show_hint_once_template_redacted( client_request, mocker, service_one, + mock_get_template_folders, fake_uuid, ): @@ -1756,6 +1768,7 @@ def test_should_not_show_redaction_stuff_for_letters( mocker, fake_uuid, mock_get_service_letter_template, + mock_get_template_folders, single_letter_contact_block, ):