{{ source.journalist_designation }}
{% if source.collection %} -{{ gettext('All messages, files, and replies from sources are stored as encrypted files for security. To read them, you will need to decrypt them on your Secure Viewing Station.') }}
--
- - - - - ++ {{ gettext('All messages, files, and replies from sources are stored as encrypted files for security. To read them, you will need to decrypt them on your Secure Viewing Station.') }} +
+-
- {% for doc in source.collection %}
-
-
- {% if doc.filename.endswith('reply.gpg') %}
- {% if not doc.deleted_by_source %}
-
-
- {% else %}
-
-
- {% endif %}
- {% elif not doc.seen %}
-
-
- {% else %}
-
-
- {% endif %}
-
- {{ doc.filename }}
-
- {{ doc.size|filesizeformat() }}
+
+ +
- - {% with %} - {% set modal_data = { + + {% with %} + {% set modal_data = { "modal_id": "delete-selected-confirmation-modal", "modal_header": gettext('Delete Confirmation'), "modal_body": gettext('Are you sure you want to delete the selected submissions?'), @@ -69,58 +103,60 @@ "submit_btn_text": gettext('DELETE') } %} - {% include '_confirmation_modal.html' %} - {% endwith %} + {% include '_confirmation_modal.html' %} + {% endwith %} - - + + -+ + + {% for doc in source.collection %} +{{ gettext('Status') }} +{{ gettext('Filename') }} +{{ gettext('Size') }} +{{ gettext('Type') }} ++ {% with %} + {% if doc.filename.endswith('reply.gpg') %} + {% if not doc.deleted_by_source %} + {% set status = gettext('Unread') %} + {% set icon = 'reply' %} + {% else %} + {% set status = gettext('Read') %} + {% set icon = 'check' %} + {% endif %} + {% elif not doc.seen %} + {% set status = gettext('Unread') %} + {% set icon = 'envelope-closed' %} + {% set extra_classes = 'unread-cb' %} + {% else %} + {% set status = gettext('Read') %} + {% set icon = 'envelope-open' %} + {% endif %} + + {% endfor %} ++ + + + {% endwith %} ++ {{ doc.filename }} + ++ {{ doc.size|filesizeformat() }} + - {% if doc.filename.endswith('-doc.gz.gpg') %} - - {% elif doc.filename.endswith('-reply.gpg') %} - - {% else %} - - {% endif %} - - {% endfor %} - + {% with %} + {% if doc.filename.endswith('-doc.gz.gpg') %} + {% set type = gettext('Uploaded Document') %} + {% set icon = 'files' %} + {% elif doc.filename.endswith('-reply.gpg') %} + {% set type = gettext('Reply') %} + {% set icon = 'reply' %} + {% else %} + {% set type = gettext('Message') %} + {% set icon = 'messages' %} + {% endif %} ++ {{ type }} + + {% endwith %} +
{{ gettext('No submissions to display.') }}
{{ gettext('No submissions to display.') }}
{% endif %} --
-
{{ gettext('Reply') }}
- {% if source.has_key %} +{{ gettext('Reply') }}
+ {% if source.has_key %}{{ gettext('You can write a secure reply to the person who submitted these messages and/or files:') }}
- + {{ form.message(id="reply-text-field", rows='10', class="journalist-reply__input", placeholder=gettext('Write a reply.'), **{'aria-label': gettext('Write a reply.')}) }} +
{{ gettext("This source has no encryption key.") }}
-{{ gettext("An encryption key will be generated for the source the next time they log in, after which you will be able to reply to the source here.") }}
- {% endif %} -+
+ {{ gettext("An encryption key will be generated for the source the next time they log in, after which you will be able to reply to the source here.") }} +
+ {% endif %} +Deleting the account for {source} will: +
- prevent them from logging in with their codename again
- prevent your organization from sending replies
All files, messages, and replies will also be deleted when their account is deleted.
'.format(source=source.journalist_designation)), @@ -130,7 +166,7 @@{{ gettext('Reply') }}
"submit_btn_text": gettext('Yes, Delete Source Account') } %} - {% include '_confirmation_modal.html' %} + {% include '_confirmation_modal.html' %} {% endwith %}- - {{ gettext('Back to admin interface') }} -
+{{ gettext('Instance Configuration') }}
-{{ gettext('Organization Name') }}
- -
-
- {{ organization_name_form.organization_name() }}
-
- -
{{ gettext('Logo Image') }}
- -{{ gettext('Here you can update the image displayed on the SecureDrop web interfaces:') }}
- -- -
- -
- {{ logo_form.logo(id="logo-upload") }}
-
-
- {{ gettext('Recommended size: 500px * 450px') }} -
- - {% set prefs_filter = ["logo-success","logo-error"] %} - {% include 'preferences_saved_flash.html' %} -+
{{ gettext('Organization Name') }}
+ +{{ gettext('Logo Image') }}
+ +{{ gettext('Here you can update the image displayed on the SecureDrop web interfaces:') }}
+ + + ++ {{ gettext('Recommended size: 500px * 450px') }} +
+{{ gettext('Submission Preferences') }}
+{{ gettext('Submission Preferences') }}
-+
- -
{{ gettext('Alerts') }}
- -{{ gettext('Send an encrypted email to verify if OSSEC alerts work correctly:') }}
- -- + +
{{ gettext('Alerts') }}
+ +{{ gettext('Send an encrypted email to verify if OSSEC alerts work correctly:') }}
+ +{{ ngettext('The following file has been selected for permanent deletion:', 'The following {num} files have been selected for permanent deletion:', count).format(num=count)|safe }}
++ {{ ngettext('The following file has been selected for permanent deletion:', 'The following {num} files have been selected for permanent deletion:', count).format(num=count)|safe }} +
{% endwith %}-
- {% for item in items_selected %}
+ {% for item in items_selected %}
- {{ item.filename }} - {% endfor %} + {% endfor %}
{{ gettext('Edit user "{user}"').format(user=user.username) }}
-- - {{ gettext('Back to admin interface') }} -
-{{ gettext('Change Name and Admin Status') }}
+{# Only admins may edit usernames and admin status #} +{{ gettext('Edit user "{user}"').format(user=user.username) }}
+ +{{ gettext('Change Name and Admin Status') }}
+
+
+
{{ gettext('Edit your account') }}
-{{ gettext('Change Name') }}
+{{ gettext('Edit your account') }}
+{{ gettext('Change Name') }}
{% set change_name_url = url_for('account.change_name') %} -+
{{ gettext('Reset Password') }}
+{{ gettext('Reset Password') }}
-{{ gettext('SecureDrop uses automatically generated diceware passwords.') }}
-{{ gettext('Your password will be changed immediately, so you will need to save it before pressing the "Reset Password" button.') }}
+{{ gettext('SecureDrop uses automatically generated diceware passwords.') }}
++ {{ gettext('Your password will be changed immediately, so you will need to save it before pressing the "Reset Password" button.') }} +
-{% if user and g.user != user %} + {% if user and g.user != user %} {% set password_reset_url = url_for('admin.new_password', user_id=user.id) %} -{% else %} + {% else %} {% set password_reset_url = url_for('account.new_password') %} -{{ gettext('Please enter your current password and two-factor code.') }}
-{% endif %} + {% set legend = gettext('Please enter your current password and two-factor code.') %} + {% endif %} -{{ gettext('Reset Two-Factor Authentication') }}
+ {% if user %} ++ {{ gettext("If a user's two-factor authentication credentials have been lost or compromised, you can reset them here. If you do this, make sure the user is present and ready to set up their device with the new two-factor credentials. Otherwise, they will be locked out of their account.") }} +
+ {% else %} ++ {{ gettext('If your two-factor authentication credentials have been lost or compromised, or you got a new device, you can reset your credentials here. If you do this, make sure you are ready to set up your new device, otherwise you will be locked out of your account.') }} +
{% endif %} - -
- {% if user %}
- {{ gettext("The user's password will be changed to:") }}
- {% else %}
- {{ gettext('Your password will be changed to:') }}
- {% endif %}
-
- {{ password }}
+ {{ gettext('To reset two-factor authentication for mobile apps such as FreeOTP, choose the first option. For security keys like the YubiKey, choose the second one.') }}
-
{{ gettext('Reset Two-Factor Authentication') }}
- -{% if user %} -{{ gettext("If a user's two-factor authentication credentials have been lost or compromised, you can reset them here. If you do this, make sure the user is present and ready to set up their device with the new two-factor credentials. Otherwise, they will be locked out of their account.") }}
-{% else %} -{{ gettext('If your two-factor authentication credentials have been lost or compromised, or you got a new device, you can reset your credentials here. If you do this, make sure you are ready to set up your new device, otherwise you will be locked out of your account.') }}
-{% endif %} -{{ gettext('To reset two-factor authentication for mobile apps such as FreeOTP, choose the first option. For security keys like the YubiKey, choose the second one.') }}
- -{% if user %} + {% if user %} {% set totp_reset_url = url_for('admin.reset_two_factor_totp') %} {% set hotp_reset_url = url_for('admin.reset_two_factor_hotp') %} -{% else %} + {% else %} {% set totp_reset_url = url_for('account.reset_two_factor_totp') %} {% set hotp_reset_url = url_for('account.reset_two_factor_hotp') %} -{% endif %} + {% endif %} -{% macro twofa_reset(user, reset_url, type, tooltip_text, button_text) %} -{% if user %} + {% macro twofa_reset(user, reset_url, type, tooltip_text, button_text, button_aria_label) %} + {% if user %} {% set username = user.username %} -{% else %} + {% else %} {% set username = g.user.username %} -{% endif %} -{{ error.code }}: {{ error.name }}
{% if error.description %} -{{ error.description }}
+{{ error.description }}
{% endif %} {% endblock %} diff --git a/securedrop/journalist_templates/flashed.html b/securedrop/journalist_templates/flashed.html index 845aabfb46..7df91ed2da 100644 --- a/securedrop/journalist_templates/flashed.html +++ b/securedrop/journalist_templates/flashed.html @@ -1,18 +1,12 @@ {% with messages = get_flashed_messages(with_categories=true) %} {% if messages %} - {% for category, message in messages %} - {% if category not in ["banner-warning","logo-success","logo-error","submission-preferences-success","submission-preferences-error","org-name-success","org-name-error", "testalert-success", "testalert-error", "testalert-notification"] %} -{{ gettext('All Sources') }}
+{{ gettext('All Sources') }}
{% if unstarred or starred %} - --
- - - - - {% endblock %} diff --git a/securedrop/journalist_templates/js-strings.html b/securedrop/journalist_templates/js-strings.html index 8c1f1edb3b..0aa7cda360 100644 --- a/securedrop/journalist_templates/js-strings.html +++ b/securedrop/journalist_templates/js-strings.html @@ -4,6 +4,7 @@