10-patches.rb
50 lines
| 1.6 KiB
| text/x-ruby
|
RubyLexer
|
r1609 | |||
|
r2430 | require 'activerecord' | ||
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 | ||||
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 | ||||
when 0..60 then locale.t :x_days, :count => distance_in_days | ||||
when 61..720 then locale.t :about_x_months, :count => (distance_in_days / 30).round | ||||
else locale.t :over_x_years, :count => (distance_in_days / 365).round | ||||
end | ||||
end | ||||
end | ||||
end | ||||
end | ||||
end | ||||
|
r1609 | |||
ActionView::Base.field_error_proc = Proc.new{ |html_tag, instance| "#{html_tag}" } | ||||
|
r2337 | |||
# 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 | ||||