diff --git a/app/assets/stylesheets/components/browse-list.scss b/app/assets/stylesheets/components/browse-list.scss new file mode 100644 index 000000000..abb95ecc0 --- /dev/null +++ b/app/assets/stylesheets/components/browse-list.scss @@ -0,0 +1,27 @@ +.browse-list { + + margin-bottom: $gutter; + + &-item { + list-style: none; + margin-bottom: $gutter-two-thirds; + } + + a.browse-list-link { + + @include bold-24; + + &-destructive, + &-destructive:visited { + @include bold-24; + color: $error-colour; + } + + } + + &-hint { + @include core-19; + margin-top: 5px; + } + +} diff --git a/app/assets/stylesheets/components/page-footer.scss b/app/assets/stylesheets/components/page-footer.scss new file mode 100644 index 000000000..53a94f75b --- /dev/null +++ b/app/assets/stylesheets/components/page-footer.scss @@ -0,0 +1,17 @@ +.page-footer { + + margin-bottom: 50px; + + &-back-link { + display: block; + margin-top: $gutter; + } + + .button {} + + .button-destructive { + @include button($error-colour); + padding: 0.52632em 0.78947em 0.26316em 0.78947em; + } + +} diff --git a/app/assets/stylesheets/components/submit-form.scss b/app/assets/stylesheets/components/submit-form.scss deleted file mode 100644 index 041c71773..000000000 --- a/app/assets/stylesheets/components/submit-form.scss +++ /dev/null @@ -1,12 +0,0 @@ -.submit-form { - - margin-bottom: 50px; - - &-back-link { - @include button($grey-1); - padding: 0.52632em 0.78947em 0.26316em 0.78947em; - @include inline-block; - margin-left: 5px; - } - -} diff --git a/app/assets/stylesheets/main.scss b/app/assets/stylesheets/main.scss index ece58780a..9beb5dd10 100644 --- a/app/assets/stylesheets/main.scss +++ b/app/assets/stylesheets/main.scss @@ -33,12 +33,13 @@ @import 'components/template-picker'; @import 'components/placeholder'; @import 'components/sms-message'; -@import 'components/submit-form'; +@import 'components/page-footer'; @import 'components/table'; @import 'components/navigation'; @import 'components/big-number'; @import 'components/banner'; @import 'components/textbox'; +@import 'components/browse-list'; @import 'views/job'; diff --git a/app/main/__init__.py b/app/main/__init__.py index 93354853b..9354e06db 100644 --- a/app/main/__init__.py +++ b/app/main/__init__.py @@ -5,5 +5,5 @@ main = Blueprint('main', __name__) from app.main.views import ( index, sign_in, sign_out, register, two_factor, verify, sms, add_service, - code_not_received, jobs, dashboard, templates + code_not_received, jobs, dashboard, templates, service_settings ) diff --git a/app/main/views/index.py b/app/main/views/index.py index 9c9ef1f6c..dec87cf89 100644 --- a/app/main/views/index.py +++ b/app/main/views/index.py @@ -54,11 +54,6 @@ def manageusers(): return render_template('views/manage-users.html') -@main.route("/service-settings") -def servicesettings(): - return render_template('views/service-settings.html') - - @main.route("/api-keys") def apikeys(): return render_template('views/api-keys.html') diff --git a/app/main/views/service_settings.py b/app/main/views/service_settings.py new file mode 100644 index 000000000..6553a876e --- /dev/null +++ b/app/main/views/service_settings.py @@ -0,0 +1,97 @@ +from flask import render_template, redirect, request, url_for, abort +from flask_login import login_required + +from app.main import main + +service = { + 'name': 'Service name', + 'live': False, + 'active': True +} + + +@main.route("/service-settings") +def service_settings(): + return render_template( + 'views/service-settings.html', + service=service + ) + + +@main.route("/service-settings/name", methods=['GET', 'POST']) +def name(): + if request.method == 'GET': + return render_template( + 'views/service-settings/name.html', + service=service + ) + elif request.method == 'POST': + return redirect(url_for('.confirm_name_change')) + + +@main.route("/service-settings/name/confirm", methods=['GET', 'POST']) +def confirm_name_change(): + if request.method == 'GET': + return render_template( + 'views/service-settings/confirm.html', + heading='Change your service name' + ) + elif request.method == 'POST': + return redirect(url_for('.service_settings')) + + +@main.route("/service-settings/request-to-go-live", methods=['GET', 'POST']) +def request_to_go_live(): + if request.method == 'GET': + return render_template( + 'views/service-settings/request-to-go-live.html', + service=service + ) + elif request.method == 'POST': + return redirect(url_for('.service_settings')) + + +@main.route("/service-settings/status", methods=['GET', 'POST']) +def status(): + if request.method == 'GET': + return render_template( + 'views/service-settings/status.html', + service=service + ) + elif request.method == 'POST': + return redirect(url_for('.confirm_status_change')) + + +@main.route("/service-settings/status/confirm", methods=['GET', 'POST']) +def confirm_status_change(): + if request.method == 'GET': + return render_template( + 'views/service-settings/confirm.html', + heading='Turn off all outgoing notifications', + destructive=True + ) + elif request.method == 'POST': + return redirect(url_for('.service_settings')) + + +@main.route("/service-settings/delete", methods=['GET', 'POST']) +def delete(): + if request.method == 'GET': + return render_template( + 'views/service-settings/delete.html', + service=service + ) + elif request.method == 'POST': + return redirect(url_for('.confirm_delete')) + + +@main.route("/service-settings/delete/confirm", methods=['GET', 'POST']) +def confirm_delete(): + if request.method == 'GET': + return render_template( + 'views/service-settings/confirm.html', + heading='Delete this service from Notify', + destructive=True + ) + elif request.method == 'POST': + return redirect(url_for('.dashboard')) diff --git a/app/templates/admin_template.html b/app/templates/admin_template.html index 63cff92ce..4613ca442 100644 --- a/app/templates/admin_template.html +++ b/app/templates/admin_template.html @@ -20,11 +20,9 @@ GOV.UK Notify admin {% endblock %} - {% block cookie_message %} {% endblock %} - {% block inside_header %} {% endblock %} {% block header_class %}with-proposition{% endblock %} diff --git a/app/templates/components/browse-list.html b/app/templates/components/browse-list.html new file mode 100644 index 000000000..d59e9ae37 --- /dev/null +++ b/app/templates/components/browse-list.html @@ -0,0 +1,20 @@ +{% macro browse_list(items) %} + {% if items %} + + {% endif %} +{% endmacro %} diff --git a/app/templates/components/page-footer.html b/app/templates/components/page-footer.html new file mode 100644 index 000000000..333755449 --- /dev/null +++ b/app/templates/components/page-footer.html @@ -0,0 +1,11 @@ +{% macro page_footer(button_text=None, back_link=False, back_link_text="Back", destructive=False) %} + +{% endmacro %} diff --git a/app/templates/components/submit-form.html b/app/templates/components/submit-form.html deleted file mode 100644 index 012d0a580..000000000 --- a/app/templates/components/submit-form.html +++ /dev/null @@ -1,9 +0,0 @@ -{% macro submit_form(button_text, back_link=False) %} -
- - - {% if back_link %} - Back - {% endif %} -
-{% endmacro %} diff --git a/app/templates/components/table.html b/app/templates/components/table.html index ee3c2838f..bfa53232d 100644 --- a/app/templates/components/table.html +++ b/app/templates/components/table.html @@ -1,4 +1,4 @@ -{% macro table(items, caption='', field_headings='', field_headings_visible=True, caption_visible=True) -%} +{% macro mapping_table(caption='', field_headings=[], field_headings_visible=True, caption_visible=True) -%} - {% if items %} - {% for item in items %} - - {{ caller(item) }} - - {% endfor %} - {% else %} -

- {{ empty_message }} -

- {% endif %} + {{ caller() }}
{{ caption }} @@ -17,21 +17,34 @@
{%- endmacro %} +{% macro list_table(items, caption='', empty_message='', field_headings=[], field_headings_visible=True, caption_visible=True) -%} + {% if items %} + {% set parent_caller = caller %} + {% call mapping_table(caption, field_headings, field_headings_visible, caption_visible) %} + {% for item in items %} + {% call row() %} + {{ parent_caller(item) }} + {% endcall %} + {% endfor %} + {%- endcall %} + {% else %} +

+ {{ empty_message }} +

+ {% endif %} +{%- endmacro %} + +{% macro row() -%} + + {{ caller() }} + +{%- endmacro %} + {% macro field(align='left', status='') -%} {{ caller() }} diff --git a/app/templates/components/textbox.html b/app/templates/components/textbox.html index a32a76c4b..7a74f0985 100644 --- a/app/templates/components/textbox.html +++ b/app/templates/components/textbox.html @@ -1,8 +1,8 @@ -{% macro textbox(name, label, value='', small=True, highlight_tags=False) %} +{% macro textbox(name, label, value='', small=True, highlight_tags=False, password=False) %}
{% if small %} - + {% else %}