]> git.openstreetmap.org Git - rails.git/commitdiff
Merge pull request #4534 from tomhughes/list-headers
authorAndy Allan <git@gravitystorm.co.uk>
Sun, 25 Feb 2024 10:36:05 +0000 (11:36 +0100)
committerGitHub <noreply@github.com>
Sun, 25 Feb 2024 10:36:05 +0000 (11:36 +0100)
Add standard List-XXX headers to some notification mails

1  2 
app/mailers/user_mailer.rb

index 92c64b4d6d20b70f9d00c2301289e90fbb869063,4f56d990084e7496dcd3f7f67b76b8d1a9321345..33abc66f9102f7fcf5a62c299d34a8ce5a019f24
@@@ -10,12 -10,11 +10,12 @@@ class UserMailer < ApplicationMaile
    before_action :set_shared_template_vars
    before_action :attach_project_logo
  
 -  def signup_confirm(user, token)
 +  def signup_confirm(user, token, referer = nil)
      with_recipient_locale user do
        @url = url_for(:controller => "confirmations", :action => "confirm",
                       :display_name => user.display_name,
 -                     :confirm_string => token.token)
 +                     :confirm_string => token,
 +                     :referer => referer)
  
        mail :to => user.email,
             :subject => t(".subject")
@@@ -26,7 -25,7 +26,7 @@@
      with_recipient_locale user do
        @address = user.new_email
        @url = url_for(:controller => "confirmations", :action => "confirm_email",
 -                     :confirm_string => token.token)
 +                     :confirm_string => token)
  
        mail :to => user.new_email,
             :subject => t(".subject")
@@@ -35,7 -34,7 +35,7 @@@
  
    def lost_password(user, token)
      with_recipient_locale user do
 -      @url = user_reset_password_url(:token => token.token)
 +      @url = user_reset_password_url(:token => token)
  
        mail :to => user.email,
             :subject => t(".subject")
  
        set_references("diary", comment.diary_entry)
  
+       set_list_headers(
+         "#{comment.diary_entry.id}.diary.www.openstreetmap.org",
+         t(".description", :id => comment.diary_entry.id),
+         :archive => @readurl,
+         :subscribe => diary_entry_subscribe_url(comment.diary_entry.user, comment.diary_entry),
+         :unsubscribe => @unsubscribeurl
+       )
        mail :from => from_address(comment.user.display_name, "c", comment.id, comment.notification_token(recipient.id), recipient.id),
             :to => recipient.email,
             :subject => t(".subject", :user => comment.user.display_name)
  
        set_references("note", comment.note)
  
+       set_list_headers(
+         "#{comment.note.id}.note.www.openstreetmap.org",
+         t(".description", :id => comment.note.id),
+         :archive => @noteurl
+       )
        subject = if @owner
                    t(".#{@event}.subject_own", :commenter => @commenter)
                  else
        @changeset_comment = comment.changeset.tags["comment"].presence
        @time = comment.created_at
        @changeset_author = comment.changeset.user.display_name
+       @unsubscribe_url = changeset_unsubscribe_url(comment.changeset)
        @author = @commenter
  
        subject = if @owner
  
        set_references("changeset", comment.changeset)
  
+       set_list_headers(
+         "#{comment.changeset.id}.changeset.www.openstreetmap.org",
+         t(".description", :id => comment.changeset.id),
+         :subscribe => changeset_subscribe_url(comment.changeset),
+         :unsubscribe => @unsubscribe_url,
+         :archive => @changeset_url
+       )
        mail :to => recipient.email, :subject => subject
      end
    end
      headers["In-Reply-To"] = ref
      headers["References"] = ref
    end
+   def set_list_headers(id, description, options = {})
+     headers["List-ID"] = "#{description} <#{id}>"
+     headers["List-Archive"] = "<#{options[:archive]}>" if options[:archive]
+     headers["List-Subscribe"] = "<#{options[:subscribe]}>" if options[:subscribe]
+     headers["List-Unsubscribe"] = "<#{options[:unsubscribe]}>" if options[:unsubscribe]
+   end
  end