Files
notifications-admin/app/templates/views/service-settings.html
Alex Janousek 3a39d910b3 Feat/webpack (#2998)
* First commit

* Removed govuk for webpack. Modernized javascript importing. Removed dead js

* Fixed tests, a few styling bugs

* Fixed some table errors and regenerated backstop ref images

* Updated tests for coverage

* Changes from carlo suggestions
2025-10-14 13:20:58 -04:00

361 lines
14 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/table.html" import mapping_table, row, settings_row, text_field, optional_text_field, edit_field, field, boolean_field with context %}
{% block service_page_title %}
Settings
{% endblock %}
{% block serviceNavigation %}{% endblock %}
{% block sideNavigation %}
{% include "components/settings_nav.html" %}
{% endblock %}
{% block maincolumn_content %}
<h1 class="font-body-lg">Settings</h1>
<div class="margin-bottom-3 settings-table body-copy-table table-overflow-x-auto">
{% call mapping_table(
caption='General',
field_headings_visible=False,
caption_visible=False
) %}
{% call row() %}
{{ text_field('Service name') }}
{{ text_field(current_service.name) }}
{{ edit_field(
'Change',
url_for('.service_name_change', service_id=current_service.id),
permissions=[ServicePermission.MANAGE_SERVICE],
suffix='service name',
)
}}
{% endcall %}
{% call row() %}
{{ text_field('Send text messages') }}
{{ boolean_field('sms' in current_service.permissions) }}
{% call field(align='right') %}
<span class="table-field-status-default">Set automatically</span>
{% endcall %}
{% endcall %}
{% if current_user.platform_admin %}
{% call settings_row(if_has_permission='sms') %}
{{ text_field('Text message senders\n(Only visible to Platform Admins)') }}
{% call field(status='default' if current_service.default_sms_sender == "None" else '') %}
{{ current_service.default_sms_sender | nl2br if current_service.default_sms_sender else 'None'}}
{% if current_service.count_sms_senders > 1 %}
<div class="usa-hint">
{{ '…and %d more' | format(current_service.count_sms_senders - 1) }}
</div>
{% endif %}
{% endcall %}
{{ edit_field(
'Manage',
url_for('.service_sms_senders', service_id=current_service.id),
permissions=[ServicePermission.MANAGE_SERVICE,'manage_api_keys'],
suffix='text message senders',
)
}}
{% endcall %}
{% endif %}
{% call settings_row(if_has_permission='sms') %}
{{ text_field('Start text messages with service name') }}
{{ boolean_field(current_service.prefix_sms) }}
{{ edit_field(
'Change',
url_for('.service_set_sms_prefix', service_id=current_service.id),
permissions=[ServicePermission.MANAGE_SERVICE],
suffix='your settings for starting text messages with service name',
)
}}
{% endcall %}
{% if current_user.platform_admin %}
{% call settings_row(if_has_permission='sms') %}
{{ text_field('Send international text messages') }}
{{ boolean_field('international_sms' in current_service.permissions) }}
{{ edit_field(
'Change',
url_for('.service_set_international_sms', service_id=current_service.id),
permissions=[ServicePermission.MANAGE_SERVICE],
suffix='your settings for sending international text messages',
)
}}
{% endcall %}
{% endif %}
<!-- {% call settings_row(if_has_permission='sms') %}
{{ text_field('Receive text messages') }}
{{ boolean_field('inbound_sms' in current_service.permissions) }}
{{ edit_field(
'Change',
url_for('.service_set_inbound_sms', service_id=current_service.id),
permissions=[ServicePermission.MANAGE_SERVICE],
suffix='your settings for receiving text messages',
)
}}
{% endcall %} -->
{% endcall %}
<!-- {% call mapping_table(
caption='Email settings',
field_headings=['Label', 'Value', 'Action'],
field_headings_visible=False,
caption_visible=True
) %}
{% call row() %}
{{ text_field('Send emails') }}
{{ boolean_field('email' in current_service.permissions) }}
{{ edit_field(
'Change',
url_for(
'.service_set_channel',
channel='email',
service_id=current_service.id
),
permissions=[ServicePermission.MANAGE_SERVICE],
suffix='your settings for sending emails',
)}}
{% endcall %}
{% call settings_row(if_has_permission='email') %}
{{ text_field('Reply-to email addresses') }}
{% call field(status='default' if current_service.count_email_reply_to_addresses == 0 else '') %}
{{ current_service.default_email_reply_to_address or 'Not set' }}
{% if current_service.count_email_reply_to_addresses > 1 %}
<div class="usa-hint">
{{ '…and %d more' | format(current_service.count_email_reply_to_addresses - 1) }}
</div>
{% endif %}
{% endcall %}
{{ edit_field(
'Manage',
url_for('.service_email_reply_to', service_id=current_service.id),
permissions=[ServicePermission.MANAGE_SERVICE,'manage_api_keys'],
suffix='reply-to email addresses',
)
}}
{% endcall %}
{% call settings_row(if_has_permission='email') %}
{{ text_field('Send files by email') }}
{{ optional_text_field(current_service.contact_link, default="Not set up", truncate=true) }}
{{ edit_field(
'Manage',
url_for('.send_files_by_email_contact_details', service_id=current_service.id),
permissions=[ServicePermission.MANAGE_SERVICE],
suffix='sending files by email',
)}}
{% endcall %}
{% endcall %} -->
</div>
{% if current_service.trial_mode %}
<h2 class="font-body-lg top-gutter-0">Your service is in trial mode</h2>
<p>You can only:</p>
<ul class='list list-bullet'>
<li>send {{ current_service.message_limit }} text messages per day</li>
<li>send messages to yourself and other people in your team</li>
</ul>
<p>
{% if current_user.has_permissions(ServicePermission.MANAGE_SERVICE) %}
To remove these restrictions, you can send us a
<a class="usa-link" href="mailto:notify-support@gsa.gov">request to go live</a>.
{% else %}
Your service manager can ask to have these restrictions removed.
{% endif %}
</p>
{% else %}
<h2 class="font-heading-lg top-gutter-0">Your service is live</h2>
<p>
You can send up to
{{ "{:,}".format(current_service.message_limit) }} messages
per year.
</p>
<p>
Problems or comments?
<a class="usa-link" href="{{ url_for('main.support') }}">Contact us</a>.
</p>
{% endif %}
{% if current_user.platform_admin %}
<div class="settings-table body-copy-table top-gutter-4-3">
<h2 class="font-body-lg">Platform admin settings</h2>
{% call mapping_table(
caption='Settings',
field_headings=['Label', 'Value', 'Action'],
field_headings_visible=False,
caption_visible=False
) %}
{% call row() %}
{{ text_field('Live')}}
{% if current_service.trial_mode and not current_service.organization_id %}
{{ text_field('No (organization must be set first)') }}
{% call field(align='right') %}
<span class="table-field-status-default">Set automatically</span>
{% endcall %}
{% else %}
{{ boolean_field(not current_service.trial_mode) }}
{{ edit_field('Change', url_for('.service_switch_live', service_id=current_service.id), suffix='service status') }}
{% endif %}
{% endcall %}
{% call row() %}
{{ text_field('Count in list of live services')}}
{{ text_field(current_service.count_as_live|format_yes_no) }}
{{ edit_field('Change', url_for('.service_switch_count_as_live', service_id=current_service.id), suffix='if service is counted in list of live services') }}
{% endcall %}
{% call row() %}
{{ text_field('Billing details')}}
{{ optional_text_field(current_service.billing_details, default="None", wrap=True) }}
{{ edit_field('Change', url_for('.edit_service_billing_details', service_id=current_service.id), suffix='billing details for service') }}
{% endcall %}
{% call row() %}
{{ text_field('Notes')}}
{{ optional_text_field(current_service.notes, default="None", wrap=True) }}
{{ edit_field('Change', url_for('.edit_service_notes', service_id=current_service.id), suffix='the notes for the service') }}
{% endcall %}
{% call row() %}
{{ text_field('Organization')}}
{% call field() %}
{% if current_service.organization_id %}
<a class="usa-link" href="{{ url_for('main.organization_dashboard', org_id=current_service.organization_id) }}">
{{ current_service.organization_name }}
</a>
{% else %}
<span class="table-field-status-default">Not set</span>
{% endif %}
{% if current_service.organization_type %}
<div class="usa-hint">
{{ current_service.organization_type_label }}
</div>
{% endif %}
{% endcall %}
{{ edit_field('Change', url_for('.link_service_to_organization', service_id=current_service.id), suffix='organization for service') }}
{% endcall %}
{% call row() %}
{{ text_field('Rate limit')}}
{{ text_field('{:,} per minute'.format(current_service.rate_limit)) }}
{{ edit_field('Change', url_for('.set_rate_limit', service_id=current_service.id), suffix='rate limit') }}
{% endcall %}
{% call row() %}
{{ text_field('Message batch limit')}}
{{ text_field('{:,} per send'.format(current_service.message_limit)) }}
{{ edit_field('Change', url_for('.set_message_limit', service_id=current_service.id), suffix='message batch limit') }}
{% endcall %}
{% call row() %}
{{ text_field('Free text message allowance')}}
{{ text_field('{:,} per year'.format(current_service.free_sms_fragment_limit)) }}
{{ edit_field('Change', url_for('.set_free_sms_allowance', service_id=current_service.id), suffix='free text message allowance') }}
{% endcall %}
{% call row() %}
{{ text_field('Custom data retention')}}
{% call field() %}
{% for channel in current_service.data_retention %}
{% if loop.first %}
<ul>
{% endif %}
<li>{{ channel.notification_type|format_notification_type }} {{ channel.days_of_retention }} days</li>
{% if loop.last %}
</ul>
{% endif %}
{% else %}
<div class="table-field-status-default">Not set</div>
{% endfor %}
{% endcall %}
{{ edit_field('Change', url_for('.data_retention', service_id=current_service.id), suffix='data retention') }}
{% endcall %}
{% for permission in service_permissions %}
{% if not service_permissions[permission].requires or current_service.has_permission(service_permissions[permission].requires) %}
{% call row() %}
{{ text_field(service_permissions[permission].title)}}
{{ boolean_field(current_service.has_permission(permission)) }}
{{ edit_field(
'Change',
url_for(
service_permissions[permission].endpoint or '.service_set_permission',
service_id=current_service.id,
permission=permission if not service_permissions[permission].endpoint else None
),
suffix='your settings for ' + service_permissions[permission].title,
) }}
{% endcall %}
{% endif %}
{% endfor %}
{% endcall %}
</div>
{% endif %}
{% if current_service.active and (current_service.trial_mode or current_user.platform_admin) %}
<p class="top-gutter-1-2">
<span class="page-footer-link page-footer-delete-link-without-button">
<a class="usa-button usa-button--secondary" href="{{ url_for('.archive_service', service_id=current_service.id) }}">
Delete this service
</a>
</span>
{% if current_user.platform_admin %}
<span class="page-footer-link">
<a href="{{ url_for('.suspend_service', service_id=current_service.id) }}" class="usa-button usa-button--outline">
Suspend service
</a>
</span>
<span class="page-footer-link">
<a href="{{ url_for('.history', service_id=current_service.id) }}" class="usa-link">
Service history
</a>
</span>
{% endif %}
</p>
{% endif %}
{% if (not current_service.active) and current_user.platform_admin %}
<p>
<div class="usa-hint ">
Service suspended
</div>
<span class="page-footer-link page-footer-delete-link-without-button">
<a class="usa-link usa-link--destructive" href="{{ url_for('.resume_service', service_id=current_service.id) }}">
Resume service
</a>
</span>
<span class="page-footer-link">
<a href="{{ url_for('.history', service_id=current_service.id) }}" class="usa-link">
Service history
</a>
</span>
</p>
{% endif %}
{% endblock %}
}