2008-07-04 21:58:14 +04:00
2009-12-23 23:55:42 +03:00
require 'active_record'
2009-02-21 14:04:50 +03:00
module ActiveRecord
class Base
include Redmine :: I18n
# Translate attribute names for validation errors display
def self . human_attribute_name ( attr )
l ( " field_ #{ attr . to_s . gsub ( / _id$ / , '' ) } " )
end
end
end
2009-02-22 17:46:32 +03:00
module ActiveRecord
class Errors
def full_messages ( options = { } )
full_messages = [ ]
@errors . each_key do | attr |
@errors [ attr ] . each do | message |
next unless message
if attr == " base "
full_messages << message
elsif attr == " custom_values "
# Replace the generic "custom values is invalid"
# with the errors on custom values
@base . custom_values . each do | value |
value . errors . each do | attr , msg |
full_messages << value . custom_field . name + ' ' + msg
end
end
else
attr_name = @base . class . human_attribute_name ( attr )
2009-09-13 21:14:35 +04:00
full_messages << attr_name + ' ' + message . to_s
2009-02-22 17:46:32 +03:00
end
end
end
full_messages
end
end
end
2009-02-21 14:04:50 +03:00
module ActionView
module Helpers
module DateHelper
# distance_of_time_in_words breaks when difference is greater than 30 years
def distance_of_date_in_words ( from_date , to_date = 0 , options = { } )
from_date = from_date . to_date if from_date . respond_to? ( :to_date )
to_date = to_date . to_date if to_date . respond_to? ( :to_date )
distance_in_days = ( to_date - from_date ) . abs
I18n . with_options :locale = > options [ :locale ] , :scope = > :'datetime.distance_in_words' do | locale |
case distance_in_days
2009-11-07 12:50:16 +03:00
when 0 .. 60 then locale . t :x_days , :count = > distance_in_days . round
2009-02-21 14:04:50 +03:00
when 61 .. 720 then locale . t :about_x_months , :count = > ( distance_in_days / 30 ) . round
2009-11-07 12:50:16 +03:00
else locale . t :over_x_years , :count = > ( distance_in_days / 365 ) . floor
2009-02-21 14:04:50 +03:00
end
end
end
end
end
end
2008-07-04 21:58:14 +04:00
ActionView :: Base . field_error_proc = Proc . new { | html_tag , instance | " #{ html_tag } " }
2009-01-31 14:43:54 +03:00
# Adds :async_smtp and :async_sendmail delivery methods
# to perform email deliveries asynchronously
module AsynchronousMailer
%w( smtp sendmail ) . each do | type |
define_method ( " perform_delivery_async_ #{ type } " ) do | mail |
Thread . start do
send " perform_delivery_ #{ type } " , mail
end
end
end
end
ActionMailer :: Base . send :include , AsynchronousMailer
2010-09-26 21:13:52 +04:00
# TODO: Hack to support i18n 4.x on Rails 2.3.5. Remove post 2.3.6.
# See http://www.redmine.org/issues/6428 and http://www.redmine.org/issues/5608
module I18n
module Backend
module Base
def warn_syntax_deprecation!
return if @skip_syntax_deprecation
warn " The {{key}} interpolation syntax in I18n messages is deprecated. Please use %{key} instead. \n Downgrade your i18n gem to 0.3.7 (everything above must be deinstalled) to remove this warning, see http://www.redmine.org/issues/5608 for more information. "
@skip_syntax_deprecation = true
end
end
end
end