Merged r2768, r2773, r2774, r2775, r2796 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.8-stable@2882 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
3d0fbea9fd
commit
94488269d1
|
@ -46,6 +46,7 @@ class MessagesController < ApplicationController
|
|||
@message.sticky = params[:message]['sticky']
|
||||
end
|
||||
if request.post? && @message.save
|
||||
call_hook(:controller_messages_new_after_save, { :params => params, :message => @message})
|
||||
attach_files(@message, params[:attachments])
|
||||
redirect_to :action => 'show', :id => @message
|
||||
end
|
||||
|
@ -58,6 +59,7 @@ class MessagesController < ApplicationController
|
|||
@reply.board = @board
|
||||
@topic.children << @reply
|
||||
if !@reply.new_record?
|
||||
call_hook(:controller_messages_reply_after_save, { :params => params, :message => @reply})
|
||||
attach_files(@reply, params[:attachments])
|
||||
end
|
||||
redirect_to :action => 'show', :id => @topic
|
||||
|
|
|
@ -197,6 +197,9 @@ class TimelogController < ApplicationController
|
|||
render_403 and return if @time_entry && !@time_entry.editable_by?(User.current)
|
||||
@time_entry ||= TimeEntry.new(:project => @project, :issue => @issue, :user => User.current, :spent_on => Date.today)
|
||||
@time_entry.attributes = params[:time_entry]
|
||||
|
||||
call_hook(:controller_timelog_edit_before_save, { :params => params, :time_entry => @time_entry })
|
||||
|
||||
if request.post? and @time_entry.save
|
||||
flash[:notice] = l(:notice_successful_update)
|
||||
redirect_back_or_default :action => 'details', :project_id => @time_entry.project
|
||||
|
|
|
@ -82,6 +82,7 @@ class WikiController < ApplicationController
|
|||
@content.author = User.current
|
||||
# if page is new @page.save will also save content, but not if page isn't a new record
|
||||
if (@page.new_record? ? @page.save : @content.save)
|
||||
call_hook(:controller_wiki_edit_after_save, { :params => params, :page => @page})
|
||||
redirect_to :action => 'index', :id => @project, :page => @page.title
|
||||
end
|
||||
end
|
||||
|
|
|
@ -112,6 +112,8 @@ class Changeset < ActiveRecord::Base
|
|||
journal = issue.init_journal(user || User.anonymous, l(:text_status_changed_by_changeset, csettext))
|
||||
issue.status = fix_status
|
||||
issue.done_ratio = done_ratio if done_ratio
|
||||
Redmine::Hook.call_hook(:model_changeset_scan_commit_for_issue_ids_pre_issue_update,
|
||||
{ :changeset => self, :issue => issue })
|
||||
issue.save
|
||||
Mailer.deliver_issue_edit(journal) if Setting.notified_events.include?('issue_updated')
|
||||
end
|
||||
|
|
|
@ -368,9 +368,9 @@ class Query < ActiveRecord::Base
|
|||
Time.now.at_beginning_of_week
|
||||
sql = "#{db_table}.#{db_field} BETWEEN '%s' AND '%s'" % [connection.quoted_date(from), connection.quoted_date(from + 7.days)]
|
||||
when "~"
|
||||
sql = "#{db_table}.#{db_field} LIKE '%#{connection.quote_string(value.first)}%'"
|
||||
sql = "LOWER(#{db_table}.#{db_field}) LIKE '%#{connection.quote_string(value.first.to_s.downcase)}%'"
|
||||
when "!~"
|
||||
sql = "#{db_table}.#{db_field} NOT LIKE '%#{connection.quote_string(value.first)}%'"
|
||||
sql = "LOWER(#{db_table}.#{db_field}) NOT LIKE '%#{connection.quote_string(value.first.to_s.downcase)}%'"
|
||||
end
|
||||
|
||||
return sql
|
||||
|
|
|
@ -24,7 +24,7 @@ xml.feed "xmlns" => "http://www.w3.org/2005/Atom" do
|
|||
xml.email(author.mail) if author.is_a?(User) && !author.mail.blank? && !author.pref.hide_mail
|
||||
end if author
|
||||
xml.content "type" => "html" do
|
||||
xml.text! textilizable(item.event_description)
|
||||
xml.text! textilizable(item, :event_description, :only_path => false)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -23,7 +23,7 @@ xml.feed "xmlns" => "http://www.w3.org/2005/Atom" do
|
|||
xml.text! '<li>' + show_detail(detail, false) + '</li>'
|
||||
end
|
||||
xml.text! '</ul>'
|
||||
xml.text! textilizable(change.notes) unless change.notes.blank?
|
||||
xml.text! textilizable(change, :notes, :only_path => false) unless change.notes.blank?
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -11,8 +11,10 @@ http://www.redmine.org/
|
|||
* 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 links for wiki pages are not correct
|
||||
* Fixed: Atom feeds leak email address
|
||||
* Fixed: Case sensitivity in Issue filtering
|
||||
* Fixed: When reading RSS feed, the inline-embedded images are not properly shown
|
||||
|
||||
|
||||
== 2009-05-17 v0.8.4
|
||||
|
|
|
@ -109,4 +109,16 @@ attachments_009:
|
|||
filename: version_file.zip
|
||||
author_id: 2
|
||||
content_type: application/octet-stream
|
||||
attachments_010:
|
||||
created_on: 2006-07-19 21:07:27 +02:00
|
||||
container_type: Issue
|
||||
container_id: 2
|
||||
downloads: 0
|
||||
disk_filename: 060719210727_picture.jpg
|
||||
digest: b91e08d0cf966d5c6ff411bd8c4cc3a2
|
||||
id: 10
|
||||
filesize: 452
|
||||
filename: picture.jpg
|
||||
author_id: 2
|
||||
content_type: image/jpeg
|
||||
|
|
@ -13,4 +13,11 @@ journals_002:
|
|||
journalized_type: Issue
|
||||
user_id: 2
|
||||
journalized_id: 1
|
||||
journals_003:
|
||||
created_on: <%= 1.days.ago.to_date.to_s(:db) %>
|
||||
notes: "A comment with inline image: !picture.jpg!"
|
||||
id: 3
|
||||
journalized_type: Issue
|
||||
user_id: 2
|
||||
journalized_id: 2
|
||||
|
|
@ -255,6 +255,14 @@ class IssuesControllerTest < Test::Unit::TestCase
|
|||
:child => { :tag => 'legend',
|
||||
:content => /Notes/ } }
|
||||
end
|
||||
|
||||
def test_show_atom
|
||||
get :show, :id => 2, :format => 'atom'
|
||||
assert_response :success
|
||||
assert_template 'changes'
|
||||
# Inline image
|
||||
assert @response.body.include?("<img src=\"http://test.host/attachments/download/10\" alt=\"\" />")
|
||||
end
|
||||
|
||||
def test_show_export_to_pdf
|
||||
get :show, :id => 3, :format => 'pdf'
|
||||
|
|
|
@ -150,15 +150,17 @@ class QueryTest < Test::Unit::TestCase
|
|||
|
||||
def test_operator_contains
|
||||
query = Query.new(:project => Project.find(1), :name => '_')
|
||||
query.add_filter('subject', '~', ['string'])
|
||||
assert query.statement.include?("#{Issue.table_name}.subject LIKE '%string%'")
|
||||
find_issues_with_query(query)
|
||||
query.add_filter('subject', '~', ['uNable'])
|
||||
assert query.statement.include?("LOWER(#{Issue.table_name}.subject) LIKE '%unable%'")
|
||||
result = find_issues_with_query(query)
|
||||
assert result.empty?
|
||||
result.each {|issue| assert issue.subject.downcase.include?('unable') }
|
||||
end
|
||||
|
||||
def test_operator_does_not_contains
|
||||
query = Query.new(:project => Project.find(1), :name => '_')
|
||||
query.add_filter('subject', '!~', ['string'])
|
||||
assert query.statement.include?("#{Issue.table_name}.subject NOT LIKE '%string%'")
|
||||
query.add_filter('subject', '!~', ['uNable'])
|
||||
assert query.statement.include?("LOWER(#{Issue.table_name}.subject) NOT LIKE '%unable%'")
|
||||
find_issues_with_query(query)
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue