acts_as_page 0.0.3 → 0.0.4

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/lib/acts_as_page.rb CHANGED
@@ -1,17 +1,21 @@
1
1
  require 'globalize3'
2
2
  require 'friendly_id'
3
3
  require 'models/page_part'
4
+ require 'acts_as_page/part_composition'
5
+ require 'acts_as_page/home_page'
6
+ require 'acts_as_page/search_with_globalize'
4
7
 
5
8
  module ActsAsPage
6
9
  def self.included(base)
7
10
  base.extend ClassMethods
11
+ base.extend SearchWithGlobalize
12
+ base.extend HomePage
8
13
  end
9
14
 
10
15
  module ClassMethods
11
16
  def acts_as_page
12
17
  extend FriendlyId
13
- has_many :parts, class_name: 'PagePart'
14
-
18
+ include PartComposition
15
19
  validates :title, presence: true, uniqueness: true
16
20
 
17
21
  attr_accessible :title, :home, :meta_keywords, :meta_description
@@ -19,32 +23,6 @@ module ActsAsPage
19
23
 
20
24
  friendly_id :title, use: [:slugged, :globalize]
21
25
  end
22
-
23
- def set_home_page(model)
24
- model.class.update_all(home: false)
25
- model.update_attribute(:home, true)
26
- end
27
-
28
- #solution take from https://github.com/refinery/refinerycms/blob/2-0-stable/pages/app/models/refinery/page.rb#L149-L159
29
- def with_globalize(conditions = {})
30
- conditions = {locale: ::Globalize.locale.to_s}.merge(conditions)
31
- globalized_conditions = {}
32
- conditions.keys.each do |key|
33
- if (translated_attribute_names.map(&:to_s) | %w(locale)).include?(key.to_s)
34
- globalized_conditions["#{self.translation_class.table_name}.#{key}"] = conditions.delete(key)
35
- end
36
- end
37
- joins(:translations).where(globalized_conditions).where(conditions).readonly(false)
38
- end
39
- end
40
-
41
- def method_missing(name)
42
- part = parts.with_globalize(title: name.to_s.downcase.underscore).first
43
- if part
44
- return part.body
45
- else
46
- super(name)
47
- end
48
26
  end
49
27
  end
50
28
 
@@ -0,0 +1,6 @@
1
+ module HomePage
2
+ def set_home_page(model)
3
+ model.class.update_all(home: false)
4
+ model.update_attribute(:home, true)
5
+ end
6
+ end
@@ -0,0 +1,31 @@
1
+ module PartComposition
2
+ def self.included(model_class)
3
+ model_class.class_eval do
4
+ has_many :parts, class_name: 'PagePart'
5
+ end
6
+ end
7
+
8
+ def method_missing(name, *args)
9
+ title = name.to_s.downcase.underscore
10
+ if title.end_with?('=')
11
+ return update_part(title, args.first)
12
+ else
13
+ part = find_part(title)
14
+ if part
15
+ return part.body
16
+ else
17
+ super(name, *args)
18
+ end
19
+ end
20
+ end
21
+
22
+ private
23
+ def update_part(title, attribute)
24
+ part = find_part(title.chop)
25
+ return part.update_attribute(:body, attribute)
26
+ end
27
+
28
+ def find_part(title)
29
+ parts.with_globalize(title: title).first
30
+ end
31
+ end
@@ -0,0 +1,13 @@
1
+ module SearchWithGlobalize
2
+ #solution take from https://github.com/refinery/refinerycms/blob/2-0-stable/pages/app/models/refinery/page.rb#L149-L159
3
+ def with_globalize(conditions = {})
4
+ conditions = {locale: ::Globalize.locale.to_s}.merge(conditions)
5
+ globalized_conditions = {}
6
+ conditions.keys.each do |key|
7
+ if (translated_attribute_names.map(&:to_s) | %w(locale)).include?(key.to_s)
8
+ globalized_conditions["#{self.translation_class.table_name}.#{key}"] = conditions.delete(key)
9
+ end
10
+ end
11
+ joins(:translations).where(globalized_conditions).where(conditions).readonly(false)
12
+ end
13
+ end
@@ -1,3 +1,3 @@
1
1
  module ActsAsPage
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_page
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-12 00:00:00.000000000 Z
12
+ date: 2013-04-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -115,7 +115,10 @@ extensions: []
115
115
  extra_rdoc_files: []
116
116
  files:
117
117
  - lib/tasks/acts_as_page_tasks.rake
118
+ - lib/acts_as_page/search_with_globalize.rb
119
+ - lib/acts_as_page/part_composition.rb
118
120
  - lib/acts_as_page/version.rb
121
+ - lib/acts_as_page/home_page.rb
119
122
  - lib/acts_as_page.rb
120
123
  - lib/models/page_part.rb
121
124
  - MIT-LICENSE