mirror of
https://github.com/meineerde/redmine.git
synced 2025-12-19 23:11:12 +00:00
Merged r2797, r2804, r2814, r2820, r2837, r2838 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.8-stable@2881 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
3d68b60063
commit
3d0fbea9fd
@ -65,6 +65,7 @@ class NewsController < ApplicationController
|
|||||||
flash[:notice] = l(:label_comment_added)
|
flash[:notice] = l(:label_comment_added)
|
||||||
redirect_to :action => 'show', :id => @news
|
redirect_to :action => 'show', :id => @news
|
||||||
else
|
else
|
||||||
|
show
|
||||||
render :action => 'show'
|
render :action => 'show'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -385,7 +385,7 @@ module ApplicationHelper
|
|||||||
# export:some/file -> Force the download of the file
|
# export:some/file -> Force the download of the file
|
||||||
# Forum messages:
|
# Forum messages:
|
||||||
# message#1218 -> Link to message with id 1218
|
# message#1218 -> Link to message with id 1218
|
||||||
text = text.gsub(%r{([\s\(,\-\>]|^)(!)?(attachment|document|version|commit|source|export|message)?((#|r)(\d+)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]]\W)|\s|<|$)}) do |m|
|
text = text.gsub(%r{([\s\(,\-\>]|^)(!)?(attachment|document|version|commit|source|export|message)?((#|r)(\d+)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]]\W)|,|\s|<|$)}) do |m|
|
||||||
leading, esc, prefix, sep, oid = $1, $2, $3, $5 || $7, $6 || $8
|
leading, esc, prefix, sep, oid = $1, $2, $3, $5 || $7, $6 || $8
|
||||||
link = nil
|
link = nil
|
||||||
if esc.nil?
|
if esc.nil?
|
||||||
|
|||||||
@ -168,7 +168,7 @@ class MailHandler < ActionMailer::Base
|
|||||||
@keywords[attr]
|
@keywords[attr]
|
||||||
else
|
else
|
||||||
@keywords[attr] = begin
|
@keywords[attr] = begin
|
||||||
if (options[:override] || @@handler_options[:allow_override].include?(attr.to_s)) && plain_text_body.gsub!(/^#{attr}:[ \t]*(.+)\s*$/i, '')
|
if (options[:override] || @@handler_options[:allow_override].include?(attr.to_s)) && plain_text_body.gsub!(/^#{attr}[ \t]*:[ \t]*(.+)\s*$/i, '')
|
||||||
$1.strip
|
$1.strip
|
||||||
elsif !@@handler_options[:issue][attr].blank?
|
elsif !@@handler_options[:issue][attr].blank?
|
||||||
@@handler_options[:issue][attr]
|
@@handler_options[:issue][attr]
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<% @issues.each do |issue| -%>
|
<% @issues.each do |issue| -%>
|
||||||
<li><%=h "#{issue.project} - #{issue.tracker} ##{issue.id}: #{issue.subject}" %></li>
|
<li><%=h issue.project %> - <%=link_to("#{issue.tracker} ##{issue.id}", :controller => 'issues', :action => 'show', :id => issue, :only_path => false)%>: <%=h issue.subject %></li>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|||||||
@ -20,11 +20,11 @@
|
|||||||
<% unless @pages.empty? %>
|
<% unless @pages.empty? %>
|
||||||
<p class="other-formats">
|
<p class="other-formats">
|
||||||
<%= l(:label_export_to) %>
|
<%= l(:label_export_to) %>
|
||||||
<span><%= link_to 'Atom', {:controller => 'projects', :action => 'activity', :id => @project, :show_wiki_pages => 1, :format => 'atom', :key => User.current.rss_key}, :class => 'feed' %></span>
|
<span><%= link_to 'Atom', {:controller => 'projects', :action => 'activity', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key}, :class => 'feed' %></span>
|
||||||
<span><%= link_to 'HTML', {:action => 'special', :page => 'export'}, :class => 'html' %></span>
|
<span><%= link_to 'HTML', {:action => 'special', :page => 'export'}, :class => 'html' %></span>
|
||||||
</p>
|
</p>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% content_for :header_tags do %>
|
<% content_for :header_tags do %>
|
||||||
<%= auto_discovery_link_tag(:atom, :controller => 'projects', :action => 'activity', :id => @project, :show_wiki_pages => 1, :format => 'atom', :key => User.current.rss_key) %>
|
<%= auto_discovery_link_tag(:atom, :controller => 'projects', :action => 'activity', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@ -13,11 +13,11 @@
|
|||||||
<% unless @pages.empty? %>
|
<% unless @pages.empty? %>
|
||||||
<p class="other-formats">
|
<p class="other-formats">
|
||||||
<%= l(:label_export_to) %>
|
<%= l(:label_export_to) %>
|
||||||
<span><%= link_to 'Atom', {:controller => 'projects', :action => 'activity', :id => @project, :show_wiki_pages => 1, :format => 'atom', :key => User.current.rss_key}, :class => 'feed' %></span>
|
<span><%= link_to 'Atom', {:controller => 'projects', :action => 'activity', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key}, :class => 'feed' %></span>
|
||||||
<span><%= link_to 'HTML', {:action => 'special', :page => 'export'} %></span>
|
<span><%= link_to 'HTML', {:action => 'special', :page => 'export'} %></span>
|
||||||
</p>
|
</p>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% content_for :header_tags do %>
|
<% content_for :header_tags do %>
|
||||||
<%= auto_discovery_link_tag(:atom, :controller => 'projects', :action => 'activity', :id => @project, :show_wiki_pages => 1, :format => 'atom', :key => User.current.rss_key) %>
|
<%= auto_discovery_link_tag(:atom, :controller => 'projects', :action => 'activity', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@ -7,6 +7,11 @@ http://www.redmine.org/
|
|||||||
|
|
||||||
== 2009-xx-xx v0.8.5
|
== 2009-xx-xx v0.8.5
|
||||||
|
|
||||||
|
* Incoming mail handler : Allow spaces between keywords and colon
|
||||||
|
* Do not require a non-word character after a comma in Redmine links
|
||||||
|
* Include issue hyperlinks in reminder emails
|
||||||
|
* Fixed: 500 Internal Server Error is raised if add an empty comment to the news
|
||||||
|
* Fixes: Atom links for wiki pages are not correct
|
||||||
* Fixed: Atom feeds leak email address
|
* Fixed: Atom feeds leak email address
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
43
test/fixtures/mail_handler/ticket_with_spaces_between_attribute_and_separator.eml
vendored
Normal file
43
test/fixtures/mail_handler/ticket_with_spaces_between_attribute_and_separator.eml
vendored
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
Return-Path: <jsmith@somenet.foo>
|
||||||
|
Received: from osiris ([127.0.0.1])
|
||||||
|
by OSIRIS
|
||||||
|
with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200
|
||||||
|
Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris>
|
||||||
|
From: "John Smith" <jsmith@somenet.foo>
|
||||||
|
To: <redmine@somenet.foo>
|
||||||
|
Subject: New ticket on a given project
|
||||||
|
Date: Sun, 22 Jun 2008 12:28:07 +0200
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain;
|
||||||
|
format=flowed;
|
||||||
|
charset="iso-8859-1";
|
||||||
|
reply-type=original
|
||||||
|
Content-Transfer-Encoding: 7bit
|
||||||
|
X-Priority: 3
|
||||||
|
X-MSMail-Priority: Normal
|
||||||
|
X-Mailer: Microsoft Outlook Express 6.00.2900.2869
|
||||||
|
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869
|
||||||
|
|
||||||
|
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas imperdiet
|
||||||
|
turpis et odio. Integer eget pede vel dolor euismod varius. Phasellus
|
||||||
|
blandit eleifend augue. Nulla facilisi. Duis id diam. Class aptent taciti
|
||||||
|
sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In
|
||||||
|
in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras
|
||||||
|
sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum
|
||||||
|
id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus
|
||||||
|
eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique
|
||||||
|
sed, mauris. Pellentesque habitant morbi tristique senectus et netus et
|
||||||
|
malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse
|
||||||
|
platea dictumst.
|
||||||
|
|
||||||
|
Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque
|
||||||
|
sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem.
|
||||||
|
Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et,
|
||||||
|
dictum et, ligula. Sed erat nibh, gravida in, accumsan non, placerat sed,
|
||||||
|
massa. Sed sodales, ante fermentum ultricies sollicitudin, massa leo
|
||||||
|
pulvinar dui, a gravida orci mi eget odio. Nunc a lacus.
|
||||||
|
|
||||||
|
Project : onlinestore
|
||||||
|
Tracker: Feature request
|
||||||
|
category : Stock management
|
||||||
|
priority: Urgent
|
||||||
@ -118,6 +118,15 @@ class NewsControllerTest < Test::Unit::TestCase
|
|||||||
assert_equal User.find(2), comment.author
|
assert_equal User.find(2), comment.author
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_empty_comment_should_not_be_added
|
||||||
|
@request.session[:user_id] = 2
|
||||||
|
assert_no_difference 'Comment.count' do
|
||||||
|
post :add_comment, :id => 1, :comment => { :comments => '' }
|
||||||
|
assert_response :success
|
||||||
|
assert_template 'show'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def test_destroy_comment
|
def test_destroy_comment
|
||||||
comments_count = News.find(1).comments.size
|
comments_count = News.find(1).comments.size
|
||||||
@request.session[:user_id] = 2
|
@request.session[:user_id] = 2
|
||||||
|
|||||||
@ -122,6 +122,8 @@ class ApplicationHelperTest < HelperTestCase
|
|||||||
|
|
||||||
changeset_link = link_to('r1', {:controller => 'repositories', :action => 'revision', :id => 'ecookbook', :rev => 1},
|
changeset_link = link_to('r1', {:controller => 'repositories', :action => 'revision', :id => 'ecookbook', :rev => 1},
|
||||||
:class => 'changeset', :title => 'My very first commit')
|
:class => 'changeset', :title => 'My very first commit')
|
||||||
|
changeset_link2 = link_to('r2', {:controller => 'repositories', :action => 'revision', :id => 'ecookbook', :rev => 2},
|
||||||
|
:class => 'changeset', :title => 'This commit fixes #1, #2 and references #1 & #3')
|
||||||
|
|
||||||
document_link = link_to('Test document', {:controller => 'documents', :action => 'show', :id => 1},
|
document_link = link_to('Test document', {:controller => 'documents', :action => 'show', :id => 1},
|
||||||
:class => 'document')
|
:class => 'document')
|
||||||
@ -139,6 +141,9 @@ class ApplicationHelperTest < HelperTestCase
|
|||||||
'#3, #3 and #3.' => "#{issue_link}, #{issue_link} and #{issue_link}.",
|
'#3, #3 and #3.' => "#{issue_link}, #{issue_link} and #{issue_link}.",
|
||||||
# changesets
|
# changesets
|
||||||
'r1' => changeset_link,
|
'r1' => changeset_link,
|
||||||
|
'r1.' => "#{changeset_link}.",
|
||||||
|
'r1, r2' => "#{changeset_link}, #{changeset_link2}",
|
||||||
|
'r1,r2' => "#{changeset_link},#{changeset_link2}",
|
||||||
# documents
|
# documents
|
||||||
'document#1' => document_link,
|
'document#1' => document_link,
|
||||||
'document:"Test document"' => document_link,
|
'document:"Test document"' => document_link,
|
||||||
|
|||||||
@ -92,6 +92,21 @@ class MailHandlerTest < Test::Unit::TestCase
|
|||||||
assert issue.description.include?('Lorem ipsum dolor sit amet, consectetuer adipiscing elit.')
|
assert issue.description.include?('Lorem ipsum dolor sit amet, consectetuer adipiscing elit.')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_add_issue_with_spaces_between_attribute_and_separator
|
||||||
|
issue = submit_email('ticket_with_spaces_between_attribute_and_separator.eml', :allow_override => 'tracker,category,priority')
|
||||||
|
assert issue.is_a?(Issue)
|
||||||
|
assert !issue.new_record?
|
||||||
|
issue.reload
|
||||||
|
assert_equal 'New ticket on a given project', issue.subject
|
||||||
|
assert_equal User.find_by_login('jsmith'), issue.author
|
||||||
|
assert_equal Project.find(2), issue.project
|
||||||
|
assert_equal 'Feature request', issue.tracker.to_s
|
||||||
|
assert_equal 'Stock management', issue.category.to_s
|
||||||
|
assert_equal 'Urgent', issue.priority.to_s
|
||||||
|
assert issue.description.include?('Lorem ipsum dolor sit amet, consectetuer adipiscing elit.')
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
def test_add_issue_with_attachment_to_specific_project
|
def test_add_issue_with_attachment_to_specific_project
|
||||||
issue = submit_email('ticket_with_attachment.eml', :issue => {:project => 'onlinestore'})
|
issue = submit_email('ticket_with_attachment.eml', :issue => {:project => 'onlinestore'})
|
||||||
assert issue.is_a?(Issue)
|
assert issue.is_a?(Issue)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user