revolutionhealth-acts_as_seo_friendly 1.1.3 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/acts_as_seo_friendly.rb +12 -5
  2. metadata +2 -2
@@ -28,7 +28,13 @@ module ActiveRecord
28
28
  options = {:seo_friendly_id_field => :seo_friendly_id, :seo_friendly_id_limit => 50}.merge(options)
29
29
  write_inheritable_attribute(:seo_friendly_options, options)
30
30
 
31
- after_save :create_seo_friendly_id
31
+ if options[:do_before_create]
32
+ before_create :create_seo_friendly_id
33
+ elsif options[:do_before_save]
34
+ before_save :create_seo_friendly_id
35
+ else
36
+ after_save :create_seo_friendly_id
37
+ end
32
38
  to_param_with(read_inheritable_attribute(:seo_friendly_options)[:seo_friendly_id_field])
33
39
 
34
40
  if !self.included_modules.include?(ActiveRecord::Acts::SeoFriendly::InstanceMethods)
@@ -50,9 +56,7 @@ module ActiveRecord
50
56
  end
51
57
  end
52
58
 
53
-
54
59
  module InstanceMethods
55
- private
56
60
 
57
61
  INITITAL_SEO_UNIQUE_DIGITS = 4 # initially allow for 1000 collisions..
58
62
 
@@ -70,13 +74,13 @@ module ActiveRecord
70
74
  return if resource_id_value.blank?
71
75
 
72
76
  seo_id_value = create_seo_friendly_str(resource_id_value)
77
+ seo_id_value = self.class.read_inheritable_attribute(:seo_friendly_options)[:use_if_empty] || "" if seo_id_value.blank?
73
78
 
74
79
  return if (self[seo_id_field] =~ /^#{seo_id_value}$/) || (self[seo_id_field] =~ /^#{seo_id_value}\-\d+$/)
75
80
 
76
81
  self.class.transaction do
77
82
  unique_id = determine_unique_id(seo_id_field, count_seo_id_field, count_seo_id_field_N, seo_id_value)
78
83
  seo_field_value = "#{seo_id_value}" + (unique_id != nil ? "-#{unique_id}" : "")
79
-
80
84
  seo_friendly_id_limit = self.class.read_inheritable_attribute(:seo_friendly_options)[:seo_friendly_id_limit].to_i
81
85
 
82
86
  if seo_field_value.size > seo_friendly_id_limit
@@ -135,8 +139,11 @@ module ActiveRecord
135
139
 
136
140
  def create_seo_friendly_str(str, digits = INITITAL_SEO_UNIQUE_DIGITS)
137
141
  s = str.dup
142
+ s.gsub!("“", "")
143
+ s.gsub!("”", "")
144
+ s.gsub!("’", "")
138
145
  s.gsub!(/\'/, '')
139
- s.gsub!(/\W+/, ' ')
146
+ s.gsub!(/\W+/, ' ')
140
147
  s.strip!
141
148
  s.downcase!
142
149
  s.gsub!(/\ +/, '-')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: revolutionhealth-acts_as_seo_friendly
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Revolution Health
@@ -9,7 +9,7 @@ autorequire: acts_as_seo_friendly
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-06-23 00:00:00 -07:00
12
+ date: 2009-05-14 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15