summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/mailer.rb134
-rw-r--r--app/views/mailer/_issue_text_html.rhtml3
-rw-r--r--app/views/mailer/_issue_text_plain.rhtml2
-rw-r--r--app/views/mailer/account_information.rhtml12
-rw-r--r--app/views/mailer/account_information.text.html.rhtml11
-rw-r--r--app/views/mailer/account_information.text.plain.rhtml6
-rw-r--r--app/views/mailer/account_information_fr.rhtml12
-rw-r--r--app/views/mailer/account_information_pl.rhtml12
-rw-r--r--app/views/mailer/account_information_sr.rhtml9
-rw-r--r--app/views/mailer/attachments_added.text.html.rhtml4
-rw-r--r--app/views/mailer/attachments_added.text.plain.rhtml4
-rw-r--r--app/views/mailer/document_added.text.html.rhtml5
-rw-r--r--app/views/mailer/document_added.text.plain.rhtml4
-rw-r--r--app/views/mailer/issue_add.text.html.rhtml4
-rw-r--r--app/views/mailer/issue_add.text.plain.rhtml4
-rw-r--r--app/views/mailer/issue_edit.text.html.rhtml4
-rw-r--r--app/views/mailer/issue_edit.text.plain.rhtml4
-rw-r--r--app/views/mailer/layout.text.html.rhtml17
-rw-r--r--app/views/mailer/layout.text.plain.rhtml3
-rw-r--r--app/views/mailer/lost_password.rhtml5
-rw-r--r--app/views/mailer/lost_password.text.html.rhtml2
-rw-r--r--app/views/mailer/lost_password.text.plain.rhtml2
-rw-r--r--app/views/mailer/message_posted.text.html.rhtml4
-rw-r--r--app/views/mailer/message_posted.text.plain.rhtml4
-rw-r--r--app/views/mailer/news_added.text.html.rhtml4
-rw-r--r--app/views/mailer/news_added.text.plain.rhtml4
-rw-r--r--app/views/mailer/register.rhtml5
-rw-r--r--app/views/mailer/register.text.html.rhtml2
-rw-r--r--app/views/mailer/register.text.plain.rhtml2
-rw-r--r--app/views/mailer/test.text.html.rhtml5
-rw-r--r--app/views/mailer/test.text.plain.rhtml5
-rw-r--r--app/views/settings/edit.rhtml5
-rw-r--r--config/settings.yml2
-rw-r--r--lang/bg.yml3
-rw-r--r--lang/cs.yml3
-rw-r--r--lang/de.yml3
-rw-r--r--lang/en.yml3
-rw-r--r--lang/es.yml3
-rw-r--r--lang/fr.yml3
-rw-r--r--lang/he.yml3
-rw-r--r--lang/it.yml3
-rw-r--r--lang/ja.yml3
-rw-r--r--lang/nl.yml3
-rw-r--r--lang/pl.yml3
-rw-r--r--lang/pt-br.yml3
-rw-r--r--lang/pt.yml3
-rw-r--r--lang/ro.yml3
-rw-r--r--lang/sr.yml3
-rw-r--r--lang/sv.yml3
-rw-r--r--lang/zh.yml3
-rw-r--r--test/fixtures/attachments.yml13
-rw-r--r--test/unit/mailer_test.rb43
52 files changed, 244 insertions, 168 deletions
diff --git a/app/models/mailer.rb b/app/models/mailer.rb
index da7937404..c17e2aa19 100644
--- a/app/models/mailer.rb
+++ b/app/models/mailer.rb
@@ -20,99 +20,111 @@ class Mailer < ActionMailer::Base
helper IssuesHelper
helper CustomFieldsHelper
- def account_information(user, password)
- set_language_if_valid user.language
- recipients user.mail
- from Setting.mail_from
- subject l(:mail_subject_register)
- body :user => user, :password => password
- end
-
- def issue_add(issue)
- set_language_if_valid(Setting.default_language)
- @recipients = issue.recipients
- @from = Setting.mail_from
- @subject = "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}] #{issue.status.name} - #{issue.subject}"
- @body['issue'] = issue
+ include ActionController::UrlWriter
+
+ def issue_add(issue)
+ recipients issue.recipients
+ subject "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}] #{issue.status.name} - #{issue.subject}"
+ body :issue => issue,
+ :issue_url => url_for(:controller => 'issues', :action => 'show', :id => issue)
end
def issue_edit(journal)
- set_language_if_valid(Setting.default_language)
issue = journal.journalized
- @recipients = issue.recipients
+ recipients issue.recipients
# Watchers in cc
- @cc = issue.watcher_recipients - @recipients
- @from = Setting.mail_from
- @subject = "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}] #{issue.status.name} - #{issue.subject}"
- @body['issue'] = issue
- @body['journal']= journal
+ cc(issue.watcher_recipients - @recipients)
+ subject "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}] #{issue.status.name} - #{issue.subject}"
+ body :issue => issue,
+ :journal => journal,
+ :issue_url => url_for(:controller => 'issues', :action => 'show', :id => issue)
end
def document_added(document)
- set_language_if_valid(Setting.default_language)
- @recipients = document.project.recipients
- @from = Setting.mail_from
- @subject = "[#{document.project.name}] #{l(:label_document_new)}: #{document.title}"
- @body['document'] = document
+ recipients document.project.recipients
+ subject "[#{document.project.name}] #{l(:label_document_new)}: #{document.title}"
+ body :document => document,
+ :document_url => url_for(:controller => 'documents', :action => 'show', :id => document)
end
def attachments_added(attachments)
- set_language_if_valid(Setting.default_language)
container = attachments.first.container
- url = ''
added_to = ''
+ added_to_url = ''
case container.class.name
when 'Version'
- url = {:only_path => false, :host => Setting.host_name, :controller => 'projects', :action => 'list_files', :id => container.project_id}
+ added_to_url = url_for(:controller => 'projects', :action => 'list_files', :id => container.project_id)
added_to = "#{l(:label_version)}: #{container.name}"
when 'Document'
- url = {:only_path => false, :host => Setting.host_name, :controller => 'documents', :action => 'show', :id => container.id}
+ added_to_url = url_for(:controller => 'documents', :action => 'show', :id => container.id)
added_to = "#{l(:label_document)}: #{container.title}"
end
- @recipients = container.project.recipients
- @from = Setting.mail_from
- @subject = "[#{container.project.name}] #{l(:label_attachment_new)}"
- @body['attachments'] = attachments
- @body['url'] = url
- @body['added_to'] = added_to
+ recipients container.project.recipients
+ subject "[#{container.project.name}] #{l(:label_attachment_new)}"
+ body :attachments => attachments,
+ :added_to => added_to,
+ :added_to_url => added_to_url
end
def news_added(news)
- set_language_if_valid(Setting.default_language)
- @recipients = news.project.recipients
- @from = Setting.mail_from
- @subject = "[#{news.project.name}] #{l(:label_news)}: #{news.title}"
- @body['news'] = news
+ recipients news.project.recipients
+ subject "[#{news.project.name}] #{l(:label_news)}: #{news.title}"
+ body :news => news,
+ :news_url => url_for(:controller => 'news', :action => 'show', :id => news)
end
-
+
+ def message_posted(message, recipients)
+ recipients(recipients)
+ subject "[#{message.board.project.name} - #{message.board.name}] #{message.subject}"
+ body :message => message,
+ :message_url => url_for(:controller => 'messages', :action => 'show', :board_id => message.board_id, :id => message.root)
+ end
+
+ def account_information(user, password)
+ set_language_if_valid user.language
+ recipients user.mail
+ subject l(:mail_subject_register)
+ body :user => user,
+ :password => password,
+ :login_url => url_for(:controller => 'account', :action => 'login')
+ end
+
def lost_password(token)
set_language_if_valid(token.user.language)
- @recipients = token.user.mail
- @from = Setting.mail_from
- @subject = l(:mail_subject_lost_password)
- @body['token'] = token
+ recipients token.user.mail
+ subject l(:mail_subject_lost_password)
+ body :token => token,
+ :url => url_for(:controller => 'account', :action => 'lost_password', :token => token.value)
end
def register(token)
set_language_if_valid(token.user.language)
- @recipients = token.user.mail
- @from = Setting.mail_from
- @subject = l(:mail_subject_register)
- @body['token'] = token
- end
-
- def message_posted(message, recipients)
- set_language_if_valid(Setting.default_language)
- @recipients = recipients
- @from = Setting.mail_from
- @subject = "[#{message.board.project.name} - #{message.board.name}] #{message.subject}"
- @body['message'] = message
+ recipients token.user.mail
+ subject l(:mail_subject_register)
+ body :token => token,
+ :url => url_for(:controller => 'account', :action => 'register', :token => token.value)
end
def test(user)
set_language_if_valid(user.language)
- @recipients = user.mail
- @from = Setting.mail_from
- @subject = 'Redmine'
+ recipients user.mail
+ subject 'Redmine test'
+ body :url => url_for(:controller => 'welcome')
+ end
+
+ private
+ def initialize_defaults(method_name)
+ super
+ set_language_if_valid Setting.default_language
+ from Setting.mail_from
+ default_url_options[:host] = Setting.host_name
+ default_url_options[:protocol] = Setting.protocol
+ end
+
+ # Renders a message with the corresponding layout
+ def render_message(method_name, body)
+ layout = method_name.match(%r{text\.html\.(rhtml|rxml)}) ? 'layout.text.html.rhtml' : 'layout.text.plain.rhtml'
+ body[:content_for_layout] = render(:file => method_name, :body => body)
+ ActionView::Base.new(File.join(template_root, 'mailer'), body, self).render(:file => layout)
end
end
diff --git a/app/views/mailer/_issue_text_html.rhtml b/app/views/mailer/_issue_text_html.rhtml
index 80885ebab..a3eb05b01 100644
--- a/app/views/mailer/_issue_text_html.rhtml
+++ b/app/views/mailer/_issue_text_html.rhtml
@@ -1,5 +1,4 @@
-<%= link_to "#{issue.tracker.name} ##{issue.id}", :only_path => false, :host => Setting.host_name, :controller => 'issues', :action => 'show', :id => issue %>:
-<%= issue.subject %>
+<h1><%= link_to "#{issue.tracker.name} ##{issue.id}: #{issue.subject}", issue_url %></h1>
<ul>
<li><%=l(:field_author)%>: <%= issue.author %></li>
diff --git a/app/views/mailer/_issue_text_plain.rhtml b/app/views/mailer/_issue_text_plain.rhtml
index 5e211f9af..6b87c1808 100644
--- a/app/views/mailer/_issue_text_plain.rhtml
+++ b/app/views/mailer/_issue_text_plain.rhtml
@@ -1,5 +1,5 @@
<%= "#{issue.tracker.name} ##{issue.id}: #{issue.subject}" %>
-<%= url_for :only_path => false, :host => Setting.host_name, :controller => 'issues', :action => 'show', :id => issue %>
+<%= issue_url %>
<%=l(:field_author)%>: <%= issue.author %>
<%=l(:field_status)%>: <%= issue.status %>
diff --git a/app/views/mailer/account_information.rhtml b/app/views/mailer/account_information.rhtml
deleted file mode 100644
index 98b2916a7..000000000
--- a/app/views/mailer/account_information.rhtml
+++ /dev/null
@@ -1,12 +0,0 @@
-<% if @user.auth_source %>You can use your "<%= @user.auth_source.name %>" account to log into Redmine.
-<% else %>Your Redmine account information:
-* Login: <%= @user.login %>
-* Password: <%= @password %>
-<% end %>
-Log in: <%= url_for :only_path => false, :host => Setting.host_name, :controller => 'account', :action => 'login' %>
-<% unless @user.auth_source %>
-You can change your password here: <%= url_for :only_path => false, :host => Setting.host_name, :controller => 'my', :action => 'account' %>
-<% end %>
-
-----------------------------------------
-<%= Setting.emails_footer %>
diff --git a/app/views/mailer/account_information.text.html.rhtml b/app/views/mailer/account_information.text.html.rhtml
new file mode 100644
index 000000000..3b6ab6a9d
--- /dev/null
+++ b/app/views/mailer/account_information.text.html.rhtml
@@ -0,0 +1,11 @@
+<% if @user.auth_source %>
+<p><%= l(:mail_body_account_information_external, @user.auth_source.name) %></p>
+<% else %>
+<p><%= l(:mail_body_account_information) %>:</p>
+<ul>
+ <li><%= l(:field_login) %>: <%= @user.login %></li>
+ <li><%= l(:field_password) %>: <%= @password %></li>
+</ul>
+<% end %>
+
+<p><%= l(:label_login) %>: <%= auto_link(@login_url) %></p>
diff --git a/app/views/mailer/account_information.text.plain.rhtml b/app/views/mailer/account_information.text.plain.rhtml
new file mode 100644
index 000000000..0a02566d9
--- /dev/null
+++ b/app/views/mailer/account_information.text.plain.rhtml
@@ -0,0 +1,6 @@
+<% if @user.auth_source %><%= l(:mail_body_account_information_external, @user.auth_source.name) %>
+<% else %><%= l(:mail_body_account_information) %>:
+* <%= l(:field_login) %>: <%= @user.login %>
+* <%= l(:field_password) %>: <%= @password %>
+<% end %>
+<%= l(:label_login) %>: <%= @login_url %>
diff --git a/app/views/mailer/account_information_fr.rhtml b/app/views/mailer/account_information_fr.rhtml
deleted file mode 100644
index 71df34532..000000000
--- a/app/views/mailer/account_information_fr.rhtml
+++ /dev/null
@@ -1,12 +0,0 @@
-<% if @user.auth_source %>Vous pouvez utiliser votre compte "<%= @user.auth_source.name %>" pour vous connecter à Redmine.
-<% else %>Paramètres de connexion de votre compte Redmine:
-* Identifiant: <%= @user.login %>
-* Mot de passe: <%= @password %>
-<% end %>
-Pour se connecter à l'application: <%= url_for :only_path => false, :host => Setting.host_name, :controller => 'account', :action => 'login' %>
-<% unless @user.auth_source %>
-Vous pouvez changer votre mot de passe à l'adresse: <%= url_for :only_path => false, :host => Setting.host_name, :controller => 'my', :action => 'account' %>
-<% end %>
-
-----------------------------------------
-<%= Setting.emails_footer %>
diff --git a/app/views/mailer/account_information_pl.rhtml b/app/views/mailer/account_information_pl.rhtml
deleted file mode 100644
index 7f9060b2d..000000000
--- a/app/views/mailer/account_information_pl.rhtml
+++ /dev/null
@@ -1,12 +0,0 @@
-<% if @user.auth_source %>Możesz użyć twojego "<%= @user.auth_source.name %>" konta do zalogowania do Redmine.
-<% else %>Twoje konto w Redmine:
-* Login: <%= @user.login %>
-* Hasło: <%= @password %>
-<% end %>
-Zaloguj: <%= url_for :only_path => false, :host => Setting.host_name, :controller => 'account', :action => 'login' %>
-<% unless @user.auth_source %>
-Możesz zmienić swoje hasło tutaj: <%= url_for :only_path => false, :host => Setting.host_name, :controller => 'my', :action => 'account' %>
-<% end %>
-
-----------------------------------------
-<%= Setting.emails_footer %>
diff --git a/app/views/mailer/account_information_sr.rhtml b/app/views/mailer/account_information_sr.rhtml
deleted file mode 100644
index 0acd87d8d..000000000
--- a/app/views/mailer/account_information_sr.rhtml
+++ /dev/null
@@ -1,9 +0,0 @@
-<% if @user.auth_source %>Mozete koristiti vas "<%= @user.auth_source.name %>" nalog da bi ste se prikljucili na Redmine.
-<% else %>Informacije o vasem Redmine nalogu:
-* Login: <%= @user.login %>
-* Password: <%= @password %>
-<% end %>
-Log in: <%= url_for :only_path => false, :host => Setting.host_name, :controller => 'account', :action => 'login' %>
-<% unless @user.auth_source %>
-Ovde mozete izmeniti svoju lozinku: <%= url_for :only_path => false, :host => Setting.host_name, :controller => 'my', :action => 'account' %>
-<% end %>
diff --git a/app/views/mailer/attachments_added.text.html.rhtml b/app/views/mailer/attachments_added.text.html.rhtml
index 9bb30db1d..d2355b1c4 100644
--- a/app/views/mailer/attachments_added.text.html.rhtml
+++ b/app/views/mailer/attachments_added.text.html.rhtml
@@ -1,7 +1,5 @@
-<%= link_to @added_to, @url %><br />
+<%= link_to @added_to, @added_to_url %><br />
<ul><% @attachments.each do |attachment | %>
<li><%= attachment.filename %></li>
<% end %></ul>
-<hr />
-<small><em><%= textilizable Setting.emails_footer %></em></small>
diff --git a/app/views/mailer/attachments_added.text.plain.rhtml b/app/views/mailer/attachments_added.text.plain.rhtml
index 7e4245ef2..28cb8285e 100644
--- a/app/views/mailer/attachments_added.text.plain.rhtml
+++ b/app/views/mailer/attachments_added.text.plain.rhtml
@@ -1,6 +1,4 @@
<%= @added_to %><% @attachments.each do |attachment | %>
- <%= attachment.filename %><% end %>
-<%= url_for @url %>
-----------------------------------------
-<%= Setting.emails_footer %>
+<%= @added_to_url %>
diff --git a/app/views/mailer/document_added.text.html.rhtml b/app/views/mailer/document_added.text.html.rhtml
index d7d6558b8..2ef63012b 100644
--- a/app/views/mailer/document_added.text.html.rhtml
+++ b/app/views/mailer/document_added.text.html.rhtml
@@ -1,6 +1,3 @@
-<%= link_to @document.title, :only_path => false, :host => Setting.host_name, :controller => 'documents', :action => 'show', :id => @document %>
-(<%= @document.category.name %>)<br />
+<%= link_to @document.title, @document_url %> (<%= @document.category.name %>)<br />
<br />
<%= textilizable(@document.description) %>
-<hr />
-<small><em><%= textilizable Setting.emails_footer %></em></small>
diff --git a/app/views/mailer/document_added.text.plain.rhtml b/app/views/mailer/document_added.text.plain.rhtml
index bb42758f7..a6a72829e 100644
--- a/app/views/mailer/document_added.text.plain.rhtml
+++ b/app/views/mailer/document_added.text.plain.rhtml
@@ -1,6 +1,4 @@
<%= @document.title %> (<%= @document.category.name %>)
-<%= url_for :only_path => false, :host => Setting.host_name, :controller => 'documents', :action => 'show', :id => @document %>
+<%= @document_url %>
<%= @document.description %>
-----------------------------------------
-<%= Setting.emails_footer %>
diff --git a/app/views/mailer/issue_add.text.html.rhtml b/app/views/mailer/issue_add.text.html.rhtml
index 7a0712c36..adcb4c9fe 100644
--- a/app/views/mailer/issue_add.text.html.rhtml
+++ b/app/views/mailer/issue_add.text.html.rhtml
@@ -1,5 +1,3 @@
<%= l(:text_issue_added, "##{@issue.id}") %>
<hr />
-<%= render :file => "_issue_text_html", :use_full_path => true, :locals => { :issue => @issue } %>
-<hr />
-<small><em><%= textilizable Setting.emails_footer %></em></small>
+<%= render :file => "_issue_text_html", :use_full_path => true, :locals => { :issue => @issue, :issue_url => @issue_url } %>
diff --git a/app/views/mailer/issue_add.text.plain.rhtml b/app/views/mailer/issue_add.text.plain.rhtml
index a5740ad89..797fb11b6 100644
--- a/app/views/mailer/issue_add.text.plain.rhtml
+++ b/app/views/mailer/issue_add.text.plain.rhtml
@@ -1,5 +1,3 @@
<%= l(:text_issue_added, "##{@issue.id}") %>
----------------------------------------
-<%= render :file => "_issue_text_plain", :use_full_path => true, :locals => { :issue => @issue } %>
-----------------------------------------
-<%= Setting.emails_footer %>
+<%= render :file => "_issue_text_plain", :use_full_path => true, :locals => { :issue => @issue, :issue_url => @issue_url } %>
diff --git a/app/views/mailer/issue_edit.text.html.rhtml b/app/views/mailer/issue_edit.text.html.rhtml
index fddd19431..40d34968e 100644
--- a/app/views/mailer/issue_edit.text.html.rhtml
+++ b/app/views/mailer/issue_edit.text.html.rhtml
@@ -7,6 +7,4 @@
</ul>
<%= textilizable(@journal.notes) %>
<hr />
-<%= render :file => "_issue_text_html", :use_full_path => true, :locals => { :issue => @issue } %>
-<hr />
-<small><em><%= textilizable Setting.emails_footer %></em></small>
+<%= render :file => "_issue_text_html", :use_full_path => true, :locals => { :issue => @issue, :issue_url => @issue_url } %>
diff --git a/app/views/mailer/issue_edit.text.plain.rhtml b/app/views/mailer/issue_edit.text.plain.rhtml
index 4ecc37549..32019eaea 100644
--- a/app/views/mailer/issue_edit.text.plain.rhtml
+++ b/app/views/mailer/issue_edit.text.plain.rhtml
@@ -5,6 +5,4 @@
<% end %>
<%= @journal.notes if @journal.notes? %>
----------------------------------------
-<%= render :file => "_issue_text_plain", :use_full_path => true, :locals => { :issue => @issue } %>
-----------------------------------------
-<%= Setting.emails_footer %>
+<%= render :file => "_issue_text_plain", :use_full_path => true, :locals => { :issue => @issue, :issue_url => @issue_url } %>
diff --git a/app/views/mailer/layout.text.html.rhtml b/app/views/mailer/layout.text.html.rhtml
new file mode 100644
index 000000000..b78e92bdd
--- /dev/null
+++ b/app/views/mailer/layout.text.html.rhtml
@@ -0,0 +1,17 @@
+<html>
+<head>
+<style>
+body { font-family: Verdana, sans-serif; font-size: 0.8em; color:#484848; }
+body h1 { font-family: "Trebuchet MS", Verdana, sans-serif; font-size: 1.2em; margin: 0;}
+a, a:link, a:visited{ color: #2A5685; }
+a:hover, a:active{ color: #c61a1a; }
+hr { width: 100%; height: 1px; background: #ccc; border: 0; }
+.footer { font-size: 0.8em; font-style: italic; }
+</style>
+</head>
+<body>
+<%= yield %>
+<hr />
+<span class="footer"><%= Redmine::WikiFormatting.to_html(Setting.emails_footer) %></span>
+</body>
+</html>
diff --git a/app/views/mailer/layout.text.plain.rhtml b/app/views/mailer/layout.text.plain.rhtml
new file mode 100644
index 000000000..ec3e1bfa0
--- /dev/null
+++ b/app/views/mailer/layout.text.plain.rhtml
@@ -0,0 +1,3 @@
+<%= yield %>
+----------------------------------------
+<%= Setting.emails_footer %>
diff --git a/app/views/mailer/lost_password.rhtml b/app/views/mailer/lost_password.rhtml
deleted file mode 100644
index 5b5bb3b90..000000000
--- a/app/views/mailer/lost_password.rhtml
+++ /dev/null
@@ -1,5 +0,0 @@
-<%= l(:mail_body_lost_password) %>
-<%= url_for :only_path => false, :host => Setting.host_name, :controller => 'account', :action => 'lost_password', :token => @token.value %>
-
-----------------------------------------
-<%= Setting.emails_footer %>
diff --git a/app/views/mailer/lost_password.text.html.rhtml b/app/views/mailer/lost_password.text.html.rhtml
new file mode 100644
index 000000000..26eacfa92
--- /dev/null
+++ b/app/views/mailer/lost_password.text.html.rhtml
@@ -0,0 +1,2 @@
+<p><%= l(:mail_body_lost_password) %><br />
+<%= auto_link(@url) %></p>
diff --git a/app/views/mailer/lost_password.text.plain.rhtml b/app/views/mailer/lost_password.text.plain.rhtml
new file mode 100644
index 000000000..aec1b5b86
--- /dev/null
+++ b/app/views/mailer/lost_password.text.plain.rhtml
@@ -0,0 +1,2 @@
+<%= l(:mail_body_lost_password) %>
+<%= @url %>
diff --git a/app/views/mailer/message_posted.text.html.rhtml b/app/views/mailer/message_posted.text.html.rhtml
index 89346e724..558a6e52a 100644
--- a/app/views/mailer/message_posted.text.html.rhtml
+++ b/app/views/mailer/message_posted.text.html.rhtml
@@ -1,6 +1,4 @@
-<%=h @message.board.project.name %> - <%=h @message.board.name %>: <%= link_to @message.subject, :only_path => false, :host => Setting.host_name, :controller => 'messages', :action => 'show', :board_id => @message.board_id, :id => @message.root %><br />
+<h1><%=h @message.board.project.name %> - <%=h @message.board.name %>: <%= link_to @message.subject, @message_url %></h1>
<em><%= @message.author.name %></em>
<%= textilizable @message.content %>
-<hr />
-<small><em><%= textilizable Setting.emails_footer %></em></small>
diff --git a/app/views/mailer/message_posted.text.plain.rhtml b/app/views/mailer/message_posted.text.plain.rhtml
index 97539fd01..cc1120567 100644
--- a/app/views/mailer/message_posted.text.plain.rhtml
+++ b/app/views/mailer/message_posted.text.plain.rhtml
@@ -1,6 +1,4 @@
-<%= url_for :only_path => false, :host => Setting.host_name, :controller => 'messages', :action => 'show', :board_id => @message.board_id, :id => @message.root %>
+<%= @message_url %>
<%= @message.author.name %>
<%= @message.content %>
-----------------------------------------
-<%= Setting.emails_footer %>
diff --git a/app/views/mailer/news_added.text.html.rhtml b/app/views/mailer/news_added.text.html.rhtml
index e99dfd5bc..010ef8ee1 100644
--- a/app/views/mailer/news_added.text.html.rhtml
+++ b/app/views/mailer/news_added.text.html.rhtml
@@ -1,6 +1,4 @@
-<%= link_to @news.title, :only_path => false, :host => Setting.host_name, :controller => 'news', :action => 'show', :id => @news %><br />
+<h1><%= link_to @news.title, @news_url %></h1>
<em><%= @news.author.name %></em>
<%= textilizable(@news.description) %>
-<hr />
-<small><em><%= textilizable Setting.emails_footer %></em></small>
diff --git a/app/views/mailer/news_added.text.plain.rhtml b/app/views/mailer/news_added.text.plain.rhtml
index 1a04af9ca..c8ae3035f 100644
--- a/app/views/mailer/news_added.text.plain.rhtml
+++ b/app/views/mailer/news_added.text.plain.rhtml
@@ -1,7 +1,5 @@
<%= @news.title %>
-<%= url_for :only_path => false, :host => Setting.host_name, :controller => 'news', :action => 'show', :id => @news %>
+<%= @news_url %>
<%= @news.author.name %>
<%= @news.description %>
-----------------------------------------
-<%= Setting.emails_footer %>
diff --git a/app/views/mailer/register.rhtml b/app/views/mailer/register.rhtml
deleted file mode 100644
index 55fcf1e10..000000000
--- a/app/views/mailer/register.rhtml
+++ /dev/null
@@ -1,5 +0,0 @@
-<%= l(:mail_body_register) %>
-<%= url_for :only_path => false, :host => Setting.host_name, :controller => 'account', :action => 'register', :token => @token.value %>
-
-----------------------------------------
-<%= Setting.emails_footer %>
diff --git a/app/views/mailer/register.text.html.rhtml b/app/views/mailer/register.text.html.rhtml
new file mode 100644
index 000000000..145c3d7c9
--- /dev/null
+++ b/app/views/mailer/register.text.html.rhtml
@@ -0,0 +1,2 @@
+<p><%= l(:mail_body_register) %><br />
+<%= auto_link(@url) %></p>
diff --git a/app/views/mailer/register.text.plain.rhtml b/app/views/mailer/register.text.plain.rhtml
new file mode 100644
index 000000000..102a15ee3
--- /dev/null
+++ b/app/views/mailer/register.text.plain.rhtml
@@ -0,0 +1,2 @@
+<%= l(:mail_body_register) %>
+<%= @url %>
diff --git a/app/views/mailer/test.text.html.rhtml b/app/views/mailer/test.text.html.rhtml
index f1cb1881a..25ad20c51 100644
--- a/app/views/mailer/test.text.html.rhtml
+++ b/app/views/mailer/test.text.html.rhtml
@@ -1,5 +1,2 @@
<p>This is a test email sent by Redmine.<br />
-Redmine URL: <%= link_to url_for(:only_path => false, :host => Setting.host_name, :controller => 'welcome'),
- url_for(:only_path => false, :host => Setting.host_name, :controller => 'welcome') %></p>
-<hr />
-<small><em><%= textilizable Setting.emails_footer %></em></small>
+Redmine URL: <%= auto_link(@url) %></p>
diff --git a/app/views/mailer/test.text.plain.rhtml b/app/views/mailer/test.text.plain.rhtml
index 0519caab5..790d6ab22 100644
--- a/app/views/mailer/test.text.plain.rhtml
+++ b/app/views/mailer/test.text.plain.rhtml
@@ -1,5 +1,2 @@
This is a test email sent by Redmine.
-Redmine URL: <%= url_for :only_path => false, :host => Setting.host_name, :controller => 'welcome' %>
-
-----------------------------------------
-<%= Setting.emails_footer %>
+Redmine URL: <%= @url %>
diff --git a/app/views/settings/edit.rhtml b/app/views/settings/edit.rhtml
index 503339884..d3f994d4f 100644
--- a/app/views/settings/edit.rhtml
+++ b/app/views/settings/edit.rhtml
@@ -37,6 +37,9 @@
<p><label><%= l(:setting_host_name) %></label>
<%= text_field_tag 'settings[host_name]', Setting.host_name, :size => 60 %></p>
+<p><label><%= l(:setting_protocol) %></label>
+<%= select_tag 'settings[protocol]', options_for_select(['http', 'https'], Setting.protocol) %></p>
+
<p><label><%= l(:setting_text_formatting) %></label>
<%= select_tag 'settings[text_formatting]', options_for_select([[l(:label_none), "0"], ["textile", "textile"]], Setting.text_formatting) %></p>
@@ -91,4 +94,4 @@
<%= submit_tag l(:button_save) %>
</div>
-<% end %> \ No newline at end of file
+<% end %>
diff --git a/config/settings.yml b/config/settings.yml
index ff695cc7c..333203f03 100644
--- a/config/settings.yml
+++ b/config/settings.yml
@@ -47,6 +47,8 @@ default_language:
default: en
host_name:
default: localhost:3000
+protocol:
+ default: http
feeds_limit:
format: int
default: 15
diff --git a/lang/bg.yml b/lang/bg.yml
index 366aa94a3..469792535 100644
--- a/lang/bg.yml
+++ b/lang/bg.yml
@@ -534,3 +534,6 @@ label_user_mail_option_none: "Only for things I watch or I'm involved in"
setting_emails_footer: Emails footer
label_float: Float
button_copy: Copy
+mail_body_account_information_external: You can use your "%s" account to log into Redmine.
+mail_body_account_information: Your Redmine account information
+setting_protocol: Protocol
diff --git a/lang/cs.yml b/lang/cs.yml
index 4f35c8a3b..d62746633 100644
--- a/lang/cs.yml
+++ b/lang/cs.yml
@@ -534,3 +534,6 @@ label_user_mail_option_none: "Only for things I watch or I'm involved in"
setting_emails_footer: Emails footer
label_float: Float
button_copy: Copy
+mail_body_account_information_external: You can use your "%s" account to log into Redmine.
+mail_body_account_information: Your Redmine account information
+setting_protocol: Protocol
diff --git a/lang/de.yml b/lang/de.yml
index 350a86e4c..9a5fcee2b 100644
--- a/lang/de.yml
+++ b/lang/de.yml
@@ -534,3 +534,6 @@ label_user_mail_option_none: "Only for things I watch or I'm involved in"
setting_emails_footer: Emails footer
label_float: Float
button_copy: Copy
+mail_body_account_information_external: You can use your "%s" account to log into Redmine.
+mail_body_account_information: Your Redmine account information
+setting_protocol: Protocol
diff --git a/lang/en.yml b/lang/en.yml
index 4a52d281b..2ab4c11a2 100644
--- a/lang/en.yml
+++ b/lang/en.yml
@@ -80,6 +80,8 @@ mail_subject_lost_password: Your Redmine password
mail_body_lost_password: 'To change your Redmine password, click on the following link:'
mail_subject_register: Redmine account activation
mail_body_register: 'To activate your Redmine account, click on the following link:'
+mail_body_account_information_external: You can use your "%s" account to log into Redmine.
+mail_body_account_information: Your Redmine account information
gui_validation_error: 1 error
gui_validation_error_plural: %d errors
@@ -189,6 +191,7 @@ setting_cross_project_issue_relations: Allow cross-project issue relations
setting_issue_list_default_columns: Default columns displayed on the issue list
setting_repositories_encodings: Repositories encodings
setting_emails_footer: Emails footer
+setting_protocol: Protocol
label_user: User
label_user_plural: Users
diff --git a/lang/es.yml b/lang/es.yml
index 5d1f806c7..e93fb5bd8 100644
--- a/lang/es.yml
+++ b/lang/es.yml
@@ -537,3 +537,6 @@ label_user_mail_option_none: "Only for things I watch or I'm involved in"
setting_emails_footer: Emails footer
label_float: Float
button_copy: Copy
+mail_body_account_information_external: You can use your "%s" account to log into Redmine.
+mail_body_account_information: Your Redmine account information
+setting_protocol: Protocol
diff --git a/lang/fr.yml b/lang/fr.yml
index e5a2b843f..1f35272c1 100644
--- a/lang/fr.yml
+++ b/lang/fr.yml
@@ -80,6 +80,8 @@ mail_subject_lost_password: Votre mot de passe redMine
mail_body_lost_password: 'Pour changer votre mot de passe Redmine, cliquez sur le lien suivant:'
mail_subject_register: Activation de votre compte redMine
mail_body_register: 'Pour activer votre compte Redmine, cliquez sur le lien suivant:'
+mail_body_account_information_external: Vous pouvez utiliser votre compte "%s" pour vous connecter à Redmine.
+mail_body_account_information: Paramètres de connexion de votre compte Redmine
gui_validation_error: 1 erreur
gui_validation_error_plural: %d erreurs
@@ -189,6 +191,7 @@ setting_cross_project_issue_relations: Autoriser les relations entre demandes de
setting_issue_list_default_columns: Colonnes affichées par défaut sur la liste des demandes
setting_repositories_encodings: Encodages des dépôts
setting_emails_footer: Pied-de-page des emails
+setting_protocol: Protocole
label_user: Utilisateur
label_user_plural: Utilisateurs
diff --git a/lang/he.yml b/lang/he.yml
index 206d33093..73f72d5bb 100644
--- a/lang/he.yml
+++ b/lang/he.yml
@@ -534,3 +534,6 @@ label_user_mail_option_none: "Only for things I watch or I'm involved in"
setting_emails_footer: Emails footer
label_float: Float
button_copy: Copy
+mail_body_account_information_external: You can use your "%s" account to log into Redmine.
+mail_body_account_information: Your Redmine account information
+setting_protocol: Protocol
diff --git a/lang/it.yml b/lang/it.yml
index 36475e678..224843e0e 100644
--- a/lang/it.yml
+++ b/lang/it.yml
@@ -534,3 +534,6 @@ label_user_mail_option_none: "Only for things I watch or I'm involved in"
setting_emails_footer: Emails footer
label_float: Float
button_copy: Copy
+mail_body_account_information_external: You can use your "%s" account to log into Redmine.
+mail_body_account_information: Your Redmine account information
+setting_protocol: Protocol
diff --git a/lang/ja.yml b/lang/ja.yml
index 5a3362c21..4ff45f5fb 100644
--- a/lang/ja.yml
+++ b/lang/ja.yml
@@ -535,3 +535,6 @@ label_user_mail_option_none: "Only for things I watch or I'm involved in"
setting_emails_footer: Emails footer
label_float: Float
button_copy: Copy
+mail_body_account_information_external: You can use your "%s" account to log into Redmine.
+mail_body_account_information: Your Redmine account information
+setting_protocol: Protocol
diff --git a/lang/nl.yml b/lang/nl.yml
index 4d9479f32..f43f5a5b9 100644
--- a/lang/nl.yml
+++ b/lang/nl.yml
@@ -535,3 +535,6 @@ label_user_mail_option_none: "Only for things I watch or I'm involved in"
setting_emails_footer: Emails footer
label_float: Float
button_copy: Copy
+mail_body_account_information_external: You can use your "%s" account to log into Redmine.
+mail_body_account_information: Your Redmine account information
+setting_protocol: Protocol
diff --git a/lang/pl.yml b/lang/pl.yml
index 6f8d7f2fc..e636afe5b 100644
--- a/lang/pl.yml
+++ b/lang/pl.yml
@@ -534,3 +534,6 @@ label_user_mail_option_none: "Only for things I watch or I'm involved in"
setting_emails_footer: Emails footer
label_float: Float
button_copy: Copy
+mail_body_account_information_external: Możesz użyć twojego "%s" konta do zalogowania do Redmine.
+mail_body_account_information: Twoje konto w Redmine
+setting_protocol: Protocol
diff --git a/lang/pt-br.yml b/lang/pt-br.yml
index a01793979..707baffcd 100644
--- a/lang/pt-br.yml
+++ b/lang/pt-br.yml
@@ -534,3 +534,6 @@ label_user_mail_option_none: "Only for things I watch or I'm involved in"
setting_emails_footer: Emails footer
label_float: Float
button_copy: Copy
+mail_body_account_information_external: You can use your "%s" account to log into Redmine.
+mail_body_account_information: Your Redmine account information
+setting_protocol: Protocol
diff --git a/lang/pt.yml b/lang/pt.yml
index da919938d..687ab512b 100644
--- a/lang/pt.yml
+++ b/lang/pt.yml
@@ -534,3 +534,6 @@ label_user_mail_option_none: "Only for things I watch or I'm involved in"
setting_emails_footer: Emails footer
label_float: Float
button_copy: Copy
+mail_body_account_information_external: You can use your "%s" account to log into Redmine.
+mail_body_account_information: Your Redmine account information
+setting_protocol: Protocol
diff --git a/lang/ro.yml b/lang/ro.yml
index 732809334..f31bd6f84 100644
--- a/lang/ro.yml
+++ b/lang/ro.yml
@@ -534,3 +534,6 @@ label_user_mail_option_none: "Only for things I watch or I'm involved in"
setting_emails_footer: Emails footer
label_float: Float
button_copy: Copy
+mail_body_account_information_external: You can use your "%s" account to log into Redmine.
+mail_body_account_information: Your Redmine account information
+setting_protocol: Protocol
diff --git a/lang/sr.yml b/lang/sr.yml
index 96cd92734..d95855731 100644
--- a/lang/sr.yml
+++ b/lang/sr.yml
@@ -80,6 +80,8 @@ mail_subject_lost_password: Vaša redMine lozinka
mail_body_lost_password: 'Da biste izmenili vašu Redmine lozinku, kliknite na sledeći link:'
mail_subject_register: aktivacija redMine naloga
mail_body_register: 'Da biste aktivirali vaš Redmine nalog, kliknite na sledeći link:'
+mail_body_account_information_external: Mozete koristiti vas "%s" nalog da bi ste se prikljucili na Redmine.
+mail_body_account_information: Informacije o vasem Redmine nalogu
gui_validation_error: 1 greška
gui_validation_error_plural: %d grešaka
@@ -535,3 +537,4 @@ enumeration_doc_categories: Kategorija dokumenata
enumeration_activities: Aktivnosti (praćenje vremena))
label_float: Float
button_copy: Copy
+setting_protocol: Protocol
diff --git a/lang/sv.yml b/lang/sv.yml
index ae1329db5..0cd4f1a1f 100644
--- a/lang/sv.yml
+++ b/lang/sv.yml
@@ -535,3 +535,6 @@ label_user_mail_option_none: "Only for things I watch or I'm involved in"
setting_emails_footer: Emails footer
label_float: Float
button_copy: Copy
+mail_body_account_information_external: You can use your "%s" account to log into Redmine.
+mail_body_account_information: Your Redmine account information
+setting_protocol: Protocol
diff --git a/lang/zh.yml b/lang/zh.yml
index a7ce17e19..715010922 100644
--- a/lang/zh.yml
+++ b/lang/zh.yml
@@ -537,3 +537,6 @@ label_user_mail_option_none: "Only for things I watch or I'm involved in"
setting_emails_footer: Emails footer
label_float: Float
button_copy: Copy
+mail_body_account_information_external: You can use your "%s" account to log into Redmine.
+mail_body_account_information: Your Redmine account information
+setting_protocol: Protocol
diff --git a/test/fixtures/attachments.yml b/test/fixtures/attachments.yml
index 6c352e1e3..764948755 100644
--- a/test/fixtures/attachments.yml
+++ b/test/fixtures/attachments.yml
@@ -11,3 +11,16 @@ attachments_001:
filesize: 28
filename: error281.txt
author_id: 2
+attachments_002:
+ created_on: 2006-07-19 21:07:27 +02:00
+ downloads: 0
+ content_type: text/plain
+ disk_filename: 060719210727_document.txt
+ container_id: 1
+ digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
+ id: 2
+ container_type: Document
+ filesize: 28
+ filename: document.txt
+ author_id: 2
+ \ No newline at end of file
diff --git a/test/unit/mailer_test.rb b/test/unit/mailer_test.rb
index d92c5837b..096551ee5 100644
--- a/test/unit/mailer_test.rb
+++ b/test/unit/mailer_test.rb
@@ -18,7 +18,7 @@
require File.dirname(__FILE__) + '/../test_helper'
class MailerTest < Test::Unit::TestCase
- fixtures :projects, :issues, :users, :members, :documents, :attachments, :tokens, :journals, :journal_details, :trackers, :issue_statuses, :enumerations
+ fixtures :projects, :issues, :users, :members, :documents, :attachments, :news, :tokens, :journals, :journal_details, :trackers, :issue_statuses, :enumerations
# test mailer methods for each language
def test_issue_add
@@ -37,18 +37,54 @@ class MailerTest < Test::Unit::TestCase
end
end
- def test_document_add
+ def test_document_added
document = Document.find(1)
GLoc.valid_languages.each do |lang|
Setting.default_language = lang.to_s
assert Mailer.deliver_document_added(document)
end
end
+
+ def test_attachments_added
+ attachements = [ Attachment.find_by_container_type('Document') ]
+ GLoc.valid_languages.each do |lang|
+ Setting.default_language = lang.to_s
+ assert Mailer.deliver_attachments_added(attachements)
+ end
+ end
+
+ def test_news_added
+ news = News.find(:first)
+ GLoc.valid_languages.each do |lang|
+ Setting.default_language = lang.to_s
+ assert Mailer.deliver_news_added(news)
+ end
+ end
+
+ def test_message_posted
+ message = Message.find(:first)
+ recipients = ([message.root] + message.root.children).collect {|m| m.author.mail if m.author}
+ recipients = recipients.compact.uniq
+ GLoc.valid_languages.each do |lang|
+ Setting.default_language = lang.to_s
+ assert Mailer.deliver_message_posted(message, recipients)
+ end
+ end
+
+ def test_account_information
+ user = User.find(:first)
+ GLoc.valid_languages.each do |lang|
+ user.update_attribute :language, lang.to_s
+ user.reload
+ assert Mailer.deliver_account_information(user, 'pAsswORd')
+ end
+ end
def test_lost_password
token = Token.find(2)
GLoc.valid_languages.each do |lang|
token.user.update_attribute :language, lang.to_s
+ token.reload
assert Mailer.deliver_lost_password(token)
end
end
@@ -57,7 +93,8 @@ class MailerTest < Test::Unit::TestCase
token = Token.find(1)
GLoc.valid_languages.each do |lang|
token.user.update_attribute :language, lang.to_s
+ token.reload
assert Mailer.deliver_register(token)
end
end
-end \ No newline at end of file
+end