annotate config/initializers/10-patches.rb @ 1477:f2ad2199b49a bibplugin_integration

Close obsolete branch bibplugin_integration
author Chris Cannam
date Fri, 30 Nov 2012 14:41:31 +0000
parents cbb26bc654de
children 433d4f72a19b
rev   line source
Chris@0 1
Chris@0 2 require 'active_record'
Chris@0 3
Chris@0 4 module ActiveRecord
Chris@0 5 class Base
Chris@0 6 include Redmine::I18n
Chris@909 7
Chris@0 8 # Translate attribute names for validation errors display
Chris@0 9 def self.human_attribute_name(attr)
Chris@507 10 l("field_#{attr.to_s.gsub(/_id$/, '')}", :default => attr)
Chris@0 11 end
Chris@0 12 end
Chris@0 13 end
Chris@0 14
Chris@0 15 module ActiveRecord
Chris@0 16 class Errors
Chris@0 17 def full_messages(options = {})
Chris@0 18 full_messages = []
Chris@0 19
Chris@0 20 @errors.each_key do |attr|
Chris@0 21 @errors[attr].each do |message|
Chris@0 22 next unless message
Chris@0 23
Chris@0 24 if attr == "base"
Chris@0 25 full_messages << message
Chris@0 26 elsif attr == "custom_values"
Chris@0 27 # Replace the generic "custom values is invalid"
Chris@0 28 # with the errors on custom values
Chris@0 29 @base.custom_values.each do |value|
Chris@0 30 value.errors.each do |attr, msg|
Chris@0 31 full_messages << value.custom_field.name + ' ' + msg
Chris@0 32 end
Chris@0 33 end
Chris@0 34 else
Chris@0 35 attr_name = @base.class.human_attribute_name(attr)
Chris@0 36 full_messages << attr_name + ' ' + message.to_s
Chris@0 37 end
Chris@0 38 end
Chris@0 39 end
Chris@0 40 full_messages
Chris@0 41 end
Chris@0 42 end
Chris@0 43 end
Chris@0 44
Chris@0 45 module ActionView
Chris@0 46 module Helpers
Chris@0 47 module DateHelper
Chris@0 48 # distance_of_time_in_words breaks when difference is greater than 30 years
Chris@0 49 def distance_of_date_in_words(from_date, to_date = 0, options = {})
Chris@0 50 from_date = from_date.to_date if from_date.respond_to?(:to_date)
Chris@0 51 to_date = to_date.to_date if to_date.respond_to?(:to_date)
Chris@0 52 distance_in_days = (to_date - from_date).abs
Chris@0 53
Chris@0 54 I18n.with_options :locale => options[:locale], :scope => :'datetime.distance_in_words' do |locale|
Chris@0 55 case distance_in_days
Chris@0 56 when 0..60 then locale.t :x_days, :count => distance_in_days.round
Chris@0 57 when 61..720 then locale.t :about_x_months, :count => (distance_in_days / 30).round
Chris@0 58 else locale.t :over_x_years, :count => (distance_in_days / 365).floor
Chris@0 59 end
Chris@0 60 end
Chris@0 61 end
Chris@0 62 end
Chris@0 63 end
Chris@0 64 end
Chris@0 65
Chris@0 66 ActionView::Base.field_error_proc = Proc.new{ |html_tag, instance| "#{html_tag}" }
Chris@0 67
Chris@0 68 module AsynchronousMailer
Chris@909 69 # Adds :async_smtp and :async_sendmail delivery methods
Chris@909 70 # to perform email deliveries asynchronously
Chris@0 71 %w(smtp sendmail).each do |type|
Chris@0 72 define_method("perform_delivery_async_#{type}") do |mail|
Chris@0 73 Thread.start do
Chris@0 74 send "perform_delivery_#{type}", mail
Chris@909 75 end
Chris@0 76 end
Chris@0 77 end
Chris@909 78
Chris@909 79 # Adds a delivery method that writes emails in tmp/emails for testing purpose
Chris@909 80 def perform_delivery_tmp_file(mail)
Chris@909 81 dest_dir = File.join(Rails.root, 'tmp', 'emails')
Chris@909 82 Dir.mkdir(dest_dir) unless File.directory?(dest_dir)
Chris@909 83 File.open(File.join(dest_dir, mail.message_id.gsub(/[<>]/, '') + '.eml'), 'wb') {|f| f.write(mail.encoded) }
Chris@909 84 end
Chris@0 85 end
Chris@0 86
Chris@0 87 ActionMailer::Base.send :include, AsynchronousMailer
chris@37 88
Chris@245 89 module TMail
Chris@909 90 # TMail::Unquoter.convert_to_with_fallback_on_iso_8859_1 introduced in TMail 1.2.7
Chris@909 91 # triggers a test failure in test_add_issue_with_japanese_keywords(MailHandlerTest)
Chris@245 92 class Unquoter
Chris@245 93 class << self
Chris@245 94 alias_method :convert_to, :convert_to_without_fallback_on_iso_8859_1
chris@37 95 end
chris@37 96 end
Chris@909 97
Chris@909 98 # Patch for TMail 1.2.7. See http://www.redmine.org/issues/8751
Chris@909 99 class Encoder
Chris@909 100 def puts_meta(str)
Chris@909 101 add_text str
Chris@909 102 end
Chris@909 103 end
chris@37 104 end
Chris@119 105
Chris@119 106 module ActionController
Chris@119 107 module MimeResponds
Chris@119 108 class Responder
Chris@119 109 def api(&block)
Chris@119 110 any(:xml, :json, &block)
Chris@119 111 end
Chris@119 112 end
Chris@119 113 end
Chris@119 114 end