Merge lp:~deadlight/canonical-identity-provider/logout into lp:~deadlight/canonical-identity-provider/vanilla

Proposed by Karl Williams
Status: Merged
Merged at revision: 1691
Proposed branch: lp:~deadlight/canonical-identity-provider/logout
Merge into: lp:~deadlight/canonical-identity-provider/vanilla
Diff against target: 497 lines (+337/-79)
8 files modified
src/identityprovider/static_src/scss/styles.scss (+8/-0)
src/webui/templates/registration/logout.html (+19/-16)
src/webui/templates/static/ubuntuone-account.html (+33/-51)
src/webui/templates/vanilla/_footer.html (+28/-0)
src/webui/templates/vanilla/_header.html (+32/-0)
src/webui/templates/vanilla/base.html (+179/-0)
src/webui/templates/vanilla/widgets/header-me-menu.html (+18/-0)
src/webui/templates/widgets/other_sites.html (+20/-12)
To merge this branch: bzr merge lp:~deadlight/canonical-identity-provider/logout
Reviewer Review Type Date Requested Status
Anthony Dillon (community) Approve
Review via email: mp+370377@code.launchpad.net

Description of the change

Updated the logout page to use Vanilla styling

---------

QA:
- Visit [HOST]:8000/+logout

NOTE: It's hard to test the message that appears when you are logged into other services but I mocked that up and it looks like this: https://assets.ubuntu.com/v1/73a0f69c-Screenshot_2019-07-19+You+have+been+logged+out%281%29.png

To post a comment you must log in.
Revision history for this message
Anthony Dillon (ya-bo-ng) wrote :

LGTM +1. Few trivial comments in the code.

review: Approve
1691. By Karl Williams

Update copyright years

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/identityprovider/static_src/scss/styles.scss'
2--- src/identityprovider/static_src/scss/styles.scss 2019-07-16 13:03:58 +0000
3+++ src/identityprovider/static_src/scss/styles.scss 2019-07-22 09:38:23 +0000
4@@ -4,6 +4,14 @@
5
6 @import 'vanilla-framework/scss/build';
7
8+.p-navigation .row {
9+ justify-content: space-between;
10+}
11+
12+.p-navigation__nav {
13+ width: auto;
14+}
15+
16 .p-cip-hero {
17 background-image: linear-gradient(212deg, #E95420 0%, #C44631 6%, #A33940 12%, #8B304A 18%, #7C2B51 24%, #772953 29%, #55163B 51%, #370626 75%, #2C001E 100%);
18 }
19
20=== modified file 'src/webui/templates/registration/logout.html'
21--- src/webui/templates/registration/logout.html 2015-03-19 19:24:26 +0000
22+++ src/webui/templates/registration/logout.html 2019-07-22 09:38:23 +0000
23@@ -1,8 +1,8 @@
24-{% extends "base.html" %}
25+{% extends "vanilla/base.html" %}
26 {% load i18n %}
27
28 {% comment %}
29-Copyright 2010 Canonical Ltd. This software is licensed under the
30+Copyright 2010-2019 Canonical Ltd. This software is licensed under the
31 GNU Affero General Public License version 3 (see the file LICENSE).
32 {% endcomment %}
33
34@@ -11,21 +11,24 @@
35 {% block title %}{% trans "You have been logged out" %}{% endblock %}
36
37 {% block text_title %}
38- <h1 class="u1-h-main">{% trans "You have been logged out" %}</h1>
39+ <h1>{% trans "You have been logged out" %}</h1>
40 {% endblock %}
41
42 {% block content %}
43- <p>{% blocktrans %}You are now logged out of the Ubuntu One website. However, you have not been automatically logged out of every website that uses this service.{% endblocktrans %}</p>
44-
45- {% if return_to_url %}
46- <p class="returnto highlight">
47- <a href="{{ return_to_url }}">{% blocktrans %}Return to {{ return_to_site_name }}{% endblocktrans %}</a>
48- </p>
49- {% endif %}
50-
51- {% if other_sites %}
52- {% include "widgets/other_sites.html" %}
53- {% endif %}
54-
55+ <section class="p-strip">
56+ <div class="row">
57+ <div class="col-8">
58+ <p>{% blocktrans %}You are now logged out of the Ubuntu One website. However, you have not been automatically logged out of every website that uses this service.{% endblocktrans %}</p>
59+
60+ {% if return_to_url %}
61+ <p>
62+ <a href="{{ return_to_url }}">{% blocktrans %}Return to {{ return_to_site_name }}{% endblocktrans %}</a>
63+ </p>
64+ {% endif %}
65+ </div>
66+ </div>
67+ {% if other_sites %}
68+ {% include "widgets/other_sites.html" %}
69+ {% endif %}
70+ </section>
71 {% endblock %}
72-
73
74=== modified file 'src/webui/templates/static/ubuntuone-account.html'
75--- src/webui/templates/static/ubuntuone-account.html 2014-07-30 16:35:52 +0000
76+++ src/webui/templates/static/ubuntuone-account.html 2019-07-22 09:38:23 +0000
77@@ -1,4 +1,4 @@
78-{% extends "base.html" %}
79+{% extends "vanilla/base.html" %}
80 {% load i18n %}
81 {% load static_url %}
82
83@@ -13,56 +13,38 @@
84
85 {% block menu %}{% endblock %}
86
87-{% block text_title %}<h1 class="u1-h-main">{% trans "Your Ubuntu One account" %}</h1>{% endblock %}
88+{% block text_title %}<h1>{% trans "Your Ubuntu One account" %}</h1>{% endblock %}
89
90 {% block content %}
91-<div class="yui3-g-r">
92-
93- <div class="yui3-u-1-2 account-information">
94-
95- <h3>{% trans "One account to log in to everything on Ubuntu" %}</h3>
96-
97- <p>
98- {% blocktrans %}Ubuntu One is the single account you use to log in to
99- all services and sites related to Ubuntu.{% endblocktrans %}
100- </p>
101-
102- <h3>{% trans "Already have an SSO account?" %}</h3>
103-
104- <p>
105- {% blocktrans %}You can use your existing Ubuntu single sign on or
106- Launchpad credentials to log in. Your Ubuntu single sign on account is
107- now called your Ubuntu One account.{% endblocktrans %}
108- </p>
109- </div>
110-
111- <div class="yui3-u-1-3 account-faq">
112-
113- <div class="box">
114- <div class="title">
115- <h3>Account FAQ</h3>
116- </div>
117-
118- <div class="body">
119- <ul class="questions">
120- <li><a href="{% url 'faq' %}#what-is-an-ubuntu-one-account">{% trans "What is an Ubuntu One account?" %}</a></li>
121- <li><a href="{% url 'faq' %}#how-can-i-update-my-ubuntu-one-email-address">{% trans "How can I update my Ubuntu One e-mail address?" %}</a></li>
122- <li><a href="{% url 'faq' %}#i-never-received-my-ubuntu-one-verification-code-now-what">{% trans "I never received my Ubuntu One verification code. Now what?" %}</a></li>
123- <li><a href="{% url 'faq' %}#how-do-i-recover-or-change-my-ubuntu-one-password">{% trans "How do I recover or change my Ubuntu One password?" %}</a></li>
124- <li><a href="{% url 'faq' %}#can-i-delete-my-ubuntu-one-account">{% trans "Can I delete my Ubuntu One account?" %}</a></li>
125- </ul>
126-
127- <p class="more-help">
128- {% url 'faq' as faq_url %}
129- {% blocktrans with email='isd-support@canonical.com' %}
130- <a href="{{ faq_url }}">View all FAQs</a> or email support at <a href="mailto:{{ email }}">{{ email }}</a>
131- {% endblocktrans %}
132- </div>
133-
134- </div>
135-
136- </div>
137-
138-</div>
139-
140+<section class="p-strip">
141+ <div class="row">
142+ <div class="col-8">
143+ <h3>{% trans "One account to log in to everything on Ubuntu" %}</h3>
144+ <p>{% blocktrans %}Ubuntu One is the single account you use to log in to
145+ all services and sites related to Ubuntu.{% endblocktrans %}</p>
146+ <h3>{% trans "Already have an SSO account?" %}</h3>
147+ <p>{% blocktrans %}You can use your existing Ubuntu single sign on or
148+ Launchpad credentials to log in. Your Ubuntu single sign on account is
149+ now called your Ubuntu One account.{% endblocktrans %}</p>
150+ </div>
151+ <div class="col-4">
152+ <div class="p-card">
153+ <h3>Account FAQ</h3>
154+ <ul class="p-list--divided">
155+ <li class="p-list__item"><a href="{% url 'faq' %}#what-is-an-ubuntu-one-account">{% trans "What is an Ubuntu One account?" %}</a></li>
156+ <li class="p-list__item"><a href="{% url 'faq' %}#how-can-i-update-my-ubuntu-one-email-address">{% trans "How can I update my Ubuntu One e-mail address?" %}</a></li>
157+ <li class="p-list__item"><a href="{% url 'faq' %}#i-never-received-my-ubuntu-one-verification-code-now-what">{% trans "I never received my Ubuntu One verification code. Now what?" %}</a></li>
158+ <li class="p-list__item"><a href="{% url 'faq' %}#how-do-i-recover-or-change-my-ubuntu-one-password">{% trans "How do I recover or change my Ubuntu One password?" %}</a></li>
159+ <li class="p-list__item"><a href="{% url 'faq' %}#can-i-delete-my-ubuntu-one-account">{% trans "Can I delete my Ubuntu One account?" %}</a></li>
160+ </ul>
161+ <p>
162+ {% url 'faq' as faq_url %}
163+ {% blocktrans with email='isd-support@canonical.com' %}
164+ <a href="{{ faq_url }}">View all FAQs</a> or email support at <a href="mailto:{{ email }}">{{ email }}</a>
165+ {% endblocktrans %}
166+ </p>
167+ </div>
168+ </div>
169+ </div>
170+</section>
171 {% endblock %}
172
173=== added directory 'src/webui/templates/vanilla'
174=== added file 'src/webui/templates/vanilla/_footer.html'
175--- src/webui/templates/vanilla/_footer.html 1970-01-01 00:00:00 +0000
176+++ src/webui/templates/vanilla/_footer.html 2019-07-22 09:38:23 +0000
177@@ -0,0 +1,28 @@
178+{% load i18n static_url %}
179+
180+{% comment %}
181+Copyright 2010-2019 Canonical Ltd. This software is licensed under the
182+GNU Affero General Public License version 3 (see the file LICENSE).
183+{% endcomment %}
184+
185+<footer class="p-strip" data-qa-id="ubuntuone_footer">
186+ <hr>
187+ <div class="row">
188+ <p>{% trans "Ubuntu One. One place to log in to everything on Ubuntu." %}</p>
189+ {% spaceless %}
190+ <ul class="p-inline-list--middot">
191+ <li class="p-inline-list__item"><a href="{{ 'terms_of_service'|static_url }}">{% trans "Terms" %}</a></li>
192+ <li class="p-inline-list__item"><a href="{{ 'privacy_policy'|static_url }}">{% trans "Canonical privacy notice" %}</a></li>
193+ <li class="p-inline-list__item"><a href="{{ 'privacy_notice'|static_url }}">{% trans "SSO privacy notice" %}</a></li>
194+ <li class="p-inline-list__item"><a href="{{ 'support_form'|static_url }}">{% trans "Support" %}</a></li>
195+ <li class="p-inline-list__item"><a href="{{ 'dp_bugs'|static_url }}">{% trans "Report a bug on this site" %}</a></li>
196+ {% block language_footer %}
197+ {% if not embedded %}
198+ <li class="p-inline-list__item"><a href="{% url 'set_language' %}">{% trans "Switch language" %}</a></li>
199+ {% endif %}
200+ {% endblock %}
201+ </ul>
202+ {% endspaceless %}
203+ <p>{% blocktrans with current_date|date:"Y" as current_year %}&copy; Copyright {{ current_year }} Canonical Ltd. &lsquo;Ubuntu One&rsquo; and &lsquo;Canonical&rsquo; are registered trademarks of Canonical Ltd.{% endblocktrans %}</p>
204+ </div>
205+</footer>
206
207=== added file 'src/webui/templates/vanilla/_header.html'
208--- src/webui/templates/vanilla/_header.html 1970-01-01 00:00:00 +0000
209+++ src/webui/templates/vanilla/_header.html 2019-07-22 09:38:23 +0000
210@@ -0,0 +1,32 @@
211+{% load i18n %}
212+
213+{% comment %}
214+Copyright 2010 Canonical Ltd. This software is licensed under the
215+GNU Affero General Public License version 3 (see the file LICENSE).
216+{% endcomment %}
217+
218+<header id="navigation" class="p-navigation">
219+ <div class="row">
220+ <div class="p-navigation__banner">
221+ <div class="p-navigation__logo">
222+ {% if not embedded %}
223+ <a href="/" id="u1-logo" class="p-navigation__link">
224+ <img src="https://assets.ubuntu.com/v1/d738f754-Ubuntu_One_Mono_Logo.svg" alt="{% blocktrans %}Ubuntu One{% endblocktrans %}" width="90">
225+ </a>
226+ {% endif %}
227+ </div>
228+ <a href="#navigation" class="p-navigation__toggle--open" title="menu">Menu</a>
229+ <a href="#navigation-closed" class="p-navigation__toggle--close" title="close menu">Close menu</a>
230+ </div>
231+ <nav class="p-navigation__nav">
232+ <span class="u-off-screen">
233+ <a href="#main-content">Jump to main content</a>
234+ </span>
235+ {% block me-menu %}
236+ {% include "vanilla/widgets/header-me-menu.html" %}
237+ {% endblock %}
238+
239+ {% block navigation %}{% endblock %}
240+ </nav>
241+ </div>
242+</header>
243
244=== added file 'src/webui/templates/vanilla/base.html'
245--- src/webui/templates/vanilla/base.html 1970-01-01 00:00:00 +0000
246+++ src/webui/templates/vanilla/base.html 2019-07-22 09:38:23 +0000
247@@ -0,0 +1,179 @@
248+{% load i18n static_url combo staticfiles %}
249+<!DOCTYPE html>
250+
251+<!--[if IE 7 ]><html class="ie7" lang="en" dir="ltr"><![endif]-->
252+<!--[if IE 8 ]><html class="ie8" lang="en" dir="ltr"><![endif]-->
253+<!--[if (gte IE 9)|!(IE)]><!--><html lang="en" dir="ltr" class="no-js" {% block html_extra %}{% endblock %}><!--<![endif]-->
254+{% comment %}Copyright 2013 Canonical Ltd. This software is licensed under the GNU Affero General Public License version 3 (see the file LICENSE).{% endcomment %}
255+ <head>
256+ <meta charset="utf-8">
257+ <meta name="viewport" content="width=device-width">
258+ {% block extra_meta %}{% endblock %}
259+
260+ {% block extra_header %}{% endblock %}
261+
262+ <title>{% block title %}{% trans "Log in" %}{% endblock %}</title>
263+ <link rel="icon" type="image/vnd.microsoft.icon"
264+ href="{% static 'identityprovider/img/favicon.ico' %}">
265+
266+ {% block corecss %}
267+ <link href="{% static 'vanilla-css/styles.css' %}" rel="stylesheet">
268+ {% endblock %}
269+ {% block extra_css %}{% endblock %}
270+
271+ <!--[if lt IE 9]>
272+ <script type="text/javascript" src="{% static 'identityprovider/js/ie/html5shiv.js' %}"></script>
273+ <![endif]-->
274+ <script>
275+ document.documentElement.className=document.documentElement.className.replace(/\bno-js\b/,'') + ' js';
276+ </script>
277+ </head>
278+ <body data-qa-id="{% block qaid %}{% endblock %}" {% if embedded %}onload="blank_targets()"{% endif %}
279+ class="{% block bodyclass %}{% if user.is_authenticated %}with-menu{% endif %}{% endblock %}{% if readonly %} readonly{% endif %}">
280+ {% get_current_language as LANGUAGE_CODE %}
281+ <!-- Current language: {{ LANGUAGE_CODE }} -->
282+
283+ {% if google_tag_manager_id %}
284+ <!-- Google Tag Manager (noscript) -->
285+ <noscript><iframe src="https://www.googletagmanager.com/ns.html?id={{ google_tag_manager_id }}"
286+ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
287+ <!-- End Google Tag Manager (noscript) -->
288+ {% endif %}
289+
290+ <div id="cont" role="main">
291+ {% include "vanilla/_header.html" %}
292+
293+ {% block menu %}
294+ {% if user.is_authenticated %}
295+ {% include "widgets/personal-menu.html" %}
296+ {% endif %}
297+ {% endblock %}
298+
299+ <div id="content">
300+
301+ {% block readonly %}
302+ {% if readonly %}
303+ <div class="p-notification--caution">
304+ <p class="p-notification__response">
305+ {% blocktrans %}We are currently in read-only mode. That means that at the moment you can't create new accounts, update your personal information, or request password reminders.{% endblocktrans %}
306+ </p>
307+ </div>
308+ {% endif %}
309+ {% endblock %}
310+
311+ {% block messages %}
312+ {% if messages %}
313+ {% for message in messages %}
314+ <div class="p-notification">
315+ <p class="p-notification__response">
316+ {{ message }}
317+ </p>
318+ </div>
319+ {% endfor %}
320+ {% endif %}
321+ {% endblock %}
322+
323+ <section class="p-strip--dark p-cip-hero">
324+ <div class="row">
325+ <div class="col-7">
326+ {% block text_title %}{% endblock %}
327+ </div>
328+ </div>
329+ </section>
330+
331+ <div id="{% block content_id %}box{% endblock %}">
332+ {% block content %}{% endblock %}
333+ </div>
334+
335+ </div><!-- close #content -->
336+
337+ {% include "vanilla/_footer.html" %}
338+
339+ </div><!-- close #cont -->
340+
341+ {% block general_js %}
342+ <script type="text/javascript">
343+ YUI_config = {
344+ maxURLLength: 2000,
345+ combine: {{ combine|lower }},
346+ comboBase: '{{ combo_url }}?',
347+ base: '{% static "yui/3.15.0/" %}',
348+ root: 'yui/3.15.0/'
349+ }
350+ </script>
351+ {# use combo to load yui, to provide far future caching, as whitenoise doesn't for non-hashed urls #}
352+ {# notexist disables optimisation in template tag that avoids combo if only one file #}
353+ {% combo 'yui/3.15.0/yui/yui-min.js' 'notexist' %}
354+
355+ <script type="text/javascript">
356+ YUI().use('node', 'transition', function (Y) {
357+ Y.all('.message.temporary').transition({
358+ easing: 'ease-out',
359+ duration: 0.1,
360+ delay: 5,
361+ height: 0,
362+ opacity: 0,
363+ marginTop: 0,
364+ marginBottom: 0,
365+ paddingTop: 0,
366+ paddingBottom: 0,
367+ on: {
368+ start: function () {
369+ this.setStyle('overflow', 'hidden');
370+ }
371+ }
372+ });
373+ });
374+ </script>
375+
376+ {% endblock %}
377+
378+ {% block test_js %}{% endblock %}
379+ {% block extra_js %}{% endblock %}
380+
381+ {% block disable_submit_buttons_js %}
382+ <script type="text/javascript">
383+ (function(){
384+ // disable all submit buttons after initial form submission
385+ // to prevent double-clicks
386+ var formEls = document.querySelectorAll('form');
387+
388+ if (formEls && formEls.length) {
389+ for (var i = formEls.length; i--;) {
390+ formEls[i].addEventListener('submit', disableAfterSubmit);
391+ }
392+ }
393+
394+ function disableAfterSubmit(e) {
395+ var formEl = e.currentTarget;
396+ var submitEl = formEl.querySelector('input[type=submit],button[type=submit]');
397+
398+ if (!submitEl.classList.contains('disabled')) {
399+ disableSubmitEl(submitEl);
400+ } else {
401+ e.preventDefault();
402+ }
403+ }
404+
405+ function disableSubmitEl(el) {
406+ el.classList.add('disabled');
407+ }
408+
409+ })();
410+ </script>
411+ {% endblock %}
412+
413+ {% block analytics %}
414+ {% if google_tag_manager_id %}
415+ <!-- Google Tag Manager -->
416+ <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
417+ new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
418+ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
419+ 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
420+ })(window,document,'script','dataLayer','{{ google_tag_manager_id }}');</script>
421+ <!-- End Google Tag Manager -->
422+ {% endif %}
423+ {% endblock %}
424+
425+ </body>
426+</html>
427
428=== added directory 'src/webui/templates/vanilla/widgets'
429=== added file 'src/webui/templates/vanilla/widgets/header-me-menu.html'
430--- src/webui/templates/vanilla/widgets/header-me-menu.html 1970-01-01 00:00:00 +0000
431+++ src/webui/templates/vanilla/widgets/header-me-menu.html 2019-07-22 09:38:23 +0000
432@@ -0,0 +1,18 @@
433+{% load i18n %}
434+{% load menu_item %}
435+{% load url_with_token %}
436+
437+<ul class="p-navigation__links" role="menu" id="ac-status">
438+ {% if user.is_authenticated %}
439+ <li id="account" data-qa-id="account" class="p-navigation__link" role="menuitem">
440+ <span data-qa-id="user_name" class="user-name">{{user.displayname}}</span>
441+ <a href="{% url_with_token 'account-index' %}" id="account-link" data-qa-id="account_link">{% trans "My account" %}</a> <span class="sep">|</span>
442+ <a href="{% url_with_token 'logout' %}" id="logout-link" data-qa-id="logout_link">{% trans "Log out" %}</a>
443+ </li>
444+{% else %}
445+ <li class="p-navigation__link" role="menuitem">
446+ {% url_with_token 'login' as login_url %}
447+ {% menu_item "login" _("Log in or Create account") login_url %}
448+ </li>
449+{% endif %}
450+</ul>
451
452=== modified file 'src/webui/templates/widgets/other_sites.html'
453--- src/webui/templates/widgets/other_sites.html 2014-12-10 15:30:54 +0000
454+++ src/webui/templates/widgets/other_sites.html 2019-07-22 09:38:23 +0000
455@@ -1,22 +1,30 @@
456 {% comment %}
457-Copyright 2010 Canonical Ltd. This software is licensed under the
458+Copyright 2010-2019 Canonical Ltd. This software is licensed under the
459 GNU Affero General Public License version 3 (see the file LICENSE).
460 {% endcomment %}
461
462 {% load i18n %}
463
464-<section class="other-sites listing-section">
465- <h3>{% trans "Sites you may still be logged into" %} <span class="subtitle">Date</span></h3>
466+<div class="row">
467+ <div class="col-6">
468+ <h3>{% trans "Sites you may still be logged into" %}</h3>
469
470- <table class="listing">
471- <tbody>
472+ <table>
473+ <thead>
474+ <tr>
475+ <th>{% trans "Website" %}</th>
476+ <th>{% trans "Last used" %}</th>
477+ </tr>
478+ </thead>
479+ <tbody>
480 {% for site in other_sites %}
481- <tr>
482- <td class="site-url">{% if embedded %}{{ site.trust_root }}{% else %}
483- <a href="{{ site.trust_root }}">{{ site.trust_root }}</a>{% endif %}</td>
484- <td class="site-date">{{ site.date_last_used|date:"Y/m/d" }}</td>
485- </tr>
486+ <tr>
487+ <td>{% if embedded %}{{ site.trust_root }}{% else %}
488+ <a href="{{ site.trust_root }}">{{ site.trust_root }}</a>{% endif %}</td>
489+ <td>{{ site.date_last_used|date:"Y/m/d" }}</td>
490+ </tr>
491 {% endfor %}
492- </tbody>
493+ </tbody>
494 </table>
495-</section>
496+ </div>
497+</div>

Subscribers

People subscribed via source and target branches

to all changes: