From 41633fcea9f6faa2e3848b0151b021db3bb14054 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 10 Jul 2022 02:40:06 +0200 Subject: [PATCH 1/7] Don't autoload PeopleHelper during initialization this is for future rails versions with zeitwerk autoloader where this isn't allowed anymore --- app/helpers/people_helper.rb | 29 +++++++--------------- lib/diaspora/mentionable.rb | 14 +++++++---- spec/helpers/people_helper_spec.rb | 2 +- spec/lib/diaspora/mentionable_spec.rb | 10 ++++---- spec/lib/diaspora/message_renderer_spec.rb | 4 +-- 5 files changed, 26 insertions(+), 33 deletions(-) diff --git a/app/helpers/people_helper.rb b/app/helpers/people_helper.rb index 40c79bb43..87c622503 100644 --- a/app/helpers/people_helper.rb +++ b/app/helpers/people_helper.rb @@ -27,10 +27,10 @@ module PeopleHelper def person_link(person, opts={}) css_class = person_link_class(person, opts[:class]) - remote_or_hovercard_link = Rails.application.routes.url_helpers.person_path(person).html_safe - ""\ - "#{html_escape_once(opts[:display_name] || person.name)}"\ - .html_safe + remote_or_hovercard_link = person_path(person) + tag.a('data-hovercard': remote_or_hovercard_link, href: remote_or_hovercard_link, class: css_class) do + opts[:display_name] || person.name + end end def person_image_tag(person, size = :thumb_small) @@ -44,15 +44,12 @@ module PeopleHelper if opts[:to] == :photos link_to person_image_tag(person, opts[:size]), person_photos_path(person) else - css_class = person_link_class(person, opts[:class]) - remote_or_hovercard_link = Rails.application.routes.url_helpers.person_path(person).html_safe - " username) - if absolute - return Rails.application.routes.url_helpers.user_profile_url(opts) - else - return Rails.application.routes.url_helpers.user_profile_path(opts) - end + return absolute ? user_profile_url(opts) : user_profile_path(opts) end end - if absolute - return Rails.application.routes.url_helpers.person_url(person, opts) - else - return Rails.application.routes.url_helpers.person_path(person, opts) - end + absolute ? person_url(person, opts) : person_path(person, opts) end private diff --git a/lib/diaspora/mentionable.rb b/lib/diaspora/mentionable.rb index 59f2da8f0..2b447dc5f 100644 --- a/lib/diaspora/mentionable.rb +++ b/lib/diaspora/mentionable.rb @@ -1,4 +1,3 @@ - # frozen_string_literal: true module Diaspora::Mentionable @@ -93,7 +92,7 @@ module Diaspora::Mentionable # inline module for namespacing module MentionsInternal - extend ::PeopleHelper + extend ERB::Util # output a formatted mention link as defined by the given arguments. # if the display name is blank, falls back to the person's name. @@ -105,10 +104,15 @@ module Diaspora::Mentionable def self.mention_link(person, display_name, diaspora_id, opts) return display_name || diaspora_id unless person.present? + display_name ||= person.name if opts[:plain_text] - display_name || person.name + display_name else - person_link(person, class: PERSON_HREF_CLASS, display_name: display_name) + # rubocop:disable Rails/OutputSafety + remote_or_hovercard_link = Rails.application.routes.url_helpers.person_path(person).html_safe + "#{html_escape_once(display_name)}".html_safe + # rubocop:enable Rails/OutputSafety end end @@ -121,7 +125,7 @@ module Diaspora::Mentionable def self.profile_link(person, display_name, diaspora_id) return display_name || diaspora_id unless person.present? - "[#{display_name || person.name}](#{local_or_remote_person_path(person)})" + "[#{display_name || person.name}](#{Rails.application.routes.url_helpers.person_path(person)})" end end end diff --git a/spec/helpers/people_helper_spec.rb b/spec/helpers/people_helper_spec.rb index 4b4140918..1a7d15f85 100644 --- a/spec/helpers/people_helper_spec.rb +++ b/spec/helpers/people_helper_spec.rb @@ -75,7 +75,7 @@ describe PeopleHelper, :type => :helper do end it 'links by id for a local user' do - expect(person_link(@user.person)).to include "href='#{person_path(@user.person)}'" + expect(person_link(@user.person)).to include "href=\"#{person_path(@user.person)}\"" end it "recognizes the 'display_name' option" do diff --git a/spec/lib/diaspora/mentionable_spec.rb b/spec/lib/diaspora/mentionable_spec.rb index 25926d898..78e590b75 100644 --- a/spec/lib/diaspora/mentionable_spec.rb +++ b/spec/lib/diaspora/mentionable_spec.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true describe Diaspora::Mentionable do - include PeopleHelper - let(:people) { [alice, bob, eve].map(&:person) } let(:names) { %w(Alice\ A Bob\ B "Eve>\ E) } @@ -41,7 +39,9 @@ STR end describe ".format" do - context "html output" do + context "html output", type: :helper do + include PeopleHelper + it "adds the links to the formatted message" do fmt_msg = Diaspora::Mentionable.format(test_text_with_names, people) @@ -75,7 +75,7 @@ STR fmt_msg = Diaspora::Mentionable.format(test_txt, people) expect(fmt_msg).not_to include(name) - expect(fmt_msg).to include(">", "<", "'") # ">", "<", "'" + expect(fmt_msg).to include("</a><script>alert('h')</script>") end end @@ -184,7 +184,7 @@ STR user_a.aspects.where(name: "generic").first.contacts.map(&:person_id) ) - expect(txt).to include("@[user C](#{local_or_remote_person_path(user_c.person)}") + expect(txt).to include("@[user C](#{Rails.application.routes.url_helpers.person_path(user_c.person)}") expect(txt).not_to include("href") expect(txt).not_to include(mention) end diff --git a/spec/lib/diaspora/message_renderer_spec.rb b/spec/lib/diaspora/message_renderer_spec.rb index 248563ed8..11bffbbcb 100644 --- a/spec/lib/diaspora/message_renderer_spec.rb +++ b/spec/lib/diaspora/message_renderer_spec.rb @@ -81,7 +81,7 @@ describe Diaspora::MessageRenderer do it 'makes plain links for people not in the post aspects' do message = message("@{Bob; #{bob.person.diaspora_handle}}", link_all_mentions: true).html expect(message).to_not include 'hovercard' - expect(message).to include '/u/bob' + expect(message).to include "/people/#{bob.person.guid}" end it "makes no hovercards if they're disabled" do @@ -91,7 +91,7 @@ describe Diaspora::MessageRenderer do disable_hovercards: true ).html expect(message).to_not include 'hovercard' - expect(message).to include '/u/bob' + expect(message).to include "/people/#{bob.person.guid}" end end end From f76a8d7debadb47bc21aec4cac8a696a0265425f Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 10 Jul 2022 17:38:09 +0200 Subject: [PATCH 2/7] Fix sending mails after photo export --- app/workers/export_photos.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/workers/export_photos.rb b/app/workers/export_photos.rb index 2fe4c007f..cf62cd144 100644 --- a/app/workers/export_photos.rb +++ b/app/workers/export_photos.rb @@ -4,7 +4,6 @@ # licensed under the Affero General Public License version 3 or later. See # the COPYRIGHT file. - module Workers class ExportPhotos < Base sidekiq_options queue: :low @@ -14,9 +13,9 @@ module Workers @user.perform_export_photos! if @user.reload.exported_photos_file.present? - ExportMailer.export_photos_complete_for(@user) + ExportMailer.export_photos_complete_for(@user).deliver_now else - ExportMailer.export_photos_failure_for(@user) + ExportMailer.export_photos_failure_for(@user).deliver_now end end end From 6cea355636b7fd8a4d1570807f77762eaccb23e0 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 10 Jul 2022 23:06:46 +0200 Subject: [PATCH 3/7] Fix escaping of names in the from header --- app/mailers/notification_mailers/base.rb | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/app/mailers/notification_mailers/base.rb b/app/mailers/notification_mailers/base.rb index 8aa3d28c6..e4f56eb4b 100644 --- a/app/mailers/notification_mailers/base.rb +++ b/app/mailers/notification_mailers/base.rb @@ -35,16 +35,13 @@ module NotificationMailers private def default_headers - headers = { - from: "\"#{AppConfig.settings.pod_name}\" <#{AppConfig.mail.sender_address}>", - host: "#{AppConfig.pod_uri.host}", + from_name = AppConfig.settings.pod_name + from_name += " (#{@sender.profile.full_name.empty? ? @sender.username : @sender.name})" if @sender.present? + + { + from: name_and_address(from_name, AppConfig.mail.sender_address), to: name_and_address(@recipient.name, @recipient.email) } - return headers if @sender.blank? - sender_in_header = @sender.profile.full_name.empty? ? @sender.username : @sender.name - headers[:from] = "\"#{AppConfig.settings.pod_name} (#{sender_in_header})\" <#{AppConfig.mail.sender_address}>" - - headers end def with_recipient_locale(&block) From a9ae84f3a6b269247c68c172548b186bb643bf60 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Mon, 11 Jul 2022 04:24:01 +0200 Subject: [PATCH 4/7] Remove markerb dependency markerb is dead and isn't compatible with rails 6 anymore. Removing it means adding separate templates for text and html, this sadly means some code duplication, but also luckily the templates aren't that complicated, so the duplication is also very minimal. --- Gemfile | 4 -- Gemfile.lock | 2 - app/mailers/export_mailer.rb | 37 ++++++++----------- app/mailers/maintenance.rb | 19 +++++----- app/mailers/notifier.rb | 29 ++++++--------- app/mailers/report_mailer.rb | 5 ++- .../confirmation_instructions.html.haml | 6 +++ .../mailer/confirmation_instructions.markerb | 7 ---- .../mailer/confirmation_instructions.text.erb | 4 ++ .../mailer/invitation_instructions.markerb | 1 - .../reset_password_instructions.html.haml | 12 ++++++ .../reset_password_instructions.markerb | 13 ------- .../reset_password_instructions.text.erb | 11 ++++++ .../mailer/unlock_instructions.html.haml | 8 ++++ .../devise/mailer/unlock_instructions.markerb | 9 ----- .../mailer/unlock_instructions.text.erb | 6 +++ app/views/layouts/notifier.html.haml | 2 +- app/views/layouts/notifier.text.haml | 5 ++- .../account_removal_warning.markerb | 2 - app/views/notifier/_notifier_css.haml | 28 -------------- app/views/notifier/also_commented.html.haml | 5 +++ app/views/notifier/also_commented.markerb | 5 --- app/views/notifier/also_commented.text.erb | 4 ++ app/views/notifier/comment_on_post.html.haml | 5 +++ app/views/notifier/comment_on_post.markerb | 5 --- app/views/notifier/comment_on_post.text.erb | 4 ++ app/views/notifier/confirm_email.html.haml | 6 +++ app/views/notifier/confirm_email.markerb | 5 --- app/views/notifier/confirm_email.text.erb | 5 +++ .../notifier/contacts_birthday.html.haml | 5 +++ app/views/notifier/contacts_birthday.markerb | 6 --- app/views/notifier/contacts_birthday.text.erb | 4 ++ app/views/notifier/csrf_token_fail.html.haml | 4 ++ app/views/notifier/csrf_token_fail.markerb | 1 - app/views/notifier/csrf_token_fail.text.erb | 3 ++ app/views/notifier/invite.markerb | 6 --- app/views/notifier/liked.html.haml | 11 ++++++ app/views/notifier/liked.markerb | 11 ------ app/views/notifier/liked.text.erb | 10 +++++ app/views/notifier/mentioned.html.haml | 10 +++++ app/views/notifier/mentioned.markerb | 9 ----- app/views/notifier/mentioned.text.erb | 8 ++++ .../notifier/mentioned_in_comment.html.haml | 10 +++++ ....markerb => mentioned_in_comment.text.erb} | 5 +-- .../notifier/plain_markdown_email.html.haml | 2 + .../notifier/plain_markdown_email.text.haml | 1 + app/views/notifier/private_message.html.haml | 4 ++ app/views/notifier/private_message.markerb | 5 --- app/views/notifier/private_message.text.erb | 4 ++ app/views/notifier/reshared.html.haml | 6 +++ app/views/notifier/reshared.markerb | 7 ---- app/views/notifier/reshared.text.erb | 6 +++ app/views/notifier/single_admin.html.haml | 8 ++++ app/views/notifier/single_admin.markerb | 7 ---- app/views/notifier/single_admin.text.erb | 6 +++ app/views/notifier/started_sharing.html.haml | 7 ++++ app/views/notifier/started_sharing.markerb | 5 --- app/views/notifier/started_sharing.text.erb | 4 ++ app/views/report/report_email.markerb | 5 --- app/views/users/export_email.markerb | 1 - app/views/users/export_failure_email.markerb | 1 - app/views/users/export_photos_email.markerb | 1 - .../users/export_photos_failure_email.markerb | 1 - config/initializers/markerb.rb | 3 -- config/locales/diaspora/en.yml | 4 +- spec/workers/reset_password_spec.rb | 4 +- 66 files changed, 238 insertions(+), 211 deletions(-) create mode 100644 app/views/devise/mailer/confirmation_instructions.html.haml delete mode 100644 app/views/devise/mailer/confirmation_instructions.markerb create mode 100644 app/views/devise/mailer/confirmation_instructions.text.erb delete mode 100644 app/views/devise/mailer/invitation_instructions.markerb create mode 100644 app/views/devise/mailer/reset_password_instructions.html.haml delete mode 100644 app/views/devise/mailer/reset_password_instructions.markerb create mode 100644 app/views/devise/mailer/reset_password_instructions.text.erb create mode 100644 app/views/devise/mailer/unlock_instructions.html.haml delete mode 100644 app/views/devise/mailer/unlock_instructions.markerb create mode 100644 app/views/devise/mailer/unlock_instructions.text.erb delete mode 100644 app/views/maintenance/account_removal_warning.markerb delete mode 100644 app/views/notifier/_notifier_css.haml create mode 100644 app/views/notifier/also_commented.html.haml delete mode 100644 app/views/notifier/also_commented.markerb create mode 100644 app/views/notifier/also_commented.text.erb create mode 100644 app/views/notifier/comment_on_post.html.haml delete mode 100644 app/views/notifier/comment_on_post.markerb create mode 100644 app/views/notifier/comment_on_post.text.erb create mode 100644 app/views/notifier/confirm_email.html.haml delete mode 100644 app/views/notifier/confirm_email.markerb create mode 100644 app/views/notifier/confirm_email.text.erb create mode 100644 app/views/notifier/contacts_birthday.html.haml delete mode 100644 app/views/notifier/contacts_birthday.markerb create mode 100644 app/views/notifier/contacts_birthday.text.erb create mode 100644 app/views/notifier/csrf_token_fail.html.haml delete mode 100644 app/views/notifier/csrf_token_fail.markerb create mode 100644 app/views/notifier/csrf_token_fail.text.erb delete mode 100644 app/views/notifier/invite.markerb create mode 100644 app/views/notifier/liked.html.haml delete mode 100644 app/views/notifier/liked.markerb create mode 100644 app/views/notifier/liked.text.erb create mode 100644 app/views/notifier/mentioned.html.haml delete mode 100644 app/views/notifier/mentioned.markerb create mode 100644 app/views/notifier/mentioned.text.erb create mode 100644 app/views/notifier/mentioned_in_comment.html.haml rename app/views/notifier/{mentioned_in_comment.markerb => mentioned_in_comment.text.erb} (56%) create mode 100644 app/views/notifier/plain_markdown_email.html.haml create mode 100644 app/views/notifier/plain_markdown_email.text.haml create mode 100644 app/views/notifier/private_message.html.haml delete mode 100644 app/views/notifier/private_message.markerb create mode 100644 app/views/notifier/private_message.text.erb create mode 100644 app/views/notifier/reshared.html.haml delete mode 100644 app/views/notifier/reshared.markerb create mode 100644 app/views/notifier/reshared.text.erb create mode 100644 app/views/notifier/single_admin.html.haml delete mode 100644 app/views/notifier/single_admin.markerb create mode 100644 app/views/notifier/single_admin.text.erb create mode 100644 app/views/notifier/started_sharing.html.haml delete mode 100644 app/views/notifier/started_sharing.markerb create mode 100644 app/views/notifier/started_sharing.text.erb delete mode 100644 app/views/report/report_email.markerb delete mode 100644 app/views/users/export_email.markerb delete mode 100644 app/views/users/export_failure_email.markerb delete mode 100644 app/views/users/export_photos_email.markerb delete mode 100644 app/views/users/export_photos_failure_email.markerb delete mode 100644 config/initializers/markerb.rb diff --git a/Gemfile b/Gemfile index e2e2f8d54..1bb1bf142 100644 --- a/Gemfile +++ b/Gemfile @@ -130,10 +130,6 @@ gem "http_accept_language", "2.1.1" gem "i18n-inflector-rails", "1.0.7" gem "rails-i18n", "5.1.3" -# Mail - -gem "markerb", "1.1.0" - # Map gem "leaflet-rails", "1.7.0" diff --git a/Gemfile.lock b/Gemfile.lock index 2523f2112..01a31fd76 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -377,7 +377,6 @@ GEM mini_mime (>= 0.1.1) marcel (1.0.2) markdown-it-html5-embed (1.0.0) - markerb (1.1.0) memoizable (0.4.2) thread_safe (~> 0.3, >= 0.3.1) method_source (1.0.0) @@ -825,7 +824,6 @@ DEPENDENCIES listen (= 3.7.1) logging-rails (= 0.6.0) markdown-it-html5-embed (= 1.0.0) - markerb (= 1.1.0) mini_magick (= 4.11.0) minitest (= 5.15.0) mobile-fu (= 1.4.0) diff --git a/app/mailers/export_mailer.rb b/app/mailers/export_mailer.rb index da4af5f30..e7219353d 100644 --- a/app/mailers/export_mailer.rb +++ b/app/mailers/export_mailer.rb @@ -2,38 +2,31 @@ class ExportMailer < ApplicationMailer def export_complete_for(user) - @user = user - - mail(to: @user.email, subject: I18n.t('notifier.export_email.subject', name: @user.name)) do |format| - format.html { render 'users/export_email' } - format.text { render 'users/export_email' } - end + send_mail(user, I18n.t("notifier.export_email.subject", name: user.name), + I18n.t("notifier.export_email.body", url: download_profile_user_url, name: user.first_name)) end def export_failure_for(user) - @user = user - - mail(to: @user.email, subject: I18n.t('notifier.export_failure_email.subject', name: @user.name)) do |format| - format.html { render 'users/export_failure_email' } - format.text { render 'users/export_failure_email' } - end + send_mail(user, I18n.t("notifier.export_failure_email.subject", name: user.name), + I18n.t("notifier.export_failure_email.body", name: user.first_name)) end def export_photos_complete_for(user) - @user = user - - mail(to: @user.email, subject: I18n.t('notifier.export_photos_email.subject', name: @user.name)) do |format| - format.html { render 'users/export_photos_email' } - format.text { render 'users/export_photos_email' } - end + send_mail(user, I18n.t("notifier.export_photos_email.subject", name: user.name), + I18n.t("notifier.export_photos_email.body", url: download_photos_user_url, name: user.first_name)) end def export_photos_failure_for(user) - @user = user + send_mail(user, I18n.t("notifier.export_photos_failure_email.subject", name: user.name), + I18n.t("notifier.export_photos_failure_email.body", name: user.first_name)) + end - mail(to: @user.email, subject: I18n.t('notifier.export_photos_failure_email.subject', name: @user.name)) do |format| - format.html { render 'users/export_photos_failure_email' } - format.text { render 'users/export_photos_failure_email' } + private + + def send_mail(user, subject, body) + mail(to: user.email, subject: subject) do |format| + format.html { render "notifier/plain_markdown_email", locals: {body: body} } + format.text { render "notifier/plain_markdown_email", locals: {body: body} } end end end diff --git a/app/mailers/maintenance.rb b/app/mailers/maintenance.rb index 1ff5d4ac3..5c23ce53d 100644 --- a/app/mailers/maintenance.rb +++ b/app/mailers/maintenance.rb @@ -2,16 +2,15 @@ class Maintenance < ApplicationMailer def account_removal_warning(user) - @user = user - @login_url = new_user_session_url - @pod_url = AppConfig.environment.url - @after_days = AppConfig.settings.maintenance.remove_old_users.after_days.to_s - @remove_after = @user.remove_after - - I18n.with_locale(@user.language) do - mail(to: @user.email, subject: I18n.t("notifier.remove_old_user.subject")) do |format| - format.text - format.html + I18n.with_locale(user.language) do + body = I18n.t("notifier.remove_old_user.body", + pod_url: AppConfig.environment.url, + login_url: new_user_session_url, + after_days: AppConfig.settings.maintenance.remove_old_users.after_days.to_s, + remove_after: user.remove_after) + mail(to: user.email, subject: I18n.t("notifier.remove_old_user.subject")) do |format| + format.text { render "notifier/plain_markdown_email", locals: {body: body} } + format.html { render "notifier/plain_markdown_email", locals: {body: body} } end end end diff --git a/app/mailers/notifier.rb b/app/mailers/notifier.rb index 47c3b71bf..977883985 100644 --- a/app/mailers/notifier.rb +++ b/app/mailers/notifier.rb @@ -24,33 +24,28 @@ class Notifier < ApplicationMailer } end - unless subject - subject = I18n.t('notifier.single_admin.subject') - end + subject ||= I18n.t("notifier.single_admin.subject") - default_opts = {:to => @receiver.email, - :from => AppConfig.mail.sender_address, - :subject => subject, :host => AppConfig.pod_uri.host} + default_opts = {to: @receiver.email, from: AppConfig.mail.sender_address, subject: subject} default_opts.merge!(opts) - mail(default_opts) do |format| - format.text - format.html - end + mail(default_opts) end def invite(email, inviter, invitation_code, locale) - @inviter = inviter - @invitation_code = invitation_code - I18n.with_locale(locale) do mail_opts = {to: email, from: "\"#{AppConfig.settings.pod_name}\" <#{AppConfig.mail.sender_address}>", - subject: I18n.t("notifier.invited_you", name: @inviter.name), - host: AppConfig.pod_uri.host} + subject: I18n.t("notifier.invited_you", name: inviter.name)} + name = inviter.full_name.empty? ? inviter.diaspora_handle : "#{inviter.name} (#{inviter.diaspora_handle})" + body = I18n.t("notifier.invite.message", + invite_url: invite_code_url(invitation_code), + diasporafoundation_url: "https://diasporafoundation.org/", + user: name, + diaspora_id: inviter.diaspora_handle) mail(mail_opts) do |format| - format.text { render :layout => nil } - format.html { render :layout => nil } + format.text { render "notifier/plain_markdown_email", layout: nil, locals: {body: body} } + format.html { render "notifier/plain_markdown_email", layout: nil, locals: {body: body} } end end end diff --git a/app/mailers/report_mailer.rb b/app/mailers/report_mailer.rb index 507e02600..ad69332fd 100644 --- a/app/mailers/report_mailer.rb +++ b/app/mailers/report_mailer.rb @@ -26,9 +26,10 @@ class ReportMailer < ApplicationMailer private def format(resource) + body = I18n.t("notifier.report_email.body", resource) mail(to: resource[:email], subject: I18n.t("notifier.report_email.subject", type: resource[:type])) do |format| - format.html { render "report/report_email", locals: {resource: resource} } - format.text { render "report/report_email", locals: {resource: resource} } + format.html { render "notifier/plain_markdown_email", locals: {body: body} } + format.text { render "notifier/plain_markdown_email", locals: {body: body} } end end end diff --git a/app/views/devise/mailer/confirmation_instructions.html.haml b/app/views/devise/mailer/confirmation_instructions.html.haml new file mode 100644 index 000000000..f1824c54f --- /dev/null +++ b/app/views/devise/mailer/confirmation_instructions.html.haml @@ -0,0 +1,6 @@ +%p + = t("devise.mailer.welcome", username: @resource.username) +%p + = t(".you_can_confirm") +%p + = link_to t(".confirm"), confirmation_url(@resource, confirmation_token: @token) diff --git a/app/views/devise/mailer/confirmation_instructions.markerb b/app/views/devise/mailer/confirmation_instructions.markerb deleted file mode 100644 index 6e0211f1f..000000000 --- a/app/views/devise/mailer/confirmation_instructions.markerb +++ /dev/null @@ -1,7 +0,0 @@ -<%= t('devise.mailer.welcome', username: @resource.username) %> - -<%= t('.you_can_confirm') %> - -[<%= t('.confirm') %>][1] - -[1]: <%= confirmation_url(@resource, confirmation_token: @token) %> diff --git a/app/views/devise/mailer/confirmation_instructions.text.erb b/app/views/devise/mailer/confirmation_instructions.text.erb new file mode 100644 index 000000000..9ce086053 --- /dev/null +++ b/app/views/devise/mailer/confirmation_instructions.text.erb @@ -0,0 +1,4 @@ +<%= t("devise.mailer.welcome", username: @resource.username) %> + +<%= t(".you_can_confirm") %> +<%= confirmation_url(@resource, confirmation_token: @token) %> diff --git a/app/views/devise/mailer/invitation_instructions.markerb b/app/views/devise/mailer/invitation_instructions.markerb deleted file mode 100644 index 8d39da1c6..000000000 --- a/app/views/devise/mailer/invitation_instructions.markerb +++ /dev/null @@ -1 +0,0 @@ -<%= t('.message', :invite_url => invite_code_url(@invitation_code)) %> diff --git a/app/views/devise/mailer/reset_password_instructions.html.haml b/app/views/devise/mailer/reset_password_instructions.html.haml new file mode 100644 index 000000000..0c8f44a3f --- /dev/null +++ b/app/views/devise/mailer/reset_password_instructions.html.haml @@ -0,0 +1,12 @@ +%p + = t("devise.mailer.hello", username: @resource.username) +%p + = t(".someone_requested") +%p + = link_to t(".change"), edit_password_url(@resource, reset_password_token: @token) +%p + = t(".then_connect", username: @resource.username) +%p + = t(".wont_change") +%p + = t(".ignore") diff --git a/app/views/devise/mailer/reset_password_instructions.markerb b/app/views/devise/mailer/reset_password_instructions.markerb deleted file mode 100644 index ac800dd25..000000000 --- a/app/views/devise/mailer/reset_password_instructions.markerb +++ /dev/null @@ -1,13 +0,0 @@ -<%= t('devise.mailer.hello', username: @resource.username) %> - -<%= t('.someone_requested') %> - -[<%= t('.change') %>][1] - -[1]: <%= edit_password_url(@resource, reset_password_token: @token) %> - -<%= t('.then_connect', username: @resource.username) %> - -<%= t('.wont_change') %> - -<%= t('.ignore') %> diff --git a/app/views/devise/mailer/reset_password_instructions.text.erb b/app/views/devise/mailer/reset_password_instructions.text.erb new file mode 100644 index 000000000..48f1dfee4 --- /dev/null +++ b/app/views/devise/mailer/reset_password_instructions.text.erb @@ -0,0 +1,11 @@ +<%= t("devise.mailer.hello", username: @resource.username) %> + +<%= t(".someone_requested") %> + +<%= t(".change") %>: <%= edit_password_url(@resource, reset_password_token: @token) %> + +<%= t(".then_connect", username: @resource.username) %> + +<%= t(".wont_change") %> + +<%= t(".ignore") %> diff --git a/app/views/devise/mailer/unlock_instructions.html.haml b/app/views/devise/mailer/unlock_instructions.html.haml new file mode 100644 index 000000000..c16e8dee7 --- /dev/null +++ b/app/views/devise/mailer/unlock_instructions.html.haml @@ -0,0 +1,8 @@ +%p + = t("devise.mailer.hello", username: @resource.username) +%p + = t(".account_locked") +%p + = t(".click_to_unlock") +%p + = link_to t(".unlock"), unlock_url(@resource, unlock_token: @token) diff --git a/app/views/devise/mailer/unlock_instructions.markerb b/app/views/devise/mailer/unlock_instructions.markerb deleted file mode 100644 index d207a1bb9..000000000 --- a/app/views/devise/mailer/unlock_instructions.markerb +++ /dev/null @@ -1,9 +0,0 @@ -<%= t('devise.mailer.hello', username: @resource.username) %> - -<%= t('.account_locked') %> - -<%= t('.click_to_unlock') %> - -[<%= t('.unlock') %>][1] - -[1]: <%= unlock_url(@resource, unlock_token: @token) %> diff --git a/app/views/devise/mailer/unlock_instructions.text.erb b/app/views/devise/mailer/unlock_instructions.text.erb new file mode 100644 index 000000000..e89aa4353 --- /dev/null +++ b/app/views/devise/mailer/unlock_instructions.text.erb @@ -0,0 +1,6 @@ +<%= t("devise.mailer.hello", username: @resource.username) %> + +<%= t(".account_locked") %> + +<%= t(".click_to_unlock") %> +<%= unlock_url(@resource, unlock_token: @token) %> diff --git a/app/views/layouts/notifier.html.haml b/app/views/layouts/notifier.html.haml index 74acfc8b1..1c497b543 100644 --- a/app/views/layouts/notifier.html.haml +++ b/app/views/layouts/notifier.html.haml @@ -1,7 +1,7 @@ %table{cellspacing: 0, cellpadding: 0, border: 0, style: "font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px"} %tr - - if @notification.try(:sender) + - if @notification&.sender.present? %td{width: "60px", style: "vertical-align: top"}> %div{style: "background-color: #eee; height: 50px; width: 50px"} = image_tag @notification.sender.profile.image_url(:thumb_small), alt: @notification.sender.name, diff --git a/app/views/layouts/notifier.text.haml b/app/views/layouts/notifier.text.haml index e018e0311..8a7a083a5 100644 --- a/app/views/layouts/notifier.text.haml +++ b/app/views/layouts/notifier.text.haml @@ -1,4 +1,5 @@ != yield + +!= "-- " != t("notifier.email_sent_by_diaspora", pod_name: pod_name) -!= t("notifier.to_change_your_notification_settings") -!= edit_user_url +!= "#{t('notifier.to_change_your_notification_settings')}: #{edit_user_url}" diff --git a/app/views/maintenance/account_removal_warning.markerb b/app/views/maintenance/account_removal_warning.markerb deleted file mode 100644 index 7303bafae..000000000 --- a/app/views/maintenance/account_removal_warning.markerb +++ /dev/null @@ -1,2 +0,0 @@ -<%= t('notifier.remove_old_user.body', pod_url: @pod_url, login_url: @login_url, after_days: @after_days, remove_after: @remove_after) %> - diff --git a/app/views/notifier/_notifier_css.haml b/app/views/notifier/_notifier_css.haml deleted file mode 100644 index 4ca518b2d..000000000 --- a/app/views/notifier/_notifier_css.haml +++ /dev/null @@ -1,28 +0,0 @@ -:css - body{ - width:600px; - font-family: 'Helvetica',sans-serif; - } - #container{ - } - header{ - margin-bottom: 25px; - } - p{ - padding:5px; - } - p.small{ - font-size:smaller; - color:#999; - font-style:italic; - } - a{ - color:#107FC9; - font-weight:bold; - } - a:hover{ - color: #22AAE0; - } - a:active{ - color: #005D9C; - } diff --git a/app/views/notifier/also_commented.html.haml b/app/views/notifier/also_commented.html.haml new file mode 100644 index 000000000..27c8ecf8d --- /dev/null +++ b/app/views/notifier/also_commented.html.haml @@ -0,0 +1,5 @@ +%p + = comment_message(@notification.comment, process_newlines: true) +%p + = link_to t("notifier.comment_on_post.reply", name: @notification.comment.post.author_first_name), + post_url(@notification.comment.post, anchor: @notification.comment.guid) diff --git a/app/views/notifier/also_commented.markerb b/app/views/notifier/also_commented.markerb deleted file mode 100644 index 8c5023664..000000000 --- a/app/views/notifier/also_commented.markerb +++ /dev/null @@ -1,5 +0,0 @@ -<%= comment_message(@notification.comment, :process_newlines => true) %> - -[<%= t('notifier.comment_on_post.reply', :name => @notification.comment_post.author_first_name) %>][1] - -[1]: <%= post_url(@notification.comment_post, anchor: @notification.comment.guid) %> diff --git a/app/views/notifier/also_commented.text.erb b/app/views/notifier/also_commented.text.erb new file mode 100644 index 000000000..bce14edd8 --- /dev/null +++ b/app/views/notifier/also_commented.text.erb @@ -0,0 +1,4 @@ +<%= comment_message(@notification.comment) %> + +<%= t("notifier.comment_on_post.reply", name: @notification.comment.post.author_first_name) %> +<%= post_url(@notification.comment.post, anchor: @notification.comment.guid) %> diff --git a/app/views/notifier/comment_on_post.html.haml b/app/views/notifier/comment_on_post.html.haml new file mode 100644 index 000000000..27c8ecf8d --- /dev/null +++ b/app/views/notifier/comment_on_post.html.haml @@ -0,0 +1,5 @@ +%p + = comment_message(@notification.comment, process_newlines: true) +%p + = link_to t("notifier.comment_on_post.reply", name: @notification.comment.post.author_first_name), + post_url(@notification.comment.post, anchor: @notification.comment.guid) diff --git a/app/views/notifier/comment_on_post.markerb b/app/views/notifier/comment_on_post.markerb deleted file mode 100644 index 7d4d86802..000000000 --- a/app/views/notifier/comment_on_post.markerb +++ /dev/null @@ -1,5 +0,0 @@ -<%= comment_message(@notification.comment, :process_newlines => true) %> - -[<%= t('notifier.comment_on_post.reply', :name => @notification.comment.parent_author_name) %>][1] - -[1]: <%= post_url(@notification.comment.post, anchor: @notification.comment.guid) %> diff --git a/app/views/notifier/comment_on_post.text.erb b/app/views/notifier/comment_on_post.text.erb new file mode 100644 index 000000000..bce14edd8 --- /dev/null +++ b/app/views/notifier/comment_on_post.text.erb @@ -0,0 +1,4 @@ +<%= comment_message(@notification.comment) %> + +<%= t("notifier.comment_on_post.reply", name: @notification.comment.post.author_first_name) %> +<%= post_url(@notification.comment.post, anchor: @notification.comment.guid) %> diff --git a/app/views/notifier/confirm_email.html.haml b/app/views/notifier/confirm_email.html.haml new file mode 100644 index 000000000..87e334688 --- /dev/null +++ b/app/views/notifier/confirm_email.html.haml @@ -0,0 +1,6 @@ +%p + = t("notifier.hello", name: @notification.recipient_first_name) +%p + = t("notifier.confirm_email.click_link", unconfirmed_email: @notification.recipient_unconfirmed_email) +%p + = link_to nil, confirm_email_url(token: @notification.recipient_confirm_email_token) diff --git a/app/views/notifier/confirm_email.markerb b/app/views/notifier/confirm_email.markerb deleted file mode 100644 index 6b32bfa0a..000000000 --- a/app/views/notifier/confirm_email.markerb +++ /dev/null @@ -1,5 +0,0 @@ -<%= t('notifier.hello', :name => @notification.recipient_first_name) %> - -<%= t('notifier.confirm_email.click_link', :unconfirmed_email => @notification.recipient_unconfirmed_email) %> - -<<%= confirm_email_url(:token => @notification.recipient_confirm_email_token) %>> diff --git a/app/views/notifier/confirm_email.text.erb b/app/views/notifier/confirm_email.text.erb new file mode 100644 index 000000000..4b310db63 --- /dev/null +++ b/app/views/notifier/confirm_email.text.erb @@ -0,0 +1,5 @@ +<%= t("notifier.hello", name: @notification.recipient_first_name) %> + +<%= t("notifier.confirm_email.click_link", unconfirmed_email: @notification.recipient_unconfirmed_email) %> + +<%= confirm_email_url(token: @notification.recipient_confirm_email_token) %> diff --git a/app/views/notifier/contacts_birthday.html.haml b/app/views/notifier/contacts_birthday.html.haml new file mode 100644 index 000000000..4402cf41d --- /dev/null +++ b/app/views/notifier/contacts_birthday.html.haml @@ -0,0 +1,5 @@ +%p + = t(".birthday", name: @notification.person.name) +%p + = link_to t(".view_profile", name: @notification.person.first_name), + local_or_remote_person_path(@notification.person, absolute: true) diff --git a/app/views/notifier/contacts_birthday.markerb b/app/views/notifier/contacts_birthday.markerb deleted file mode 100644 index ee4d27770..000000000 --- a/app/views/notifier/contacts_birthday.markerb +++ /dev/null @@ -1,6 +0,0 @@ - -<%= t(".birthday", name: @notification.person.name) %> - -[<%= t(".view_profile", name: @notification.person.name) %>][1] - -[1]: <%= local_or_remote_person_path(@notification.person, absolute: true) %> diff --git a/app/views/notifier/contacts_birthday.text.erb b/app/views/notifier/contacts_birthday.text.erb new file mode 100644 index 000000000..773fc41c1 --- /dev/null +++ b/app/views/notifier/contacts_birthday.text.erb @@ -0,0 +1,4 @@ +<%= t(".birthday", name: @notification.person.name) %> + +<%= t(".view_profile", name: @notification.person.first_name) %> +<%= local_or_remote_person_path(@notification.person, absolute: true) %> diff --git a/app/views/notifier/csrf_token_fail.html.haml b/app/views/notifier/csrf_token_fail.html.haml new file mode 100644 index 000000000..aa8b3d80e --- /dev/null +++ b/app/views/notifier/csrf_token_fail.html.haml @@ -0,0 +1,4 @@ +- message = t("notifier.csrf_token_fail.body", + name: @notification.recipient_first_name, + link: "https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)") +!= Redcarpet::Markdown.new(Diaspora::Markdownify::Email).render(message) diff --git a/app/views/notifier/csrf_token_fail.markerb b/app/views/notifier/csrf_token_fail.markerb deleted file mode 100644 index 22f3164ea..000000000 --- a/app/views/notifier/csrf_token_fail.markerb +++ /dev/null @@ -1 +0,0 @@ -<%= t("notifier.csrf_token_fail.body", name: @notification.recipient_first_name, link: "https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)") %> diff --git a/app/views/notifier/csrf_token_fail.text.erb b/app/views/notifier/csrf_token_fail.text.erb new file mode 100644 index 000000000..413b61f97 --- /dev/null +++ b/app/views/notifier/csrf_token_fail.text.erb @@ -0,0 +1,3 @@ +<%= t("notifier.csrf_token_fail.body", + name: @notification.recipient_first_name, + link: "https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)") %> diff --git a/app/views/notifier/invite.markerb b/app/views/notifier/invite.markerb deleted file mode 100644 index 8c20a00c0..000000000 --- a/app/views/notifier/invite.markerb +++ /dev/null @@ -1,6 +0,0 @@ -<%= t('.message', - invite_url: invite_code_url(@invitation_code), - diasporafoundation_url: 'https://diasporafoundation.org/', - user: @inviter.try(:full_name).empty? ? @inviter.try(:diaspora_handle) : "#{@inviter.name} (#{@inviter.diaspora_handle})", - diaspora_id: @inviter.try(:diaspora_handle)) -%> diff --git a/app/views/notifier/liked.html.haml b/app/views/notifier/liked.html.haml new file mode 100644 index 000000000..49d3dfc47 --- /dev/null +++ b/app/views/notifier/liked.html.haml @@ -0,0 +1,11 @@ +- if @notification.like_target.public? + %p + #{t('.liked', name: @notification.sender_name)}: + %p + = post_message(@notification.like_target, process_newlines: true) +- else + %p + #{t('notifier.liked.limited_post', name: @notification.sender_name)}. + +%p + = link_to t(".view_post"), post_url(@notification.like_target) diff --git a/app/views/notifier/liked.markerb b/app/views/notifier/liked.markerb deleted file mode 100644 index 8ed88a979..000000000 --- a/app/views/notifier/liked.markerb +++ /dev/null @@ -1,11 +0,0 @@ -<% if @notification.like_target.public? %> -<%= "#{t('.liked', :name => "#{@notification.sender_name}")}:" %> - -<%= post_message(@notification.like_target, :process_newlines => true) %> -<% else %> -<%= "#{t('notifier.liked.limited_post', :name => "#{@notification.sender_name}")}." %> -<% end %> - -[<%= t('.view_post') %>][1] - -[1]: <%= post_url(@notification.like_target) %> diff --git a/app/views/notifier/liked.text.erb b/app/views/notifier/liked.text.erb new file mode 100644 index 000000000..ce743ade3 --- /dev/null +++ b/app/views/notifier/liked.text.erb @@ -0,0 +1,10 @@ +<% if @notification.like_target.public? %> +<%= "#{t(".liked", name: @notification.sender_name)}:" %> + +<%= post_message(@notification.like_target) %> +<% else %> +<%= "#{t("notifier.liked.limited_post", name: @notification.sender_name)}." %> +<% end %> + +<%= t(".view_post") %> +<%= post_url(@notification.like_target) %> diff --git a/app/views/notifier/mentioned.html.haml b/app/views/notifier/mentioned.html.haml new file mode 100644 index 000000000..806c7ee19 --- /dev/null +++ b/app/views/notifier/mentioned.html.haml @@ -0,0 +1,10 @@ +- if @notification.post.public? + %p + = post_message(@notification.post, process_newlines: true) +- else + %p + = t("notifier.mentioned.limited_post") + +%p + = link_to t("notifier.comment_on_post.reply", name: @notification.post.author_first_name), + post_url(@notification.post) diff --git a/app/views/notifier/mentioned.markerb b/app/views/notifier/mentioned.markerb deleted file mode 100644 index 414739665..000000000 --- a/app/views/notifier/mentioned.markerb +++ /dev/null @@ -1,9 +0,0 @@ -<% if @notification.post.public? %> -<%= post_message(@notification.post, :process_newlines => true) %> -<% else %> -<%= t('notifier.mentioned.limited_post') %> -<% end %> - -[<%= t("notifier.comment_on_post.reply", name: @notification.post_author_name) %>][1] - -[1]: <%= post_url(@notification.post) %> diff --git a/app/views/notifier/mentioned.text.erb b/app/views/notifier/mentioned.text.erb new file mode 100644 index 000000000..fbce0dbb4 --- /dev/null +++ b/app/views/notifier/mentioned.text.erb @@ -0,0 +1,8 @@ +<% if @notification.post.public? %> +<%= post_message(@notification.post) %> +<% else %> +<%= t("notifier.mentioned.limited_post") %> +<% end %> + +<%= t("notifier.comment_on_post.reply", name: @notification.post.author_first_name) %> +<%= post_url(@notification.post) %> diff --git a/app/views/notifier/mentioned_in_comment.html.haml b/app/views/notifier/mentioned_in_comment.html.haml new file mode 100644 index 000000000..1517687e3 --- /dev/null +++ b/app/views/notifier/mentioned_in_comment.html.haml @@ -0,0 +1,10 @@ +- if @notification.comment.public? + %p + = @notification.comment.message.plain_text_without_markdown +- else + %p + = t("notifier.mentioned_in_comment.limited_post") + +%p + = link_to t("notifier.mentioned_in_comment.reply"), + post_url(@notification.comment.post, anchor: @notification.comment.guid) diff --git a/app/views/notifier/mentioned_in_comment.markerb b/app/views/notifier/mentioned_in_comment.text.erb similarity index 56% rename from app/views/notifier/mentioned_in_comment.markerb rename to app/views/notifier/mentioned_in_comment.text.erb index 3b86f409b..8f327a2a6 100644 --- a/app/views/notifier/mentioned_in_comment.markerb +++ b/app/views/notifier/mentioned_in_comment.text.erb @@ -4,6 +4,5 @@ <%= t("notifier.mentioned_in_comment.limited_post") %> <% end %> -[<%= t("notifier.mentioned_in_comment.reply") %>][1] - -[1]: <%= post_url(@notification.comment.parent, anchor: @notification.comment.guid) %> +<%= t("notifier.mentioned_in_comment.reply") %> +<%= post_url(@notification.comment.parent, anchor: @notification.comment.guid) %> diff --git a/app/views/notifier/plain_markdown_email.html.haml b/app/views/notifier/plain_markdown_email.html.haml new file mode 100644 index 000000000..a102d4ecb --- /dev/null +++ b/app/views/notifier/plain_markdown_email.html.haml @@ -0,0 +1,2 @@ +%div{style: "font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px"} + != Redcarpet::Markdown.new(Diaspora::Markdownify::Email).render(body) diff --git a/app/views/notifier/plain_markdown_email.text.haml b/app/views/notifier/plain_markdown_email.text.haml new file mode 100644 index 000000000..d2059e444 --- /dev/null +++ b/app/views/notifier/plain_markdown_email.text.haml @@ -0,0 +1 @@ +!= body diff --git a/app/views/notifier/private_message.html.haml b/app/views/notifier/private_message.html.haml new file mode 100644 index 000000000..bd4eb72f0 --- /dev/null +++ b/app/views/notifier/private_message.html.haml @@ -0,0 +1,4 @@ +%p + = t("notifier.a_private_message") +%p + = link_to t(".reply_to_or_view"), conversations_url(conversation_id: @notification.conversation) diff --git a/app/views/notifier/private_message.markerb b/app/views/notifier/private_message.markerb deleted file mode 100644 index e41a38cb4..000000000 --- a/app/views/notifier/private_message.markerb +++ /dev/null @@ -1,5 +0,0 @@ -<%= t('notifier.a_private_message') %> - -[<%= t('.reply_to_or_view') %>][1] - -[1]: <%= conversations_url(:conversation_id => @notification.conversation) %> diff --git a/app/views/notifier/private_message.text.erb b/app/views/notifier/private_message.text.erb new file mode 100644 index 000000000..6751ea454 --- /dev/null +++ b/app/views/notifier/private_message.text.erb @@ -0,0 +1,4 @@ +<%= t("notifier.a_private_message") %> + +<%= t(".reply_to_or_view") %> +<%= conversations_url(conversation_id: @notification.conversation) %> diff --git a/app/views/notifier/reshared.html.haml b/app/views/notifier/reshared.html.haml new file mode 100644 index 000000000..ecb320d5f --- /dev/null +++ b/app/views/notifier/reshared.html.haml @@ -0,0 +1,6 @@ +%p + #{t('.reshared', name: @notification.sender_name)}: +%p + = post_message(@notification.reshare_root, process_newlines: true) +%p + = link_to t(".view_post"), post_url(@notification.reshare) diff --git a/app/views/notifier/reshared.markerb b/app/views/notifier/reshared.markerb deleted file mode 100644 index a1c43c6a1..000000000 --- a/app/views/notifier/reshared.markerb +++ /dev/null @@ -1,7 +0,0 @@ -<%= "#{t('.reshared', :name => "#{@notification.sender_name}")}:" %> - -<%= post_message(@notification.reshare_root, :process_newlines => true) %> - -[<%= t('.view_post') %>][1] - -[1]: <%= post_url(@notification.reshare) %> diff --git a/app/views/notifier/reshared.text.erb b/app/views/notifier/reshared.text.erb new file mode 100644 index 000000000..320b626b6 --- /dev/null +++ b/app/views/notifier/reshared.text.erb @@ -0,0 +1,6 @@ +<%= "#{t(".reshared", name: @notification.sender_name)}:" %> + +<%= post_message(@notification.reshare_root) %> + +<%= t(".view_post") %> +<%= post_url(@notification.reshare) %> diff --git a/app/views/notifier/single_admin.html.haml b/app/views/notifier/single_admin.html.haml new file mode 100644 index 000000000..304e2fb92 --- /dev/null +++ b/app/views/notifier/single_admin.html.haml @@ -0,0 +1,8 @@ +%p + = t("notifier.hello", name: @receiver.username) +%p + = @string +%p + = t("notifier.thanks") + %br/ + = t("notifier.single_admin.admin") diff --git a/app/views/notifier/single_admin.markerb b/app/views/notifier/single_admin.markerb deleted file mode 100644 index 0b9f23749..000000000 --- a/app/views/notifier/single_admin.markerb +++ /dev/null @@ -1,7 +0,0 @@ -<%= t('notifier.hello', :name => @receiver.username) %> - -<%= @string %> - -<%= t('notifier.thanks') %> - -<%= t('notifier.single_admin.admin') %> diff --git a/app/views/notifier/single_admin.text.erb b/app/views/notifier/single_admin.text.erb new file mode 100644 index 000000000..ed2c0a4e4 --- /dev/null +++ b/app/views/notifier/single_admin.text.erb @@ -0,0 +1,6 @@ +<%= t("notifier.hello", name: @receiver.username) %> + +<%= @string %> + +<%= t("notifier.thanks") %> +<%= t("notifier.single_admin.admin") %> diff --git a/app/views/notifier/started_sharing.html.haml b/app/views/notifier/started_sharing.html.haml new file mode 100644 index 000000000..bb5084ba7 --- /dev/null +++ b/app/views/notifier/started_sharing.html.haml @@ -0,0 +1,7 @@ +%p + = @notification.sender_name + = t(".sharing") + +%p + = link_to t(".view_profile", name: @notification.sender_first_name), + local_or_remote_person_path(@notification.sender, absolute: true) diff --git a/app/views/notifier/started_sharing.markerb b/app/views/notifier/started_sharing.markerb deleted file mode 100644 index d5e16d74c..000000000 --- a/app/views/notifier/started_sharing.markerb +++ /dev/null @@ -1,5 +0,0 @@ -<%= @notification.sender_name %> <%= t('.sharing') %> - -[<%= t('.view_profile', :name => @notification.sender_first_name) %>][1] - -[1]: <%= local_or_remote_person_path(@notification.sender, :absolute => true) %> diff --git a/app/views/notifier/started_sharing.text.erb b/app/views/notifier/started_sharing.text.erb new file mode 100644 index 000000000..6218f8d9e --- /dev/null +++ b/app/views/notifier/started_sharing.text.erb @@ -0,0 +1,4 @@ +<%= @notification.sender_name %> <%= t(".sharing") %> + +<%= t(".view_profile", name: @notification.sender_first_name) %> +<%= local_or_remote_person_path(@notification.sender, absolute: true) %> diff --git a/app/views/report/report_email.markerb b/app/views/report/report_email.markerb deleted file mode 100644 index 2729aa96b..000000000 --- a/app/views/report/report_email.markerb +++ /dev/null @@ -1,5 +0,0 @@ -<%= t("notifier.report_email.body", - url: resource[:url], - type: resource[:type], - id: resource[:id], - reason: resource[:reason]) %> diff --git a/app/views/users/export_email.markerb b/app/views/users/export_email.markerb deleted file mode 100644 index c345ae67a..000000000 --- a/app/views/users/export_email.markerb +++ /dev/null @@ -1 +0,0 @@ -<%= t('notifier.export_email.body', url: download_profile_user_url, name: @user.first_name) %> diff --git a/app/views/users/export_failure_email.markerb b/app/views/users/export_failure_email.markerb deleted file mode 100644 index 33da52efb..000000000 --- a/app/views/users/export_failure_email.markerb +++ /dev/null @@ -1 +0,0 @@ -<%= t('notifier.export_failure_email.body', name: @user.first_name) %> diff --git a/app/views/users/export_photos_email.markerb b/app/views/users/export_photos_email.markerb deleted file mode 100644 index 24bc4fd1d..000000000 --- a/app/views/users/export_photos_email.markerb +++ /dev/null @@ -1 +0,0 @@ -<%= t('notifier.export_photos_email.body', url: download_photos_user_url, name: @user.first_name) %> diff --git a/app/views/users/export_photos_failure_email.markerb b/app/views/users/export_photos_failure_email.markerb deleted file mode 100644 index 2067327c9..000000000 --- a/app/views/users/export_photos_failure_email.markerb +++ /dev/null @@ -1 +0,0 @@ -<%= t('notifier.export_photos_failure_email.body', name: @user.first_name) %> diff --git a/config/initializers/markerb.rb b/config/initializers/markerb.rb deleted file mode 100644 index a39d0cbee..000000000 --- a/config/initializers/markerb.rb +++ /dev/null @@ -1,3 +0,0 @@ -# frozen_string_literal: true - -Rails.application.config.markerb.renderer = Diaspora::Markdownify::Email diff --git a/config/locales/diaspora/en.yml b/config/locales/diaspora/en.yml index c9ffd03b3..9d36edbf3 100644 --- a/config/locales/diaspora/en.yml +++ b/config/locales/diaspora/en.yml @@ -724,7 +724,7 @@ en: started_sharing: subject: "%{name} started sharing with you on diaspora*" sharing: "has started sharing with you!" - view_profile: "View %{name}’s profile" + view_profile: "View %{name}’s profile >" comment_on_post: limited_subject: "There's a new comment on one of your posts" reply: "Reply or view %{name}’s post >" @@ -749,7 +749,7 @@ en: contacts_birthday: subject: "%{name} has their birthday today" birthday: "%{name} has their birthday today. Wish them 'Happy Birthday'!" - view_profile: "View %{name}’s profile" + view_profile: "View %{name}’s profile >" confirm_email: subject: "Please activate your new email address %{unconfirmed_email}" click_link: "To activate your new email address %{unconfirmed_email}, please follow this link:" diff --git a/spec/workers/reset_password_spec.rb b/spec/workers/reset_password_spec.rb index 6d1b7ca72..59c5cca79 100644 --- a/spec/workers/reset_password_spec.rb +++ b/spec/workers/reset_password_spec.rb @@ -12,8 +12,8 @@ describe Workers::ResetPassword do Workers::ResetPassword.new.perform(alice.id) mail = Devise.mailer.deliveries.last expect(mail.to).to eq([alice.email]) - expect(mail.body).to include("change your password") - expect(mail.body).to include(alice.username) + expect(mail.body.encoded).to include("change your password") + expect(mail.body.encoded).to include(alice.username) end end end From 3c02a1f067b718e2d1806b65eef5bc9d9f446757 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Wed, 13 Jul 2022 03:39:15 +0200 Subject: [PATCH 5/7] Remove unused translation fallback --- app/helpers/notifier_helper.rb | 6 +----- spec/mailers/notifier_spec.rb | 32 -------------------------------- 2 files changed, 1 insertion(+), 37 deletions(-) diff --git a/app/helpers/notifier_helper.rb b/app/helpers/notifier_helper.rb index e7a05af5f..9f268bd79 100644 --- a/app/helpers/notifier_helper.rb +++ b/app/helpers/notifier_helper.rb @@ -7,11 +7,7 @@ module NotifierHelper # @param opts [Hash] Optional hash. Accepts :length parameters. # @return [String] The formatted post. def post_message(post, opts={}) - if post.respond_to? :message - post.message.try(:plain_text_without_markdown).presence || post_page_title(post) - else - I18n.translate "notifier.a_post_you_shared" - end + post.message&.plain_text_without_markdown.presence || post_page_title(post) end # @param comment [Comment] The comment to process. diff --git a/spec/mailers/notifier_spec.rb b/spec/mailers/notifier_spec.rb index a8abde338..7e0830f41 100644 --- a/spec/mailers/notifier_spec.rb +++ b/spec/mailers/notifier_spec.rb @@ -121,10 +121,6 @@ describe Notifier, type: :mailer do it "has the post text in the body" do expect(@mail.body.encoded).to include(@post.text) end - - it "should not include translation fallback" do - expect(@mail.body.encoded).not_to include(I18n.translate "notifier.a_post_you_shared") - end end describe ".mentioned_in_comment" do @@ -180,10 +176,6 @@ describe Notifier, type: :mailer do it "has the post text not in the body" do expect(@mail.body.encoded).not_to include(@post.text) end - - it "should not include translation fallback" do - expect(@mail.body.encoded).not_to include(I18n.translate "notifier.a_post_you_shared") - end end describe ".liked" do @@ -205,10 +197,6 @@ describe Notifier, type: :mailer do expect(@mail.body.encoded).to include(@like.author.name) end - it "should not include translation fallback" do - expect(@mail.body.encoded).not_to include(I18n.translate "notifier.a_post_you_shared") - end - it "can handle a reshare" do reshare = FactoryGirl.create(:reshare) like = reshare.likes.create!(author: bob.person) @@ -247,10 +235,6 @@ describe Notifier, type: :mailer do it "BODY: contains the name of person liking" do expect(@mail.body.encoded).to include(@reshare.author.name) end - - it "should not include translation fallback" do - expect(@mail.body.encoded).not_to include(I18n.translate "notifier.a_post_you_shared") - end end describe ".private_message" do @@ -294,10 +278,6 @@ describe Notifier, type: :mailer do it "BODY: does not contain the message text" do expect(@mail.body.encoded).not_to include(@cnv.messages.first.text) end - - it "should not include translation fallback" do - expect(@mail.body.encoded).not_to include(I18n.translate "notifier.a_post_you_shared") - end end context "comments" do @@ -334,10 +314,6 @@ describe Notifier, type: :mailer do it "contains the original post's link with comment anchor" do expect(comment_mail.body.encoded).to include("#{comment.post.id}##{comment.guid}") end - - it "should not include translation fallback" do - expect(comment_mail.body.encoded).not_to include(I18n.translate "notifier.a_post_you_shared") - end end [:reshare].each do |post_type| @@ -380,10 +356,6 @@ describe Notifier, type: :mailer do it "contains the original post's link with comment anchor" do expect(comment_mail.body.encoded).to include("#{comment.post.id}##{comment.guid}") end - - it "should not include translation fallback" do - expect(comment_mail.body.encoded).not_to include(I18n.translate "notifier.a_post_you_shared") - end end [:reshare].each do |post_type| context post_type.to_s do @@ -490,10 +462,6 @@ describe Notifier, type: :mailer do it "BODY: contains the name of person liking" do expect(mail.body.encoded).to include(bob.name) end - - it "should not include translation fallback" do - expect(mail.body.encoded).not_to include(I18n.translate "notifier.a_post_you_shared") - end end end From dd3bc39c97e6b6d17646c8cbf33e13c252e0c2e4 Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Wed, 13 Jul 2022 05:05:58 +0200 Subject: [PATCH 6/7] Render markdown to html for notifications --- app/helpers/notifier_helper.rb | 8 +++-- app/views/notifier/also_commented.html.haml | 3 +- app/views/notifier/comment_on_post.html.haml | 3 +- app/views/notifier/liked.html.haml | 3 +- app/views/notifier/mentioned.html.haml | 3 +- .../notifier/mentioned_in_comment.html.haml | 3 +- app/views/notifier/reshared.html.haml | 3 +- lib/diaspora/mentionable.rb | 12 ++++--- lib/diaspora/message_renderer.rb | 32 ++++++++++++------- spec/helpers/notifier_helper_spec.rb | 28 ++++++++++------ spec/lib/diaspora/message_renderer_spec.rb | 8 +---- spec/mailers/notifier_spec.rb | 6 ++-- 12 files changed, 62 insertions(+), 50 deletions(-) diff --git a/app/helpers/notifier_helper.rb b/app/helpers/notifier_helper.rb index 9f268bd79..9edcea043 100644 --- a/app/helpers/notifier_helper.rb +++ b/app/helpers/notifier_helper.rb @@ -4,17 +4,19 @@ module NotifierHelper include PostsHelper # @param post [Post] The post object. - # @param opts [Hash] Optional hash. Accepts :length parameters. + # @param opts [Hash] Optional hash. Accepts :html parameter. # @return [String] The formatted post. def post_message(post, opts={}) - post.message&.plain_text_without_markdown.presence || post_page_title(post) + rendered = opts[:html] ? post.message&.markdownified_for_mail : post.message&.plain_text_without_markdown + rendered.presence || post_page_title(post) end # @param comment [Comment] The comment to process. + # @param opts [Hash] Optional hash. Accepts :html parameter. # @return [String] The formatted comment. def comment_message(comment, opts={}) if comment.post.public? - comment.message.plain_text_without_markdown + opts[:html] ? comment.message.markdownified_for_mail : comment.message.plain_text_without_markdown else I18n.translate "notifier.a_limited_post_comment" end diff --git a/app/views/notifier/also_commented.html.haml b/app/views/notifier/also_commented.html.haml index 27c8ecf8d..ec6fdfc94 100644 --- a/app/views/notifier/also_commented.html.haml +++ b/app/views/notifier/also_commented.html.haml @@ -1,5 +1,4 @@ -%p - = comment_message(@notification.comment, process_newlines: true) += comment_message(@notification.comment, html: true) %p = link_to t("notifier.comment_on_post.reply", name: @notification.comment.post.author_first_name), post_url(@notification.comment.post, anchor: @notification.comment.guid) diff --git a/app/views/notifier/comment_on_post.html.haml b/app/views/notifier/comment_on_post.html.haml index 27c8ecf8d..ec6fdfc94 100644 --- a/app/views/notifier/comment_on_post.html.haml +++ b/app/views/notifier/comment_on_post.html.haml @@ -1,5 +1,4 @@ -%p - = comment_message(@notification.comment, process_newlines: true) += comment_message(@notification.comment, html: true) %p = link_to t("notifier.comment_on_post.reply", name: @notification.comment.post.author_first_name), post_url(@notification.comment.post, anchor: @notification.comment.guid) diff --git a/app/views/notifier/liked.html.haml b/app/views/notifier/liked.html.haml index 49d3dfc47..96cf3770f 100644 --- a/app/views/notifier/liked.html.haml +++ b/app/views/notifier/liked.html.haml @@ -1,8 +1,7 @@ - if @notification.like_target.public? %p #{t('.liked', name: @notification.sender_name)}: - %p - = post_message(@notification.like_target, process_newlines: true) + = post_message(@notification.like_target, html: true) - else %p #{t('notifier.liked.limited_post', name: @notification.sender_name)}. diff --git a/app/views/notifier/mentioned.html.haml b/app/views/notifier/mentioned.html.haml index 806c7ee19..715de7647 100644 --- a/app/views/notifier/mentioned.html.haml +++ b/app/views/notifier/mentioned.html.haml @@ -1,6 +1,5 @@ - if @notification.post.public? - %p - = post_message(@notification.post, process_newlines: true) + = post_message(@notification.post, html: true) - else %p = t("notifier.mentioned.limited_post") diff --git a/app/views/notifier/mentioned_in_comment.html.haml b/app/views/notifier/mentioned_in_comment.html.haml index 1517687e3..89d04cb49 100644 --- a/app/views/notifier/mentioned_in_comment.html.haml +++ b/app/views/notifier/mentioned_in_comment.html.haml @@ -1,6 +1,5 @@ - if @notification.comment.public? - %p - = @notification.comment.message.plain_text_without_markdown + = @notification.comment.message.markdownified_for_mail - else %p = t("notifier.mentioned_in_comment.limited_post") diff --git a/app/views/notifier/reshared.html.haml b/app/views/notifier/reshared.html.haml index ecb320d5f..1450775e9 100644 --- a/app/views/notifier/reshared.html.haml +++ b/app/views/notifier/reshared.html.haml @@ -1,6 +1,5 @@ %p #{t('.reshared', name: @notification.sender_name)}: -%p - = post_message(@notification.reshare_root, process_newlines: true) += post_message(@notification.reshare_root, html: true) %p = link_to t(".view_post"), post_url(@notification.reshare) diff --git a/lib/diaspora/mentionable.rb b/lib/diaspora/mentionable.rb index 2b447dc5f..d009ce6a5 100644 --- a/lib/diaspora/mentionable.rb +++ b/lib/diaspora/mentionable.rb @@ -54,8 +54,9 @@ module Diaspora::Mentionable # # @param [String] message text # @param [Array] allowed_people ids of people that are allowed to stay + # @param [Boolean] absolute_links (false) render mentions with absolute links # @return [String] message text with filtered mentions - def self.filter_people(msg_text, allowed_people) + def self.filter_people(msg_text, allowed_people, absolute_links: false) mentioned_ppl = people_from_string(msg_text) msg_text.to_s.gsub(REGEX) {|match_str| @@ -65,7 +66,7 @@ module Diaspora::Mentionable if person && allowed_people.include?(person.id) match_str else - "@#{MentionsInternal.profile_link(person, name, diaspora_id)}" + "@#{MentionsInternal.profile_link(person, name, diaspora_id, absolute: absolute_links)}" end } end @@ -121,11 +122,14 @@ module Diaspora::Mentionable # # @param [Person] AR Person # @param [String] display name + # @param [String] diaspora_id + # @param [Boolean] absolute (false) render absolute link # @return [String] markdown person link - def self.profile_link(person, display_name, diaspora_id) + def self.profile_link(person, display_name, diaspora_id, absolute: false) return display_name || diaspora_id unless person.present? - "[#{display_name || person.name}](#{Rails.application.routes.url_helpers.person_path(person)})" + url_helper = Rails.application.routes.url_helpers + "[#{display_name || person.name}](#{absolute ? url_helper.person_url(person) : url_helper.person_path(person)})" end end end diff --git a/lib/diaspora/message_renderer.rb b/lib/diaspora/message_renderer.rb index d3f0e0232..2f9ef423f 100644 --- a/lib/diaspora/message_renderer.rb +++ b/lib/diaspora/message_renderer.rb @@ -56,8 +56,8 @@ module Diaspora @message = renderer.render(message).strip end - def markdownify - renderer = Diaspora::Markdownify::HTML.new options[:markdown_render_options] + def markdownify(renderer_class=Diaspora::Markdownify::HTML) + renderer = renderer_class.new options[:markdown_render_options] markdown = Redcarpet::Markdown.new renderer, options[:markdown_options] @message = markdown.render message @@ -76,8 +76,8 @@ module Diaspora @message = Diaspora::Mentionable.format message, options[:mentioned_people] end - if options[:disable_hovercards] || options[:link_all_mentions] - @message = Diaspora::Mentionable.filter_people message, [] + if options[:disable_hovercards] + @message = Diaspora::Mentionable.filter_people(message, [], absolute_links: true) else make_mentions_plain_text end @@ -108,7 +108,6 @@ module Diaspora end DEFAULTS = {mentioned_people: [], - link_all_mentions: false, disable_hovercards: false, truncate: false, append: nil, @@ -137,12 +136,8 @@ module Diaspora # @param [Hash] opts Global options affecting output # @option opts [Array] :mentioned_people ([]) List of people # allowed to mention - # @option opts [Boolean] :link_all_mentions (false) Whether to link - # all mentions. This makes plain links to profiles for people not in - # :mentioned_people # @option opts [Boolean] :disable_hovercards (true) Render all mentions - # as profile links. This implies :link_all_mentions and ignores - # :mentioned_people + # as absolute profile links. This ignores :mentioned_people # @option opts [#to_i, Boolean] :truncate (false) Truncate message to # the specified length # @option opts [String] :append (nil) Append text to the end of @@ -205,7 +200,7 @@ module Diaspora render_tags squish append_and_truncate - }.html_safe + }.html_safe # rubocop:disable Rails/OutputSafety end # @param [Hash] opts Override global output options, see {#initialize} @@ -220,7 +215,20 @@ module Diaspora render_tags squish append_and_truncate - }.html_safe + }.html_safe # rubocop:disable Rails/OutputSafety + end + + def markdownified_for_mail + process(disable_hovercards: true) { + process_newlines + normalize + diaspora_links + camo_urls if AppConfig.privacy.camo.proxy_markdown_images? + render_mentions + markdownify(Diaspora::Markdownify::Email) + squish + append_and_truncate + }.html_safe # rubocop:disable Rails/OutputSafety end # Get a short summary of the message diff --git a/spec/helpers/notifier_helper_spec.rb b/spec/helpers/notifier_helper_spec.rb index 946753aa8..6f0b6a795 100644 --- a/spec/helpers/notifier_helper_spec.rb +++ b/spec/helpers/notifier_helper_spec.rb @@ -5,18 +5,23 @@ # the COPYRIGHT file. describe NotifierHelper, :type => :helper do - describe '#post_message' do + describe "#post_message" do before do # post for markdown test @markdown_post = FactoryGirl.create(:status_message, - text: "[link](http://diasporafoundation.org) **bold text** *other text*", public: true) - @striped_markdown_post = "link (http://diasporafoundation.org) bold text other text" + text: "[link](https://diasporafoundation.org) **bold text** *other text*", + public: true) + @striped_markdown_post = "link (https://diasporafoundation.org) bold text other text" end - it 'strip markdown in the post' do + it "strip markdown in the post" do expect(post_message(@markdown_post)).to eq(@striped_markdown_post) end + it "renders markdown as html" do + expect(post_message(@markdown_post, html: true)).to include("link") + end + it "falls back to the title if the post has no text" do photo = FactoryGirl.build(:photo, public: true) photo_post = FactoryGirl.build(:status_message, author: photo.author, text: "", photos: [photo], public: true) @@ -32,13 +37,13 @@ describe NotifierHelper, :type => :helper do end end - describe '#comment_message' do + describe "#comment_message" do before do # comment for markdown test @markdown_comment = FactoryGirl.create(:comment) @markdown_comment.post.public = true - @markdown_comment.text = "[link](http://diasporafoundation.org) **bold text** *other text*" - @striped_markdown_comment = "link (http://diasporafoundation.org) bold text other text" + @markdown_comment.text = "[link](https://diasporafoundation.org) **bold text** *other text*" + @striped_markdown_comment = "link (https://diasporafoundation.org) bold text other text" # comment for limited post @limited_comment = FactoryGirl.create(:comment) @@ -46,11 +51,16 @@ describe NotifierHelper, :type => :helper do @limited_comment.text = "This is top secret comment. Shhhhhhhh!!!" end - it 'strip markdown in the comment' do + it "strip markdown in the comment" do expect(comment_message(@markdown_comment)).to eq(@striped_markdown_comment) end - it 'hides the private content' do + it "renders markdown as html" do + expect(comment_message(@markdown_comment, html: true)) + .to include("link") + end + + it "hides the private content" do expect(comment_message(@limited_comment)).not_to include("secret comment") end end diff --git a/spec/lib/diaspora/message_renderer_spec.rb b/spec/lib/diaspora/message_renderer_spec.rb index 11bffbbcb..44dc9e2d8 100644 --- a/spec/lib/diaspora/message_renderer_spec.rb +++ b/spec/lib/diaspora/message_renderer_spec.rb @@ -78,12 +78,6 @@ describe Diaspora::MessageRenderer do end context 'linking all mentions' do - it 'makes plain links for people not in the post aspects' do - message = message("@{Bob; #{bob.person.diaspora_handle}}", link_all_mentions: true).html - expect(message).to_not include 'hovercard' - expect(message).to include "/people/#{bob.person.guid}" - end - it "makes no hovercards if they're disabled" do message = message( "@{Bob; #{bob.person.diaspora_handle}}", @@ -91,7 +85,7 @@ describe Diaspora::MessageRenderer do disable_hovercards: true ).html expect(message).to_not include 'hovercard' - expect(message).to include "/people/#{bob.person.guid}" + expect(message).to include AppConfig.url_to("/people/#{bob.person.guid}") end end end diff --git a/spec/mailers/notifier_spec.rb b/spec/mailers/notifier_spec.rb index 7e0830f41..8129b1d36 100644 --- a/spec/mailers/notifier_spec.rb +++ b/spec/mailers/notifier_spec.rb @@ -555,9 +555,9 @@ describe Notifier, type: :mailer do describe "hashtags" do it "escapes hashtags" do - mails = Notifier.admin("#Welcome to bureaucracy!", [bob]) - expect(mails.length).to eq(1) - mail = mails.first + status = FactoryGirl.create(:status_message, author: alice.person, text: "#Welcome to bureaucracy!", public: true) + like = status.likes.create!(author: bob.person) + mail = Notifier.send_notification("liked", alice.id, like.author.id, like.id) expect(mail.body.encoded).to match( "

#Welcome to bureaucracy!

" ) From a5e5c7f3782e83d527b9b28a0e8f46fb1f83389b Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Wed, 13 Jul 2022 23:29:33 +0200 Subject: [PATCH 7/7] Fix Link to OWASP CSRF more information page closes #8365 --- Changelog.md | 4 ++++ app/views/notifier/csrf_token_fail.html.haml | 2 +- app/views/notifier/csrf_token_fail.text.erb | 2 +- spec/mailers/notifier_spec.rb | 2 +- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Changelog.md b/Changelog.md index cc24c6d4b..629559d2a 100644 --- a/Changelog.md +++ b/Changelog.md @@ -6,10 +6,14 @@ * Fix deprecation warnings for sidekiq 7.0 [#8359](https://github.com/diaspora/diaspora/pull/8359) * Remove entypo-rails dependency to prepare for rails 6 [#8361](https://github.com/diaspora/diaspora/pull/8361) * Remove compass-rails dependency which is not supported anymore [#8362](https://github.com/diaspora/diaspora/pull/8362) +* Remove markerb dependency which doesn't exist anymore [#8365](https://github.com/diaspora/diaspora/pull/8365) ## Bug fixes +* Fix that no mails were sent after photo export [#8365](https://github.com/diaspora/diaspora/pull/8365) +* Fix people with quotes in the name causing issues with mail sender [#8365](https://github.com/diaspora/diaspora/pull/8365) ## Features +* Render posts and comments as HTML in HTML mails [#8365](https://github.com/diaspora/diaspora/pull/8365) # 0.7.17.0 diff --git a/app/views/notifier/csrf_token_fail.html.haml b/app/views/notifier/csrf_token_fail.html.haml index aa8b3d80e..08c27d4b9 100644 --- a/app/views/notifier/csrf_token_fail.html.haml +++ b/app/views/notifier/csrf_token_fail.html.haml @@ -1,4 +1,4 @@ - message = t("notifier.csrf_token_fail.body", name: @notification.recipient_first_name, - link: "https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)") + link: "https://owasp.org/www-community/attacks/csrf") != Redcarpet::Markdown.new(Diaspora::Markdownify::Email).render(message) diff --git a/app/views/notifier/csrf_token_fail.text.erb b/app/views/notifier/csrf_token_fail.text.erb index 413b61f97..ef034ed02 100644 --- a/app/views/notifier/csrf_token_fail.text.erb +++ b/app/views/notifier/csrf_token_fail.text.erb @@ -1,3 +1,3 @@ <%= t("notifier.csrf_token_fail.body", name: @notification.recipient_first_name, - link: "https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)") %> + link: "https://owasp.org/www-community/attacks/csrf") %> diff --git a/spec/mailers/notifier_spec.rb b/spec/mailers/notifier_spec.rb index 8129b1d36..4cdc3c319 100644 --- a/spec/mailers/notifier_spec.rb +++ b/spec/mailers/notifier_spec.rb @@ -548,7 +548,7 @@ describe Notifier, type: :mailer do it "has some informative text in the body" do email.body.parts.each do |part| - expect(part.decoded).to include("https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)") + expect(part.decoded).to include("https://owasp.org/www-community/attacks/csrf") end end end