fullstack-cms 0.3.39 → 0.4.1

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.39
1
+ 0.4.1
@@ -1,19 +1,13 @@
1
1
  module SettingsHelper
2
-
3
- # eg.
4
- # setting("blog/per_page", 20, :kind => :integer)
5
- def setting(namespaced_key, *args)
6
- namespace_separator = "/"
7
-
8
- opts = args.extract_options!
9
- value = args.first
10
- namespaced_key = namespaced_key.to_s
11
- group, key = namespaced_key.include?(namespace_separator) ? namespaced_key.split(namespace_separator) : [nil, namespaced_key]
12
-
13
- s = Setting.global("#{key}", :autocreate => false, :default => value, :group => group, :options => opts[:options], :locale => ((Fullstack::Cms.localized == false || opts[:locale] == false) ? nil : I18n.locale.to_s))
14
-
2
+
3
+ #
4
+ # setting( 'footer/heading', Settings.app.title )
5
+ #
6
+
7
+ def setting(*args)
8
+ Setting.get(*args)
15
9
  end
16
-
10
+
17
11
  alias :get_setting :setting
18
12
 
19
13
  end
@@ -47,34 +47,22 @@ class Setting < ActiveRecord::Base
47
47
  self.send("#{setting_kind}_value")
48
48
  end
49
49
 
50
- # examples
51
- #
52
- # Setting.get("contacts/registrant", :default => "[ none ]")
53
- # Setting.get( :registrant, :group => :contacts )
54
- # Setting.get( "address", :of => @user )
55
-
56
- def self.get(key, opts = {})
57
- key = key.to_s
58
- gk = key.split("/")
59
50
 
60
- group = nil
61
- if gk.size == 1
62
- group = opts.delete(:group)
63
- key = gk.first
64
- else
65
- group, key = gk
51
+ def self.get(*args)
52
+ cached_settings = Rails.cache.read('fullstack-settings-cache')
53
+
54
+ unless cached_settings
55
+ cached_settings = {}
56
+ Setting.where("locale = ? OR locale IS NULL", I18n.locale.to_s).all.each do |setting|
57
+ g = setting.group == "global" ? nil : setting.group
58
+ k = [g, setting.key].compact.join('/')
59
+ cached_settings[k] = setting.value if setting.value
66
60
  end
67
-
68
- default = opts.delete(:default)
69
- settable = opts.delete(:of)
70
- settable_id = settable.try(:id)
71
-
72
- query = opts.dup
73
- query.merge!({:key => key})
74
- query.merge!({:group => group}) if group
75
- query.merge!({:settable_id => settable_id})
76
-
77
- self.where(query).first.try(:value) || default
61
+
62
+ Rails.cache.write('fullstack-settings-cache', cached_settings)
63
+ end
64
+
65
+ cached_settings.fetch(*(args[0..1]))
78
66
  end
79
67
 
80
68
  # using Setting.get is simpler, expecially if you don't want 'autocreate' feature
@@ -119,9 +107,9 @@ class Setting < ActiveRecord::Base
119
107
  field :options, :text
120
108
  serialize :options, Hash
121
109
 
122
- # after_initialize do |record|
123
- # record.options ||= {}
124
- # end
125
-
110
+ after_save do
111
+ Rails.cache.delete('fullstack-settings-cache')
112
+ end
113
+
126
114
  end
127
115
 
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "fullstack-cms"
8
- s.version = "0.3.39"
8
+ s.version = "0.4.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["mcasimir"]
12
- s.date = "2013-01-29"
12
+ s.date = "2013-02-18"
13
13
  s.description = "CMS system built on fullstack"
14
14
  s.email = "maurizio.cas@gmail.com"
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fullstack-cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.39
4
+ version: 0.4.1
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-01-29 00:00:00.000000000 Z
12
+ date: 2013-02-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fullstack-admin
@@ -294,7 +294,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
294
294
  version: '0'
295
295
  segments:
296
296
  - 0
297
- hash: 3795468678033357356
297
+ hash: 2565561884556814372
298
298
  required_rubygems_version: !ruby/object:Gem::Requirement
299
299
  none: false
300
300
  requirements: