site_logic 1.6.10 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +1 -0
- data/VERSION +1 -1
- data/app/models/page.rb +39 -36
- data/config/environments/test.rb +4 -0
- data/site_logic.gemspec +5 -2
- metadata +23 -9
data/Gemfile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.7.0
|
data/app/models/page.rb
CHANGED
@@ -1,11 +1,20 @@
|
|
1
1
|
class Page
|
2
|
-
|
3
2
|
include Mongoid::Document
|
4
3
|
include Mongoid::Timestamps
|
5
4
|
include SiteLogic::Base
|
5
|
+
include Tanker
|
6
6
|
|
7
|
-
#
|
7
|
+
# Constants ======================================================================================
|
8
|
+
STATES = ['draft', 'published']
|
9
|
+
|
10
|
+
# Scopes =========================================================================================
|
11
|
+
scope :drafts, :where => {:state => 'draft'}
|
12
|
+
scope :for_sitemap, :where => {:sitemap => true}
|
13
|
+
scope :indexed, :where => {:noindex => false}
|
14
|
+
scope :noindex, :where => {:noindex => true}
|
15
|
+
scope :published, :where => {:state => 'published'}
|
8
16
|
|
17
|
+
# Mongoid ========================================================================================
|
9
18
|
field :slug
|
10
19
|
field :sitemap, :type => Boolean
|
11
20
|
field :noindex, :type => Boolean
|
@@ -17,44 +26,34 @@ class Page
|
|
17
26
|
field :state
|
18
27
|
field :publication_date, :type => DateTime
|
19
28
|
|
20
|
-
# Indices ========================================================================================
|
21
29
|
index :slug, :unique => false
|
22
30
|
index :state, :unique => false
|
23
31
|
|
24
|
-
# Constants ======================================================================================
|
25
|
-
STATES = ['draft', 'published']
|
26
|
-
|
27
|
-
# Scopes ===================================================================================
|
28
|
-
scope :drafts, :where => {:state => 'draft'}
|
29
|
-
scope :published, :where => {:state => 'published'}
|
30
|
-
scope :noindex, :where => {:noindex => true}
|
31
|
-
scope :indexed, :where => {:noindex => false}
|
32
|
-
scope :for_sitemap, :where => {:sitemap => true}
|
33
|
-
|
34
|
-
# Relationships ==================================================================================
|
35
32
|
embedded_in :site, :inverse_of => :pages
|
36
33
|
|
37
34
|
# Behavior =======================================================================================
|
38
|
-
attr_accessor :desired_slug
|
39
35
|
attr_accessor :create_navigation_item
|
36
|
+
attr_accessor :desired_slug
|
40
37
|
has_slug :desired_slug
|
41
38
|
|
42
|
-
#
|
39
|
+
# Tanker =========================================================================================
|
40
|
+
tankit 'idx' do
|
41
|
+
indexes :content
|
42
|
+
indexes :meta_description
|
43
|
+
indexes :meta_keywords
|
44
|
+
indexes :page_title
|
45
|
+
end
|
43
46
|
|
44
|
-
|
47
|
+
after_destroy :delete_tank_indexes
|
48
|
+
after_save :update_tank_indexes
|
45
49
|
|
50
|
+
# Validations ====================================================================================
|
46
51
|
class DesiredSlugPresenceAndUniquenessValidator < ActiveModel::EachValidator
|
47
52
|
def validate_each(object, attribute, value)
|
48
53
|
return unless object.desired_slug
|
49
54
|
if object.site && object.site.pages.map{|p| p.slug unless p == object}.include?(object.desired_slug)
|
50
|
-
object.errors[attribute] << (options[:message] ||
|
55
|
+
object.errors[attribute] << (options[:message] || 'must be unique.')
|
51
56
|
end
|
52
|
-
|
53
|
-
# if object.desired_slug.nil? && object.slug.nil?
|
54
|
-
# object.errors[attribute] << (options[:message] || "cannot be blank.")
|
55
|
-
# elsif object.site && object.site.pages.map{|p| p.slug unless p == object}.include?(object.desired_slug)
|
56
|
-
# object.errors[attribute] << (options[:message] || "must be unique.")
|
57
|
-
# end
|
58
57
|
end
|
59
58
|
end
|
60
59
|
|
@@ -62,24 +61,21 @@ class Page
|
|
62
61
|
validates_presence_of :page_title
|
63
62
|
validates_presence_of :content
|
64
63
|
|
65
|
-
# Class methods ==================================================================================
|
66
|
-
|
67
64
|
# Instance methods ===============================================================================
|
68
|
-
|
69
65
|
def draft?
|
70
66
|
self.state == 'draft' || self.state.nil?
|
71
67
|
end
|
72
68
|
|
73
69
|
def humanize_path
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
70
|
+
self.path
|
71
|
+
end
|
72
|
+
|
73
|
+
def path
|
74
|
+
self.slug == '' ? '/' : "/#{self.slug}/".gsub(/\/\//,'/').gsub(/\/\//,'/')
|
79
75
|
end
|
80
76
|
|
81
77
|
def publish!
|
82
|
-
self.update_attributes
|
78
|
+
self.update_attributes :state => 'published', :publication_date => Time.zone.now
|
83
79
|
end
|
84
80
|
|
85
81
|
def published?
|
@@ -87,7 +83,15 @@ class Page
|
|
87
83
|
end
|
88
84
|
|
89
85
|
def unpublish!
|
90
|
-
self.update_attributes
|
86
|
+
self.update_attributes :state => 'draft', :publication_date => nil
|
87
|
+
end
|
88
|
+
|
89
|
+
def search_description
|
90
|
+
self.meta_description.blank? ? self.content.gsub(/<\/?[^>]*>/, '')[0..199].html_safe : self.meta_description
|
91
|
+
end
|
92
|
+
|
93
|
+
def search_title
|
94
|
+
self.window_title
|
91
95
|
end
|
92
96
|
|
93
97
|
def sitemap
|
@@ -101,5 +105,4 @@ class Page
|
|
101
105
|
def window_title
|
102
106
|
self[:window_title] || self.page_title
|
103
107
|
end
|
104
|
-
|
105
|
-
end
|
108
|
+
end
|
data/config/environments/test.rb
CHANGED
@@ -32,4 +32,8 @@ SiteLogic::Application.configure do
|
|
32
32
|
|
33
33
|
# Print deprecation notices to the stderr
|
34
34
|
config.active_support.deprecation = :stderr
|
35
|
+
|
36
|
+
# tanker gem
|
37
|
+
config.index_tank_url = 'http://:PctyyJitroN8iv@82wog.api.indextank.com'
|
38
|
+
config.tanker_pagination_backend = :kaminari
|
35
39
|
end
|
data/site_logic.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{site_logic}
|
8
|
-
s.version = "1.
|
8
|
+
s.version = "1.7.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Bantik"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-09-01}
|
13
13
|
s.description = %q{An engine for search-engine-optimized content management.}
|
14
14
|
s.email = %q{corey@seologic.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -835,6 +835,7 @@ Gem::Specification.new do |s|
|
|
835
835
|
s.add_runtime_dependency(%q<rmagick>, ["= 2.12.2"])
|
836
836
|
s.add_runtime_dependency(%q<scaffold_logic>, [">= 1.0.3"])
|
837
837
|
s.add_runtime_dependency(%q<SystemTimer>, [">= 0"])
|
838
|
+
s.add_runtime_dependency(%q<tanker>, [">= 0"])
|
838
839
|
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
839
840
|
s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
|
840
841
|
else
|
@@ -847,6 +848,7 @@ Gem::Specification.new do |s|
|
|
847
848
|
s.add_dependency(%q<rmagick>, ["= 2.12.2"])
|
848
849
|
s.add_dependency(%q<scaffold_logic>, [">= 1.0.3"])
|
849
850
|
s.add_dependency(%q<SystemTimer>, [">= 0"])
|
851
|
+
s.add_dependency(%q<tanker>, [">= 0"])
|
850
852
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
851
853
|
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
852
854
|
end
|
@@ -860,6 +862,7 @@ Gem::Specification.new do |s|
|
|
860
862
|
s.add_dependency(%q<rmagick>, ["= 2.12.2"])
|
861
863
|
s.add_dependency(%q<scaffold_logic>, [">= 1.0.3"])
|
862
864
|
s.add_dependency(%q<SystemTimer>, [">= 0"])
|
865
|
+
s.add_dependency(%q<tanker>, [">= 0"])
|
863
866
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
864
867
|
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
865
868
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: site_logic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 1.
|
8
|
+
- 7
|
9
|
+
- 0
|
10
|
+
version: 1.7.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Bantik
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-09-01 00:00:00 -05:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -155,7 +155,7 @@ dependencies:
|
|
155
155
|
type: :runtime
|
156
156
|
version_requirements: *id009
|
157
157
|
- !ruby/object:Gem::Dependency
|
158
|
-
name:
|
158
|
+
name: tanker
|
159
159
|
prerelease: false
|
160
160
|
requirement: &id010 !ruby/object:Gem::Requirement
|
161
161
|
none: false
|
@@ -166,12 +166,26 @@ dependencies:
|
|
166
166
|
segments:
|
167
167
|
- 0
|
168
168
|
version: "0"
|
169
|
-
type: :
|
169
|
+
type: :runtime
|
170
170
|
version_requirements: *id010
|
171
171
|
- !ruby/object:Gem::Dependency
|
172
|
-
name:
|
172
|
+
name: jeweler
|
173
173
|
prerelease: false
|
174
174
|
requirement: &id011 !ruby/object:Gem::Requirement
|
175
|
+
none: false
|
176
|
+
requirements:
|
177
|
+
- - ">="
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
hash: 3
|
180
|
+
segments:
|
181
|
+
- 0
|
182
|
+
version: "0"
|
183
|
+
type: :development
|
184
|
+
version_requirements: *id011
|
185
|
+
- !ruby/object:Gem::Dependency
|
186
|
+
name: rspec
|
187
|
+
prerelease: false
|
188
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
175
189
|
none: false
|
176
190
|
requirements:
|
177
191
|
- - ">="
|
@@ -183,7 +197,7 @@ dependencies:
|
|
183
197
|
- 9
|
184
198
|
version: 1.2.9
|
185
199
|
type: :development
|
186
|
-
version_requirements: *
|
200
|
+
version_requirements: *id012
|
187
201
|
description: An engine for search-engine-optimized content management.
|
188
202
|
email: corey@seologic.com
|
189
203
|
executables: []
|