Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/mailers/notify.rb')
-rw-r--r--app/mailers/notify.rb167
1 files changed, 0 insertions, 167 deletions
diff --git a/app/mailers/notify.rb b/app/mailers/notify.rb
deleted file mode 100644
index 2c0d451511f..00000000000
--- a/app/mailers/notify.rb
+++ /dev/null
@@ -1,167 +0,0 @@
-class Notify < ActionMailer::Base
- include ActionDispatch::Routing::PolymorphicRoutes
-
- include Emails::Issues
- include Emails::MergeRequests
- include Emails::Notes
- include Emails::Projects
- include Emails::Profile
- include Emails::Groups
-
- add_template_helper ApplicationHelper
- add_template_helper GitlabMarkdownHelper
- add_template_helper MergeRequestsHelper
- add_template_helper EmailsHelper
-
- attr_accessor :current_user
- helper_method :current_user, :can?
-
- default_url_options[:host] = Gitlab.config.gitlab.host
- default_url_options[:protocol] = Gitlab.config.gitlab.protocol
- default_url_options[:port] = Gitlab.config.gitlab.port unless Gitlab.config.gitlab_on_standard_port?
- default_url_options[:script_name] = Gitlab.config.gitlab.relative_url_root
-
- default from: Proc.new { default_sender_address.format }
- default reply_to: Gitlab.config.gitlab.email_reply_to
-
- # Just send email with 2 seconds delay
- def self.delay
- delay_for(2.seconds)
- end
-
- def test_email(recipient_email, subject, body)
- mail(to: recipient_email,
- subject: subject,
- body: body.html_safe,
- content_type: 'text/html'
- )
- end
-
- # Splits "gitlab.corp.company.com" up into "gitlab.corp.company.com",
- # "corp.company.com" and "company.com".
- # Respects set tld length so "company.co.uk" won't match "somethingelse.uk"
- def self.allowed_email_domains
- domain_parts = Gitlab.config.gitlab.host.split(".")
- allowed_domains = []
- begin
- allowed_domains << domain_parts.join(".")
- domain_parts.shift
- end while domain_parts.length > ActionDispatch::Http::URL.tld_length
-
- allowed_domains
- end
-
- private
-
- # The default email address to send emails from
- def default_sender_address
- address = Mail::Address.new(Gitlab.config.gitlab.email_from)
- address.display_name = Gitlab.config.gitlab.email_display_name
- address
- end
-
- def can_send_from_user_email?(sender)
- sender_domain = sender.email.split("@").last
- self.class.allowed_email_domains.include?(sender_domain)
- end
-
- # Return an email address that displays the name of the sender.
- # Only the displayed name changes; the actual email address is always the same.
- def sender(sender_id, send_from_user_email = false)
- return unless sender = User.find(sender_id)
-
- address = default_sender_address
- address.display_name = sender.name
-
- if send_from_user_email && can_send_from_user_email?(sender)
- address.address = sender.email
- end
-
- address.format
- end
-
- # Look up a User by their ID and return their email address
- #
- # recipient_id - User ID
- #
- # Returns a String containing the User's email address.
- def recipient(recipient_id)
- @current_user = User.find(recipient_id)
- @current_user.notification_email
- end
-
- # Set the References header field
- #
- # local_part - The local part of the referenced message ID
- #
- def set_reference(local_part)
- headers["References"] = "<#{local_part}@#{Gitlab.config.gitlab.host}>"
- end
-
- # Formats arguments into a String suitable for use as an email subject
- #
- # extra - Extra Strings to be inserted into the subject
- #
- # Examples
- #
- # >> subject('Lorem ipsum')
- # => "Lorem ipsum"
- #
- # # Automatically inserts Project name when @project is set
- # >> @project = Project.last
- # => #<Project id: 1, name: "Ruby on Rails", path: "ruby_on_rails", ...>
- # >> subject('Lorem ipsum')
- # => "Ruby on Rails | Lorem ipsum "
- #
- # # Accepts multiple arguments
- # >> subject('Lorem ipsum', 'Dolor sit amet')
- # => "Lorem ipsum | Dolor sit amet"
- def subject(*extra)
- subject = ""
- subject << "#{@project.name} | " if @project
- subject << extra.join(' | ') if extra.present?
- subject
- end
-
- # Return a string suitable for inclusion in the 'Message-Id' mail header.
- #
- # The message-id is generated from the unique URL to a model object.
- def message_id(model)
- model_name = model.class.model_name.singular_route_key
- "<#{model_name}_#{model.id}@#{Gitlab.config.gitlab.host}>"
- end
-
- # Send an email that starts a new conversation thread,
- # with headers suitable for grouping by thread in email clients.
- #
- # See: mail_answer_thread
- def mail_new_thread(model, headers = {}, &block)
- headers['Message-ID'] = message_id(model)
- headers['X-GitLab-Project'] = "#{@project.name} | " if @project
- mail(headers, &block)
- end
-
- # Send an email that responds to an existing conversation thread,
- # with headers suitable for grouping by thread in email clients.
- #
- # For grouping emails by thread, email clients heuristics require the answers to:
- #
- # * have a subject that begin by 'Re: '
- # * have a 'In-Reply-To' or 'References' header that references the original 'Message-ID'
- #
- def mail_answer_thread(model, headers = {}, &block)
- headers['In-Reply-To'] = message_id(model)
- headers['References'] = message_id(model)
- headers['X-GitLab-Project'] = "#{@project.name} | " if @project
-
- if headers[:subject]
- headers[:subject].prepend('Re: ')
- end
-
- mail(headers, &block)
- end
-
- def can?
- Ability.abilities.allowed?(user, action, subject)
- end
-end