From 413e8874c9dbe665a2de28bdcc4211ea7185a05c Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Thu, 26 Jan 2017 17:41:18 -0800 Subject: [PATCH 1/4] UX improvements to source interface --- securedrop/sass/_button-rules.sass | 9 +++++++- securedrop/sass/_variables.sass | 3 +++ securedrop/sass/source.sass | 7 ++++++ securedrop/source_templates/base.html | 3 +-- securedrop/source_templates/login.html | 7 ++++-- securedrop/source_templates/lookup.html | 30 +++++++++++++++---------- 6 files changed, 42 insertions(+), 17 deletions(-) diff --git a/securedrop/sass/_button-rules.sass b/securedrop/sass/_button-rules.sass index e18f838780..2386a1804f 100644 --- a/securedrop/sass/_button-rules.sass +++ b/securedrop/sass/_button-rules.sass @@ -55,8 +55,15 @@ &.primary display: block - width: 50% margin: 0 auto + width: 35% + display: inline-block + + &.secondary + @extend .primary + background: white + color: $color_blue_medium + border: 1px solid $color_blue_medium button.block, a.btn.block text-decoration: none diff --git a/securedrop/sass/_variables.sass b/securedrop/sass/_variables.sass index af0e297237..9e317141c6 100644 --- a/securedrop/sass/_variables.sass +++ b/securedrop/sass/_variables.sass @@ -3,6 +3,9 @@ $color_warning_red_pale: #d55c5c $color_purple_medium: #7985aa +$color_grey_dark: #626161 $color_grey_medium: #9e9e9e $color_grey_light: #f0f0f0 $color_grey_xlight: #f3f3f3 + +$color_blue_medium: #004080 diff --git a/securedrop/sass/source.sass b/securedrop/sass/source.sass index f26825b6b3..9d37a09609 100644 --- a/securedrop/sass/source.sass +++ b/securedrop/sass/source.sass @@ -194,6 +194,13 @@ p#codename p#no-replies text-align: center +p.explanation + text-align: left + color: $color_grey_dark + +path.icon + fill: $color_grey_dark + #replies blockquote margin: 1em 1em diff --git a/securedrop/source_templates/base.html b/securedrop/source_templates/base.html index f2fa242753..6e69bbecde 100644 --- a/securedrop/source_templates/base.html +++ b/securedrop/source_templates/base.html @@ -26,7 +26,7 @@
{% if 'logged_in' in session %} - Log Out + Exit {% endif %}
@@ -42,4 +42,3 @@
- diff --git a/securedrop/source_templates/login.html b/securedrop/source_templates/login.html index f531a881f0..00c98e49c4 100644 --- a/securedrop/source_templates/login.html +++ b/securedrop/source_templates/login.html @@ -1,13 +1,16 @@ {% extends "base.html" %} {% block body %} -

Login to check for responses

+

Enter Codename

{% include 'flashed.html' %}

-

+

+ Cancel + +

{% endblock %} diff --git a/securedrop/source_templates/lookup.html b/securedrop/source_templates/lookup.html index 12118fe09e..13446cf7a5 100644 --- a/securedrop/source_templates/lookup.html +++ b/securedrop/source_templates/lookup.html @@ -8,8 +8,8 @@

A journalist has been waiting for you to log in again so SecureDrop can generate a crypto key for you. Now that you have logged in, they are able to write you a reply. Check back later for replies.

{% endif %} -

Submit documents and messages

-

You can send a file, a message, or both.

+

Submit Materials

+

If you are already familiar with GPG, you can optionally encrypt your files and messages with our public key before submission. Files are encrypted as they are received by SecureDrop. Learn more.


@@ -18,7 +18,13 @@

Submit documents and messages

- + + + + + + +

Maximum upload size: 500 MB

@@ -28,17 +34,17 @@

Submit documents and messages


- - - - -

Tip: If you are already familiar with GPG, you can optionally encrypt your files and messages with our public key before submission. Files are encrypted as they are received by SecureDrop; encrypting before submission provides an extra layer of security before your data reaches SecureDrop. Learn more.

+
+ Cancel + + +

-

Replies

+

Get Replies

{% if replies %} @@ -59,7 +65,7 @@

Replies

-
{{ reply.decrypted | nl2br }}
+
From: {{ reply.journalist.username|title }}
{{ reply.decrypted | nl2br }}
{% endfor %} From df41658511b35e6d4bd013679aa4c8eaee10b40e Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Wed, 1 Feb 2017 12:15:56 -0800 Subject: [PATCH 2/4] Modify unit tests for UX modifications to source interface --- securedrop/tests/test_unit_source.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/securedrop/tests/test_unit_source.py b/securedrop/tests/test_unit_source.py index d002c5cf69..2519b8d1fb 100644 --- a/securedrop/tests/test_unit_source.py +++ b/securedrop/tests/test_unit_source.py @@ -88,7 +88,7 @@ def test_create(self): resp = c.post('/create', follow_redirects=True) self.assertTrue(session['logged_in']) # should be redirected to /lookup - self.assertIn("Submit documents and messages", resp.data) + self.assertIn("Submit Materials", resp.data) def _new_codename(self): return utils.db_helper.new_codename(self.client, session) @@ -107,14 +107,14 @@ def test_lookup(self): def test_login_and_logout(self): resp = self.client.get('/login') self.assertEqual(resp.status_code, 200) - self.assertIn("Login to check for responses", resp.data) + self.assertIn("Enter Codename", resp.data) codename = self._new_codename() with self.client as c: resp = c.post('/login', data=dict(codename=codename), follow_redirects=True) self.assertEqual(resp.status_code, 200) - self.assertIn("Submit documents and messages", resp.data) + self.assertIn("Submit Materials", resp.data) self.assertTrue(session['logged_in']) resp = c.get('/logout', follow_redirects=True) @@ -139,13 +139,13 @@ def test_login_with_whitespace(self): def login_test(codename): resp = self.client.get('/login') self.assertEqual(resp.status_code, 200) - self.assertIn("Login to check for responses", resp.data) + self.assertIn("Enter Codename", resp.data) with self.client as c: resp = c.post('/login', data=dict(codename=codename), follow_redirects=True) self.assertEqual(resp.status_code, 200) - self.assertIn("Submit documents and messages", resp.data) + self.assertIn("Submit Materials", resp.data) self.assertTrue(session['logged_in']) resp = c.get('/logout', follow_redirects=True) From 5f3b559d66e4f9656da7dffff0b7a0ca70f2210c Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Wed, 1 Feb 2017 12:17:45 -0800 Subject: [PATCH 3/4] Add functional tests for Cancel buttons on source interface --- securedrop/source_templates/index.html | 2 +- securedrop/source_templates/login.html | 4 ++-- securedrop/source_templates/lookup.html | 2 +- .../functional/source_navigation_steps.py | 23 ++++++++++++++++++- .../functional/submit_and_retrieve_file.py | 10 ++++++++ 5 files changed, 36 insertions(+), 5 deletions(-) diff --git a/securedrop/source_templates/index.html b/securedrop/source_templates/index.html index 92b9cd2d4a..246cb9ccfe 100644 --- a/securedrop/source_templates/index.html +++ b/securedrop/source_templates/index.html @@ -42,7 +42,7 @@


If you have already submitted documents in the past, log in here to check for responses.

- Check for a response + Check for a response diff --git a/securedrop/source_templates/login.html b/securedrop/source_templates/login.html index 00c98e49c4..386a1f3cbd 100644 --- a/securedrop/source_templates/login.html +++ b/securedrop/source_templates/login.html @@ -7,9 +7,9 @@

Enter Codename

-

+

- Cancel + Cancel

diff --git a/securedrop/source_templates/lookup.html b/securedrop/source_templates/lookup.html index 13446cf7a5..d6680ff839 100644 --- a/securedrop/source_templates/lookup.html +++ b/securedrop/source_templates/lookup.html @@ -35,7 +35,7 @@

Submit Materials


- Cancel + Cancel diff --git a/securedrop/tests/functional/source_navigation_steps.py b/securedrop/tests/functional/source_navigation_steps.py index aea2a8c952..8565b00df1 100644 --- a/securedrop/tests/functional/source_navigation_steps.py +++ b/securedrop/tests/functional/source_navigation_steps.py @@ -16,12 +16,33 @@ def _source_chooses_to_submit_documents(self): self.assertTrue(len(codename.text) > 0) self.source_name = codename.text + def _source_chooses_to_login(self): + self.driver.find_element_by_id('login-button').click() + + logins = self.driver.find_elements_by_id('login-with-existing-codename') + + self.assertTrue(len(logins) > 0) + + def _source_hits_cancel_at_login_page(self): + self.driver.find_element_by_id('cancel').click() + + self.driver.get(self.source_location) + + self.assertEqual("SecureDrop | Protecting Journalists and Sources", + self.driver.title) + + def _source_hits_cancel_at_submit_page(self): + self.driver.find_element_by_id('cancel').click() + + headline = self.driver.find_element_by_class_name('headline') + self.assertEqual('Submit Materials', headline.text) + def _source_continues_to_submit_page(self): continue_button = self.driver.find_element_by_id('continue-button') continue_button.click() headline = self.driver.find_element_by_class_name('headline') - self.assertEqual('Submit documents and messages', headline.text) + self.assertEqual('Submit Materials', headline.text) def _source_submits_a_file(self): with tempfile.NamedTemporaryFile() as file: diff --git a/securedrop/tests/functional/submit_and_retrieve_file.py b/securedrop/tests/functional/submit_and_retrieve_file.py index ff88280657..73b7e31207 100644 --- a/securedrop/tests/functional/submit_and_retrieve_file.py +++ b/securedrop/tests/functional/submit_and_retrieve_file.py @@ -28,6 +28,16 @@ def test_submit_and_retrieve_happy_path(self): self._journalist_selects_all_sources_then_selects_none() self._journalist_downloads_message() + def test_source_cancels_at_login_page(self): + self._source_visits_source_homepage() + self._source_chooses_to_login() + self._source_hits_cancel_at_login_page() + + def test_source_cancels_at_submit_page(self): + self._source_visits_source_homepage() + self._source_chooses_to_submit_documents() + self._source_continues_to_submit_page() + self._source_hits_cancel_at_submit_page() if __name__ == "__main__": unittest.main(verbosity=2) From 8ef4b964628a899c62238f69bf64aa065c97e63f Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Wed, 1 Feb 2017 12:32:36 -0800 Subject: [PATCH 4/4] Remove icon from source interface Submit button --- securedrop/source_templates/lookup.html | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/securedrop/source_templates/lookup.html b/securedrop/source_templates/lookup.html index d6680ff839..3d6e0bf7c8 100644 --- a/securedrop/source_templates/lookup.html +++ b/securedrop/source_templates/lookup.html @@ -36,9 +36,7 @@

Submit Materials


Cancel - +