Files
notifications-admin/app/templates/views/check.html
Chris Hill-Scott 457249c0fa Put template name on preview page
We’ve had a couple of instances where teams have sent the wrong template
to a …number of users.

Sometimes templates can be very similar and only have slight variations
to tailor them to a specific subset of users. So identifying the right
template by sight can be difficult.

We know that teams do give their templates meaningful names, and use
these names in other tools (spreadsheets etc) to refer to the templates.

So putting the name of the template on the page where you’re about to
send all the messages seems like it’s gives people an easier way of
double checking that they’re doing the right thing.

I umm’d and ahh’d over the wording a bit, and think ‘Preview of…’ reads
the best. It looks a bit weird because most template names are Title
Case. I think it’s better than some ambiguous punctuation (eg ‘Preview:
Template name’ or ‘Template name – preview’).

Some examples of real template names:
- Preview of Example text message templates
- Preview of Online LPA payment application reminder
- Preview of Create user account
- Preview of Split journey - Unknown credentials
- Preview of Public user: application without supporting documents
- Preview of Renewal Survey – February
- Preview of CEX New adult
- Preview of Applications are closing tomorrow
- Preview of Your application result - if successful
2017-03-02 17:29:53 +00:00

242 lines
8.0 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{% extends "withnav_template.html" %}
{% from "components/banner.html" import banner_wrapper %}
{% from "components/radios.html" import radio_select %}
{% from "components/table.html" import list_table, field, text_field, index_field, hidden_field_heading %}
{% from "components/file-upload.html" import file_upload %}
{% from "components/page-footer.html" import page_footer %}
{% from "components/message-count-label.html" import message_count_label %}
{% set file_contents_header_id = 'file-preview' %}
{% macro skip_to_file_contents() %}
<p class="visually-hidden">
<a href="#{{ file_contents_header_id }}">Skip to file contents</a>
</p>
{% endmacro %}
{% block service_page_title %}
{{ "Error" if errors else "Preview" }}
{% endblock %}
{% block maincolumn_content %}
{% if recipients.too_many_rows %}
<div class="bottom-gutter">
{% call banner_wrapper(type='dangerous') %}
<h1 class='banner-title'>
Your file has too many rows
</h1>
<p>
Notify can process up to
{{ "{:,}".format(recipients.max_rows) }} rows at once. Your
file has {{ "{:,}".format(recipients|length) }} rows.
</p>
{{ skip_to_file_contents() }}
{% endcall %}
</div>
{% elif not count_of_recipients %}
<div class="bottom-gutter">
{% call banner_wrapper(type='dangerous') %}
<h1 class='banner-title'>
Your file is missing some rows
</h1>
<p>
It needs at least one row of data, and {{ recipients.missing_column_headers | sort() | formatted_list(
prefix='a column called',
prefix_plural='columns called'
) }}.
</p>
{{ skip_to_file_contents() }}
{% endcall %}
</div>
{% elif not recipients.has_recipient_columns %}
<div class="bottom-gutter">
{% call banner_wrapper(type='dangerous') %}
<h1 class='banner-title'>
Your file needs to have {{ recipients.recipient_column_headers | formatted_list(
prefix='a column called',
prefix_plural='columns called'
) }}
</h1>
<p>
Your file has {{ recipients.column_headers | formatted_list(
prefix='one column, called ',
prefix_plural='columns called '
) }}.
</p>
{{ skip_to_file_contents() }}
{% endcall %}
</div>
{% elif recipients.missing_column_headers %}
<div class="bottom-gutter">
{% call banner_wrapper(type='dangerous') %}
<h1 class='banner-title'>
The columns in your file need to match the double brackets in
your template
</h1>
<p>
Your file has {{ recipients.column_headers | formatted_list(
prefix='one column, called ',
prefix_plural='columns called '
) }}.
</p>
<p>
It doesnt have {{ recipients.missing_column_headers | formatted_list(
conjunction='or',
prefix='a column called ',
prefix_plural='columns called '
) }}.
</p>
{{ skip_to_file_contents() }}
{% endcall %}
</div>
{% elif row_errors %}
<div class="bottom-gutter">
{% call banner_wrapper(type='dangerous') %}
{% if row_errors|length == 1 %}
<h1 class='banner-title'>
There is a problem with your data
</h1>
<p>
You need to {{ row_errors[0] }}
</p>
{% else %}
<h1 class='banner-title'>
There are some problems with your data
</h1>
<p>
You need to:
</p>
<ul class="list-bullet">
{% for error in row_errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
{{ skip_to_file_contents() }}
{% endcall %}
</div>
{% elif not recipients.allowed_to_send_to %}
<div class="bottom-gutter">
{% call banner_wrapper(type='dangerous') %}
<h1 class='banner-title'>
You cant send to
{{ 'this' if count_of_recipients == 1 else 'these' }}
{{ recipients.recipient_column_headers[0] }}
{%- if count_of_recipients != 1 -%}
{{ 'es' if 'email address' == recipients.recipient_column_headers[0] else 's' }}
{%- endif %}
</h1>
<p>
In <a href="{{ url_for('.trial_mode') }}">trial mode</a> you can only
send to yourself and members of your team
</p>
{{ skip_to_file_contents() }}
{% endcall %}
</div>
{% elif recipients.more_rows_than_can_send %}
{% include "partials/check/too-many-messages.html" %}
{% else %}
<h1 class="heading-large">
Preview of {{ template.name }}
</h1>
{{ skip_to_file_contents() }}
{% endif %}
{{ template|string }}
<div class="bottom-gutter-3-2">
{% if errors %}
{% if request.args.from_test %}
<a href="{{ back_link }}" class="page-footer-back-link">Back</a>
{% else %}
{{file_upload(form.file, button_text='Re-upload your file')}}
{% endif %}
{% else %}
<form method="post" enctype="multipart/form-data" action="{{url_for('main.start_job', service_id=current_service.id, upload_id=upload_id)}}" class='page-footer'>
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
<input type="hidden" name="help" value="{{ '3' if help else 0 }}" />
{% if choose_time_form %}
{{ radio_select(
choose_time_form.scheduled_for,
wrapping_class='bottom-gutter-2-3'
) }}
{% endif %}
<input type="submit" class="button" value="Send {{ count_of_recipients }} {{ message_count_label(count_of_recipients, template.template_type, suffix='') }}" />
<a href="{{ back_link }}" class="page-footer-back-link">Back</a>
</form>
{% endif %}
</div>
<h2 class="heading-medium" id="{{ file_contents_header_id }}">{{ original_file_name }}</h2>
{% call(item, row_number) list_table(
recipients.initial_annotated_rows_with_errors if row_errors and not recipients.missing_column_headers else recipients.initial_annotated_rows,
caption=original_file_name,
caption_visible=False,
field_headings=[
'<span class="visually-hidden">Row in file</span><span aria-hidden="true">1</span>'|safe
] + recipients.column_headers
) %}
{{ index_field(item.index + 2) }}
{% for column in recipients.column_headers %}
{% if item['columns'][column].error and not recipients.missing_column_headers %}
{% call field() %}
<span class="table-field-error">
<span class="table-field-error-label">{{ item['columns'][column].error }}</span>
{{ item['columns'][column].data if item['columns'][column].data != None }}
</span>
{% endcall %}
{% elif item['columns'][column].ignore %}
{% call field(status='default') %}
{{ item['columns'][column].data if item['columns'][column].data != None }}
{% endcall %}
{% else %}
{% call field() %}
{{ item['columns'][column].data if item['columns'][column].data != None }}
{% endcall %}
{% endif %}
{% endfor %}
{% if item['columns'].get(None) %}
{% for column in item['columns'][None].data %}
{% call field(status='default') %}
{{ column }}
{% endcall %}
{% endfor %}
{% endif %}
{% endcall %}
{% if recipients.too_many_rows %}
<p class="table-show-more-link">
Cant show the contents of this file
</p>
{% elif count_of_displayed_recipients < count_of_recipients %}
<p class="table-show-more-link">
{% if row_errors and not recipients.missing_column_headers %}
Only showing the first {{ count_of_displayed_recipients }} rows with errors
{% else %}
Only showing the first {{ count_of_displayed_recipients }} rows
{% endif %}
</p>
{% elif row_errors and not recipients.missing_column_headers %}
<p class="table-show-more-link">
Only showing rows with errors
</p>
{% endif %}
{% endblock %}