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.
- data/lib/acts_as_seo_friendly.rb +12 -5
- metadata +2 -2
data/lib/acts_as_seo_friendly.rb
CHANGED
@@ -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
|
-
|
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.
|
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:
|
12
|
+
date: 2009-05-14 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|