Mercurial > hg > soundsoftware-site
diff config/initializers/.svn/text-base/10-patches.rb.svn-base @ 0:513646585e45
* Import Redmine trunk SVN rev 3859
author | Chris Cannam |
---|---|
date | Fri, 23 Jul 2010 15:52:44 +0100 |
parents | |
children | 94944d00e43c |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/config/initializers/.svn/text-base/10-patches.rb.svn-base Fri Jul 23 15:52:44 2010 +0100 @@ -0,0 +1,80 @@ + +require 'active_record' + +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 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) + full_messages << attr_name + ' ' + message.to_s + end + end + end + full_messages + 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.round + 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).floor + end + end + end + end + end +end + +ActionView::Base.field_error_proc = Proc.new{ |html_tag, instance| "#{html_tag}" } + +# 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