diff options
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 |